Skip to main content

สร้าง Custom MCP Client

เชื่อมต่อกับ Synapse MCP server จากแอปพลิเคชันของคุณเองโดยใช้ MCP SDK


สร้าง Custom MCP Client

หากคุณกำลังสร้างแอปพลิเคชัน LLM ของตัวเอง คุณสามารถเชื่อมต่อกับ Synapse MCP server โดยตรงโดยใช้ MCP SDK อย่างเป็นทางการ ซึ่งให้แอปของคุณเข้าถึง Synapse tool ทั้ง 79 ตัว

SDK

ภาษา Package
TypeScript/JavaScript @modelcontextprotocol/sdk
Python mcp

ตัวอย่าง TypeScript

ติดตั้ง

npm install @modelcontextprotocol/sdk

เชื่อมต่อผ่าน 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);

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

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

ติดตั้ง

pip install mcp

เชื่อมต่อผ่าน 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()

        # 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):

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

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

ขั้นตอนถัดไป