→ المدونة
المنتج5 د قراءةThe Taskfolk team9 مشاهدةحُدِّث في

لماذا أعطينا Taskfolk خادم MCP، وما الذي يغيّره

XLinkedIn

إن سبق لك ربط مساعد ذكاء اصطناعي بأداة حقيقية، فأنت تعرف الثمن. تكتب غلافًا حول واجهة API، وتصف كل نقطة نهاية للنموذج في التلقين، وتبقي ذلك الوصف متزامنًا كلما تغيرت الواجهة، وتدير المصادقة يدويًا. افعلها لثلاث أدوات وستجد بين يديك مشروع تكامل صغيرًا هشًا.

بروتوكول Model Context Protocol وُجد ليقضي على هذا الثمن. إليك ما هو ولماذا بنينا خادمًا له في Taskfolk.

‏MCP بكلمات بسيطة

‏MCP طريقة قياسية تتيح لعميل ذكاء اصطناعي اكتشاف الأدوات التي تقدمها خدمة ما واستدعاءها، دون أن يكتب أحد كود الربط يدويًا. الخدمة تشغّل خادم MCP يسرد أدواتها وكيفية استدعائها. والعميل، وليكن Claude أو Cursor، يقرأ تلك القائمة ويستطيع استخدام الأدوات فورًا.

التشبيه الذي يلجأ إليه الناس هو منفذ USB. قبله كان لكل جهاز كابله الخاص. بعده توصّل فيعمل. يحاول MCP أن يكون هذا للاتصال بين الذكاء الاصطناعي والخدمات: شكل واحد يفهمه النموذج سلفًا، بدل محوّل مفصّل لكل أداة.

هذه هي الفكرة كلها. ليست سحرًا، وما زالت في بدايتها. لكن الاتجاه صحيح، وأداة تتبع المشاريع تتضح واحدة من أوضح الأماكن التي يؤتي فيها ثماره.

لماذا تناسب أداة التتبع هذا الدور

الوكيل الذي يؤدي عملًا حقيقيًا يحتاج إلى مكان يدوّن فيه ما يفعله. ليس في سجل دردشة يبتعد مع التمرير، بل في مكان ينظر إليه الفريق كله أصلًا: الباكلوج، واللوحة، والمهمة التي تحمل معايير القبول.

بدون ذلك يبقى ناتج الوكيل حبيسًا. يكتب النموذج خطة ممتازة فتعيش في محادثة لا يفتحها أحد غيرك. أما وأداة تتبع على الطرف الآخر، فتصير الخطة مهامًا، ويصير العمل تغييرات حالة، ويصير السجل شيئًا يستطيع إنسان تدقيقه لاحقًا. أداة التتبع هي الذاكرة المشتركة.

فالخطوة المفيدة ليست "دع الوكيل يقرأ تذاكرك"، بل "دع الوكيل يدير المشروع كما يديره زميل"، مع هبوط كل فعل في المكان نفسه، منسوبًا إلى صاحبه، وبالصلاحيات ذاتها.

كيف يبدو الأمر عمليًا

يشغّل Taskfolk خادم MCP رسميًا. في عميل يدعم MCP تضيفه مرة واحدة بمفتاح API لديك، فتظهر الأدوات: إنشاء مهمة، ونقلها عبر اللوحة، والتعليق، وتعيين الحقول المخصصة، والبحث في الباكلوج، وقراءة ما أُنجز وما زال مفتوحًا.

في Claude Code، الإضافة سطر واحد:

claude mcp add taskfolk-product https://taskfolk.ai/api/mcp/v1/ \
  --header "Authorization: Bearer $TASKFOLK_API_KEY"

وفي Cursor، الشيء نفسه يوضع في ~/.cursor/mcp.json:

