Skip to main content

بناء عميل MCP مخصص

اتصل بخادم Synapse MCP من تطبيقك الخاص باستخدام MCP SDK.


بناء عميل MCP مخصص

إذا كنت تبني تطبيق LLM خاصًا بك، يمكنك الاتصال بخادم Synapse MCP مباشرة باستخدام MCP SDK الرسمي. هذا يمنح تطبيقك الوصول إلى جميع أدوات Synapse الـ 79.

حزم SDK

اللغة الحزمة
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);

// سرد جميع الأدوات المتاحة
const { tools } = await client.listTools();
console.log(`Available tools: ${tools.length}`);
for (const tool of tools) {
  console.log(`- ${tool.name}: ${tool.description}`);
}

// استدعِ أداة
const result = await client.callTool({
  name: "memory_recall",
  arguments: {},
});
console.log(result.content);

// خزّن ذاكرة
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 (بعيد)

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);
// ... استخدم كما هو مذكور أعلاه

مثال 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()

        # سرد الأدوات
        tools = await session.list_tools()
        print(f"Available tools: {len(tools.tools)}")

        # استدعِ أداة
        result = await session.call_tool("memory_recall", {})
        print(result.content)

        # خزّن ذاكرة
        await session.call_tool("memory_store", {
            "category": "fact",
            "key": "python_client_test",
            "content": "Built a Python MCP client",
            "tags": ["test", "mcp", "python"],
            "priority": "normal",
        })

ملفات الأدوات

عند الاتصال، يمكنك طلب ملف أداة محدد عبر ترويسة Mcp-Tool-Profile (HTTP/SSE) أو متغير البيئة MCP_PROFILE (stdio):

// stdio: عيّن متغير البيئة
env: {
  SYNAPSE_MIND_KEY: "mk_...",
  MCP_PROFILE: "minimal",  // 8 أدوات بدلًا من 119
}

// HTTP/SSE: عيّن الترويسة
requestInit: {
  headers: {
    Authorization: "Bearer mk_...",
    "Mcp-Tool-Profile": "minimal",
  },
}

معالجة الأخطاء

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

حالات الاستخدام

  • مساعدون ذكيون مخصصون — ابنِ وكيلك الخاص بذاكرة دائمة
  • أتمتة سير العمل — اربط أدوات Synapse في سير عمل مخصص
  • خطوط بيانات — استخرج الذكريات، حوّل، حمّل في مكان آخر
  • لوحات المراقبة — اعرض إحصائيات الذاكرة، سجل الدردشة، المهام

الخطوات التالية