54
/ 100
1 month ago
glama

Spendesk MCP Server

An MCP server that exposes the Spendesk public API as tools and resources for automating ERP integrations and building dashboards from Spendesk data.

Is this your MCP?

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.

// key findings
🚨
Secret credentials may flow to a network call
3 flows detected: SPENDESK_API_TOKEN. We can’t prove the destination matches the brand the credential belongs to.
⚠️
Known vulnerabilities in dependencies: 5 high
Affects packages this MCP installs at runtime. Upgrade or remove the affected dependency.
🔐
You'll be asked for 4 credentials: SPENDESK_API_TOKEN, SPENDESK_CLIENT_SECRET, USAGE_UI_SECRET, X_SPENDESK_CLIENT_SECRET
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// known CVEs in dependencies5 high5 medium6 low

Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.

high@modelcontextprotocol/sdk@1.0.0GHSA-8r9q-7v3j-jr4g

Anthropic's MCP TypeScript SDK has a ReDoS vulnerability

high@modelcontextprotocol/sdk@1.0.0GHSA-w48q-cv73-mx4w

Model Context Protocol (MCP) TypeScript SDK does not enable DNS rebinding protection by default

highexpress-rate-limit@8.2.1GHSA-46wh-pxpv-q5gq

express-rate-limit: IPv4-mapped IPv6 addresses bypass per-client rate limiting on servers with dual-stack network

highvite@6.0.0GHSA-fx2h-pf6j-xcff

vite: `server.fs.deny` bypass on Windows alternate paths

highvite@6.0.0GHSA-p9ff-h696-f583

Vite Vulnerable to Arbitrary File Read via Vite Dev Server WebSocket

Depend on this server? Get alerted when its CVEs change.Watch this server free →
// required environment variables
This server reads these from process.env. You'll be asked to provide them before it can run.
configALLOWED_HOSTSDéfinir SPENDESK_CLIENT_ID + SPENDESK_CLIENT_SECRET (ou credentials par requête uniquement), et si besoin pour le domaine public de l'app.
configDB_PATHNon Chemin de la base SQLite utilisée pour le monitoring (mcp_usage_events). Défaut : ./data/clients.db.
configDOCS_URLNon URL de la documentation (Mintlify). Si définie, GET /doc redirige vers cette URL.
configFROM_DATE2026-02-26 node scripts/test-payables-from-date.mjs
configFULL_SUPPLIER_TEST_CHANGE_IBAN_PATCH
configHOST0.0.0.0 Interface d'écoute (0.0.0.0 pour être joignable depuis l'extérieur)
configLIMITFROM payables GROUP BY supplier_name ORDER BY total_eur DESC 10;
configMCP_BASE_URL5. Vérifier : =https://<ton-domaine>.railway.app node scripts/test-mcp-http.mjs
configPORT3000 Port d'écoute
configPO_DEBUG
configPO_MCP_PO_TOOLS_ONLY
configPO_TEST_CANCEL_PO_ID
configPO_TEST_CLOSE_PO_ID
configPO_TEST_COST_CENTER_ID
configPO_TEST_SKIP_MUTATIONS
configPO_TEST_SUPPLIER_ID
configPO_TEST_SUPPLIER_NAME
configPO_TEST_USER_ID
🔐 secretSPENDESK_API_TOKENSmoke test stdio (après npm run build) : npm run test:mcp — vide et exige SPENDESK_CLIENT_ID + SPENDESK_CLIENT_SECRET (ou paire _DEMO).
configSPENDESK_BASE_URLNon Surcharge de l’URL de l’API (sans / final).
configSPENDESK_CLIENT_IDOui Client ID Spendesk (prod). Requis pour stdio ; pour HTTP, requis sauf si chaque client envoie Bearer client_credentials ou les headers Spendesk.
configSPENDESK_CLIENT_ID_DEMONon Client ID Spendesk demo (SPENDESK_ENV=demo). Peut aussi servir de fallback non-prod.
configSPENDESK_CLIENT_ID_TRUNKNon Client ID Spendesk trunk (SPENDESK_ENV=trunk).
🔐 secretSPENDESK_CLIENT_SECRETOui Client secret Spendesk (prod). Ne pas commiter.
configSPENDESK_CLIENT_SECRET_DEMONon Client secret Spendesk démo.
configSPENDESK_CLIENT_SECRET_TRUNKNon Client secret Spendesk trunk.
configSPENDESK_DEBUG_HTTP_REQUESTS
configSPENDESK_ENVNon Environnement API: production (défaut), demo ou trunk.
configSPENDESK_USE_DEMONon Legacy: true/1 est mappé vers trunk pour rétrocompatibilité.
configSUPPLIER_ARCHIVE_TEST_COUNT
configSUPPLIER_ARCHIVE_TEST_DRY_RUN
configSUPPLIER_ARCHIVE_TEST_MAX_PAGES
configSUPPLIER_ARCHIVE_TEST_PATCH_DELAY_MS
configSUPPLIER_IDS
configSUPPLIER_MCP_ARCHIVE_COUNT
configSUPPLIER_MCP_ARCHIVE_DRY_RUN
configSUPPLIER_MCP_ARCHIVE_PATCH_DELAY_MS
configSUPPLIER_MCP_ARCHIVE_PAUSE_MS
configSUPPLIER_UNARCHIVE_DELAY_MS
configTRUST_PROXY
configUSAGE_LOG_SALT
🔐 secretUSAGE_UI_SECRETNon Si définie, la page GET /usage (dashboard MCP) exige ?secret=<valeur> ou Authorization: Bearer <valeur>.
configX_SPENDESK_CLIENT_ID
🔐 secretX_SPENDESK_CLIENT_SECRET
// full audit trail
The full breakdown of what we checked, the deductions that landed, the network hosts, the dependency advisories, and concrete fix guidance is available to verified publishers.
// improvement guidance — verified publishers only
We have 9 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Score](https://m8ven.ai/badge/mcp/julienchriqui-okkoer-spendesk-mcp-server-1ljn1t)](https://m8ven.ai/mcp/julienchriqui-okkoer-spendesk-mcp-server-1ljn1t)
commit: f9ec64daf645db1ea24b59e7d88d546d0014f5ea
code hash: f7f0ba2f21c9417a6097869905d6c05bb38cecdac02059e903315fce9c2c1db5
verified: 6/23/2026, 10:22:17 AM
view raw JSON →