# WMS MCP Server Serveur [MCP](https://modelcontextprotocol.io) qui donne à Claude un accès en lecture à un WMS **EasyWMS** (Mecalux), pour le diagnostic et l'analyse. Concrètement, dans Claude Desktop : > « Combien de commandes sont bloquées en statut Release sur LIMAGRAIN ? » > « Trouve les workflows qui touchent au réapprovisionnement. » > « Cherche `Order 4711` dans les logs. » > « Quels paramètres sont surchargés sur l'entrepôt 2 ? » **Architecture : 100 % API REST.** Aucun accès direct à Oracle — voir D1 dans [DECISIONS.md](DECISIONS.md). --- ## Ce que le serveur expose **23 outils** répartis en 8 familles : | Famille | Outils | |---|---| | Requêtes WMS | `query_wms_entities`, `count_wms_entities`, `get_entity_schema`, `search_wms_data` | | API brutes | `call_query_api`, `execute_command` | | Workflows | `search_workflows`, `get_workflow_details`, `list_workflow_categories` | | Application Dictionary | `get_application_summary`, `get_ad_elements`, `search_ad_elements`, `get_ad_element_details`, `list_ad_types` | | Métadonnées | `get_entity_metadata`, `generic_search` | | Configuration | `get_system_parameters` | | Profils | `list_wms_profiles`, `get_current_wms_profile`, `switch_wms_profile` | | Logs | `read_recent_logs`, `list_log_files`, `search_logs` | **6 resources** de contexte : `wms://entities`, `wms://entity-schemas`, `wms://query-examples`, `workflows://overview`, `api://catalog`, `logs://guide`. **Multi-WMS.** Plusieurs backends (clients, tenants) coexistent dans un seul serveur ; Claude bascule à la demande avec `switch_wms_profile`. --- ## Installation Prérequis : Node.js 18+ et un accès réseau au WMS (VPN si nécessaire). ```bash npm install ``` Copiez `.env.example` en `.env` et renseignez au moins un profil : ```env WMS_API_AUTH=Basic R05BOklFNGU3aXFoZHQ= WMS_APPLICATION=EasyWMS WMS_API_PATH=/ApplicationService/api WMS_TOKEN_PATH=/EasySTS/OAuth/Token WORKFLOW_API_PATH=/AD/api WMS_PROFILES=AD DEFAULT_WMS_PROFILE=AD AD_HOST=10.255.255.2 AD_USERNAME=... AD_PASSWORD=... AD_TENANT=AD AD_SAAS=false ``` Vérifiez la connectivité — le test est en lecture seule : ```bash npm test ``` Sortie attendue : `4/4 tests reussis`. En cas d'échec, voir [MONITORING.md](MONITORING.md) §7. --- ## Brancher Claude Desktop Éditez `%APPDATA%\Claude\claude_desktop_config.json` : ```json { "mcpServers": { "wms": { "command": "node", "args": ["D:\\chemin\\vers\\mcp-wms-api\\src\\index.js"] } } } ``` Puis **fermez et rouvrez complètement** Claude Desktop. Les logs du serveur apparaissent dans `%APPDATA%\Claude\logs\`. --- ## Ajouter un WMS 1. Ajoutez son nom à `WMS_PROFILES` (séparateur : virgule). 2. Définissez `_HOST`, `_USERNAME`, `_PASSWORD`, `_TENANT`. 3. Mettez `_SAAS=true` si le WMS est hébergé dans le cloud Mecalux — les outils de log seront alors désactivés pour ce profil, à dessein. Les URL se construisent à partir du host : rien d'autre à dupliquer. Testez avec `npm test -- `. --- ## Compiler un exécutable Windows ```bash npm run build ``` Produit `dist/wms-mcp-server.exe` (~76 Mo, autonome, cible `node22-win-x64`). **Placez le `.env` à côté de l'exe** : en mode packagé, c'est là qu'il est lu, et aucun credential n'est embarqué dans le binaire (D7). Les avertissements `Cannot find module '@modelcontextprotocol/sdk/…'` pendant le build sont normaux et sans effet (D18). Déploiement type sur la VM : ``` C:\WMS\mcp\wms-mcp-server.exe C:\WMS\mcp\.env ``` --- ## Documentation | Fichier | Contenu | |---|---| | [CLAUDE.md](CLAUDE.md) | Architecture, inventaire des outils, conventions de code | | [DECISIONS.md](DECISIONS.md) | **Pourquoi** le code est ainsi + pièges vérifiés en production | | [MONITORING.md](MONITORING.md) | Superviser le serveur MCP : logs, token, caches, symptômes | | [ROADMAP.md](ROADMAP.md) | Travaux planifiés par lot, et ce qui a été écarté | | [docs/logs.md](docs/logs.md) | Accès aux logs du WMS | | [docs/](docs/) | Références EasyWMS (API, entités) | --- ## Sécurité - `.env` et `dist/` sont ignorés par git — **ne les committez jamais**. - La validation TLS est désactivée pour accepter les certificats auto-signés des WMS on-premise (D15). - ⚠️ L'historique git contient un ancien fichier de configuration avec des mots de passe en clair (commit `b59cbb3`). Ces credentials sont à considérer comme compromis — voir D20.