marc-andre-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@marc-andre-mcpcheck the health status of the agent"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
marc-andre-mcp
Passerelle MCP — expose certaines fonctions de marc-andre-app à Claude, en
paliers de risque. Projet séparé, ne modifie aucun fichier de
marc-andre-app. Voir PALIERS.md pour la gouvernance (quel outil fait quoi).
Ce qui n'existe pas encore
Ce serveur appelle POST {MA_BASE_URL}/api/agent/invoke et
GET {MA_BASE_URL}/api/agent/health. Ces routes n'existent pas encore
côté marc-andre-app — elles ne seront implémentées qu'après le GO explicite
de Gabriel. Tant qu'elles n'existent pas, chaque appel d'outil échoue avec un
message clair (404 « route introuvable »), jamais un plantage silencieux.
Le contrat exact attendu est documenté séparément (voir le mandat « contrat
d'API côté Marc André », en attente).
Related MCP server: MCP Data Gateway
Démarrage
npm install
cp .env.example .env # puis remplir MCP_BEARER_TOKEN, MA_BASE_URL, MA_AGENT_KEY
npm run dev # serveur sur :8787, endpoint MCP sur /mcp
npm run list-tools # imprime le catalogue sans appel réseau
npm test⚠️ Où héberger ce serveur (décision D9 : hébergé, pas local)
Le palier 2 pilote une boucle de job qui peut tourner plusieurs minutes
(src/jobs/stepDriver.ts, jusqu'à 20 min de budget, une étape toutes les 2s).
Ce n'est pas compatible avec une fonction serverless à durée de vie courte
(Vercel classique, AWS Lambda standard) — l'historique de marc-andre-app
documente déjà deux 504 pour exactement cette raison côté app elle-même, ne
reproduis pas l'erreur ici. Héberge ce serveur comme un process persistant :
un petit conteneur/VM (Railway, Fly.io, Render, ou une petite instance chez le
même hébergeur que marc-andre-app). Le palier 1 seul (sans jobs longs)
tolérerait une fonction serverless classique, mais autant prévoir tout de
suite pour le palier 2.
Deux couches d'authentification — ne pas les confondre
Entrante : qui a le droit d'appeler CE serveur MCP hébergé.
Authorization: Bearer <MCP_BEARER_TOKEN>— à configurer côté Claude/Cowork comme connecteur MCP distant. Vérifié parsrc/core/auth.ts.Sortante : ce serveur vers marc-andre-app.
Authorization: Bearer <MA_AGENT_KEY>— clé dédiée à créer côté marc-andre-app au moment du GO (jamaisADMIN_API_KEY, voir PALIERS.md).
Ce serveur ne détient aucun secret de marc-andre-app au-delà de
MA_AGENT_KEY : pas de ADMIN_API_KEY, pas de jeton QuickBooks, pas
d'identifiants SharePoint.
Geste d'urgence
AGENT_ENABLED=false dans les variables d'environnement coupe tout
immédiatement (503 sur chaque appel), sans redéploiement de code. C'est
l'équivalent du disjoncteur recommandé côté marc-andre-app pour AGENT_ENABLED
— les deux doivent exister, celui-ci protège la passerelle elle-même même si
la clé côté app reste active.
Structure
src/
config.ts validation des variables d'env au démarrage (refuse de démarrer si secret manquant)
server.ts app Express + transport MCP Streamable HTTP
index.ts point d'entrée
core/
httpClient.ts SEUL module qui fait du réseau vers marc-andre-app
auth.ts authentification entrante (bearer, temps constant)
errors.ts taxonomie d'erreurs, messages FR actionnables
cache.ts cache mémoire TTL (protège SharePoint/Graph du throttling)
redact.ts caviardage des secrets avant tout log
logger.ts journal JSONL local, second registre indépendant de l'audit applicatif
confirm/intents.ts jetons de confirmation à usage unique (palier 2)
jobs/stepDriver.ts pilote la boucle /step à la place du navigateur
tools/
types.ts forme d'une définition d'outil
registry.ts L'allowlist — un outil absent d'ici n'existe pas pour Claude
tier1/*.ts lecture seule
tier2/*.ts écriture réversible, désactivé si MA_ALLOW_TIER2 !== 'true'
schemas/, format/ validation d'entrée, élagage des réponses volumineuses
test/ redact, cycle de vie des jetons de confirmationInvariants à respecter pour tout ajout d'outil
Aucun
fetchen dehors decore/httpClient.ts.Toute action irréversible (courriel, publication comptable) reste hors d'atteinte de cet agent (palier 3) — ou en palier 2 avec confirmation, jamais sans.
Chaque description d'outil porte ses limites dans son propre texte (cache, plafonds, avertissements sur la fiabilité des données) — c'est le seul mécanisme qui empêche Claude de présenter une approximation comme un fait.
Un nouvel outil = une entrée dans
PALIERS.md, pas seulement dans le code.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP Gateway: wrap any MCP server with cold-start retries, uptime SLA, and per-execution MPP billing.
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Zero-secret MCP gateway for AI agents: risk-scored, audited calls with human-in-the-loop approval.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Related MCP Servers
- AlicenseBqualityCmaintenanceSecurity gateway that wraps any MCP server with per-tool policies, approval gates, and optional Ed25519-signed decision receipts. Shadow mode logs every tool call without blocking; enforce mode applies block, rate-limit, and minimum-tier rules. Receipts are independently verifiable offline with no accounts needed.5587 npm10MIT
- FlicenseNot gradedqualityDmaintenanceA unified data gateway MCP server that enables Claude to interact with multiple external REST and GraphQL APIs through OAuth 2.0 authentication.-
- FlicenseNot gradedqualityCmaintenanceA local MCP server that connects Claude Code to your work environment through auditable tools for file operations, API calls, and command execution, with safety gates and configuration.-
- AlicenseNot gradedqualityBmaintenanceGoverned MCP gateway for Claude Desktop providing workspace, document, sandbox, profile, reflection, and audit controls through a single visible server.3Apache 2.0