An MCP server that exposes the Spendesk public API as tools and resources for automating ERP integrations and building dashboards from Spendesk data.
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find.
Install from
M8ven verifies MCPs across every public registry — install directly from whichever one you prefer.
Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.
Anthropic's MCP TypeScript SDK has a ReDoS vulnerability
Model Context Protocol (MCP) TypeScript SDK does not enable DNS rebinding protection by default
express-rate-limit: IPv4-mapped IPv6 addresses bypass per-client rate limiting on servers with dual-stack network
vite: `server.fs.deny` bypass on Windows alternate paths
Vite Vulnerable to Arbitrary File Read via Vite Dev Server WebSocket
process.env. You'll be asked to provide them before it can run.ALLOWED_HOSTS— Définir SPENDESK_CLIENT_ID + SPENDESK_CLIENT_SECRET (ou credentials par requête uniquement), et si besoin pour le domaine public de l'app.DB_PATH— Non Chemin de la base SQLite utilisée pour le monitoring (mcp_usage_events). Défaut : ./data/clients.db.DOCS_URL— Non URL de la documentation (Mintlify). Si définie, GET /doc redirige vers cette URL.FROM_DATE— 2026-02-26 node scripts/test-payables-from-date.mjsFULL_SUPPLIER_TEST_CHANGE_IBAN_PATCHHOST— 0.0.0.0 Interface d'écoute (0.0.0.0 pour être joignable depuis l'extérieur)LIMIT— FROM payables GROUP BY supplier_name ORDER BY total_eur DESC 10;MCP_BASE_URL— 5. Vérifier : =https://<ton-domaine>.railway.app node scripts/test-mcp-http.mjsPORT— 3000 Port d'écoutePO_DEBUGPO_MCP_PO_TOOLS_ONLYPO_TEST_CANCEL_PO_IDPO_TEST_CLOSE_PO_IDPO_TEST_COST_CENTER_IDPO_TEST_SKIP_MUTATIONSPO_TEST_SUPPLIER_IDPO_TEST_SUPPLIER_NAMEPO_TEST_USER_IDSPENDESK_API_TOKEN— Smoke test stdio (après npm run build) : npm run test:mcp — vide et exige SPENDESK_CLIENT_ID + SPENDESK_CLIENT_SECRET (ou paire _DEMO).SPENDESK_BASE_URL— Non Surcharge de l’URL de l’API (sans / final).SPENDESK_CLIENT_ID— Oui Client ID Spendesk (prod). Requis pour stdio ; pour HTTP, requis sauf si chaque client envoie Bearer client_credentials ou les headers Spendesk.SPENDESK_CLIENT_ID_DEMO— Non Client ID Spendesk demo (SPENDESK_ENV=demo). Peut aussi servir de fallback non-prod.SPENDESK_CLIENT_ID_TRUNK— Non Client ID Spendesk trunk (SPENDESK_ENV=trunk).SPENDESK_CLIENT_SECRET— Oui Client secret Spendesk (prod). Ne pas commiter.SPENDESK_CLIENT_SECRET_DEMO— Non Client secret Spendesk démo.SPENDESK_CLIENT_SECRET_TRUNK— Non Client secret Spendesk trunk.SPENDESK_DEBUG_HTTP_REQUESTSSPENDESK_ENV— Non Environnement API: production (défaut), demo ou trunk.SPENDESK_USE_DEMO— Non Legacy: true/1 est mappé vers trunk pour rétrocompatibilité.SUPPLIER_ARCHIVE_TEST_COUNTSUPPLIER_ARCHIVE_TEST_DRY_RUNSUPPLIER_ARCHIVE_TEST_MAX_PAGESSUPPLIER_ARCHIVE_TEST_PATCH_DELAY_MSSUPPLIER_IDSSUPPLIER_MCP_ARCHIVE_COUNTSUPPLIER_MCP_ARCHIVE_DRY_RUNSUPPLIER_MCP_ARCHIVE_PATCH_DELAY_MSSUPPLIER_MCP_ARCHIVE_PAUSE_MSSUPPLIER_UNARCHIVE_DELAY_MSTRUST_PROXYUSAGE_LOG_SALTUSAGE_UI_SECRET— Non Si définie, la page GET /usage (dashboard MCP) exige ?secret=<valeur> ou Authorization: Bearer <valeur>.X_SPENDESK_CLIENT_IDX_SPENDESK_CLIENT_SECRET[](https://m8ven.ai/mcp/julienchriqui-okkoer-spendesk-mcp-server-1ljn1t)