Skills: تطوير الأدوات المخصصة

آخر تحديث: 2026-08-31

الأدوات المدمجة لا تكفي؟ ابنِ أدواتك الخاصة — بروتوكول MCP يعني أن قدرات المهارات بلا حدود.


1. أساسيات بروتوكول MCP

(1) ما هو MCP

بروتوكول سياق النموذج هو البروتوكول القياسي لأدوات الذكاء الاصطناعي:

TEXT 📖 للعرض فقط
بنية MCP
┌──────────┐    بروتوكول MCP    ┌──────────────┐
│ عميل الذكاء │ ←──────────────→ │ خادم MCP      │
│ (Claude)  │                   │ (أداة مخصصة) │
└──────────┘                   └──────────────┘
                                      ↕
                                ┌──────────────┐
                                │ خدمة خارجية  │
                                │ (DB/API/ملف) │
                                └──────────────┘

(2) أنواع الأدوات

النوع الوصف مثال
أدوات الموارد توفير قراءة البيانات استعلامات قواعد البيانات، أنظمة الملفات
أدوات الإجراءات تنفيذ العمليات إرسال بريد، إنشاء تذاكر
أدوات القوالب توفير قوالب قوالب التقارير، قوائم فحص المراجعة

2. تطوير أدوات مخصصة

(1) تحليل المتطلبات

TEXT 📖 للعرض فقط
تدفق تطوير الأدوات المخصصة
1. حدد الاحتياجات التي لا تستطيع الأدوات المدمجة تلبيتها
2. حدد مدخلات/مخرجات الأداة
3. اختر التنفيذ (Node.js / Python)
4. نفّذ منطق الأداة
5. كوّن خادم MCP
6. اربط واستخدم في المهارة

(2) التنفيذ الأدنى

TYPESCRIPT
// mcp-server-example/index.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const server = new McpServer({ name: "db-query", version: "1.0.0" });

server.tool("query_database", { sql: { type: "string" } }, async ({ sql }) => {
  const result = await executeQuery(sql);
  return { content: [{ type: "text", text: JSON.stringify(result) }] };
});

const transport = new StdioServerTransport();
await server.connect(transport);

(3) التكوين والدمج

JSON
{
  "mcpServers": {
    "db-query": {
      "command": "node",
      "args": ["./mcp-servers/db-query/index.js"],
      "env": {
        "DATABASE_URL": "postgresql://localhost/mydb"
      }
    }
  }
}

3. مبادئ تصميم الأدوات

(1) المسؤولية الواحدة

كل أداة تفعل شيئًا واحدًا:

✅ تصميم جيد ❌ تصميم سيء
query_database do_database_stuff
send_email communicate
search_logs find_stuff

(2) التحقق من المدخلات

TYPESCRIPT
server.tool("query_database", {
  sql: {
    type: "string",
    description: "عبارة استعلام SQL (SELECT فقط)",
    validate: (sql: string) => {
      if (/^\s*(DROP|DELETE|UPDATE|INSERT|ALTER)/i.test(sql)) {
        throw new Error("يسمح فقط باستعلامات SELECT");
      }
    }
  }
}, handler);

(3) معالجة الأخطاء

TYPESCRIPT
async ({ sql }) => {
  try {
    const result = await executeQuery(sql);
    return { content: [{ type: "text", text: JSON.stringify(result) }] };
  } catch (error) {
    return {
      content: [{ type: "text", text: `فشل الاستعلام: ${error.message}` }],
      isError: true
    };
  }
};

4. تصحيح الأدوات ونشرها

(1) التصحيح المحلي

BASH
# تشغيل خادم MCP مباشرة للاختبار
node ./mcp-servers/db-query/index.js

# إرسال طلب اختبار
echo '{"method":"tools/list"}' | node ./mcp-servers/db-query/index.js

(2) التسجيل

TYPESCRIPT
// إضافة وسيط تسجيل
server.tool("query_database", { sql: { type: "string" } }, async ({ sql }) => {
  console.error(`[DB-QUERY] SQL: ${sql}`);
  const start = Date.now();
  const result = await executeQuery(sql);
  console.error(`[DB-QUERY] المدة: ${Date.now() - start}ms`);
  return { content: [{ type: "text", text: JSON.stringify(result) }] };
});

(3) النشر والتوزيع

TEXT 📖 للعرض فقط
طرق النشر
├── حزمة npm: npm publish @your-org/mcp-server-xxx
├── Docker: docker build + docker push
├── مستودع Git: استنساخ مباشر واستخدام
└── قالب تكوين: توفير قالب تكوين JSON

5. ممارسة الأدوات المخصصة

▶ مثال: أداة بحث السجلات

طوّرت Alice أداة MCP لبحث السجلات:

YAML
---
name: log-analyzer
description: "تحليل السجلات: بحث، تصفية، إحصائيات"
tools:
  - Read
  - search_logs  # أداة MCP مخصصة
---

قال Bob: "قيمة الأدوات المخصصة في ربط الذكاء الاصطناعي بأنظمتك الخاصة — حيث لا تستطيع الأدوات العامة الوصول، الأدوات المخصصة تملأ الفجوة."


❓ الأسئلة الشائعة

س هل يجب استخدام TypeScript لأدوات MCP؟
ج لا. بروتوكول MCP هو JSON-RPC؛ أي لغة يمكن تنفيذه. حزم SDK الرسمية توفر إصدارات TypeScript وPython.
س هل للأدوات المخصصة مخاطر أمنية؟
ج نعم. دائمًا نفّذ التحقق من المدخلات والتحكم في الوصول داخل الأداة؛ لا تترك الأمان كليًا لقوالب المهارة.
س هل يمكن لخادم MCP واحد توفير أدوات متعددة؟
ج نعم. لكن نوصي بألا تزيد الأدوات عن 5 لكل خادم للحفاظ على تركيز المسؤولية.

📖 ملخص


📝 تمارين

  1. أساسي (⭐): استخدم MCP SDK لإنشاء أداة Hello World بسيطة ودمجها مع مهارة.
  2. متوسط (⭐⭐): طوّر أداة MCP لاستعلام قاعدة بيانات مع التحقق من المدخلات ومعالجة الأخطاء.
  3. متقدم (⭐⭐⭐): طوّر أداة MCP كاملة لتحليل السجلات تدعم البحث والتصفية والإحصائيات، مع توثيق التصحيح والنشر.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%