Skip to content

Latest commit

 

History

History
201 lines (130 loc) · 11.3 KB

File metadata and controls

201 lines (130 loc) · 11.3 KB

Vaka Çalışması: API Management'te REST API'yi MCP sunucusu olarak açığa çıkarma

Azure API Management, API uç noktalarınızın üzerinde bir Gateway sağlayan bir hizmettir. Çalışma şekli, Azure API Management'ın API'lerinizin önünde bir proxy gibi davranması ve gelen isteklerle ne yapılacağına karar vermesidir.

Bu hizmeti kullanarak aşağıdaki gibi birçok özellik ekleyebilirsiniz:

  • Güvenlik, API anahtarlarından JWT'ye ve yönetilen kimliklere kadar her şeyi kullanabilirsiniz.
  • Hız sınırlama, belirli bir zaman biriminde kaç çağrının geçeceğini belirleyebilmek harika bir özelliktir. Bu, tüm kullanıcıların harika bir deneyim yaşamasını ve hizmetinizin isteklerle aşırı yüklenmemesini sağlar.
  • Ölçeklendirme ve Yük dengeleme, yükü dengelemek için bir dizi uç nokta ayarlayabilir ve "yük dengeleme" yöntemini seçebilirsiniz.
  • AI özellikleri, örneğin semantik önbellekleme, token sınırı ve token izleme gibi özellikler. Bu özellikler yanıt verme hızını artırır ve token harcamalarınızı kontrol altında tutmanıza yardımcı olur. Buradan daha fazla bilgi edinin.

Neden MCP + Azure API Management?

Model Context Protocol, araçsal AI uygulamaları ve araçları ve verileri tutarlı bir şekilde açığa çıkarma konusunda hızla bir standart haline geliyor. Azure API Management, API'leri "yönetmeniz" gerektiğinde doğal bir seçimdir. MCP Sunucuları genellikle bir araca istekleri çözmek için diğer API'lerle entegre olur. Bu nedenle Azure API Management ve MCP'yi birleştirmek mantıklıdır.

Genel Bakış

Bu özel kullanım senaryosunda, API uç noktalarını bir MCP Sunucusu olarak açığa çıkarmayı öğreneceğiz. Bunu yaparak, bu uç noktaları bir araçsal uygulamanın parçası haline kolayca getirebilir ve aynı zamanda Azure API Management'ın özelliklerinden yararlanabilirsiniz.

Temel Özellikler

  • Araç olarak açığa çıkarmak istediğiniz uç nokta yöntemlerini seçersiniz.
  • Ek özellikler, API'niz için politika bölümünde yapılandırdığınız şeylere bağlıdır. Ancak burada hız sınırlama eklemeyi nasıl yapabileceğinizi göstereceğiz.

Ön Adım: Bir API'yi içe aktarma

Azure API Management'te zaten bir API'niz varsa harika, bu adımı atlayabilirsiniz. Eğer yoksa, şu bağlantıya göz atın: Azure API Management'e bir API içe aktarma ve yayınlama.

API'yi MCP Sunucusu olarak açığa çıkarma

API uç noktalarını açığa çıkarmak için şu adımları izleyelim:

  1. Azure Portal'a ve şu adrese gidin: https://portal.azure.com/?Microsoft_Azure_ApiManagement=mcp API Management örneğinize gidin.

  2. Sol menüde, APIs > MCP Servers > + Create new MCP Server seçeneğini seçin.

  3. API'de, bir MCP sunucusu olarak açığa çıkarılacak bir REST API seçin.

  4. Araç olarak açığa çıkarılacak bir veya daha fazla API İşlemi seçin. Tüm işlemleri veya yalnızca belirli işlemleri seçebilirsiniz.

    Açığa çıkarılacak yöntemleri seçin

  5. Create seçeneğini seçin.

  6. Menü seçeneği APIs ve MCP Servers'a gidin, aşağıdaki gibi bir görünüm görmelisiniz:

    Ana panelde MCP Sunucusunu görün

    MCP sunucusu oluşturulur ve API işlemleri araçlar olarak açığa çıkarılır. MCP sunucusu MCP Servers panelinde listelenir. URL sütunu, test etmek veya bir istemci uygulamasında kullanmak için çağırabileceğiniz MCP sunucusunun uç noktasını gösterir.

İsteğe Bağlı: Politikaları yapılandırma

Azure API Management, uç noktalarınız için hız sınırlama veya semantik önbellekleme gibi farklı kurallar belirlediğiniz politikaların temel kavramına sahiptir. Bu politikalar XML formatında yazılır.

