Skip to main content

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/sdk

Connexion 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-dessus

Exemple Python

Installation

pip install mcp

Connexion 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

Prochaines étapes