Rustine docs
MCP

Depuis un script

Appelle le serveur MCP sans agent, avec curl et une clé d'API. Sans état, en POST, en SSE ou en JSON simple.

Ouvrir dans ClaudeOuvrir dans ChatGPT

Pour un script, l’API REST est plus simple. Mais tu peux aussi parler au serveur MCP directement, par exemple pour tester ta clé ou reproduire ce que voit ton agent.

La poignée de main

Le serveur est sans état : pas d’initialize, pas d’en-tête de session. Chaque requête est un POST sur https://mcp.rustine.io avec :

  • Authorization: Bearer rst_... ;
  • Content-Type: application/json ;
  • Accept: application/json, text/event-stream (sinon 406).

Sans en-tête MCP-Protocol-Version, la réponse arrive en SSE : une ligne event: message, puis data: {…} avec la réponse JSON-RPC.

En JSON simple

Avec la révision 2026-07-28 du protocole, la réponse est du JSON simple. Ajoute les en-têtes MCP-Protocol-Version, Mcp-Method et Mcp-Name, et les clés _meta dans params :

curl -s https://mcp.rustine.io \
  -H "Authorization: Bearer $RUSTINE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2026-07-28" \
  -H "Mcp-Method: tools/call" \
  -H "Mcp-Name: list_projects" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_projects","arguments":{},"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientInfo":{"name":"mon-script","version":"1.0.0"},"io.modelcontextprotocol/clientCapabilities":{}}}}'

Les réponses à connaître

  • 401 invalid_token avec un en-tête WWW-Authenticate : clé absente, révoquée ou mal écrite.
  • 406 : il manque text/event-stream ou application/json dans Accept.
  • Quota épuisé ou offre sans MCP : jamais un 403. La réponse est un résultat d’outil avec isError: true et un texte lisible, avec le lien pour changer d’offre.
  • Débit : 120 requêtes par minute et par clé, comme l’API.

Les paramètres de chaque outil : Les outils.

↵ Entrée pour ouvrir, Échap pour fermer