إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
بروتوكول سياق النموذج (MCP) هو بروتوكول خادم العميل يهدف إلى تمكين نماذج اللغة والوكلاء من اكتشاف مصادر البيانات الخارجية وأدواتها واستخدامها بكفاءة أكبر.
يسمح لك ملحق Azure Functions MCP باستخدام Azure Functions لإنشاء خوادم MCP بعيدة. يمكن لهذه الخوادم استضافة وظائف مشغل أداة MCP، والتي يمكن لعملاء MCP، مثل نماذج اللغة والوكلاء، الاستعلام عنها والوصول إليها للقيام بمهام معينة.
| Action | Type |
|---|---|
| تشغيل دالة من طلب استدعاء أداة MCP | Trigger |
Important
لا يدعم ملحق MCP حاليا تطبيقات PowerShell.
Prerequisites
- عند استخدام نقل SSE، يعتمد ملحق MCP على تخزين Azure Queue الذي يوفره حساب تخزين المضيف الافتراضي (
AzureWebJobsStorage). عند استخدام الاتصالات المستندة إلى الهوية، تأكد من أن تطبيق الوظائف الخاص بك يحتوي على ما يعادل هذه الأذونات المستندة إلى الدور على الأقل في حساب تخزين المضيف: قارئ بيانات قائمة انتظار التخزينومعالج رسائل بيانات قائمة انتظار التخزين. - عند التشغيل محليا، يتطلب ملحق MCP الإصدار 4.0.7030 من Azure Functions Core Tools، أو إصدارا أحدث.
- يتطلب الإصدار 2.1.0 أو أحدث من الحزمة
Microsoft.Azure.Functions.Worker. - يتطلب الإصدار 2.0.2 أو أحدث من الحزمة
Microsoft.Azure.Functions.Worker.Sdk.
تثبيت الملحق
Note
بالنسبة إلى C#، يدعم ملحق Azure Functions MCP نموذج العامل المعزول فقط.
أضف الملحق إلى مشروعك عن طريق تثبيت حزمة NuGet هذه بالطريقة المفضلة لديك:
Microsoft.Azure.Functions.Worker.Extensions.Mcp
- يتطلب الإصدار 3.2.2 أو أحدث من التبعية
azure-functions-java-library. - يتطلب الإصدار 1.40.0 أو أحدث من التبعية
azure-functions-maven-plugin.
- يتطلب الإصدار 4.9.0 أو أحدث من التبعية
@azure/functions
- يتطلب الإصدار 1.24.0 أو أحدث من الحزمة
azure-functions.
تثبيت الحزمة
لكي تتمكن من استخدام ملحق الربط هذا في تطبيقك، تأكد من أن ملف host.json في جذر مشروعك يحتوي على هذا extensionBundle المرجع:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
في هذا المثال، version ترشد قيمة [4.0.0, 5.0.0) مضيف الوظائف إلى استخدام إصدار حزمة على الأقل 4.0.0 ولكن أقل من 5.0.0، والذي يتضمن جميع الإصدارات المحتملة من 4.x. يحافظ هذا النص بشكل فعال على تطبيقك على أحدث إصدار ثانوي متوفر من مجموعة ملحقات v4.x.
عندما يكون ذلك ممكنا، يجب استخدام أحدث إصدار رئيسي لحزمة الملحقات والسماح لوقت التشغيل بالحفاظ تلقائيا على أحدث إصدار ثانوي. يمكنك عرض محتويات أحدث حزمة في صفحة إصدار حزم الملحقات. لمزيد من المعلومات، راجع حزم ملحقات Azure Functions.
إعدادات host.json
يصف هذا القسم إعدادات التكوين المتوفرة لهذا الربط في الإصدار 2.x والإصدارات الأحدث. تنطبق الإعدادات في ملف host.json على جميع الوظائف في مثيل تطبيق الوظائف. لمزيد من المعلومات حول إعدادات تكوين تطبيق الوظائف، راجع مرجعhost.json ل Azure Functions.
يمكنك استخدام القسم في extensions.mcphost.json لتعريف معلومات خادم MCP.
{
"version": "2.0",
"extensions": {
"mcp": {
"instructions": "Some test instructions on how to use the server",
"serverName": "TestServer",
"serverVersion": "2.0.0",
"encryptClientState": true,
"messageOptions": {
"useAbsoluteUriForEndpoint": false
},
"system": {
"webhookAuthorizationLevel": "System"
}
}
}
}
| Property | Description |
|---|---|
| instructions | يصف للعملاء كيفية الوصول إلى خادم MCP البعيد. |
| serverName | اسم مألوف لخادم MCP البعيد. |
| serverVersion | الإصدار الحالي من خادم MCP البعيد. |
| encryptClientState | تحديد ما إذا كانت حالة العميل مشفرة. الإعدادات الافتراضية إلى true. قد يكون الإعداد على false مفيدا لتصحيح الأخطاء واختبار السيناريوهات ولكن لا يوصى به للإنتاج. |
| عمليات الرسائل | عنصر خيارات لنقطة نهاية الرسالة في نقل SSE. |
| messageOptions.UseAbsoluteUriForEndpoint | الإعدادات الافتراضية لـ false. ينطبق فقط على نقل الأحداث المرسلة من الخادم (SSE)؛ لا يؤثر هذا الإعداد على نقل HTTP القابل للبث. إذا تم تعيينها إلى false، يتم توفير نقطة نهاية الرسالة ك URI نسبي أثناء الاتصالات الأولية عبر نقل SSE. إذا تم تعيينها إلى true، يتم إرجاع نقطة نهاية الرسالة ك URI مطلق. لا يوصى باستخدام URI نسبي إلا إذا كان لديك سبب محدد للقيام بذلك. |
| نظام | عنصر خيارات للتكوين على مستوى النظام. |
| system.webhookAuthorizationLevel | يحدد مستوى التخويل المطلوب لنقطة نهاية خطاف الويب. الإعدادات الافتراضية ل "النظام". القيم المسموح بها هي "النظام" و"مجهول". عند تعيين القيمة إلى "مجهول"، لم يعد مفتاح الوصول مطلوبا للطلبات. بغض النظر عما إذا كان المفتاح مطلوبا أم لا، يمكنك استخدام تخويل خادم MCP المضمن كطبقة التحكم في الوصول المستندة إلى الهوية. |
الاتصال بخادم MCP الخاص بك
للاتصال بخادم MCP الذي يعرضه تطبيق الوظائف، تحتاج إلى تزويد عميل MCP بنقطة النهاية المناسبة ومعلومات النقل. يعرض الجدول التالي عمليات النقل التي يدعمها ملحق Azure Functions MCP، جنبا إلى جنب مع نقطة نهاية الاتصال المقابلة لها.
| نقل | نقطة النهاية |
|---|---|
| HTTP قابل للبث | /runtime/webhooks/mcp |
| Server-Sent الأحداث (SSE)1 | /runtime/webhooks/mcp/sse |
1 قامت إصدارات البروتوكول الأحدث بإيقاف نقل Server-Sent الأحداث. ما لم يتطلب العميل الخاص بك ذلك على وجه التحديد، يجب عليك استخدام نقل HTTP القابل للبث بدلا من ذلك.
عند استضافتها في Azure، بشكل افتراضي، تتطلب نقاط النهاية التي يعرضها الملحق أيضا مفتاح النظام المسمى mcp_extension. إذا لم يتم توفيره في x-functions-key رأس HTTP أو في معلمة code سلسلة الاستعلام، يتلقى العميل استجابة 401 Unauthorized . يمكنك إزالة هذا المطلب عن طريق تعيين الخاصية system.webhookAuthorizationLevel في host.json إلى Anonymous. لمزيد من المعلومات، راجع قسم إعداداتhost.json .
يمكنك استرداد المفتاح باستخدام أي من الطرق الموضحة في الحصول على مفاتيح الوصول إلى الدالة. يوضح المثال التالي كيفية الحصول على المفتاح باستخدام Azure CLI:
az functionapp keys list --resource-group <RESOURCE_GROUP> --name <APP_NAME> --query systemKeys.mcp_extension --output tsv
يقبل عملاء MCP هذا التكوين بطرق مختلفة. راجع الوثائق للعميل الذي اخترته. يوضح المثال التالي ملفا mcp.json كما قد تستخدمه لتكوين خوادم MCP ل GitHub Copilot في Visual Studio Code. يقوم المثال بإعداد خادمين، كليهما باستخدام نقل HTTP القابل للبث. الأول للاختبار المحلي باستخدام Azure Functions Core Tools. والثاني لتطبيق دالة مستضاف في Azure. يأخذ التكوين معلمات الإدخال التي يطالبك بها Visual Studio Code عند تشغيل الخادم البعيد لأول مرة. يضمن استخدام المدخلات عدم حفظ البيانات السرية مثل مفتاح النظام في الملف وفحصها في التحكم بالمصادر.
{
"inputs": [
{
"type": "promptString",
"id": "functions-mcp-extension-system-key",
"description": "Azure Functions MCP Extension System Key",
"password": true
},
{
"type": "promptString",
"id": "functionapp-host",
"description": "The host domain of the function app."
}
],
"servers": {
"local-mcp-function": {
"type": "http",
"url": "http://localhost:7071/runtime/webhooks/mcp"
},
"remote-mcp-function": {
"type": "http",
"url": "https://${input:functionapp-host}/runtime/webhooks/mcp",
"headers": {
"x-functions-key": "${input:functions-mcp-extension-system-key}"
}
}
}
}