Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Protokol Konteks Model (MCP) adalah protokol server klien yang dimaksudkan untuk memungkinkan model bahasa dan agen menemukan dan menggunakan sumber dan alat data eksternal secara lebih efisien.
Ekstensi MCP Azure Functions memungkinkan Anda menggunakan Azure Functions untuk membuat server MCP jarak jauh. Server ini dapat menghosting fungsi pemicu alat MCP, yang klien MCP, seperti model bahasa dan agen, dapat mengkueri dan mengakses untuk melakukan tugas tertentu.
| Action | Type |
|---|---|
| Menjalankan fungsi dari permintaan panggilan alat MCP | Trigger |
Important
Ekstensi MCP saat ini tidak mendukung aplikasi PowerShell.
Prerequisites
- Saat Anda menggunakan transportasi SSE, ekstensi MCP bergantung pada penyimpanan Azure Queue yang disediakan oleh akun penyimpanan host default (
AzureWebJobsStorage). Saat menggunakan koneksi berbasis identitas, pastikan aplikasi fungsi Anda memiliki setidaknya izin berbasis peran ini di akun penyimpanan host: Pembaca Data Antrean Penyimpanan dan Prosesor Pesan Data Antrean Penyimpanan. - Saat berjalan secara lokal, ekstensi MCP memerlukan versi 4.0.7030 dari Azure Functions Core Tools, atau versi yang lebih baru.
- Memerlukan paket versi 2.1.0 atau yang lebih baru
Microsoft.Azure.Functions.Worker. - Memerlukan paket versi 2.0.2 atau yang lebih baru
Microsoft.Azure.Functions.Worker.Sdk.
Pasang ekstensi
Note
Untuk C#, ekstensi MCP Azure Functions hanya mendukung model pekerja yang terisolasi.
Tambahkan ekstensi ke proyek Anda dengan menginstal paket NuGet ini dengan cara yang Anda inginkan:
Microsoft.Azure.Functions.Worker.Extensions.Mcp
- Memerlukan dependensi versi 3.2.2 atau yang lebih baru
azure-functions-java-library. - Memerlukan dependensi versi 1.40.0 atau yang lebih baru
azure-functions-maven-plugin.
- Memerlukan dependensi versi 4.9.0 atau yang lebih baru
@azure/functions
- Memerlukan paket versi 1.24.0 atau yang lebih baru
azure-functions.
Menginstal bundel
Agar dapat menggunakan ekstensi pengikatan ini di aplikasi Anda, pastikan file host.json di akar proyek Anda berisi referensi ini extensionBundle :
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
Dalam contoh ini, version nilai [4.0.0, 5.0.0) menginstruksikan host Functions untuk menggunakan versi bundel yang setidaknya 4.0.0 tetapi kurang dari 5.0.0, yang mencakup semua versi potensial 4.x. Notasi ini secara efektif mempertahankan aplikasi Anda pada versi minor terbaru yang tersedia dari bundel ekstensi v4.x.
Jika memungkinkan, Anda harus menggunakan versi utama bundel ekstensi terbaru dan memungkinkan runtime untuk secara otomatis mempertahankan versi minor terbaru. Anda dapat melihat konten bundel terbaru pada halaman rilis bundel ekstensi. Untuk informasi selengkapnya, lihat Bundel ekstensi Azure Functions.
Pengaturan host.json
Bagian ini menjelaskan pengaturan konfigurasi yang tersedia untuk pengikatan ini di versi 2.x dan yang lebih baru. Pengaturan dalam file host.json berlaku untuk semua fungsi dalam instans aplikasi fungsi. Untuk informasi selengkapnya tentang pengaturan konfigurasi aplikasi fungsi, lihat referensihost.json untuk Azure Functions.
Anda dapat menggunakan bagian extensions.mcp di host.json untuk menentukan informasi server 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 | Menjelaskan kepada klien cara mengakses server MCP jarak jauh. |
| serverName | Nama yang mudah diingat untuk server MCP jarak jauh. |
| serverVersion | Versi server MCP jarak jauh saat ini. |
| encryptClientState | Menentukan apakah status klien dienkripsi. Secara bawaan diatur menjadi benar. Pengaturan ke false mungkin berguna untuk skenario penelusuran kesalahan dan pengujian tetapi tidak disarankan untuk produksi. |
| messageOptions | Objek opsi untuk titik akhir pesan di transportasi SSE. |
| messageOptions.UseAbsoluteUriForEndpoint | Secara default menjadi false. Hanya berlaku untuk transportasi peristiwa yang dikirim server (SSE) ; pengaturan ini tidak memengaruhi transportasi HTTP yang dapat dialirkan. Jika diatur ke false, titik akhir pesan disediakan sebagai URI relatif selama koneksi awal melalui transportasi SSE. Jika diatur ke true, titik akhir pesan dikembalikan sebagai URI absolut. Menggunakan URI relatif tidak disarankan kecuali Anda memiliki alasan khusus untuk melakukannya. |
| sistem | Objek opsi untuk konfigurasi tingkat sistem. |
| system.webhookAuthorizationLevel | Menentukan tingkat otorisasi yang diperlukan untuk titik akhir webhook. Default ke "Sistem". Nilai yang diizinkan adalah "Sistem" dan "Anonim". Saat Anda mengatur nilai ke "Anonim", kunci akses tidak lagi diperlukan untuk permintaan. Terlepas dari apakah kunci diperlukan atau tidak, Anda dapat menggunakan otorisasi server MCP bawaan sebagai lapisan kontrol akses berbasis identitas. |
Menyambungkan ke server MCP Anda
Untuk menyambungkan ke server MCP yang diekspos oleh aplikasi fungsi, Anda perlu menyediakan klien MCP dengan titik akhir dan informasi transportasi yang sesuai. Tabel berikut ini memperlihatkan transportasi yang didukung oleh ekstensi MCP Azure Functions, bersama dengan titik akhir koneksi yang sesuai.
| Transport | Titik akhir |
|---|---|
| HTTP yang dapat dialirkan | /runtime/webhooks/mcp |
| Server-Sent Peristiwa (SSE)1 | /runtime/webhooks/mcp/sse |
1 Versi protokol yang lebih baru tidak digunakan lagi untuk transportasi Server-Sent Events. Kecuali klien Anda secara khusus memerlukannya, Anda harus menggunakan transportasi HTTP yang Dapat Dialirkan sebagai gantinya.
Saat dihosting di Azure, secara default, titik akhir yang diekspos oleh ekstensi juga memerlukan kunci sistem bernama mcp_extension. Jika tidak disediakan di x-functions-key header HTTP atau di code parameter string kueri, klien Anda akan 401 Unauthorized menerima respons. Anda dapat menghapus persyaratan ini dengan mengatur properti ke system.webhookAuthorizationLevelhost.jsonAnonymous. Untuk informasi selengkapnya, lihat bagian pengaturanhost.json .
Anda dapat mengambil kunci menggunakan salah satu metode yang dijelaskan di Mendapatkan kunci akses fungsi Anda. Contoh berikut menunjukkan cara mendapatkan kunci dengan Azure CLI:
az functionapp keys list --resource-group <RESOURCE_GROUP> --name <APP_NAME> --query systemKeys.mcp_extension --output tsv
Klien MCP menerima konfigurasi ini dengan berbagai cara. Lihat dokumentasi untuk klien pilihan Anda. Contoh berikut menunjukkan file seperti yang mcp.json mungkin Anda gunakan untuk mengonfigurasi server MCP untuk GitHub Copilot di Visual Studio Code. Contoh menyiapkan dua server, keduanya menggunakan transportasi HTTP yang Dapat Dialirkan. Yang pertama adalah untuk pengujian lokal dengan Azure Functions Core Tools. Yang kedua adalah untuk aplikasi fungsi yang dihosting di Azure. Konfigurasi mengambil parameter input tempat Visual Studio Code meminta Anda saat pertama kali menjalankan server jarak jauh. Menggunakan input memastikan bahwa rahasia seperti kunci sistem tidak disimpan ke file dan diperiksa ke kontrol sumber.
{
"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}"
}
}
}
}