In dieser Anleitung erfahren Sie, wie Sie einen Remote-MCP-Server (Model Context Protocol) in Cloud Run mit dem streamable HTTP transport erstellen und bereitstellen. Beim streamfähigen HTTP-Transport läuft der MCP-Server als unabhängiger Prozess, der mehrere Clientverbindungen verarbeiten kann.
Python-Projekt vorbereiten
In den folgenden Schritten wird beschrieben, wie Sie Ihr Python-Projekt mit dem Paketmanager uv
einrichten.
Erstellen Sie einen Ordner mit dem Namen
mcp-on-cloudrun
, um den Quellcode für die Bereitstellung zu speichern:mkdir mcp-on-cloudrun cd mcp-on-cloudrun
Erstellen Sie mit dem Tool
uv
ein Python-Projekt, um einepyproject.toml
-Datei zu generieren:uv init --name "mcp-on-cloudrun" --description "Example of deploying an MCP server on Cloud Run" --bare --python 3.10
Mit dem Befehl
uv init
wird die folgende Dateipyproject.toml
erstellt:[project] name = "mcp-server" version = "0.1.0" description = "Example of deploying an MCP server on Cloud Run" readme = "README.md" requires-python = ">=3.10" dependencies = []
Erstellen Sie die folgenden zusätzlichen neuen Dateien:
server.py
für den MCP-Server-Quellcodetest_server.py
, um den Remote-Server zu testen- Dockerfile für die Bereitstellung in Cloud Run
touch server.py test_server.py Dockerfile
Ihr Projektverzeichnis sollte die folgende Struktur haben:
├── mcp-on-cloudrun │ ├── pyproject.toml │ ├── server.py │ ├── test_server.py │ └── Dockerfile
MCP-Server für mathematische Operationen erstellen
Um wertvollen Kontext für die Verbesserung der Verwendung von LLMs mit MCP bereitzustellen, richten Sie einen mathematischen MCP-Server mit FastMCP ein. FastMCP bietet eine schnelle Möglichkeit, MCP-Server und ‑Clients mit Python zu erstellen.
So erstellen Sie einen MCP-Server für mathematische Operationen wie Addition und Subtraktion:
Führen Sie den folgenden Befehl aus, um FastMCP als Abhängigkeit in der Datei
pyproject.toml
hinzuzufügen:uv add fastmcp==2.8.0 --no-sync
Fügen Sie der Datei
server.py
den folgenden Quellcode des Math MCP-Servers hinzu:Fügen Sie der Dockerfile den folgenden Code hinzu, um das Tool
uv
zum Ausführen der Dateiserver.py
zu verwenden:
In Cloud Run bereitstellen
Sie können den MCP-Server als Container-Image oder als Quellcode bereitstellen:
Container-Image
Folgen Sie dieser Anleitung, um einen MCP-Server bereitzustellen, der als Container-Image verpackt ist.
Erstellen Sie ein Artifact Registry-Repository zum Speichern des Container-Images:
gcloud artifacts repositories create remote-mcp-servers \ --repository-format=docker \ --location=us-central1 \ --description="Repository for remote MCP servers" \ --project=PROJECT_ID
Erstellen Sie das Container-Image und übertragen Sie es per Push mit Cloud Build in Artifact Registry:
gcloud builds submit --region=us-central1 --tag us-central1-docker.pkg.dev/PROJECT_ID/remote-mcp-servers/mcp-server:latest
Stellen Sie das Container-Image des MCP-Servers in Cloud Run bereit:
gcloud run deploy mcp-server \ --image us-central1-docker.pkg.dev/PROJECT_ID/remote-mcp-servers/mcp-server:latest \ --region=us-central1 \ --no-allow-unauthenticated
Quelle
Sie können Remote-MCP-Server aus ihren Quellen in Cloud Run bereitstellen.
Stellen Sie es mit dem folgenden Befehl aus der Quelle bereit:
gcloud run deploy mcp-server --no-allow-unauthenticated --region=us-central1 --source .
MCP-Client authentifizieren
Wenn Sie Ihren Dienst mit dem Flag --no-allow-unauthenticated
bereitgestellt haben, muss sich jeder MCP-Client, der eine Verbindung zu Ihrem Remote-MCP-Server herstellt, authentifizieren.
Weisen Sie dem Dienstkonto die Rolle Cloud Run Invoker (
roles/run.invoker
) zu. Diese Identity and Access Management-Richtlinienbindung sorgt dafür, dass ein starker Sicherheitsmechanismus zur Authentifizierung Ihres lokalen MCP-Clients verwendet wird.Führen Sie den Cloud Run-Proxy aus, um einen authentifizierten Tunnel zum Remote-MCP-Server auf Ihrem lokalen Computer zu erstellen:
gcloud run services proxy mcp-server --region=us-central1
Wenn der Cloud Run-Proxy noch nicht installiert ist, werden Sie mit diesem Befehl aufgefordert, ihn herunterzuladen. Folgen Sie der Anleitung, um den Proxy herunterzuladen und zu installieren.
Cloud Run authentifiziert den gesamten Traffic zu http://127.0.0.1:8080
und leitet Anfragen an den Remote-MCP-Server weiter.
Remote-MCP-Server testen
Sie testen und stellen eine Verbindung zum Remote-MCP-Server her, indem Sie auf die URL http://127.0.0.1:8080/mcp
zugreifen.
So testen und rufen Sie den Mechanismus zum Addieren und Subtrahieren auf:
Bevor Sie den Testserver ausführen, führen Sie den Cloud Run-Proxy aus.
Erstellen Sie eine Testdatei mit dem Namen
test_server.py
und fügen Sie den folgenden Code ein:Führen Sie den Testserver in einem neuen Terminal aus:
uv run test_server.py
Es sollte folgende Ausgabe angezeigt werden:
🛠️ Tool found: add 🛠️ Tool found: subtract 🪛 Calling add tool for 1 + 2 ✅ Result: 3 🪛 Calling subtract tool for 10 - 3 ✅ Result: 7