MCP Sunucunuz için hız sınırlama politikası nasıl ayarlanır:

  1. Portalda, APIs altında MCP Servers'ı seçin.

  2. Oluşturduğunuz MCP sunucusunu seçin.

  3. Sol menüde, MCP altında Policies'i seçin.

  4. Politika düzenleyicisinde, MCP sunucusunun araçlarına uygulamak istediğiniz politikaları ekleyin veya düzenleyin. Politikalar XML formatında tanımlanır. Örneğin, MCP sunucusunun araçlarına yapılan çağrıları sınırlamak için bir politika ekleyebilirsiniz (bu örnekte, müşteri IP adresi başına 30 saniyede 5 çağrı). İşte hız sınırlama yapacak bir XML:

     <rate-limit-by-key calls="5" 
       renewal-period="30" 
       counter-key="@(context.Request.IpAddress)" 
       remaining-calls-variable-name="remainingCallsPerIP" 
    />

    İşte politika düzenleyicisinin bir görüntüsü:

    Politika düzenleyici

Deneyin

MCP Sunucumuzun beklendiği gibi çalıştığından emin olalım.

Bunun için Visual Studio Code ve GitHub Copilot'un Agent modunu kullanacağız. MCP sunucusunu bir mcp.json dosyasına ekleyeceğiz. Bunu yaparak, Visual Studio Code bir istemci gibi davranacak ve son kullanıcılar bir istemciyle etkileşim kurmak için bir istem yazabilecek.

Nasıl yapılacağını görelim, MCP sunucusunu Visual Studio Code'a eklemek için:

  1. Komut Paleti'nden MCP: Add Server komutunu kullanın.

  2. İstendiğinde, sunucu türünü seçin: HTTP (HTTP veya Server Sent Events).

  3. API Management'teki MCP sunucusunun URL'sini girin. Örnek: https://.azure-api.net/-mcp/sse (SSE uç noktası için) veya https://.azure-api.net/-mcp/mcp (MCP uç noktası için), taşıma türleri arasındaki farkın /sse veya /mcp olduğunu unutmayın.

  4. Seçtiğiniz bir sunucu kimliği girin. Bu önemli bir değer değildir ancak bu sunucu örneğinin ne olduğunu hatırlamanıza yardımcı olur.

  5. Yapılandırmayı çalışma alanı ayarlarınıza mı yoksa kullanıcı ayarlarınıza mı kaydedeceğinizi seçin.

  • Çalışma alanı ayarları - Sunucu yapılandırması yalnızca mevcut çalışma alanında bulunan bir .vscode/mcp.json dosyasına kaydedilir.

    mcp.json

    "servers": {
        "APIM petstore" : {
            "type": "sse",
            "url": "url-to-mcp-server/sse"
        }
    }

    veya taşıma olarak akışlı HTTP'yi seçerseniz biraz farklı olur:

    "servers": {
        "APIM petstore" : {
            "type": "http",
            "url": "url-to-mcp-server/mcp"
        }
    }
  • Kullanıcı ayarları - Sunucu yapılandırması global settings.json dosyanıza eklenir ve tüm çalışma alanlarında kullanılabilir. Yapılandırma aşağıdaki gibi görünür:

    Kullanıcı ayarı

  1. Ayrıca Azure API Management'e doğru şekilde kimlik doğrulaması yapmasını sağlamak için bir başlık eklemeniz gerekir. Ocp-Apim-Subscription-Key adlı bir başlık kullanır.

    • İşte ayarlara nasıl ekleyebileceğiniz:

    Kimlik doğrulama için başlık ekleme, bu, API anahtar değerini Azure Portal'da Azure API Management örneğiniz için bulmanızı isteyen bir istem görüntülenmesine neden olur.

    • Bunun yerine mcp.json dosyasına eklemek için şöyle ekleyebilirsiniz:
    "inputs": [
      {
        "type": "promptString",
        "id": "apim_key",
        "description": "API Key for Azure API Management",
        "password": true
      }
    ]
    "servers": {
        "APIM petstore" : {
            "type": "http",
            "url": "url-to-mcp-server/mcp",
            "headers": {
                "Ocp-Apim-Subscription-Key": "Bearer ${input:apim_key}"
            }
        }
    }

Agent modunu kullanma

Artık ayarları veya .vscode/mcp.json dosyasını yapılandırdık. Deneyelim.

Sunucunuzdan açığa çıkarılan araçların listelendiği şu şekilde bir Araçlar simgesi olmalıdır:

Sunucudan araçlar

  1. Araçlar simgesine tıklayın ve aşağıdaki gibi bir araç listesi görmelisiniz:

    Araçlar

  2. Aracı çağırmak için sohbette bir istem girin. Örneğin, bir sipariş hakkında bilgi almak için bir araç seçtiyseniz, ajana sipariş hakkında sorabilirsiniz. İşte bir örnek istem:

    get information from order 2
    

    Şimdi bir aracı çağırmaya devam etmenizi isteyen bir araç simgesi görüntülenecektir. Aracı çalıştırmaya devam etmeyi seçin, şimdi aşağıdaki gibi bir çıktı görmelisiniz:

    İstemden sonuç

    yukarıda gördüğünüz şey, ayarladığınız araçlara bağlıdır, ancak fikir, yukarıdaki gibi metinsel bir yanıt almanızdır

Referanslar

Daha fazla bilgi edinmek için:

Feragatname:
Bu belge, AI çeviri hizmeti Co-op Translator kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz.