وكيل الذكاء الاصطناعي الخاص بك لا فائدة منه بدون هذا
لماذا MCP هو USB‑C للذكاء الاصطناعي.
لقد بنيت وكيلًا ذكياً. ربما يكون جيدًا حتى. الأوامر مضغوطة، النموذج سريع، والاستجابات تبدو طبيعية.
لكن عندما يطلب منه أحد التحقق من سجل عميل في Salesforce. أو سحب أحدث تذاكر Jira. أو البحث في وثائقك الداخلية.
فإن وكيلك الجميل… لا يستطيع.
هذه هي مشكلة التكامل التي تصطدم بها كل منصة ذكاء اصطناعي في النهاية. يحتاج وكيلك إلى أيدي. يحتاج إلى عيون داخل أنظمة عملك الفعلية. بدونها، أنت تدير مجرد روبوت محادثة مكلف.
الحل التقليدي؟ كتابة غلاف API مخصص لكل خدمة تريد الاتصال بها. قراءة وثائقها، التعامل مع المصادقة، إدارة حدود المعدل، والدعاء ألا تغير نقاط النهاية الشهر المقبل. ثم تكرار العملية للخدمة التالية. ثم التالية.
بروتوكول سياق النموذج (MCP) يغيّر هذه المعادلة بالكامل.
ما يحلّه MCP فعليًا
فكّر في USB قبل USB‑C. كان لديك Mini‑USB، Micro‑USB، موصلات Apple الملكية، وصندوق مليء بالكابلات التي تعمل فقط مع أجهزة معينة. USB‑C لم يضيف مجرد موصل جديد—بل أسس معيارًا يعني أن أي كابل يمكن أن يعمل مع أي جهاز.
MCP يفعل الشيء نفسه لتكامل أدوات الذكاء الاصطناعي.
بدلاً من كتابة كود مخصص لربط الوكيل الخاص بك بـ Salesforce أو HubSpot أو GitHub أو أي خدمة أخرى، تقوم بتنفيذ البروتوكول مرة واحدة (أو تنزيل خادم مُعد مسبقًا)، ويمكن لأي وكيل متوافق مع MCP التحدث إليه فورًا.
يتولى البروتوكول طبقة التواصل. أنت فقط تحدد ما تفعله أدواتك وما البيانات التي تحتاجها.
إعداد تكاملات متعددة
تدعم Mastra بروتوكول MCP أصلاً عبر MCPClient. يمكنك ربط الأدوات المحلية (تعمل كعمليات فرعية) والخدمات البعيدة (تعمل على بنية تحتية مستقلة).
إليك إعداد إنتاجي واقعي يربط Google Maps للتوجيه، خدمة طقس، وبحث Wikipedia محلي:
import { MCPClient } from '@mastra/mcp';
export const mcpClient = new MCPClient({ servers: { // أداة محلية (Stdio) wikipedia: { command: 'npx', args: ['-y', 'wikipedia-mcp'], }, // الخرائط والملاحة (عن بُعد/HTTP) googleMaps: { url: new URL(process.env.GOOGLE_MAPS_MCP_URL!), requestInit: { headers: { Authorization: `Bearer ${process.env.GOOGLE_MAPS_API_KEY}`, }, }, }, // تكامل خدمة الطقس weather: { url: new URL('https://mcp.weatherapi.dev/v1'), requestInit: { headers: { 'X-API-Key': process.env.WEATHER_API_KEY!, }, }, }, },});يدير العميل دورة حياة الاتصال، ويتعامل مع إنشاء العمليات للأدوات المحلية، ويحافظ على اتصالات HTTP للخوادم البعيدة. لا تحتاج إلى لمس المقابس أو الـ stdio مباشرة.
ربط الأدوات بالوكلاء
بعد تكوين عميل MCP الخاص بك، يصبح إعطاء هذه الأدوات للوكيل أمرًا بسيطًا:
import { Agent } from '@mastra/core/agent';import { openai } from '@ai-sdk/openai';import { mcpClient } from '../mcp';
export const navigationDirectionsAgent = new Agent({ id: 'navigation-directions-agent', name: 'Navigation & Directions Assistant', instructions: `You are a helpful navigation assistant that provides route planning and travel advice. - Always confirm the start and destination locations - Use Google Maps tools to find optimal routes - Check weather conditions along the route - Provide estimated travel times and suggest alternatives if weather is poor - Include relevant details like traffic, road conditions, and points of interest - Keep responses clear and actionable`, model: openai('gpt-5'), tools: await mcpClient.getTools(), // <--- This is the magic line});عند سؤال المستخدم: “ما هو أفضل مسار من سان فرانسيسكو إلى بحيرة تاهو، وهل يجب أن أقلق بشأن الطقس؟”
يقوم الوكيل بقراءة تعريفات الأدوات المتاحة، يدرك أنه يملك وصولًا إلى أدوات توجيه خرائط جوجل وتوقعات الطقس، ينفذها بالمعلمات الصحيحة، ثم يرد بمسار أمثل مع حالة الطقس الحالية على طول الطريق.
لم تكتب سطرًا واحدًا من كود API لخرائط جوجل أو دمج خدمة الطقس.
المصادقة لكل مستخدم
هناك خطأ أمني سهل الوقوع فيه هنا: تشفير الاعتمادات مباشرة في الشيفرة.
إذا وضعت مفتاح API واحد لخرائط جوجل في متغيرات البيئة واكتفيت بذلك، سيشارك كل المستخدمين نفس الحصة وحدود السرعة. والأهم من ذلك، إذا كنت تستخدم خدمات تخزن تفضيلات المستخدم (مثل المواقع المحفوظة أو المسارات المفضلة)، سيُظهر الجميع نفس البيانات. هذا قد ينجح في العروض التجريبية، لكنه يمثل مخاطرة في بيئة الإنتاج.
تتعامل Mastra مع هذا عن طريق السماح لك بإنشاء عملاء MCP ديناميكيًا باستخدام اعتمادات خاصة بكل مستخدم:
async function handleUserRequest(userPrompt: string, userCredentials: UserCreds) { // إنشاء عميل لهذا المستخدم المحدد const userMcp = new MCPClient({ servers: { googleMaps: { url: new URL(process.env.GOOGLE_MAPS_MCP_URL!), requestInit: { headers: { // مفتاح API أو رمز مميز خاص بالمستخدم Authorization: `Bearer ${userCredentials.mapsApiKey}`, 'X-User-ID': userCredentials.userId, }, }, }, }, });
const agent = mastra.getAgent('navigationDirectionsAgent');
// حقن الأدوات في وقت التشغيل const response = await agent.generate(userPrompt, { toolsets: await userMcp.getToolsets(), });
return response;}كل مستخدم يحصل على مجموعة أدوات معزولة بحصته الخاصة من الـ API وتفضيلاته. مواقع المستخدم A المحفوظة تبقى خاصة، وسجل مسارات المستخدم B منفصل. هكذا تعمل الوكلاء متعددين المستأجرين في SaaS على أرض الواقع.
بناء الأدوات المركبة
أحيانًا تحتاج إلى دمج عدة أدوات MCP في عملية واحدة. ربما تريد تخطيط مسار يأخذ في الاعتبار كل من حركة المرور في الوقت الفعلي والظروف الجوية على طول الطريق.
يمكنك تغليف أدوات MCP في تعريفات أدوات مخصصة:
export const smartRouteTool = createTool({ id: 'smart-route-planner', description: 'Plans optimal route considering traffic and weather conditions', execute: async ({ context, mastra }) => { // Get the raw tools const tools = await mcpClient.getTools();
// 1. Get base route from Google Maps const routeData = await tools.googleMaps_getDirections.execute({ context: { origin: context.origin, destination: context.destination } });
// 2. Check weather along the route const weatherData = await tools.weather_getForecast.execute({ context: { coordinates: routeData.waypoints } });
// 3. Return enhanced route with weather warnings return { ...routeData, weatherAlerts: weatherData.alerts, recommendation: weatherData.severe ? 'Consider delaying trip' : 'Safe to travel' }; },});يمنحك هذا تحكمًا دقيقًا في كيفية تفاعل الأدوات معًا مع الاستمرار في الاستفادة من بروتوكول MCP للمهام الثقيلة.
إلى أين يؤدي هذا
كتابة عملاء API مخصصين لكل خدمة يحتاج وكيل الذكاء الاصطناعي الخاص بك للتواصل معها لم يكن مستدامًا أبدًا. إنه يتوسع بشكل سيء، يتعطل كثيرًا، ويربط منصتك بتطبيقات محددة.
MCP لا يحل كل تحديات التكامل — لا يزال المصادقة معقدًا، ولا يزال تحديد معدلات الاستخدام مهمًا، وليس كل خدمة لديها خادم MCP بعد. لكنه يؤسس لقاعدة تجعل بناء منصات الوكلاء أقل ألمًا بشكل ملحوظ.
إذا كنت تصمم نظامًا ذكاءً اصطناعيًا يحتاج إلى التفاعل مع خدمات خارجية، فإن فهم MCP ربما يكون يستحق وقتك.
الموارد
قراءة السلسلة
- توجيه LLM
- الأمان والقيود الوقائية
- MCP وتكامل الأدوات (هذه المقالة)
- سير العمل والذاكرة