Construire un client MCP personnalisé
Connectez-vous au serveur MCP Synapse depuis votre propre application en utilisant le SDK MCP.
Construire un client MCP personnalisé
Si vous construisez votre propre application LLM, vous pouvez vous connecter au serveur MCP Synapse directement en utilisant le SDK MCP officiel. Cela donne à votre application accès aux 79 outils Synapse.
SDKs
| Langage | Paquet |
|---|---|
| TypeScript/JavaScript | @modelcontextprotocol/sdk |
| Python | mcp |
Exemple TypeScript
Installation
npm install @modelcontextprotocol/sdkConnexion via stdio
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
const transport = new StdioClientTransport({
command: "npx",
args: ["-y", "synapse-mcp-api@latest"],
env: {
SYNAPSE_MIND_KEY: process.env.SYNAPSE_MIND_KEY!,
SYNAPSE_URL: "https://synapse.schaefer.zone",
},
});
const client = new Client(
{ name: "my-app", version: "1.0.0" },
{ capabilities: {} }
);
await client.connect(transport);
// Lister tous les outils disponibles
const { tools } = await client.listTools();
console.log(`Available tools: ${tools.length}`);
for (const tool of tools) {
console.log(`- ${tool.name}: ${tool.description}`);
}
// Appeler un outil
const result = await client.callTool({
name: "memory_recall",
arguments: {},
});
console.log(result.content);
// Stocker une mémoire
await client.callTool({
name: "memory_store",
arguments: {
category: "fact",
key: "custom_client_test",
content: "Built a custom MCP client",
tags: ["test", "mcp"],
priority: "normal",
},
});
await client.close();Connexion via HTTP/SSE (distant)
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
const transport = new SSEClientTransport(
new URL("https://synapse-mcp.schaefer.zone/sse"),
{
requestInit: {
headers: {
Authorization: `Bearer ${process.env.SYNAPSE_MIND_KEY}`,
},
},
}
);
const client = new Client(
{ name: "my-app", version: "1.0.0" },
{ capabilities: {} }
);
await client.connect(transport);
// ... utiliser comme ci-dessusExemple Python
Installation
pip install mcpConnexion via stdio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
server_params = StdioServerParameters(
command="npx",
args=["-y", "synapse-mcp-api@latest"],
env={
"SYNAPSE_MIND_KEY": "mk_YOUR_KEY",
"SYNAPSE_URL": "https://synapse.schaefer.zone",
},
)
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
# Lister les outils
tools = await session.list_tools()
print(f"Available tools: {len(tools.tools)}")
# Appeler un outil
result = await session.call_tool("memory_recall", {})
print(result.content)
# Stocker une mémoire
await session.call_tool("memory_store", {
"category": "fact",
"key": "python_client_test",
"content": "Built a Python MCP client",
"tags": ["test", "mcp", "python"],
"priority": "normal",
})Tool Profiles
À la connexion, vous pouvez demander un profil d'outils spécifique via l'en-tête
Mcp-Tool-Profile (HTTP/SSE) ou la variable d'env MCP_PROFILE (stdio) :
// stdio : définir la variable d'env
env: {
SYNAPSE_MIND_KEY: "mk_...",
MCP_PROFILE: "minimal", // 8 outils au lieu de 119
}
// HTTP/SSE : définir l'en-tête
requestInit: {
headers: {
Authorization: "Bearer mk_...",
"Mcp-Tool-Profile": "minimal",
},
}Gestion des erreurs
try {
const result = await client.callTool({ name: "memory_recall", arguments: {} });
if (result.isError) {
console.error("Tool error:", result.content);
} else {
console.log("Success:", result.content);
}
} catch (err) {
console.error("MCP error:", err);
}Cas d'usage
- Assistants IA personnalisés — construisez votre propre agent avec mémoire persistante
- Automatisation de workflow — enchaînez les outils Synapse dans des workflows personnalisés
- Pipelines de données — extraire les mémoires, transformer, charger ailleurs
- Tableaux de bord de surveillance — afficher les stats de mémoire, l'historique chat, les tâches