Megosztás a következőn keresztül:


Az Azure Functions modellkörnyezetprotokoll-kötései – áttekintés

A Model Context Protocol (MCP) egy ügyfél-kiszolgáló protokoll, amely lehetővé teszi a nyelvi modellek és ügynökök számára a külső adatforrások és eszközök hatékonyabb felderítését és használatát.

Az Azure Functions MCP-bővítmény lehetővé teszi, hogy az Azure Functions használatával távoli MCP-kiszolgálókat hozzon létre. Ezek a kiszolgálók üzemeltethetik az MCP-eszközök eseményindító funkcióit, amelyeket az MCP-ügyfelek, például a nyelvi modellek és az ügynökök lekérdezhetnek és hozzáférhetnek bizonyos feladatok elvégzéséhez.

Action Típus
Függvény futtatása MCP-eszköz híváskéréséből Trigger

Important

Az MCP-bővítmény jelenleg nem támogatja a PowerShell-alkalmazásokat.

Prerequisites

  • A csomag 2.1.0-s vagy újabb verzióját Microsoft.Azure.Functions.Worker igényli.
  • A csomag 2.0.2-es vagy újabb verzióját Microsoft.Azure.Functions.Worker.Sdk igényli.

Bővítmény telepítése

Note

C# esetén az Azure Functions MCP-bővítmény csak az izolált feldolgozómodellt támogatja.

Adja hozzá a bővítményt a projekthez a NuGet-csomag előnyben részesített módon történő telepítésével:

Microsoft.Azure.Functions.Worker.Extensions.Mcp

Csomag telepítése

Ha használni szeretné ezt a kötéskiterjesztést az alkalmazásban, győződjön meg arról, hogy a projekt gyökerében található host.json fájl tartalmazza a extensionBundle következő hivatkozást:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

Ebben a példában az version érték [4.0.0, 5.0.0) arra utasítja a Functions-gazdagépet, hogy 4.0.0 legalább, de annál kisebb 5.0.0csomagverziót használjon, amely tartalmazza a 4.x összes lehetséges verzióját. Ez a jelölés hatékonyan fenntartja az alkalmazást a v4.x bővítménycsomag legújabb elérhető alverzióján.

Ha lehetséges, a legújabb bővítménycsomag főverziót kell használnia, és engedélyeznie kell, hogy a futtatókörnyezet automatikusan fenntartsa a legújabb alverziót. A legújabb csomag tartalmát a bővítménykötegek kiadási oldalán tekintheti meg. További információ: Azure Functions-bővítménykötegek.

host.json beállítások

Ez a szakasz a kötéshez elérhető konfigurációs beállításokat ismerteti a 2.x és újabb verzióban. A host.json fájl beállításai a függvényalkalmazás-példány összes függvényére vonatkoznak. A függvényalkalmazás konfigurációs beállításaival kapcsolatos további információkért lásd host.json Azure Functionsre vonatkozó referenciát.

A szakasz az extensions.mcphost.json MCP-kiszolgáló adatainak definiálására használható.

{
  "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 Ismerteti az ügyfeleknek, hogyan férhetnek hozzá a távoli MCP-kiszolgálóhoz.
serverName A távoli MCP-kiszolgáló rövid neve.
serverVersion A távoli MCP-kiszolgáló aktuális verziója.
encryptClientState Meghatározza, hogy az ügyfél állapota titkosítva van-e. Alapértelmezés szerint igaz. A hamis érték beállítása hasznos lehet hibakeresési és tesztelési forgatókönyvekhez, de éles környezetben nem ajánlott.
messageOptions Az üzenetvégpont beállításobjektuma az SSE-átvitelben.
messageOptions.UseAbsoluteUriForEndpoint Alapértelmezett érték: false. Csak a kiszolgáló által küldött események (SSE) átvitelére alkalmazható; ez a beállítás nem befolyásolja a streamelhető HTTP-átvitelt. Ha be falsevan állítva, az üzenetvégpont relatív URI-ként lesz megadva az SSE-átvitelen keresztüli kezdeti kapcsolatok során. Ha be van trueállítva, az üzenetvégpont abszolút URI-ként lesz visszaadva. Relatív URI használata csak akkor ajánlott, ha erre konkrét oka van.
rendszer Beállításobjektum a rendszerszintű konfigurációhoz.
system.webhookAuthorizationLevel Meghatározza a webhook-végponthoz szükséges engedélyezési szintet. Alapértelmezés szerint a "System" (Rendszer) értékre van kapcsolva. Az engedélyezett értékek a "System" és a "Névtelen". Ha "Névtelen" értékre állítja az értéket, a kérésekhez már nincs szükség hozzáférési kulcsra. Függetlenül attól, hogy szükség van-e kulcsra, használhatja a beépített MCP-kiszolgálóengedélyezést identitásalapú hozzáférés-vezérlési rétegként.

Csatlakozás az MCP-kiszolgálóhoz

A függvényalkalmazás által közzétett MCP-kiszolgálóhoz való csatlakozáshoz meg kell adnia egy MCP-ügyfelet a megfelelő végponttal és átviteli információkkal. Az alábbi táblázat az Azure Functions MCP-bővítmény által támogatott átviteleket és azok megfelelő kapcsolati végpontját mutatja be.

Transport Végpont
Streamelhető HTTP /runtime/webhooks/mcp
Server-Sent események (SSE)1 /runtime/webhooks/mcp/sse

1 Az újabb protokollverziók elavultak a Server-Sent események átvitele során. Kivéve, ha az ügyfélnek kifejezetten szüksége van rá, inkább a streamelhető HTTP-átvitelt kell használnia.

Az Azure-ban üzemeltetett végpontokhoz alapértelmezés szerint a bővítmény által közzétett végpontokhoz a rendszerkulcs neve mcp_extensionis szükséges. Ha nincs megadva a x-functions-key HTTP-fejlécben vagy a lekérdezési code sztring paraméterben, az ügyfél választ kap 401 Unauthorized . Ezt a követelményt úgy távolíthatja el, hogy a tulajdonságot a system.webhookAuthorizationLevel következőre host.jsonállítja Anonymous be: . További információt a host.json beállítások szakaszában talál.

A kulcsot a függvény hozzáférési kulcsainak lekérése című témakörben ismertetett módszerek bármelyikével lekérheti. Az alábbi példa bemutatja, hogyan szerezheti be a kulcsot az Azure CLI-vel:

az functionapp keys list --resource-group <RESOURCE_GROUP> --name <APP_NAME> --query systemKeys.mcp_extension --output tsv

Az MCP-ügyfelek különböző módokon fogadják el ezt a konfigurációt. Tekintse meg a kiválasztott ügyfél dokumentációját. Az alábbi példa egy mcp.json olyan fájlt mutat be, amelyet a GitHub Copilot MCP-kiszolgálóinak a Visual Studio Code-ban való konfigurálásához használhat. A példa két kiszolgálót állít be, mindkettő a streamelhető HTTP-átvitelt használja. Az első az Azure Functions Core Tools helyi tesztelése. A második az Azure-ban üzemeltetett függvényalkalmazás. A konfiguráció olyan bemeneti paramétereket vesz fel, amelyekhez a Visual Studio Code a távoli kiszolgáló első futtatásakor kéri. A bemenetek használatával biztosítható, hogy a rendszerkulcshoz hasonló titkos kulcsok ne kerülhessenek a fájlba, és ne kerülhessenek be a forrásvezérlőbe.

{
    "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}"
            }
        }
    }
}