مشاركة عبر


نظرة عامة على روابط بروتوكول سياق النموذج لوظائف Azure

بروتوكول سياق النموذج (MCP) هو بروتوكول خادم العميل يهدف إلى تمكين نماذج اللغة والوكلاء من اكتشاف مصادر البيانات الخارجية وأدواتها واستخدامها بكفاءة أكبر.

يسمح لك ملحق Azure Functions MCP باستخدام Azure Functions لإنشاء خوادم MCP بعيدة. يمكن لهذه الخوادم استضافة وظائف مشغل أداة MCP، والتي يمكن لعملاء MCP، مثل نماذج اللغة والوكلاء، الاستعلام عنها والوصول إليها للقيام بمهام معينة.

Action Type
تشغيل دالة من طلب استدعاء أداة MCP Trigger

Important

لا يدعم ملحق MCP حاليا تطبيقات PowerShell.

Prerequisites

  • يتطلب الإصدار 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

تثبيت الحزمة

لكي تتمكن من استخدام ملحق الربط هذا في تطبيقك، تأكد من أن ملف 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}"
            }
        }
    }
}