Aracılığıyla paylaş


Azure Container Apps'te MCP sunucularını barındırma

Model Bağlam Protokolü (MCP), yapay zeka uygulamalarını dış veri kaynaklarına ve araçlarına bağlayan açık bir standarttır. MCP kullanarak GitHub Copilot gibi yapay zeka istemcileri, kullanıma sunduğunuz özellikleri keşfedebilir ve çağırarak API'lerinizi, veritabanlarınızı ve iş mantığınızı yapay zeka aracısının doğal dil aracılığıyla kullanabileceği araçlara dönüştürebilir.

Azure Container Apps, MCP sunucuları için iki barındırma modeli destekler:

Barındırma modeli Description
Tek başına container uygulaması Oluşturduğunuz herhangi bir MCP sunucusunu HTTP girişiyle kapsayıcı olarak dağıtın.
Dinamik oturumlar Korumalı kod yürütme için yerleşik MCP araçlarıyla platform tarafından yönetilen oturum havuzlarını kullanın.

Model Bağlam Protokolü (MCP) nedir?

MCP sunucusu istemcilere üç tür özellik sunar:

Kapasite Description Example
Tools Yapay zeka modelinin çağırabileceği işlevler (kullanıcı onayıyla) createTask, listTasks, deleteTask
Kaynaklar İstemcinin getirebileceği salt okunur veriler Yapılandırma dosyaları, veritabanı şemaları
İstemler Yaygın görevler için önceden yazılmış şablonlar "Tüm açık görevleri özetle"

İstemciler , akışla aktarılabilir HTTP aktarımını kullanarak HTTP üzerinden MCP sunucularıyla iletişim kurar. İstemci JSON-RPC 2.0 istekleri gönderir. Sunucu, araç sonuçları, kaynak içeriği veya istem şablonlarıyla yanıt verir.

İstek akışı şu deseni izler:

  1. MCP istemcisi (GitHub Copilot, Claude veya özel bir istemci) sunucuya JSON-RPC 2.0 iletisi içeren bir HTTPS isteği gönderir.

  2. MCP sunucusu (kapsayıcı uygulamanız) isteği işler ve veritabanı veya API gibi ihtiyaç duyduğu arka uç hizmetlerini çağırır.

  3. Sunucu, araç sonuçları, kaynak içeriği veya istem şablonlarıyla JSON-RPC 2.0 yanıtı döndürür.

Bağımsız kapsayıcı uygulama

Resmi bir MCP SDK'sını (.NET, Python, TypeScript, Java, Go, Kotlin ve diğerleri için kullanılabilir) kullanarak bir MCP sunucusu oluşturur, ardından kapsayıcıya alır ve Azure Container Apps'e dağıtırsınız.

Bu modelde Container Apps'in MCP'ye özgü farkındalığı yoktur. Platform aşağıdakileri sağlar:

  • Otomatik TLS sonlandırma ile HTTPS girişi
  • Scale-to-zero dahil Otomatik Ölçeklendirme (etkileşimli MCP kullanımı için en az bir replika önerilir)
  • VS Code ve tarayıcı tabanlı istemcilerden çıkış noktaları arası isteklere izin veren CORS ilkesi
  • Microsoft Entra Id ile yerleşik kimlik doğrulaması (isteğe bağlı)
  • Özel etki alanları, trafik bölme, Dapr, hizmetler arası ağ iletişimi, yönetilen kimlik ve diğer tüm standart Container Apps özellikleri

İstek akışı

Bir MCP sunucusunu tek başına kapsayıcı uygulaması olarak dağıttığınızda, istemci istekleri Container Apps girişi aracılığıyla kapsayıcınıza akar ve burada MCP uç noktanız JSON-RPC iletisini işler ve sonuçları döndürür.

  1. MCP istemcisi, kapsayıcı uygulamasının FQDN'sine bir HTTPS isteği gönderir.
  2. Container Apps girişi TLS'yi sonlandırır ve isteği yapılandırılan hedef bağlantı noktasında (örneğin, 8080) kapsayıcınıza iletir.
  3. Web çerçeveniz (ASP.NET, FastAPI, Express, Spring Boot) isteği MCP uç noktasına (genellikle /mcp) yönlendirir.
  4. MCP sunucunuz isteği işler, arka uç hizmetlerini çağırır ve JSON-RPC 2.0 yanıtı döndürür.

Ne zaman kullanılır?

Herhangi bir dilde özel MCP araçları oluşturmak, arka uç hizmetleriyle tümleştirmek ve standart Container Apps özelliklerini kullanmak istiyorsanız tek başına kapsayıcı uygulamasını kullanın.

  • Araç tanımları, ara yazılım ve iş mantığı üzerinde tam denetim sahibi olmak istiyorsunuz.
  • MCP sunucunuz bir MCP SDK'sı ile herhangi bir dilde yazılır.
  • Arka uç veritabanlarına, API'lere veya Azure hizmetlerine bağlanmanız gerekir.
  • Dapr, hizmet-hizmet ağı veya yönetilen kimlik gibi Container Apps özelliklerini kullanmak istiyorsunuz.

Dinamik oturumlar (platform tarafından yönetilen MCP)

Azure Container Apps dinamik oturumları , kodu yalıtılmış olarak çalıştırmak için korumalı ortamlar sağlar. Oturum havuzunda MCP'yi etkinleştirdiğinizde platform, istemcilerin kabuk veya Python ortamlarını başlatmak ve komutları uzaktan yürütmek için kullanabileceği bir JSON-RPC uç noktası kullanıma sunar.

