Skip to content

Latest commit

 

History

History
200 lines (129 loc) · 11.7 KB

File metadata and controls

200 lines (129 loc) · 11.7 KB

Fallstudie: REST-API in API Management als MCP-Server bereitstellen

Azure API Management ist ein Dienst, der ein Gateway über Ihren API-Endpunkten bereitstellt. Dabei fungiert Azure API Management als Proxy vor Ihren APIs und kann entscheiden, was mit eingehenden Anfragen geschehen soll.

Durch die Nutzung dieses Dienstes erhalten Sie eine Vielzahl von Funktionen wie:

  • Sicherheit: Sie können alles von API-Schlüsseln, JWT bis hin zu verwalteten Identitäten verwenden.
  • Ratenbegrenzung: Eine großartige Funktion ist die Möglichkeit, zu entscheiden, wie viele Anfragen innerhalb einer bestimmten Zeiteinheit durchgelassen werden. Dies hilft sicherzustellen, dass alle Benutzer eine gute Erfahrung machen und Ihr Dienst nicht von Anfragen überlastet wird.
  • Skalierung & Lastverteilung: Sie können mehrere Endpunkte einrichten, um die Last zu verteilen, und auch festlegen, wie die Last verteilt werden soll.
  • KI-Funktionen wie semantisches Caching, Token-Limitierung und Token-Überwachung und mehr. Diese Funktionen verbessern die Reaktionsfähigkeit und helfen Ihnen, Ihre Token-Ausgaben im Blick zu behalten. Mehr dazu hier.

Warum MCP + Azure API Management?

Das Model Context Protocol (MCP) wird schnell zum Standard für agentenbasierte KI-Anwendungen und zur konsistenten Bereitstellung von Tools und Daten. Azure API Management ist eine natürliche Wahl, wenn Sie APIs „verwalten“ müssen. MCP-Server integrieren oft andere APIs, um beispielsweise Anfragen an ein Tool zu lösen. Daher macht die Kombination von Azure API Management und MCP viel Sinn.

Überblick

In diesem speziellen Anwendungsfall lernen wir, API-Endpunkte als MCP-Server bereitzustellen. Dadurch können wir diese Endpunkte leicht Teil einer agentenbasierten Anwendung machen und gleichzeitig die Funktionen von Azure API Management nutzen.

Hauptfunktionen

  • Sie wählen die Endpunktmethoden aus, die Sie als Tools bereitstellen möchten.
  • Die zusätzlichen Funktionen hängen davon ab, was Sie im Richtlinienbereich für Ihre API konfigurieren. Hier zeigen wir Ihnen, wie Sie eine Ratenbegrenzung hinzufügen können.

Vorbereitender Schritt: Eine API importieren

Wenn Sie bereits eine API in Azure API Management haben, können Sie diesen Schritt überspringen. Falls nicht, sehen Sie sich diesen Link an: Eine API in Azure API Management importieren.

API als MCP-Server bereitstellen

Um die API-Endpunkte bereitzustellen, folgen Sie diesen Schritten:

  1. Navigieren Sie zum Azure-Portal unter der folgenden Adresse: https://portal.azure.com/?Microsoft_Azure_ApiManagement=mcp. Navigieren Sie zu Ihrer API Management-Instanz.

  2. Wählen Sie im linken Menü APIs > MCP-Server > + Neuen MCP-Server erstellen.

  3. Wählen Sie eine REST-API aus, die als MCP-Server bereitgestellt werden soll.

  4. Wählen Sie eine oder mehrere API-Operationen aus, die als Tools bereitgestellt werden sollen. Sie können alle Operationen oder nur bestimmte Operationen auswählen.

    Methoden auswählen, die bereitgestellt werden sollen

  5. Wählen Sie Erstellen.

  6. Navigieren Sie zu den Menüoptionen APIs und MCP-Server, Sie sollten Folgendes sehen:

    Den MCP-Server im Hauptbereich sehen

    Der MCP-Server wurde erstellt und die API-Operationen wurden als Tools bereitgestellt. Der MCP-Server wird im MCP-Server-Bereich aufgelistet. Die Spalte „URL“ zeigt den Endpunkt des MCP-Servers, den Sie für Tests oder innerhalb einer Client-Anwendung aufrufen können.

Optional: Richtlinien konfigurieren

Azure API Management hat das Kernkonzept der Richtlinien, bei denen Sie verschiedene Regeln für Ihre Endpunkte festlegen können, wie beispielsweise Ratenbegrenzung oder semantisches Caching. Diese Richtlinien werden in XML verfasst.

