In dieser Anleitung wird beschrieben, wie Sie einen MCP-Server (Model Context Protocol) mit streamfähigem HTTP-Transport in Cloud Run hosten. Außerdem finden Sie hier Informationen zur Authentifizierung von MCP-Clients. Wenn Sie noch nicht mit MCP vertraut sind, lesen Sie die folgenden Ressourcen:
MCP ist ein offenes Protokoll, das die Interaktion von KI-Agenten mit ihrer Umgebung standardisiert. Der KI-Agent hostet einen MCP-Client und die Tools und Ressourcen, mit denen er interagiert, sind MCP-Server. Der MCP-Client kann über zwei verschiedene Transporttypen mit dem MCP-Server kommunizieren:
Sie können MCP-Clients und -Server auf demselben lokalen Computer hosten, einen MCP-Client lokal hosten und ihn mit Remote-MCP-Servern kommunizieren lassen, die auf einer Cloud-Plattform wie Cloud Run gehostet werden, oder sowohl den MCP-Client als auch den MCP-Server auf einer Cloud-Plattform hosten.
Cloud Run unterstützt das Hosten von MCP-Servern mit streamfähigem HTTP-Transport, aber nicht von MCP-Servern mit Stdio-Transport.
Das folgende Diagramm zeigt, wie der MCP-Client die Absicht des KI-Agenten aufnimmt und eine standardisierte Anfrage an MCP-Server sendet, in der das auszuführende Tool angegeben wird. Nachdem der MCP-Server die Aktion ausgeführt und die Ergebnisse abgerufen hat, gibt er das Ergebnis in einem einheitlichen Format an den MCP-Client zurück.
Die Anleitung auf dieser Seite gilt, wenn Sie einen eigenen MCP-Server entwickeln oder einen vorhandenen MCP-Server verwenden.
- Wenn Sie einen eigenen MCP-Server entwickeln, empfehlen wir Ihnen, ein MCP-Server-SDK zu verwenden, z. B. die offiziellen Sprach-SDKs (TypeScript, Python, Go, Kotlin, Java, C#, Ruby oder Rust) oder FastMCP.
- Wenn Sie einen vorhandenen MCP-Server verwenden, finden Sie eine Liste der offiziellen und Community-MCP-Server im GitHub-Repository für MCP-Server. Docker Hub bietet auch eine kuratierten Liste von MCP-Servern.
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie noch kein Google Cloud-Konto haben, erstellen Sie ein Konto, um zu testen, wie sich unsere Produkte in realen Szenarien schlagen. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Richten Sie Ihre Cloud Run-Entwicklungsumgebung ein in Ihrem Google Cloud Projekt.
- Prüfen Sie, ob Sie die entsprechenden
Berechtigungen zum Bereitstellen von Diensten haben und ob Ihrem Konto die Rollen „Cloud Run-Administrator“ (
roles/run.admin) und „Dienstkontonutzer“ (roles/iam.serviceAccountUser) zugewiesen sind. -
Rufen Sie in der Google Cloud Console die Seite IAM auf.
IAM aufrufen - Wählen Sie das Projekt aus.
- Klicken Sie auf „“ Zugriffsrechte erteilen.
-
Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. In der Regel ist das die E-Mail-Adresse, die zum Bereitstellen des Cloud Run-Dienstes verwendet wird.
- Wählen Sie in der Liste Rolle auswählen eine Rolle aus.
- Wenn Sie weitere Rollen zuweisen möchten, klicken Sie auf Weitere Rolle hinzufügen und fügen Sie jede zusätzliche Rolle hinzu.
- Klicken Sie auf Speichern.
- PROJECT_NUMBER durch Ihre Google Cloud Projekt nummer.
- PROJECT_ID durch Ihre Google Cloud Projekt-ID.
- PRINCIPAL durch das Konto, für das Sie die Bindung hinzufügen. In der Regel ist das die E-Mail-Adresse, die zum Bereitstellen des Cloud Run-Dienstes verwendet wird.
- ROLE durch die Rolle, die Sie dem Konto des Bereitstellers hinzufügen.
Rollen zuweisen
Console
gcloud
So weisen Sie Ihrem Konto die erforderlichen IAM-Rollen für Ihr Projekt zu:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
Ersetzen Sie:
Remote-MCP-Server mit SSE oder streamfähigem HTTP hosten
MCP-Server, die Server-Sent Events (SSE) oder streamfähiges HTTP verwenden, können remote von ihren MCP-Clients gehostet werden.
Wenn Sie diesen Typ von MCP-Server in Cloud Run bereitstellen möchten, können Sie den MCP-Server je nach Paketierung als Container-Image oder als Quellcode (in der Regel Node.js oder Python) bereitstellen.
Container-Images
Remote-MCP-Server, die als Container-Images verteilt werden, sind Webserver, die auf einem bestimmten Port auf HTTP-Anfragen warten. Das bedeutet, dass sie dem Container-Laufzeitvertrag von Cloud Run entsprechen und in einem Cloud Run-Dienst bereitgestellt werden können.
Wenn Sie einen als Container-Image verpackten MCP-Server bereitstellen möchten, benötigen Sie die URL des Container-Images und den Port, auf dem er Anfragen empfängt. Diese können mit dem folgenden gcloud CLI-Befehl bereitgestellt werden:
gcloud run deploy --image IMAGE_URL --port PORT
Ersetzen Sie:
IMAGE_URLdurch die Container-Image-URL, z. B.us-docker.pkg.dev/cloudrun/container/mcp.PORTdurch den Port, auf dem er wartet, z. B.3000.
Quellen
Remote-MCP-Server, die nicht als Container-Images bereitgestellt werden, können aus ihren Quellen in Cloud Run bereitgestellt werden, insbesondere wenn sie in Node.js oder Python geschrieben sind.
Klonen Sie das Git-Repository des MCP-Servers:
git clone https://github.com/ORGANIZATION/REPOSITORY.git
Wechseln Sie zum Stammverzeichnis des MCP-Servers:
cd REPOSITORY
Stellen Sie den Server mit dem folgenden gcloud CLI-Befehl in Cloud Run bereit:
gcloud run deploy --source .
Nachdem Sie Ihren HTTP-MCP-Server in Cloud Run bereitgestellt haben, erhält der MCP Server eine HTTPS-URL und die Kommunikation kann die integrierte Unterstützung von Cloud Run für das Streaming von HTTP Antworten nutzen.
MCP-Clients für KI-Agenten authentifizieren
Je nachdem, wo Sie den MCP-Client gehostet haben, lesen Sie den entsprechenden Abschnitt:
Lokale MCP-Clients authentifizieren
Wenn der KI-Agent, der den MCP-Client hostet, auf einem lokalen Computer ausgeführt wird, verwenden Sie eine der folgenden Methoden, um den MCP-Client zu authentifizieren:
Weitere Informationen finden Sie in der MCP-Spezifikation unter Authentifizierung.
IAM-Invoker-Berechtigung
Standardmäßig erfordert die URL von Cloud Run-Diensten, dass alle Anfragen
mit der
IAM-Rolle „Cloud Run Invoker“
(roles/run.invoker) autorisiert werden. Diese IAM-Richtlinienbindung sorgt dafür, dass ein starker Sicherheitsmechanismus verwendet wird, um Ihren lokalen MCP-Client zu authentifizieren.
Nachdem Sie Ihren MCP-Server in einem Cloud Run-Dienst in einer Region bereitgestellt haben, führen Sie den Cloud Run-Proxy auf Ihrem lokalen Computer aus, um den Remote-MCP-Server mit Ihren eigenen Anmeldedaten sicher für Ihren Client verfügbar zu machen:
gcloud run services proxy MCP_SERVER_NAME --region REGION --port=3000
Ersetzen Sie:
- MCP_SERVER_NAME durch den Namen Ihres Cloud Run-Dienstes.
- REGION durch die Google Cloud
Region, in der Sie Ihren Dienst bereitgestellt haben. Beispiel:
europe-west1.
Der Cloud Run-Proxy-Befehl erstellt einen lokalen Proxy auf Port 3000, der Anfragen an den Remote-MCP-Server weiterleitet und Ihre Identität einfügt.
Aktualisieren Sie die MCP-Konfigurationsdatei Ihres MCP-Clients mit Folgendem:
{
"mcpServers": {
"cloud-run": {
"url": "http://localhost:3000/sse"
}
}
}
Wenn Ihr MCP-Client das url Attribut nicht unterstützt, verwenden Sie das
mcp-remote npm-Paket:
{
"mcpServers": {
"cloud-run": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://localhost:3000/sse"
]
}
}
}
OIDC-ID-Token
Je nachdem, ob der MCP-Client Header bereitstellt oder eine Möglichkeit zur Bereitstellung eines benutzerdefinierten authentifizierten Transports verwendet, können Sie den MCP-Client mit einem OIDC-ID-Token authentifizieren.
Sie können verschiedene Google-Authentifizierungsbibliotheken verwenden, um ein ID-Token aus der
Laufzeitumgebung abzurufen, z. B. die
Google-Authentifizierungsbibliothek für Python.
Dieses Token muss den richtigen Zielgruppenanspruch haben, der mit der URL des empfangenden
Dienstes übereinstimmt, es sei denn, Sie verwenden
benutzerdefinierte Zielgruppen.*.run.app Sie müssen das ID-Token auch in Clientanfragen angeben, z. B.
Authorization: Bearer <token value>.
Wenn der MCP-Client weder Header noch Transport bereitstellt, verwenden Sie eine andere Authentifizierungsmethode.
In Cloud Run ausgeführte MCP-Clients authentifizieren
Wenn der KI-Agent, der den MCP-Client hostet, in Cloud Run ausgeführt wird, verwenden Sie eine der folgenden Methoden, um den MCP-Client zu authentifizieren:
MCP-Server als Sidecar bereitstellen
Der MCP-Server kann als Sidecar bereitgestellt werden, in dem der MCP-Client ausgeführt wird.
Für diesen Anwendungsfall ist keine spezielle Authentifizierung erforderlich, da sich MCP-Client und MCP-Server auf derselben Instanz befinden. Der Client kann über einen Port auf http://localhost:PORT eine Verbindung zum MCP
Server herstellen. Ersetzen Sie
PORT durch einen anderen Port als den, der zum Senden
von Anfragen an den Cloud Run-Dienst verwendet wird.
Dienst-zu-Dienst-Authentifizierung
Wenn der MCP-Server und der MCP-Client als separate Cloud Run Dienste ausgeführt werden, lesen Sie Dienst-zu-Dienst-Authentifizierung.
Cloud Service Mesh verwenden
Ein Agent, der einen MCP-Client hostet, kann mit Cloud Service Mesh eine Verbindung zu einem Remote-MCP-Server herstellen. Mit einem Service Mesh wird die Orchestrierung von Mikrodiensten vereinfacht, da Authentifizierung und Traffic-Management automatisch erfolgen.
Sie können den MCP-Serverdienst so konfigurieren, dass er einen Kurznamen im Mesh hat. Der MCP-Client kann dann über den Kurznamen http://mcp-server mit dem MCP-Server kommunizieren. Die Authentifizierung wird vom Mesh verwaltet.
Nächste Schritte
- KI-Agenten in Cloud Run hosten.
- Folgen Sie der Anleitung zum Erstellen und Bereitstellen eines Remote-MCP-Servers in Cloud Run.
- Folgen Sie diesen MCP-Codelabs: