Home
Login

إطار عمل TypeScript لبناء خوادم MCP

MITTypeScript 1.9kpunkpeye Last Updated: 2025-06-21

FastMCP - إطار عمل خادم MCP بلغة TypeScript

نظرة عامة على المشروع

FastMCP هو إطار عمل TypeScript مصمم خصيصًا لبناء خوادم Model Context Protocol (MCP). يوفر مجموعة كاملة من الأدوات والوظائف التي تمكن المطورين من إنشاء خوادم MCP عالية الأداء يمكنها التعامل مع جلسات العملاء بسرعة.

عنوان المشروع: https://github.com/punkpeye/fastmcp

الميزات الأساسية

الوظائف الأساسية

  • أدوات وموارد وتعاريف مطالبات بسيطة: يوفر واجهة برمجة تطبيقات بديهية لتحديد وظائف الخادم
  • دعم المصادقة: آلية مصادقة مدمجة تضمن الوصول الآمن
  • إدارة الجلسات: دعم معالجة جلسات العميل وإدارة الحالة
  • دعم محتوى الوسائط المتعددة: دعم إرجاع الصور والمحتوى الصوتي
  • تسجيل الدخول: نظام تسجيل كامل لتصحيح الأخطاء والمراقبة
  • معالجة الأخطاء: آلية موحدة لمعالجة الأخطاء
  • أحداث مرسلة من الخادم (SSE): دعم دفع البيانات في الوقت الفعلي
  • دعم CORS: تمكين مشاركة الموارد عبر الأصل افتراضيًا

الميزات المتقدمة

  • إشعارات التقدم: ملاحظات في الوقت الفعلي حول تقدم تنفيذ الأدوات
  • أحداث الخادم المكتوبة: نظام أحداث آمن من النوع TypeScript
  • الإكمال التلقائي لمعلمات المطالبة: وظيفة الإكمال الذكي للمعلمات
  • طلبات أخذ العينات: دعم طلبات أخذ العينات لنموذج الذكاء الاصطناعي
  • نبضات قلب SSE الآلية: الحفاظ على استقرار الاتصال
  • إدارة الدليل الجذر: تكوين الدليل الجذر لنظام الملفات
  • أداة CLI: توفير أدوات سطر الأوامر للاختبار والتصحيح

التثبيت والاستخدام

التثبيت

npm install fastmcp

مثال أساسي

import { FastMCP } from "fastmcp";
import { z } from "zod"; 

const server = new FastMCP({
  name: "My Server",
  version: "1.0.0",
});

server.addTool({
  name: "add",
  description: "Add two numbers",
  parameters: z.object({
    a: z.number(),
    b: z.number(),
  }),
  execute: async (args) => {
    return String(args.a + args.b);
  },
});

server.start({
  transportType: "stdio",
});

وحدات الوظائف الرئيسية

1. تعريف الأدوات (Tools)

تسمح الأدوات للخادم بعرض وظائف قابلة للتنفيذ للعملاء، ويمكن للعملاء استدعاء هذه الوظائف واستخدامها بواسطة LLM لتنفيذ العمليات.

مكتبات التحقق من صحة المخطط المدعومة

  • Zod: مكتبة التحقق من صحة مخطط TypeScript الأكثر شيوعًا
  • ArkType: مكتبة حديثة للتحقق من النوع
  • Valibot: مكتبة خفيفة الوزن للتحقق من صحة المخطط

مثال Zod

import { z } from "zod";

server.addTool({
  name: "fetch-zod",
  description: "Fetch the content of a url (using Zod)",
  parameters: z.object({
    url: z.string(),
  }),
  execute: async (args) => {
    return await fetchWebpageContent(args.url);
  },
});

تعليقات توضيحية للأداة

يمكن أن تحتوي الأدوات على تعليقات توضيحية، مما يوفر سياقًا ومعلومات تحكم أكثر ثراءً:

server.addTool({
  name: "fetch-content",
  description: "Fetch content from a URL",
  parameters: z.object({
    url: z.string(),
  }),
  annotations: {
    title: "Web Content Fetcher", 
    readOnlyHint: true, 
    openWorldHint: true,
  },
  execute: async (args) => {
    return await fetchWebpageContent(args.url);
  },
});

2. إدارة الموارد (Resources)

تمثل الموارد أي نوع من البيانات يرغب خادم MCP في توفيره للعميل، بما في ذلك:

  • محتوى الملف
  • لقطات الشاشة والصور
  • ملفات السجل
  • بيانات أخرى
