Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
- SSE aktarımını kullandığınızda, MCP uzantısı varsayılan konak depolama hesabı (
AzureWebJobsStorage) tarafından sağlanan Azure Kuyruk depolama alanına dayanır. Kimlik tabanlı bağlantıları kullanırken, işlev uygulamanızın ana bilgisayar depolama hesabında en az şu rol tabanlı izinlere sahip olduğundan emin olun: Depolama Kuyruğu Veri Katkıda Bulunanı ve Depolama Kuyruğu Veri İleti İşlemcisi. - McP uzantısı yerel olarak çalışırken Azure İşlevleri Core Tools'un 4.0.7030 veya sonraki bir sürümünü gerektirir.
- Paketin 2.1.0 veya sonraki bir
Microsoft.Azure.Functions.Workersürümünü gerektirir. - Paketin 2.0.2 veya sonraki bir sürümünü
Microsoft.Azure.Functions.Worker.Sdkgerektirir.
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 3.2.2 veya sonraki bir
azure-functions-java-librarysürümünü gerektirir. - Bağımlılığın 1.40.0 veya sonraki bir
azure-functions-maven-pluginsürümünü gerektirir.
- Bağımlılığın 4.9.0 veya sonraki bir
@azure/functionssürümünü gerektirir
- Paketin 1.24.0 veya sonraki bir sürümünü
azure-functionsgerektirir.
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}"
}
}
}
}