9b95e15cbc
Fichiers hors périmètre ou dupliqués : - suppression des 5 .md dupliqués à la racine (copies md5-identiques de docs/api/ et docs/entities/) - suppression de JANITOR_main.js / JANITOR_entities.json (application Electron sans lien avec le serveur MCP) - suppression de temp/*.json (dumps de workflows versionnés par accident) et ajout de temp/ au .gitignore - suppression de claude_desktop_config_ssh.json : mots de passe en clair et variables ORACLE_* d'une architecture abandonnée - AD_API_TEST_RESULTS.md -> docs/ad-api-validation.md (credentials du snippet remplacés par des variables d'environnement) - suppression d'IMPLEMENTATION_SUMMARY.md, doublon du précédent - queries api.php -> docs/reference-queries-api.php (renommage seul) Code mort : - suppression de src/resources/documentation.js : la resource docs:// n'a jamais été branchée dans src/index.js - suppression de src/config/constants.js : module entièrement inutilisé, requis par wms-query-service.js mais dont aucune constante n'était lue. Emporte RESOURCE_URIS.WORKFLOWS_CATEGORIES, URI déclarée jamais servie. - log-service.js : suppression de findRecentErrors, readFullLog et getLogStats, exportées mais exposées par aucun outil MCP - suppression de LOG_FILE_PATTERN (lue depuis .env, jamais appliquée : le scan filtre sur .log en dur), y compris dans .env.example - log-service.js : préfixe [Logs] sur les messages, comme les autres modules Secrets : - test-ad-api.ps1 -> scripts/test-ad-api.ps1, credentials passés en paramètres ou par WMS_USERNAME / WMS_PASSWORD au lieu d'être en dur Build et test : - @yao-pkg/pkg en devDependency, cible node22-win-x64 : npm run build échouait faute de pkg, et node20 n'a pas de binaire prébuilt (bascule sur une compilation de Node qui échoue sans toolchain MSVC) - index.js : le .env est lu à côté de l'exécutable quand le serveur est packagé. Avec un chemin statique, pkg embarquait le .env dans le snapshot, figeant les credentials dans le binaire. - scripts/test-connection.js : npm test pointait sur un fichier absent. Smoke test en lecture seule (OAuth, QueryExecute, QueryScalarExecute, API AD), par profil ou sur tous. Vérifié après nettoyage : 23 outils et 6 resources répondent au handshake MCP, npm test passe 4/4 contre le WMS. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
77 lines
2.8 KiB
Bash
77 lines
2.8 KiB
Bash
# ========================================
|
|
# WMS MCP Server Configuration (multi-profile)
|
|
# ========================================
|
|
# Architecture: 100% API-based (no direct Oracle access)
|
|
# All data retrieval via WMS REST APIs
|
|
#
|
|
# This server supports multiple WMS backends (profiles). At runtime Claude
|
|
# switches between them via the switch_wms_profile tool.
|
|
|
|
# ----------------------------------------
|
|
# Logs (shared template)
|
|
# ----------------------------------------
|
|
# Multiple paths separated by semicolons. Use the "{host}" placeholder to
|
|
# reference the active profile's HOST — the server substitutes it at runtime.
|
|
# Log access is automatically disabled when the active profile has SAAS=true.
|
|
LOGS_PATH=\\{host}\inetpub\logs\LogFiles\Mecalux;\\{host}\ProgramData\Mecalux\ETLLogs
|
|
|
|
# ----------------------------------------
|
|
# Shared WMS settings (same across all profiles)
|
|
# ----------------------------------------
|
|
# OAuth client Basic auth header
|
|
WMS_API_AUTH=Basic R05BOklFNGU3aXFoZHQ=
|
|
# Application name sent in API payloads (typically "EasyWMS")
|
|
WMS_APPLICATION=EasyWMS
|
|
# URL paths — combined with <PROFILE>_HOST to build full URLs
|
|
WMS_API_PATH=/ApplicationService/api
|
|
WMS_TOKEN_PATH=/EasySTS/OAuth/Token
|
|
WORKFLOW_API_PATH=/AD/api
|
|
|
|
# ----------------------------------------
|
|
# Profile registry
|
|
# ----------------------------------------
|
|
# Comma-separated list of profile names — each needs <NAME>_HOST, _USERNAME,
|
|
# _PASSWORD, _TENANT below.
|
|
WMS_PROFILES=AD,LIMAGRAIN
|
|
# Profile activated at startup. If unset, Claude must call switch_wms_profile
|
|
# before any WMS API call.
|
|
DEFAULT_WMS_PROFILE=AD
|
|
|
|
# ----------------------------------------
|
|
# Profile: AD (Application Dictionary sandbox)
|
|
# ----------------------------------------
|
|
AD_HOST=10.255.255.2
|
|
AD_USERNAME=your_ad_username
|
|
AD_PASSWORD=your_ad_password
|
|
AD_TENANT=AD
|
|
# SAAS=false → WMS on local/private network, logs reachable via \\<host>\...
|
|
# SAAS=true → cloud-hosted WMS, log tools disabled (use APIs only)
|
|
AD_SAAS=false
|
|
|
|
# ----------------------------------------
|
|
# Profile: LIMAGRAIN (customer tenant)
|
|
# ----------------------------------------
|
|
LIMAGRAIN_HOST=10.255.255.2
|
|
LIMAGRAIN_USERNAME=your_limagrain_username
|
|
LIMAGRAIN_PASSWORD=your_limagrain_password
|
|
LIMAGRAIN_TENANT=LIMAGRAI2512
|
|
LIMAGRAIN_SAAS=false
|
|
|
|
# Example — SaaS profile on a cloud host (log tools will return an error):
|
|
# WMS_PROFILES=AD,LIMAGRAIN,CLIENTX
|
|
# CLIENTX_HOST=p4swms.mss.mecalux.com
|
|
# CLIENTX_USERNAME=...
|
|
# CLIENTX_PASSWORD=...
|
|
# CLIENTX_TENANT=CLIENTX01
|
|
# CLIENTX_SAAS=true
|
|
|
|
# ----------------------------------------
|
|
# Workflow / cache / token / query tuning (shared)
|
|
# ----------------------------------------
|
|
WORKFLOW_PAGE_SIZE=5000
|
|
WORKFLOW_CACHE_TTL=3600000
|
|
TOKEN_REFRESH_THRESHOLD=1000
|
|
TOKEN_MAX_AGE=1190
|
|
MAX_QUERY_ROWS=1000
|
|
QUERY_TIMEOUT=30000
|