สร้าง 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