server.addResource({
  uri: "file:///logs/app.log",
  name: "Application Logs",
  mimeType: "text/plain",
  async load() {
    return {
      text: await readLogFile(),
    };
  },
});

قوالب الموارد

server.addResourceTemplate({
  uriTemplate: "file:///logs/{name}.log",
  name: "Application Logs",
  mimeType: "text/plain",
  arguments: [
    {
      name: "name",
      description: "Name of the log",
      required: true,
    },
  ],
  async load({ name }) {
    return {
      text: `Example log content for ${name}`,
    };
  },
});

3. إدارة المطالبات (Prompts)

تمكن المطالبات الخادم من تحديد قوالب المطالبات وسير العمل القابلة لإعادة الاستخدام:

server.addPrompt({
  name: "git-commit",
  description: "Generate a Git commit message",
  arguments: [
    {
      name: "changes",
      description: "Git diff or description of changes",
      required: true,
    },
  ],
  load: async (args) => {
    return `Generate a concise but descriptive commit message for these changes:\n\n${args.changes}`;
  },
});

4. المصادقة

يدعم FastMCP وظائف المصادقة المخصصة:

import { AuthError } from "fastmcp";

const server = new FastMCP({
  name: "My Server",
  version: "1.0.0",
  authenticate: ({ request }) => {
    const apiKey = request.headers["x-api-key"];
    if (apiKey !== "123") {
      throw new Response(null, {
        status: 401,
        statusText: "Unauthorized",
      });
    }
    return {
      id: 1,
    };
  },
});

5. أحداث مرسلة من الخادم (SSE)

دعم وظيفة SSE للاتصال في الوقت الفعلي:

server.start({
  transportType: "sse",
  sse: {
    endpoint: "/sse",
    port: 8080,
  },
});

6. إدارة الجلسات

يقوم FastMCP بتعيين مثيل خادم جديد لكل اتصال عميل، مما يحقق اتصال 1:1:

server.on("connect", (event) => {
  console.log("Client connected:", event.session);
});

server.on("disconnect", (event) => {
  console.log("Client disconnected:", event.session);
});

أدوات التطوير

الاختبار والتصحيح


npx fastmcp dev src/examples/addition.ts


npx fastmcp inspect src/examples/addition.ts

تكامل Claude Desktop

أضف التكوين في Claude Desktop:

{
  "mcpServers": {
    "my-mcp-server": {
      "command": "npx",
      "args": ["tsx", "/PATH/TO/YOUR_PROJECT/src/index.ts"],
      "env": {
        "YOUR_ENV_VAR": "value"
      }
    }
  }
}

حالات الاستخدام العملية

تم اعتماد FastMCP من قبل العديد من المشاريع، بما في ذلك:

  • apinetwork/piapi-mcp-server: استخدام Midjourney/Flux/Kling وما إلى ذلك لإنشاء محتوى الوسائط
  • domdomegg/computer-use-mcp: أدوات التحكم في الكمبيوتر
  • Meeting-Baas/meeting-mcp: روبوتات الاجتماعات وإدارة النسخ
  • drumnation/unsplash-smart-mcp-server: تكامل البحث عن الصور Unsplash
  • aiamblichus/mcp-chat-adapter: واجهة إكمال دردشة LLM

المزايا التقنية

  1. أمان النوع: يضمن دعم TypeScript الكامل جودة التعليمات البرمجية
  2. مخطط مرن: يدعم العديد من مكتبات التحقق من الصحة، لتلبية الاحتياجات المختلفة
  3. هندسة معمارية حديثة: استنادًا إلى أحدث معايير الويب وأفضل الممارسات
  4. وظائف غنية: دعم شامل من الوظائف الأساسية إلى الميزات المتقدمة
  5. سهولة التوسع: تصميم معياري يسهل توسيع الوظائف
  6. صديق للمطور: أدوات CLI كاملة ودعم التصحيح

ملخص

FastMCP هو إطار عمل TypeScript قوي وسهل الاستخدام يوفر حلاً كاملاً لبناء خوادم MCP. سواء كان تكامل أدوات بسيطًا أو بناء خدمات ذكاء اصطناعي معقدة، يمكن لـ FastMCP توفير الوظائف والمرونة المطلوبة. إن مجموعة الميزات الغنية وتجربة المطور الجيدة تجعلها أداة مهمة في نظام MCP البيئي.