{
  "mcpServers": {
    "taskfolk-product": {
      "url": "https://taskfolk.ai/api/mcp/v1/",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

ولا يلزمك كتابة أي منهما يدويًا. صفحة إعدادات المطور تولّد المقطع الجاهز لعملاء Claude Code وCursor وVS Code ومفتاحك في مكانه سلفًا.

إعدادات المطور في Taskfolk تولّد أمر إعداد MCP لعميل Claude Code

من هناك يكتشف العميل الأدوات بنفسه. أسماؤها مشتقة من مواصفة REST فتُقرأ كما تُقرأ الواجهة: list_projects وcreate_issue وtransition_issue وlist_issue_comments وwho_am_i. وحين يقرر وكيلك تسجيل خلل، ما يعبر السلك فعليًا نداء JSON-RPC واحد. تستطيع إرسال النداء نفسه بنفسك عبر curl:

curl -X POST https://taskfolk.ai/api/mcp/v1 \
  -H "Authorization: Bearer $TASKFOLK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "create_issue",
      "arguments": { "slug": "acme", "key": "WEB", "title": "Fix login redirect", "type": "bug" }
    }
  }'
const res = await fetch("https://taskfolk.ai/api/mcp/v1", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.TASKFOLK_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "tools/call",
    params: {
      name: "create_issue",
      arguments: { slug: "acme", key: "WEB", title: "Fix login redirect", type: "bug" },
    },
  }),
});
console.log(await res.json());
import os
import requests

res = requests.post(
    "https://taskfolk.ai/api/mcp/v1",
    headers={"Authorization": f"Bearer {os.environ['TASKFOLK_API_KEY']}"},
    json={
        "jsonrpc": "2.0",
        "id": 1,
        "method": "tools/call",
        "params": {
            "name": "create_issue",
            "arguments": {"slug": "acme", "key": "WEB", "title": "Fix login redirect", "type": "bug"},
        },
    },
)
print(res.json())

لا غلاف تحتاج إلى صيانته. حين نضيف نقطة نهاية تظهر في قائمة الأدوات. وحين نغيّر حقلًا يتحدّث الوصف الذي يراه النموذج معه. ولا يحتاج العميل إلى إصدار جديد لأي من ذلك. وكل نداء tools/call يعود داخليًا إلى خط REST نفسه، فتُفحص المصادقة والنطاقات وحدود المعدل مرة واحدة، في مكان واحد:

sequenceDiagram
    participant C as MCP client
    participant M as MCP server
    participant R as REST v1 pipeline
    C->>M: tools/list
    M-->>C: tools your key allows
    C->>M: tools/call create_issue
    M->>R: same bearer key, same checks
    R-->>M: issue created
    M-->>C: result

وللعملاء الذين لا يتكلمون MCP بعد، تبقى مساحة العمل نفسها في المتناول بطريقتين أخريين: واجهة REST المجردة، وحزمة مهارة قابلة للتثبيت تشحن ملف SKILL.md يصف مشاريعك ومفاتيحك واصطلاحاتك الفعلية. القدرات نفسها بثلاثة أبواب، فلا تعلق في انتظار أن تضيف أداتك المفضلة الدعم.

flowchart LR
    A[Agent via MCP] --> P[One REST pipeline]
    B[Script via REST] --> P
    S[Agent via skill bundle] --> P
    P --> W[Your workspace]

التحفظات الصريحة

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

لذلك نجعل الافتراض مفاتيح لكل وكيل على حدة، وندعك تمنح الوكيل الأدوات التي يحتاجها فعلًا لا أكثر. قائمة الأدوات التي يراها الوكيل مصفاة سلفًا حسب نطاقات مفتاحه: اقرأ اللوحة كلها، واكتب فقط حيث ينبغي أن تتصرف. إليك استجابة tools/list مختصرة، وهي الشكل الذي يقرؤه العميل عند الاتصال:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "tools": [
      { "name": "who_am_i", "description": "The identity behind the current API key." },
      { "name": "search", "description": "Search issues and docs across the workspace." },
      { "name": "list_issues", "description": "List issues in a project." },
      { "name": "get_issue", "description": "Issue detail." },
      { "name": "create_issue", "description": "Create an issue." },
      { "name": "update_issue", "description": "Update an issue." },
      { "name": "transition_issue", "description": "Move an issue to a new status." }
    ]
  }
}

هذه سبع من الأدوات؛ المجموع أكثر من 180 أداة، وما يراه مفتاح بعينه مصفى حسب نطاقاته، فالمفتاح المخصص للقراءة فقط لا تعود إليه create_issue ولا transition_issue إطلاقًا.

نافذة صلاحيات كل وكيل على حدة في مركز الوكلاء في Taskfolk

ولا نظن أيضًا أن MCP يحل محل واجهة API، بل يجلس فوقها. سطح REST يبقى مصدر الحقيقة، ويبقى ما تلجأ إليه في سكربت أو في مهمة CI. ‏MCP طبقة التسهيل للوكلاء الذين يدعمونه، لا نظام ثانٍ يحتاج إلى مزامنة.

لماذا يهم الأمر الآن

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

وكيل متصل في مركز الوكلاء في Taskfolk بهويته ومفتاحه الخاصين

هذا هو الرهان وراء خادم MCP في Taskfolk. إن أردت تجربته، أضف الخادم إلى عميل MCP لديك بمفتاح محدود النطاق ووجّه وكيلًا واحدًا نحو مشروع حقيقي. أسوأ الاحتمالات أن تتعلم أين الحواف الخشنة. وأفضلها أن تتوقف عن كتابة كود الربط.

أسئلة شائعة

لماذا تحتاج أداة تتبع مشاريع إلى خادم MCP؟

لأن الوكيل الذي يؤدي عملًا حقيقيًا يحتاج إلى مكان يدوّن فيه ما يفعله، لا سجل دردشة يبتعد مع التمرير بل الباكلوج واللوحة اللذين ينظر إليهما الفريق كله أصلًا. عبر MCP تصير خطة الوكيل مهامًا، ويصير عمله تغييرات حالة، ويهبط كل فعل منسوبًا إلى صاحبه وبالصلاحيات نفسها التي كانت ستكون لزميل.

ما هو MCP بكلمات بسيطة؟

بروتوكول Model Context Protocol طريقة قياسية تتيح لعميل ذكاء اصطناعي اكتشاف الأدوات التي تقدمها خدمة ما واستدعاءها دون أن يكتب أحد كود الربط يدويًا: الخدمة تشغّل خادم MCP يسرد أدواتها، وعميل مثل Claude أو Cursor يقرأ القائمة ويستخدمها فورًا. والتشبيه المعتاد منفذ USB: شكل واحد يفهمه النموذج سلفًا بدل محوّل مفصّل لكل أداة.

هل يحل MCP محل واجهة REST API؟

لا، بل يجلس فوقها. سطح REST يبقى مصدر الحقيقة ويبقى ما تلجأ إليه في سكربت أو مهمة CI؛ ‏MCP طبقة التسهيل للوكلاء الذين يدعمونه، لا نظام ثانٍ يحتاج إلى مزامنة.

هل من الآمن منح وكيل ذكاء اصطناعي صلاحية الكتابة عبر MCP؟

فقط ببيانات اعتماد محدودة النطاق: وكيل بمفتاح قادر على الكتابة يستطيع إحداث ضرر إن منحته النطاق الخطأ. ‏MCP فتيّ، والمواصفة ما زالت تتحرك، ودعم العملاء متفاوت، لذلك يجعل Taskfolk الافتراض مفاتيح لكل وكيل على حدة ويدعك تمنح الوكيل الأدوات التي يحتاجها فعلًا لا أكثر: اقرأ اللوحة كلها، واكتب فقط حيث ينبغي أن يتصرف.

قراءات ذات صلة

أضف تعليقًا

ابدأ النقاش.