Bagikan melalui


Server MCP jarak jauh yang dihost sendiri di Azure Functions (pratinjau publik)

Azure Functions menyediakan dua cara untuk menghosting server MCP jarak jauh:

Dengan pendekatan pertama, Anda dapat menggunakan model pemrograman Azure Functions dengan pemicu dan pengikatan untuk membangun server MCP. Kemudian, Anda dapat menghosting server dari jarak jauh dengan menyebarkannya ke aplikasi Function.

Jika Anda sudah memiliki server MCP yang dibuat dengan SDK MCP resmi dan hanya ingin menghostingnya dari jarak jauh, pendekatan kedua kemungkinan sesuai dengan kebutuhan Anda. Anda tidak perlu membuat perubahan kode apa pun pada server untuk menghostingnya di Azure Functions. Sebagai gantinya, Anda dapat menambahkan artefak Fungsi yang diperlukan, dan server siap untuk dideploy. Dengan demikian, server ini disebut sebagai server MCP yang dihost sendiri.

Diagram memperlihatkan hosting aplikasi Fungsi dan aplikasi handler kustom.

Artikel ini memberikan gambaran umum tentang server MCP yang dihosting sendiri dan menautkannya ke artikel serta sampel yang relevan.

Pengendali kustom

Server MCP yang di-host sendiri dikerahkan ke platform Azure Functions sebagai penangan khusus. Handler kustom adalah server web ringan yang menerima peristiwa dari host Functions. Mereka menyediakan cara untuk menjalankan aplikasi pada platform Functions yang dibangun dengan kerangka kerja yang berbeda dari model pemrograman Functions atau dalam bahasa yang tidak didukung secara bawaan. Untuk informasi selengkapnya, lihat Penanganan kustom Azure Functions.

Saat Anda menyebarkan server berbasis MCP SDK ke Azure Functions, Anda harus menyertakan host.json dalam proyek Anda. host.json minimal terlihat seperti ini:

{
   "version": "2.0",
    "configurationProfile": "mcp-custom-handler",
    "customHandler": {
        "description": {
            "defaultExecutablePath": "python",
            "arguments": ["Path to main script file, e.g. hello_world.py"] 
        },
        "port": "<MCP server port>"
    }
}
{
   "version": "2.0",
    "configurationProfile": "mcp-custom-handler",
    "customHandler": {
        "description": {
            "defaultExecutablePath": "npm",
            "arguments": ["run", "start"] 
        },
        "port": "<MCP server port>"
    }
}
{
   "version": "2.0",
    "configurationProfile": "mcp-custom-handler",
    "customHandler": {
        "description": {
            "defaultExecutablePath": "dotnet",
            "arguments": ["Path to the compiled DLL, e.g. HelloWorld.dll"] 
        },
        "port": "<MCP server port>"
    }
}

Nota

Karena payload yang disebarkan ke Azure Functions adalah konten bin/output direktori, jalur ke DLL yang dikompilasi relatif terhadap direktori tersebut, bukan ke akar proyek.

Contoh belum tersedia.

configuration Profile Menggunakan nilai mcp-custom-handler secara otomatis mengonfigurasi pengaturan host Functions ini, yang diperlukan untuk menjalankan server MCP Anda di Azure Functions:

  • http.enableProxying ke true
  • http.routes ke [{ "route": "{*route}" }]
  • extensions.http.routePrefix ke ""

Contoh ini memperlihatkan file host.json dengan properti handler kustom tambahan yang setara dengan menggunakan mcp-custom-handler profil:

{
    "version": "2.0",
    "extensions": {
        "http": {
            "routePrefix": ""
        }
    },
    "customHandler": {
        "description": {
            "defaultExecutablePath": "",
            "arguments": [""]
        },
        "http": {
            "enableProxying": true, 
            "defaultAuthorizationLevel": "anonymous", 
            "routes": [ 
                {
                    "route": "{*route}",
                    // Default authorization level is `defaultAuthorizationLevel`
                },
                {
                    "route": "admin/{*route}",
                    "authorizationLevel": "admin"
                }
            ]
        }
    }
}

Tabel ini menjelaskan properti customHandler.http, bersama dengan nilai default:

Harta benda Apa fungsinya Nilai standar
enableProxying Mengontrol bagaimana host Azure Functions menangani permintaan HTTP ke handler kustom. Ketika enableProxying diatur ke true, host Functions bertindak sebagai proksi terbalik dan meneruskan seluruh permintaan HTTP (termasuk header, isi, parameter kueri) langsung ke handler kustom. Pengaturan ini memberi handler kustom akses penuh ke detail permintaan HTTP asli.

Ketika enableProxying adalah false, host Functions memproses permintaan terlebih dahulu dan mengubahnya menjadi format permintaan/respons Azure Functions sebelum meneruskannya ke handler kustom.
false
defaultAuthorizationLevel Mengontrol persyaratan autentikasi untuk mengakses titik akhir handler kustom. Misalnya, function memerlukan kunci API khusus fungsi untuk diakses. Untuk informasi selengkapnya, lihat tingkat otorisasi. function
route Menentukan pola jalur URL yang direspons oleh handler kustom. {*route}cocok dengan jalur URL apa pun (seperti /, , /mcp/api/tools, atau /anything/nested/path) dan meneruskan permintaan ke handler kustom. {*route}

Autentikasi server bawaan

Autentikasi dan otorisasi berbasis OAuth yang disediakan oleh platform App Service menerapkan persyaratan spesifikasi otorisasi MCP, seperti mengeluarkan tantangan 401 dan mengekspos dokumen Metadata Sumber Daya Terlindungi (PRM). Saat Anda mengaktifkan autentikasi bawaan, klien yang mencoba mengakses server dialihkan ke penyedia identitas seperti ID Microsoft Entra untuk autentikasi sebelum menyambungkan.

Untuk informasi selengkapnya, lihat Mengonfigurasi otorisasi server bawaan (pratinjau) dan Menghosting server MCP di Azure Functions.

Integrasi agen Azure AI Foundry

Agen di Azure AI Foundry dapat dikonfigurasi untuk menggunakan alat di server MCP yang dihosting di Azure Functions.

Mendaftarkan server Anda di Azure API Center

Saat mendaftarkan server MCP di Azure API Center, Anda membuat katalog alat organisasi privat. Pendekatan ini direkomendasikan untuk berbagi server MCP di seluruh organisasi Anda dengan tata kelola dan kemampuan penemuan yang konsisten. Untuk informasi selengkapnya, lihat Mendaftarkan server MCP yang dihosting di Azure Functions di Azure API Center.

Dukungan pratinjau publik

Kemampuan untuk menghosting server MCP berbasis SDK Anda sendiri di Functions saat ini dalam pratinjau dan mendukung fitur-fitur ini:

  • Server stateless yang menggunakan transport http yang dapat di-streaming. Jika Anda memerlukan server Anda untuk bersifat stateful, pertimbangkan untuk menggunakan ekstensi Functions MCP.
  • Server yang diimplementasikan dengan SDK Python, TypeScript, C#, atau Java MCP.
  • Saat menjalankan proyek secara lokal, Anda harus menggunakan Azure Functions Core Tools (func start perintah). Saat ini Anda tidak dapat menggunakan F5 untuk menjalankan debugger.
  • Server harus dihosting sebagai aplikasi paket Konsumsi Flex .

Samples

Belum tersedia.

Penangan kustom Azure Functions