# สร้าง Custom MCP Client หากคุณกำลังสร้างแอปพลิเคชัน LLM ของตัวเอง คุณสามารถเชื่อมต่อกับ Synapse MCP server โดยตรงโดยใช้ MCP SDK อย่างเป็นทางการ ซึ่งให้แอปของคุณเข้าถึง Synapse tool ทั้ง 79 ตัว ## SDK | ภาษา | Package | |----------|---------| | TypeScript/JavaScript | `@modelcontextprotocol/sdk` | | Python | `mcp` | ## ตัวอย่าง TypeScript ### ติดตั้ง ```bash npm install @modelcontextprotocol/sdk ``` ### เชื่อมต่อผ่าน 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(); ``` ### เชื่อมต่อผ่าน HTTP/SSE (remote) ```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 ``` ## ตัวอย่าง Python ### ติดตั้ง ```bash pip install mcp ``` ### เชื่อมต่อผ่าน 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", }) ``` ## Tool Profile เมื่อเชื่อมต่อ คุณสามารถร้องขอ tool profile เฉพาะผ่าน header `Mcp-Tool-Profile` (HTTP/SSE) หรือ env var `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", }, } ``` ## การจัดการ Error ```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); } ``` ## กรณีใช้งาน - **AI assistant แบบกำหนดเอง** — สร้าง agent ของคุณเองพร้อม memory ถาวร - **Workflow automation** — เชื่อม Synapse tool ใน workflow แบบกำหนดเอง - **Data pipeline** — ดึง memory, transform, load ที่อื่น - **Monitoring dashboard** — แสดงสถิติ memory, ประวัติแช็ต, task ## ขั้นตอนถัดไป - [MCP Specification](https://spec.modelcontextprotocol.io) - [Synapse MCP Repo](https://gitlab.com/schaefer-services/synapse-mcp) - [API Overview](/docs/api/overview)