# Costruire un client MCP personalizzato Se sta costruendo la propria applicazione LLM, può connettersi al server MCP di Synapse direttamente utilizzando l'SDK MCP ufficiale. In questo modo la sua app avrà accesso a tutti i 79 strumenti di Synapse. ## SDK | Linguaggio | Pacchetto | |----------|---------| | TypeScript/JavaScript | `@modelcontextprotocol/sdk` | | Python | `mcp` | ## Esempio TypeScript ### Installazione ```bash npm install @modelcontextprotocol/sdk ``` ### Connessione tramite stdio ```typescript 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); // List all available tools const { tools } = await client.listTools(); console.log(`Available tools: ${tools.length}`); for (const tool of tools) { console.log(`- ${tool.name}: ${tool.description}`); } // Call a tool const result = await client.callTool({ name: "memory_recall", arguments: {}, }); console.log(result.content); // Store a memory 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(); ``` ### Connessione tramite HTTP/SSE (remoto) ```typescript 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); // ... use as above ``` ## Esempio Python ### Installazione ```bash pip install mcp ``` ### Connessione tramite stdio ```python 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() # List tools tools = await session.list_tools() print(f"Available tools: {len(tools.tools)}") # Call a tool result = await session.call_tool("memory_recall", {}) print(result.content) # Store a memory await session.call_tool("memory_store", { "category": "fact", "key": "python_client_test", "content": "Built a Python MCP client", "tags": ["test", "mcp", "python"], "priority": "normal", }) ``` ## Profili degli strumenti Quando si connette, può richiedere un profilo di strumenti specifico tramite l'header `Mcp-Tool-Profile` (HTTP/SSE) o la variabile d'ambiente `MCP_PROFILE` (stdio): ```typescript // stdio: set env var env: { SYNAPSE_MIND_KEY: "mk_...", MCP_PROFILE: "minimal", // 8 tools instead of 119 } // HTTP/SSE: set header requestInit: { headers: { Authorization: "Bearer mk_...", "Mcp-Tool-Profile": "minimal", }, } ``` ## Gestione degli errori ```typescript 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); } ``` ## Casi d'uso - **Assistenti AI personalizzati** — costruisca il proprio agente con memoria persistente - **Automazione dei flussi di lavoro** — concatena strumenti Synapse in flussi personalizzati - **Pipeline di dati** — estrae memorie, trasforma, carica altrove - **Dashboard di monitoraggio** — visualizza statistiche delle memorie, cronologia chat, attività ## Prossimi passi - [Specifica MCP](https://spec.modelcontextprotocol.io) - [Repository Synapse MCP](https://gitlab.com/schaefer-services/synapse-mcp) - [Panoramica API](/docs/api/overview)