Bu modelde, platform MCP sunucusunu yönetir. MCP sunucu kodu yazmaz veya dağıtmazsınız. Platform aşağıdaki önceden tanımlanmış araçları sağlar:

Tool Description
launchShell Yeni bir ortam oluşturur ve bir environmentId döndürür.
runShellCommandInRemoteEnvironment Mevcut bir ortamda bir kabuk komutu yürütür.
runPythonCodeInRemoteEnvironment Python kodunu mevcut bir ortamda yürütür

Uyarı

Platform tarafından yönetilen MCP sunucusu, oturum havuzundan bağımsız olarak tüm üç aracı açığa çıkarır. Hem kabuk hem de Python havuzları için ortam oluşturmak için kullanın launchShell .

İstek akışı

Dinamik oturumları kullanarak bir MCP sunucusu dağıttığınızda platform sunucuyu yönetir ve istemcilerin korumalı ortamlarda kabuk veya Python kodu yürütmek için kullandığı bir JSON-RPC uç noktası sağlar.

  1. MCP istemcisi, oturum havuzunun /mcp uç noktasına kimlik doğrulaması için üst bilgi içeren bir x-ms-apikey HTTPS isteği gönderir.
  2. Platform ters ara sunucusu API anahtarını doğrular ve isteği uygun Hyper-V korumalı oturuma yönlendirir.
  3. Oturum, korumalı alanın içinde istenen kabuk komutunu veya Python kodunu yürütür.
  4. Platform, yürütme sonuçlarını içeren bir JSON-RPC 2.0 yanıtı döndürür.

Ne zaman kullanılır?

  • Güvenilmeyen veya LLM tarafından oluşturulan kod için izole edilmiş kod yürütmeye ihtiyacınız var.
  • Kullanım örneğiniz Python veya kabuk betiğidir ve özel bir araç gerekmez.
  • Oturumlar arasında güvenlik amacıyla Hyper-V yalıtımı istiyorsunuz.
  • BIR MCP sunucu uygulaması oluşturmak veya bakımını yapmak istemezsiniz.

Authentication

Dinamik oturumlar MCP, header aracılığıyla API anahtarı kimlik doğrulamasını x-ms-apikey kullanır. Bu mekanizma, standart oturum havuzu API'leri tarafından kullanılan taşıyıcı belirteç kimlik doğrulamasından farklıdır.

Azure CLI'yi kullanarak API anahtarını alın:

az rest --method POST \
    --uri "https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/sessionPools/<POOL_NAME>/fetchMCPServerCredentials" \
    --uri-parameters api-version=2025-02-02-preview \
    --query "apiKey" -o tsv

Protokol ayrıntıları

Dinamik oturumlar için platform tarafından yönetilen MCP sunucusu aşağıdaki protokol belirtimlerini uygular:

Mülkiyet Değer
MCP protokol sürümü 2025-03-26
Sunucu adı Microsoft Container Apps MCP Server
Transport HTTP üzerinden JSON-RPC 2.0
API sürümü 2025-02-02-preview
Desteklenen yöntemler initialize, tools/list, tools/call

Önemli

Dinamik oturumlar için platform tarafından yönetilen MCP özelliği önizleme aşamasındadır. API sürümü 2025-02-02-preview ve mcpServerSettings Azure Resource Manager (ARM) özellikleri değiştirilebilir.

Giriş ve ağ

Container Apps giriş transport alanı, auto, http, http2 ve tcp'yi destekler. MCP, akış yapılabilir HTTP taşıma protokolü olarak standart HTTP üzerinden kapsayıcınızın içinde çalışır, bu nedenle transportauto veya varsayılan olarak http şeklinde ayarlayın. Özel bir MCP aktarım değeri yoktur.

VS Code veya tarayıcı tabanlı istemciler MCP sunucunuza erişiyorsa bir CORS ilkesi yapılandırmanız gerekir. En azından, MCP istemcinizin gerektirdiği kaynaklara, yöntemlere ve üst bilgilere izin verin.

Barındırma seçeneklerini karşılaştırma

Aşağıdaki tablo iki barındırma modeliyle karşılaştırır.

Değerlendirme Bağımsız kapsayıcı uygulama Dinamik oturumlar (yönetilen MCP)
Özel araçlar Evet, istediğiniz araçları tanımlayın Hayır, yalnızca platform tanımlı araçlar
Languages MCP SDK'sı olan herhangi bir dil Yalnızca Python ve komut satırı çalıştırma
MCP taşıma Akışa uygun HTTP (kapsayıcı içinde) HTTP üzerinden JSON-RPC (platform yönetimli)
Authentication Yerleşik kimlik doğrulaması (Microsoft Entra Id) API anahtarı (x-ms-apikey)
Yalıtım Kapsayıcı Seviyesi Oturum başına Hyper-V
Scaling Düzeltme tabanlı otomatik ölçeklendirme Oturum başına, havuz tarafından yönetilen
Kullanım örneği Genel amaçlı MCP sunucuları Korumalı kod yürütme

App Service ve Azure İşlevleri içeren daha geniş bir karşılaştırma için bkz. MCP sunucunuz için Azure hizmeti seçme.

Sonraki adım