Skip to main content

Xây dựng Client MCP tùy chỉnh

Kết nối đến Synapse MCP server từ ứng dụng riêng của bạn sử dụng MCP SDK.


Xây dựng Client MCP tùy chỉnh

Nếu bạn đang xây dựng ứng dụng LLM riêng, bạn có thể kết nối đến Synapse MCP server trực tiếp sử dụng MCP SDK chính thức. Điều này cho phép ứng dụng của bạn truy cập tất cả 79 công cụ Synapse.

SDK

Ngôn ngữ Gói
TypeScript/JavaScript @modelcontextprotocol/sdk
Python mcp

Ví dụ TypeScript

Cài đặt

npm install @modelcontextprotocol/sdk

Kết nối qua 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();

Kết nối qua HTTP/SSE (từ xa)

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

Ví dụ Python

Cài đặt

pip install mcp

Kết nối qua 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

Khi kết nối, bạn có thể yêu cầu tool profile cụ thể qua header Mcp-Tool-Profile (HTTP/SSE) hoặc biến môi trường 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",
  },
}

Xử lý lỗi

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);
}

Trường hợp sử dụng

  • Trợ lý AI tùy chỉnh — xây dựng agent riêng của bạn với bộ nhớ cố định
  • Tự động hóa quy trình — xâu chuỗi công cụ Synapse trong quy trình tùy chỉnh
  • Pipeline dữ liệu — trích xuất bộ nhớ, biến đổi, tải nơi khác
  • Bảng điều khiển giám sát — hiển thị thống kê bộ nhớ, lịch sử chat, tác vụ

Bước tiếp theo