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/sdkKế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 aboveVí dụ Python
Cài đặt
pip install mcpKế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ụ