Model Context Protocol konfigurieren
In diesem Dokument wird beschrieben, wie Sie API Gateway als Remote-MCP-Server (Model Context Protocol) konfigurieren.
Hinweis
- Sie benötigen eine gültige OpenAPI 3.x-Spezifikation für Ihre API. MCP wird für OpenAPI 2.0 nicht unterstützt.
- Machen Sie sich mit den Grundlagen von API Gateway vertraut.
Konfigurationsprüfung
Wenn Sie Ihre OpenAPI-Spezifikation hochladen, führt API Gateway die folgenden Validierungen für die MCP-Konfiguration durch:
- Standort: Die Erweiterung
x-google-mcp-tooldarf nur auf der Ebene einzelner Vorgänge angegeben werden. - HTTP-Methode: Nur
GET-,POST-,PUT-,PATCH- undDELETE-Vorgänge können als MCP-Tools bereitgestellt werden. - Toolname: Toolnamen müssen mit
[A-Za-z0-9_.-]{1,128}übereinstimmen und in der gesamten Spezifikation eindeutig sein. - Beschreibung: Jedes Tool muss eine nicht leere Beschreibung haben (aus der Beschreibung, Zusammenfassung oder Überschreibung des Vorgangs). Vorgänge ohne auflösbare Beschreibung werden abgelehnt.
- Sicherheit: Wenn Sie die Authentifizierung für
tools/listkonfigurieren, müssen Sie genau ein Sicherheitsschema angeben, das untercomponents.securitySchemesdefiniert ist. Das Schema kann ein JWT- oder ein API-Schlüsselschema sein. Wenn Sie ein JWT-Schema verwenden, müssen Sie es auch in der Anforderungsecurityauf oberster Ebene der Spezifikation benennen.
Authentifizierungsmodell
API Gateway wendet je nach aufgerufener MCP-Methode unterschiedliche Authentifizierungsregeln an:
- Protokolllebenszyklus: Die Methoden
initializeundnotifications/initializedsind nicht authentifiziert. - Toolaufruf (
tools/call): Verwendet die Authentifizierungsrichtlinien wieder, die für den zugrunde liegenden Vorgang in Ihrer OpenAPI-Spezifikation definiert sind. Es gelten dieselben API-Schlüssel- oder JWT-Anforderungen wie beim direkten Aufruf des REST-Endpunkts. - Tool Discovery (
tools/list): Diese Methode ist standardmäßig nicht authentifiziert. Als Best Practice für die Sicherheit empfehlen wir jedoch dringend, die Tool-Erkennung zu schützen, indem Sie die Authentifizierung für diese Methode mittools-list.securityaktivieren. Sie könnentools/listentweder mit einem JWT oder einem API-Schlüssel authentifizieren.
Schritte zum Konfigurieren des MCP
So stellen Sie Ihre API als MCP-Tools bereit:
1. Vorgänge identifizieren, die verfügbar gemacht werden sollen
Überprüfen Sie Ihre OpenAPI-Spezifikation und entscheiden Sie, welche Vorgänge für KI-Agenten verfügbar sein sollen.
2. OpenAPI-Spezifikation aktualisieren
Sie können MCP global für alle infrage kommenden Vorgänge aktivieren oder pro Vorgang konfigurieren.
Globale Aktivierung
Aktivieren Sie MCP global, indem Sie das Feld mcp auf Dokumentebene zu x-google-api-management hinzufügen:
openapi: 3.0.3
info:
title: Bookstore API
version: 1.0.0
x-google-api-management:
mcp: true
backends:
bookstore-backend:
address: https://bookstore-backend-12345678.us-central1.run.app
Wenn diese Option global aktiviert ist, werden alle infrage kommenden Vorgänge (basierend auf HTTP-Methode und Pfad) als MCP-Tools bereitgestellt. Standardmäßig ist der Toolname die operationId des Vorgangs und die Beschreibung ist die Beschreibung oder Zusammenfassung des Vorgangs.
Vorgangsspezifische Konfiguration
Sie können globale Einstellungen überschreiben oder Vorgänge selektiv mit x-google-mcp-tool verfügbar machen:
paths:
/v1/shelves/{shelf}:
delete:
operationId: deleteShelf
summary: Delete a shelf.
x-google-backend: bookstore-backend
x-google-mcp-tool:
name: delete_shelf
description: "Permanently delete a shelf and every book on it."
Sie können einen Vorgang auch deaktivieren, wenn er global aktiviert ist, indem Sie x-google-mcp-tool: false festlegen.
3. tools/list authentifizieren (empfohlen)
Standardmäßig ist die Methode tools/list (die verfügbare Tools auflistet) nicht authentifiziert. Als Best Practice für die Sicherheit empfehlen wir dringend, die Authentifizierung zu erzwingen, indem Sie tools-list.security unter x-google-api-management.mcp konfigurieren. Sie können entweder ein JWT-Schema oder ein API-Schlüsselschema angeben.
Im folgenden Beispiel ist ein JWT erforderlich:
x-google-api-management:
mcp:
tools-list:
security:
myJWT: []
Für das folgende Beispiel ist ein API-Schlüssel erforderlich. Clients müssen den Schlüssel im HTTP-Header x-api-key senden. tools/list liest keine API-Schlüssel aus Suchparametern. Eine Anfrage ohne gültigen Schlüssel erhält einen JSON-RPC-Fehler und keine Toolliste. Informationen zum Erstellen eines API-Schlüssels finden Sie unter API-Schlüssel verwenden.
x-google-api-management:
mcp:
tools-list:
security:
api_key: []
components:
securitySchemes:
api_key:
type: apiKey
name: x-api-key
in: header
4. API-Konfiguration erstellen und bereitstellen
Erstellen Sie eine API-Konfiguration aus Ihrer annotierten Spezifikation und stellen Sie sie über den Standardablauf auf einem Gateway bereit. Weitere Informationen finden Sie unter API auf einem Gateway bereitstellen. Informationen zum späteren Ändern von Tools finden Sie unter Verfügbare MCP-Tools aktualisieren.
5. MCP-Unterstützung prüfen
Nach der Bereitstellung können Sie prüfen, ob das Gateway MCP-Anfragen verarbeitet.
Handshake
Senden Sie eine Initialisierungsanfrage, um die Protokollversion und die Funktionen festzulegen:
curl -X POST https://my-gateway-12345.uc.a.run.app/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-11-25",
"capabilities": {},
"clientInfo": {"name": "demo-client", "version": "1.0.0"}
}
}'
Handshake bestätigen
Bestätigen Sie die Initialisierung. Das Gateway antwortet mit HTTP 202 Accepted:
curl -X POST https://my-gateway-12345.uc.a.run.app/mcp \
-H "Content-Type: application/json" \
-H "MCP-Protocol-Version: 2025-11-25" \
-d '{"jsonrpc": "2.0", "method": "notifications/initialized"}'
Tools entdecken
Listen Sie die verfügbaren Tools auf. Wenn Sie tools-list.security konfiguriert haben, fügen Sie die entsprechenden Anmeldedaten hinzu, z. B. einen Authorization: Bearer-Header für ein JWT oder einen x-api-key-Header für einen API-Schlüssel:
curl -X POST https://my-gateway-12345.uc.a.run.app/mcp \
-H "Content-Type: application/json" \
-H "MCP-Protocol-Version: 2025-11-25" \
-d '{"jsonrpc": "2.0", "id": 2, "method": "tools/list"}'
Zuordnung von Argumenten zur REST-Anfrage
Die an ein Tool übergebenen Argumente werden basierend auf der OpenAPI-Spezifikation der zugrunde liegenden REST-Anfrage zugeordnet:
- Pfad- und Suchparameter: Werden zu Attributen auf oberster Ebene im
arguments-Objekt, die nach ihren OpenAPI-Parameternamen sortiert sind. - Anfragetext: Verschachtelt unter einer einzelnen Property namens
body. Wenn Sie beispielsweise eine Ressource erstellen möchten, übergeben Sie{"body": {"fieldName": "value"}}. - Header: Werden ebenfalls zu Attributen der obersten Ebene. Das Gateway fügt sie als Standard-HTTP-Header in den Backend-Aufruf ein.
Die transcodierte Backend-Anfrage ist nicht von einer direkten REST-Anfrage an Ihren Backend-Dienst zu unterscheiden. Backend-Dienste können programmatisch nicht zwischen einem direkten REST-Aufruf und einem von MCP transcodierten Aufruf unterscheiden.
Tool aufrufen
Ein bestimmtes Tool aufrufen. Achten Sie darauf, alle erforderlichen Authentifizierungstokens anzugeben, wenn der zugrunde liegende REST-Vorgang diese erfordert:
curl -X POST https://my-gateway-12345.uc.a.run.app/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-H "MCP-Protocol-Version: 2025-11-25" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "delete_shelf",
"arguments": {"shelf": "sci-fi"}
}
}'
Verfügbare MCP-Tools aktualisieren
API-Konfigurationen in API Gateway sind unveränderlich. Sie können die API-Definition in einer vorhandenen API-Konfiguration also nicht ändern. Daher ist die tools/list-Antwort für jede bereitgestellte API-Konfiguration statisch.
Wenn Sie freigegebene MCP-Tools oder tools/list-Sicherheitseinstellungen hinzufügen, entfernen, umbenennen oder aktualisieren möchten, erstellen Sie eine neue API-Konfiguration und stellen Sie sie auf Ihrem Gateway bereit:
- Aktualisieren Sie Ihre OpenAPI 3.x-Spezifikation, einschließlich Vorgängen,
operationId-Werten, Zusammenfassungen, Parametern und den Erweiterungenx-google-api-management.mcpundx-google-mcp-tool. Erstellen Sie eine neue API-Konfiguration mit einer neuen API-Konfigurations-ID:
gcloud api-gateway api-configs create NEW_CONFIG_ID \ --api=API_ID \ --openapi-spec=API_DEFINITION \ --project=PROJECT_ID \ --backend-auth-service-account=SERVICE_ACCOUNT_EMAILErsetzen Sie Folgendes:
NEW_CONFIG_ID: eine neue ID für die aktualisierte API-KonfigurationAPI_ID: die ID der API Gateway APIAPI_DEFINITION: der Pfad zu Ihrer aktualisierten OpenAPI 3.x-SpezifikationPROJECT_ID: Ihre Projekt-ID in Google CloudSERVICE_ACCOUNT_EMAIL: die E-Mail-Adresse des Dienstkontos, das zum Signieren von Tokens für Back-Ends mit konfigurierter Authentifizierung verwendet wird. Lassen Sie dieses Flag weg, wenn für keines Ihrer Back-Ends eine Authentifizierung erforderlich ist.
Weitere Informationen finden Sie unter API-Konfiguration erstellen.
Aktualisieren Sie jedes Gateway, das die API bereitstellt, um die neue API-Konfiguration zu verwenden:
gcloud api-gateway gateways update GATEWAY_ID \ --api=API_ID \ --api-config=NEW_CONFIG_ID \ --location=GCP_REGION \ --project=PROJECT_IDErsetzen Sie Folgendes:
GATEWAY_ID: die ID des Gateways, das aktualisiert werden sollGCP_REGION: die Region, in der das Gateway bereitgestellt wird
Weitere Informationen finden Sie unter Gateway aktualisieren.
Rufen Sie
tools/listauf, um das aktualisierte Toolset zu prüfen. Eine Beispielanfrage finden Sie unter Tools entdecken.Wenn kein Gateway mehr die vorherige API-Konfiguration verwendet, löschen Sie die ersetzte API-Konfiguration:
gcloud api-gateway api-configs delete OLD_CONFIG_ID \ --api=API_ID \ --project=PROJECT_IDErsetzen Sie
OLD_CONFIG_IDdurch die ID der ersetzten API-Konfiguration. Löschen Sie eine API-Konfiguration nicht, solange sie noch von einem Gateway verwendet wird. Wenn Sie in Ihrer neuen API-Konfiguration Kontingentmesswerte umbenennen oder entfernen, können Gateways, die noch eine ältere API-Konfiguration bereitstellen, bis zur Aktualisierung HTTP-500-Fehler zurückgeben (siehe Kontingente gelten für die gesamte API). Weitere Informationen finden Sie unter API-Konfiguration löschen.
Beachten Sie beim Aktualisieren von MCP-Tools die folgenden Rollout- und Client-Verhaltensweisen:
- Roll-out ohne Ausfallzeiten: API Gateway aktualisiert Gateways ohne Ausfallzeiten. Während die neue API-Konfiguration weitergegeben wird, erreichen einige Anfragen möglicherweise kurzzeitig die vorherige API-Konfiguration. Wenn Ihre API über mehrere Gateways oder Regionen bereitgestellt wird, aktualisieren Sie jedes Gateway separat.
- Client-Tool-Caches: Da API Gateway MCP über einen zustandslosen HTTP-Transport bereitstellt, gibt das Gateway keine
notifications/tools/list_changed-Benachrichtigungen aus. Nach Abschluss des Gateway-Updates müssen MCP-Clients, die Tooldefinitionen im Cache speichern,tools/listnoch einmal aufrufen, um die aktualisierten Tools zu finden. - Limits für API-Konfigurationen: Jede API ist auf 100 API-Konfigurationen beschränkt. Löschen Sie daher nach dem Aktualisieren Ihrer Gateways veraltete API-Konfigurationen. Erstellen Sie API-Konfigurationen nacheinander. Wenn Sie eine zweite API-Konfiguration für dieselbe API starten, bevor die erste abgeschlossen ist, kann eine oder beide möglicherweise nicht von einem Gateway verwendet werden. Weitere Informationen finden Sie unter Kontingente und Limits.
Beobachtbarkeit
MCP-Anfragen liefern Standard-API-Gateway-Messwerte und ‑Logs. Sie können MCP-Traffic von Standard-REST-Traffic unterscheiden, indem Sie den Anfragepfad prüfen (endet normalerweise auf /mcp) oder benutzerdefinierte Messwerte konfigurieren.
Fehlerbehebung bei MCP-Fehlern
MCP unterscheidet zwischen Transportfehlern und Protokollfehlern. Das Gateway gibt bei Protokoll- und Anwendungsfehlern HTTP 200 mit einem JSON-RPC-Fehlerobjekt zurück, da Antworten, die nicht 200 sind, bei vielen MCP-Clients zu Fehlern auf der Transportschicht führen können.
In der folgenden Tabelle werden häufige Symptome und Lösungen beschrieben:
| Symptom | JSON-RPC-Code | HTTP-Status | Bedeutung und typische Lösung |
|---|---|---|---|
| Methode nicht zulässig | – | 405 |
Eine Nicht-POST-Anfrage hat /mcp erreicht. Es wird nur HTTP POST unterstützt. |
| JSON-Parsing-Fehler | -32700 |
400 |
Der Anfragetext ist kein gültiges JSON-Format. |
| Fehlende/ungültige Methode oder ID | -32600 |
200 |
Der Text ist ein gültiges JSON-Format, aber keine gültige JSON-RPC-Anfrage. Prüfen Sie die Pflichtfelder (jsonrpc, method, id). |
| Methode wird nicht unterstützt | -32601 |
200 |
Die Methode liegt außerhalb des unterstützten Bereichs (z.B. ping). |
| Nicht unterstützte Protokollversion | -32602 |
200 |
protocolVersion benennt eine Version, die vom Gateway nicht unterstützt wird. |
| Protokollversion fehlt | -32602 |
200 |
In den initialize-Parametern fehlt protocolVersion oder es ist kein String. |
| Unbekanntes Tool | -32602 |
200 |
Der Toolname wurde in der bereitgestellten API-Konfiguration nicht gefunden. Aktualisieren Sie den Cache des Client-Tools oder lesen Sie den Abschnitt Bereitgestellte MCP-Tools aktualisieren. |
| Ungültige Toolargumente | -32602 |
200 |
Argumente fehlen oder sind ungültig. Prüfen Sie die Verschachtelung des Schlüssels body. |
| Text zu lang | -32000 |
200 |
Die Antwortnutzlast hat die Größenbeschränkung überschritten. |
| Transporttext zu groß | – | 413 |
Der HTTP-Anfragetext im Rohformat hat die Gateway-Transportlimits überschritten. |
| Serverfehler | -32000 |
200 |
Nicht parsbare Backend-Antwort. Logs prüfen |
| Nicht autorisiert/Verboten | – | 401/403 |
Authentifizierungsfehler Die Antwort enthält einen WWW-Authenticate-Header, der auf Metadaten der geschützten Ressource verweist. |
Backend-Anwendungsfehler werden in der Regel als erfolgreiche JSON-RPC-Antwort (HTTP 200) angezeigt, wobei result.isError: true den Backend-Fehlertext enthält.
Nächste Schritte
- Model Context Protocol – Übersicht
- OpenAPI 3.x-Erweiterungen
- Einschränkungen von OpenAPI 3.x-Funktionen