Aracılığıyla paylaş


Azure İşlevleri için Model Bağlam Protokolü bağlamalarına genel bakış

Model Bağlam Protokolü (MCP), dil modellerinin ve aracılarının dış veri kaynaklarını ve araçlarını daha verimli bir şekilde bulmasına ve kullanmasına olanak sağlayan bir istemci-sunucu protokolüdür.

Azure İşlevleri MCP uzantısı, uzak MCP sunucuları oluşturmak için Azure İşlevleri'ni kullanmanıza olanak tanır. Bu sunucular, dil modelleri ve aracılar gibi MCP istemcilerinin belirli görevleri sorgulaması ve bunlara erişmesi için MCP aracı tetikleyici işlevlerini barındırabilir.

Action Type
BIR MCP aracı çağrı isteğinden işlev çalıştırma Trigger

Important

MCP uzantısı şu anda PowerShell uygulamalarını desteklemez.

Prerequisites

  • Paketin 2.1.0 veya sonraki bir Microsoft.Azure.Functions.Worker sürümünü gerektirir.
  • Paketin 2.0.2 veya sonraki bir sürümünü Microsoft.Azure.Functions.Worker.Sdk gerektirir.

Uzantıyı yükleme

Note

C# için Azure İşlevleri MCP uzantısı yalnızca yalıtılmış çalışan modelini destekler.

Bu NuGet paketini tercih ettiğiniz şekilde yükleyerek uzantıyı projenize ekleyin:

Microsoft.Azure.Functions.Worker.Extensions.Mcp

  • Bağımlılığın 4.9.0 veya sonraki bir @azure/functions sürümünü gerektirir

Paket yükleme

Bu bağlama uzantısını uygulamanızda kullanabilmek için projenizin kökündeki host.json dosyasının şu extensionBundle başvuruyu içerdiğinden emin olun:

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

Bu örnekte, version değeri [4.0.0, 5.0.0) İşlevler konağına en az 4.0.0 ama daha küçük 5.0.0olan ve 4.x'in tüm olası sürümlerini içeren bir paket sürümü kullanma talimatı verir. Bu gösterim, uygulamanızı v4.x uzantı paketinin mevcut en son küçük sürümünde etkili bir şekilde güncel tutar.

Mümkün olduğunda, en son uzantı paketi ana sürümünü kullanmanız ve çalışma zamanının en son ikincil sürümü otomatik olarak korumasına izin vermelisiniz. Uzantı paketleri yayın sayfasında en son paketin içeriğini görüntüleyebilirsiniz. Daha fazla bilgi için bkz. Azure İşlevleri uzantı paketleri.

host.json ayarları

Bu bölümde, 2.x ve sonraki sürümlerde bu bağlama için kullanılabilen yapılandırma ayarları açıklanmaktadır. host.json dosyasındaki ayarlar, bir işlev uygulaması örneğindeki tüm işlevler için geçerlidir. İşlev uygulaması yapılandırma ayarları hakkında daha fazla bilgi için bkz. Azure İşlevleri içinhost.json başvuru.

MCP sunucu bilgilerini tanımlamak için içindeki extensions.mcp bölümünü kullanabilirsinizhost.json.

{
  "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 İstemcilere uzak MCP sunucusuna nasıl erişeceklerini açıklar.
serverName Uzak MCP sunucusu için kolay bir ad.
serverVersion Uzak MCP sunucusunun geçerli sürümü.
encryptClientState İstemci durumunun şifrelenip şifrelenmediğini belirler. Varsayılan değer true'dır. False olarak ayarlamak hata ayıklama ve test senaryoları için yararlı olabilir, ancak üretim için önerilmez.
messageOptions SSE aktarımındaki ileti uç noktası için Seçenekler nesnesi.
messageOptions.UseAbsoluteUriForEndpoint Varsayılan olarak false değerini alır. Yalnızca sunucu tarafından gönderilen olaylar (SSE) aktarımı için geçerlidir; bu ayar Streamable HTTP aktarımını etkilemez. olarak ayarlanırsa false, ileti uç noktası SSE aktarımı üzerinden yapılan ilk bağlantılar sırasında göreli URI olarak sağlanır. olarak ayarlanırsa true, ileti uç noktası mutlak bir URI olarak döndürülür. Belirli bir nedeniniz olmadığı sürece göreli URI kullanılması önerilmez.
sistem Sistem düzeyinde yapılandırma için Seçenekler nesnesi.
system.webhookAuthorizationLevel Web kancası uç noktası için gereken yetkilendirme düzeyini tanımlar. Varsayılan olarak "Sistem" olur. İzin verilen değerler "Sistem" ve "Anonim" değerleridir. Değeri "Anonim" olarak ayarladığınızda, istekler için artık erişim anahtarı gerekmez. Anahtar gerekip gerekmediğine bakılmaksızın, yerleşik MCP sunucu yetkilendirmesini kimlik tabanlı erişim denetimi katmanı olarak kullanabilirsiniz.

MCP sunucunuza bağlanma

İşlev uygulamanız tarafından kullanıma sunulan MCP sunucusuna bağlanmak için uygun uç nokta ve aktarım bilgilerini bir MCP istemcisine sağlamanız gerekir. Aşağıdaki tabloda Azure İşlevleri MCP uzantısı tarafından desteklenen aktarımlar ve ilgili bağlantı uç noktaları gösterilmektedir.

Transport Bitiş noktası
Akışla aktarılabilir HTTP /runtime/webhooks/mcp
Server-Sent Olayları (SSE)1 /runtime/webhooks/mcp/sse

1 Daha yeni protokol sürümleri Server-Sent Olayları aktarımını kullanım dışı bırakılmıştır. İstemciniz bunu özel olarak gerektirmediği sürece bunun yerine Streamable HTTP aktarımını kullanmanız gerekir.

Azure'da barındırıldığında, uzantı tarafından kullanıma sunulan uç noktalar varsayılan olarak adlı mcp_extension da gerektirir. HTTP üst bilgisinde x-functions-key veya sorgu dizesi parametresinde code sağlanmadıysa, istemciniz bir 401 Unauthorized yanıt alır. içindeki özelliğini system.webhookAuthorizationLevelhost.jsonolarak ayarlayarak Anonymous bu gereksinimi kaldırabilirsiniz. Daha fazla bilgi için host.json ayarları bölümüne bakın.

İşlev erişim anahtarlarınızı alma bölümünde açıklanan yöntemlerden herhangi birini kullanarak anahtarı alabilirsiniz. Aşağıdaki örnek, Azure CLI ile anahtarın nasıl alınıp alınamını gösterir:

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

MCP istemcileri bu yapılandırmayı çeşitli şekillerde kabul ediyor. Seçtiğiniz istemcinin belgelerine bakın. Aşağıdaki örnektemcp.json kullanabileceğiniz gibi bir dosya gösterilmektedir. Örnek, her ikisi de Streamable HTTP aktarımını kullanarak iki sunucu ayarlar. Birincisi, Azure İşlevleri Temel Araçları ile yerel test içindir. İkincisi, Azure'da barındırılan bir işlev uygulaması içindir. Yapılandırma, uzak sunucuyu ilk kez çalıştırdığınızda Visual Studio Code'un sizden istemde bulunduğu giriş parametrelerini alır. Girişlerin kullanılması, sistem anahtarı gibi gizli dizilerin dosyaya kaydedilmemesini ve kaynak denetimine iade edilmesini sağlar.

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