Aller au contenu principal

MCP pour les Développeurs

Connectez-vous au MCP Gateway de STOA et appelez votre premier outil — depuis Claude.ai, Python ou TypeScript. Pas de kubectl. Pas de cluster. Juste une URL et un token.

Cloud Hébergé

Ce guide utilise le gateway hébergé de STOA à mcp.gostoa.dev. Tout fonctionne immédiatement — aucune configuration d'infrastructure n'est nécessaire.

Option A : Claude.ai (Le Plus Rapide)

Le chemin le plus rapide. Claude gère l'authentification automatiquement via OAuth 2.1.

1. Ajouter le Serveur MCP

Dans claude.ai : ParamètresIntégrationsAjouter un serveur MCP

ChampValeur
URLhttps://mcp.gostoa.dev/mcp/sse
NomSTOA Platform

Connectez-vous avec vos identifiants STOA lorsque vous y êtes invité.

2. Découvrir et Appeler des Outils

Demandez à Claude :

"Liste les outils disponibles dans STOA, puis appelle l'outil echo avec le message 'hello world'"

Claude découvre vos outils via tools/list, appelle tools/call et retourne le résultat. C'est tout.


Option B : Python

Utilisez le SDK Python MCP ou du HTTP natif.

Avec httpx (Sans SDK)

import httpx

GATEWAY = "https://mcp.gostoa.dev"
TOKEN = "your-access-token" # Voir "Obtenir un Token" ci-dessous

headers = {
"Authorization": f"Bearer {TOKEN}",
"Content-Type": "application/json",
}

# Lister les outils
resp = httpx.post(f"{GATEWAY}/mcp/tools/list", headers=headers, json={})
tools = resp.json()["tools"]
for tool in tools:
print(f" {tool['name']}: {tool.get('description', '')}")

# Appeler un outil
resp = httpx.post(
f"{GATEWAY}/mcp/tools/call",
headers=headers,
json={"name": "echo", "arguments": {"message": "hello from Python"}},
)
print(resp.json())

Avec le SDK MCP

from mcp import ClientSession
from mcp.client.sse import sse_client

async def main():
async with sse_client("https://mcp.gostoa.dev/mcp/sse") as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()

# Lister les outils
tools = await session.list_tools()
for tool in tools.tools:
print(f" {tool.name}: {tool.description}")

# Appeler un outil
result = await session.call_tool("echo", {"message": "hello"})
print(result)

import asyncio
asyncio.run(main())

Installation : pip install mcp httpx


Option C : TypeScript

Avec fetch (Sans SDK)

const GATEWAY = "https://mcp.gostoa.dev";
const TOKEN = "your-access-token"; // Voir "Obtenir un Token" ci-dessous

// Lister les outils
const toolsResp = await fetch(`${GATEWAY}/mcp/tools/list`, {
method: "POST",
headers: {
Authorization: `Bearer ${TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({}),
});
const { tools } = await toolsResp.json();
console.log("Available tools:", tools.map((t: any) => t.name));

// Appeler un outil
const callResp = await fetch(`${GATEWAY}/mcp/tools/call`, {
method: "POST",
headers: {
Authorization: `Bearer ${TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
name: "echo",
arguments: { message: "hello from TypeScript" },
}),
});
console.log(await callResp.json());

Avec le SDK MCP

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";

const transport = new SSEClientTransport(
new URL("https://mcp.gostoa.dev/mcp/sse")
);
const client = new Client(
{ name: "my-app", version: "1.0.0" },
{ capabilities: { tools: {} } }
);

await client.connect(transport);

// Lister les outils
const { tools } = await client.listTools();
console.log("Tools:", tools.map((t) => t.name));

// Appeler un outil
const result = await client.callTool({
name: "echo",
arguments: { message: "hello" },
});
console.log(result);

await client.close();

Installation : npm install @modelcontextprotocol/sdk


Obtenir un Token

Pour Python/TypeScript (Options B et C), vous avez besoin d'un token d'accès OAuth.

Rapide : Client Credentials

TOKEN=$(curl -s -X POST "https://auth.gostoa.dev/realms/stoa/protocol/openid-connect/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id=${CLIENT_ID}" \
-d "client_secret=${CLIENT_SECRET}" \
-d "grant_type=client_credentials" | jq -r '.access_token')

echo $TOKEN

Obtenez votre CLIENT_ID et CLIENT_SECRET depuis la Console sous Clés API.

Rapide : Clé API SaaS

Si vous avez créé une clé API scopée dans la Console (sous Clés API), utilisez-la directement :

curl -s "https://mcp.gostoa.dev/mcp/tools/list" \
-H "X-API-Key: stoa_saas_xxxx_your_key_here" | jq

Aucun flux OAuth n'est nécessaire — la clé API s'authentifie directement.


Configuration Claude Desktop

Pour utiliser STOA depuis Claude Desktop (application locale), ajoutez ceci à votre claude_desktop_config.json :

{
"mcpServers": {
"stoa": {
"url": "https://mcp.gostoa.dev/mcp/sse"
}
}
}

Emplacement du fichier de configuration :

  • macOS : ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows : %APPDATA%\Claude\claude_desktop_config.json

Redémarrez Claude Desktop après avoir sauvegardé. Vous serez invité à vous authentifier lors de la première utilisation.


Prochaines Étapes

ObjectifGuide
Enregistrer votre propre API backendDémarrage Rapide
Créer des outils MCP personnalisés avec les CRDsDéveloppement d'Outils MCP
Comprendre les détails internes du protocole MCPFiche Protocole MCP
Auto-héberger STOA sur votre infrastructureDéploiement Hybride
Référence complète de l'API MCPAPI MCP Gateway

Dépannage

ProblèmeSolution
401 UnauthorizedToken expiré (5 min par défaut). Ré-exécutez la commande de token
403 ForbiddenVotre tenant n'a pas accès à cet outil. Vérifiez les scopes de la clé API
La connexion SSE se coupeTimeout réseau. Le gateway ferme les connexions SSE inactives après 5 min
"Aucun outil trouvé"Aucune API enregistrée dans votre tenant. Enregistrez-en une dans la Console
Claude dit "Serveur MCP indisponible"Vérifiez que l'URL se termine par /mcp/sse. Déconnectez et reconnectez dans les Paramètres
ConnectionError PythonVérifiez que httpx est installé et que l'URL est accessible : curl https://mcp.gostoa.dev/health