So richten Sie eine Richtlinie ein, um Ihren MCP-Server zu begrenzen:

  1. Wählen Sie im Portal unter APIs MCP-Server.

  2. Wählen Sie den MCP-Server aus, den Sie erstellt haben.

  3. Wählen Sie im linken Menü unter MCP Richtlinien.

  4. Fügen Sie im Richtlinien-Editor die Richtlinien hinzu oder bearbeiten Sie sie, die Sie auf die Tools des MCP-Servers anwenden möchten. Die Richtlinien werden im XML-Format definiert. Zum Beispiel können Sie eine Richtlinie hinzufügen, um die Anfragen an die Tools des MCP-Servers zu begrenzen (in diesem Beispiel 5 Anfragen pro 30 Sekunden pro Client-IP-Adresse). Hier ist XML, das eine Ratenbegrenzung bewirkt:

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

    Hier ist ein Bild des Richtlinien-Editors:

    Richtlinien-Editor

Ausprobieren

Lassen Sie uns sicherstellen, dass unser MCP-Server wie vorgesehen funktioniert.

Dazu verwenden wir Visual Studio Code und GitHub Copilot im Agent-Modus. Wir fügen den MCP-Server zu einer mcp.json-Datei hinzu. Dadurch fungiert Visual Studio Code als Client mit agentenbasierten Fähigkeiten, und Endbenutzer können eine Eingabeaufforderung eingeben und mit dem Server interagieren.

So fügen Sie den MCP-Server in Visual Studio Code hinzu:

  1. Verwenden Sie den MCP: Server hinzufügen-Befehl aus der Befehlspalette.

  2. Wenn Sie dazu aufgefordert werden, wählen Sie den Servertyp: HTTP (HTTP oder Server Sent Events).

  3. Geben Sie die URL des MCP-Servers in API Management ein. Beispiel: https://.azure-api.net/-mcp/sse (für SSE-Endpunkt) oder https://.azure-api.net/-mcp/mcp (für MCP-Endpunkt). Beachten Sie den Unterschied zwischen den Transporten: /sse oder /mcp.

  4. Geben Sie eine Server-ID Ihrer Wahl ein. Dieser Wert ist nicht wichtig, hilft Ihnen jedoch, sich an diese Serverinstanz zu erinnern.

  5. Wählen Sie aus, ob die Konfiguration in Ihren Arbeitsbereichseinstellungen oder Benutzereinstellungen gespeichert werden soll.

  • Arbeitsbereichseinstellungen: Die Serverkonfiguration wird in einer .vscode/mcp.json-Datei gespeichert, die nur im aktuellen Arbeitsbereich verfügbar ist.

    mcp.json

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

    oder wenn Sie Streaming-HTTP als Transport wählen, sieht es etwas anders aus:

    "servers": {
        "APIM petstore" : {
            "type": "http",
            "url": "url-to-mcp-server/mcp"
        }
    }
  • Benutzereinstellungen: Die Serverkonfiguration wird Ihrer globalen settings.json-Datei hinzugefügt und ist in allen Arbeitsbereichen verfügbar. Die Konfiguration sieht ähnlich aus wie die folgende:

    Benutzereinstellung

  1. Sie müssen auch eine Konfiguration hinzufügen, einen Header, um sicherzustellen, dass die Authentifizierung ordnungsgemäß gegenüber Azure API Management erfolgt. Es wird ein Header namens Ocp-Apim-Subscription-Key verwendet.

    • So können Sie ihn zu den Einstellungen hinzufügen:

    Header für Authentifizierung hinzufügen. Dadurch wird eine Eingabeaufforderung angezeigt, die Sie nach dem API-Schlüsselwert fragt, den Sie im Azure-Portal für Ihre Azure API Management-Instanz finden können.

    • Um ihn stattdessen zu mcp.json hinzuzufügen, können Sie ihn wie folgt hinzufügen:
    "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-Modus verwenden

Jetzt sind wir entweder in den Einstellungen oder in .vscode/mcp.json eingerichtet. Lassen Sie uns das ausprobieren.

Es sollte ein Tools-Symbol wie folgt geben, wo die bereitgestellten Tools von Ihrem Server aufgelistet sind:

Tools vom Server

  1. Klicken Sie auf das Tools-Symbol, und Sie sollten eine Liste von Tools wie folgt sehen:

    Tools

  2. Geben Sie eine Eingabeaufforderung im Chat ein, um das Tool aufzurufen. Zum Beispiel, wenn Sie ein Tool ausgewählt haben, um Informationen zu einer Bestellung zu erhalten, können Sie den Agenten nach einer Bestellung fragen. Hier ist ein Beispiel für eine Eingabeaufforderung:

    get information from order 2
    

    Sie werden nun mit einem Tools-Symbol aufgefordert, ein Tool aufzurufen. Wählen Sie aus, das Tool weiter auszuführen, und Sie sollten nun eine Ausgabe wie folgt sehen:

    Ergebnis der Eingabeaufforderung

    Was Sie oben sehen, hängt davon ab, welche Tools Sie eingerichtet haben, aber die Idee ist, dass Sie eine textuelle Antwort wie oben erhalten.

Referenzen

Hier erfahren Sie mehr:

Haftungsausschluss:
Dieses Dokument wurde mit dem KI-Übersetzungsdienst Co-op Translator übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.