حدّد ما الذي يستبدله adapter
استخدم MCP عندما يحتاج MCP client إلى الـ Tools نفسها التي يتيحها تطبيقك عبر AGENTO. أعد استخدام تعريفات الـ Tools وسياسات التنفيذ التي جهّزها الـ Compiler، بدل إدارة نسخة أخرى منها لتكامل MCP.
يوفّر adapter مجموعة handlers، وليس خادمًا يستمع للطلبات. يبقى تكامل MCP SDK مسؤولًا عن النقل وAuth. اختبر الـ Tool عبر runtime.invoke() أولًا، ثم عبر adapter وقارن النتيجة المنظمة.
الحجز يظل عملية من عدة خطوات
قد يعيد استدعاء book الحالة needs_selection ثم needs_confirmation. يعني ذلك أن استدعاء MCP نجح على مستوى البروتوكول، لكن عملية الحجز لا تزال تحتاج تفاعل المستخدم. يجب أن يعرض التطبيق الخيارات والموافقة، ويستخدم دوال المتابعة الخاصة بالمضيف.
لا تكشف Confirmation كـ Tool عادية يستطيع الـ AI Model الذي اقترح العملية استدعاءها. ولا تعلن اكتمال الحجز لمجرد عدم وجود خطأ بروتوكول. احتفظ بحالة AGENTO وطبّق ربط المستخدم بالـ Session كما في التطبيق الأصلي.
تفترض الأمثلة أدناه وجود Runtime جاهز ومستخدم جرى التحقق من هويته لكل Request. اختبر مستخدمين بجلستين مختلفتين، وتأكد أن context callback لا ينقل هوية أحدهما إلى طلب الآخر.
يتضمن AGENTO أساسًا لـMCP adapter مستقل عن طبقة البروتوكول، لكنه لا يقدّم خادم نقل مكتملًا.
إنشاء adapter
import { createMcpAdapter } from "agento-runtime";
const handlers = createMcpAdapter(runtime, async () => ({
sessionId: serverSessionId,
auth: { token: callerAccessToken },
}));
عرض الـ Tools
const result = await handlers.listTools();
يستخرج adapter بيانات Tools MCP من السجل المجمّع نفسه، ويضيف تلميحات للسلوك، مثل القراءة فقط والعمليات المدمّرة وidempotency.
استدعاء Tool
const result = await handlers.callTool({
name: "search-services",
arguments: { q: "hair" },
});
يستدعي adapter الدالة runtime.invoke() مع presentation: "raw"، ويعيد نتيجة AGENTO كمحتوى منظّم.
الـ Input الناقصة وحالات الاستكمال
قد يعيد تنفيذ Tool MCP حالة استكمال منظّمة، بدل الادعاء أن الـ Tool أكملت عملها:
needs_inputneeds_selectionneeds_confirmation
على التطبيق المضيف وواجهة MCP تحديد كيفية استكمال تلك الحالات.
Confirmation تحت سيطرة التطبيق المضيف عمدًا
يوفّر adapter دوال للمضيف من أجل confirm() وselect()، لكن Confirmation لا يُنشر كـ Tool عامة يستطيع الـ AI Model استدعاءها. يمنع ذلك الـ AI Model الذي اقترح الأثر من منح نفسه الموافقة.
مسؤوليات التطبيق المضيف
يبقى تكامل MCP SDK الرسمي مسؤولًا عن:
- تهيئة طبقة النقل.
- التفاوض على البروتوكول.
- مصادقة النقل.
- هوية المستخدم وسياقه لكل طلب.
- ربط دورة طلب MCP بجلسة AGENTO يديرها الخادم.
لا تستمد بيانات الاعتماد أو ملكية الـ Session من arguments يقدّمها الـ AI Model.