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 yardımcı olmak için tasarlanmış bir istemci-sunucu protokolüdür.

Azure İşlevleri MCP uzantısı, uzak MCP sunucuları oluşturmak için Azure İşlevleri'ni kullanmanızı sağlar. Bu sunucular, dil modelleri ve aracılar gibi MCP istemcilerinin belirli görevleri gerçekleştirmek için sorgulayıp erişebileceği MCP aracı tetikleyici işlevlerini barındırabilir. Uzantı, araç tetikleyicilerini kaynak tetikleyicileriyle birleştirerek araçlarınızın düz metin yerine etkileşimli kullanıcı arabirimleri döndürmesini sağlayan MCP Uygulamalarını da destekler.

Action Type
BIR MCP aracı çağrı isteğinden işlev çalıştırma Araç tetikleyicisi
bir işlevi MCP kaynağı olarak kullanıma sunma Kaynak tetikleyicisi
Bir işlevi MCP istemi olarak kullanıma sunma İstem tetikleyicisi

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.

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

{
  "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 falseayarlanırsa, ileti uç noktası SSE aktarımı üzerinden yapılan ilk bağlantılar sırasında göreli bir URI'dir. olarak ayarlanırsa true, ileti uç noktası mutlak bir URI'dir. 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ın kullanıma sunduğu MCP sunucusuna bağlanmak için uygun uç nokta ve aktarım bilgilerini içeren bir MCP istemcisi sağlayın. 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ın. İstemciniz bunu özel olarak gerektirmediği sürece bunun yerine Streamable HTTP aktarımını kullanın.

İşlev uygulamanızı Azure'da barındırdığınızda uzantı, kullanıma sunulan uç noktalar için adlı mcp_extension gerektirir. Bu anahtarı HTTP üst bilgisinde x-functions-key veya sorgu dizesi parametresinde code sağlamazsanız, 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 örnekte Azure CLI kullanılarak anahtarın nasıl alındığı gösterilmektedir:

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. İlk sunucu, Azure İşlevleri Temel Araçları ile yerel test içindir. İkinci sunucu, 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şleri kullanarak sistem anahtarı gibi gizli dizilerin dosyaya kaydedilmediğinden ve kaynak denetimine iade olmadığından emin olursunuz.

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