In diesem Dokument werden die Schritte zum Instrumentieren und Bereitstellen eines selbst gehosteten MCP-Servers (Model Context Protocol) beschrieben, mit dem Telemetriedaten erfasst werden können. Im Beispiel in diesem Dokument wird ein MCP-Server mit FastMCP erstellt und mit Cloud Run bereitgestellt. FastMCP enthält OpenTelemetry-Instrumentierung, mit der Telemetriedaten aus allen MCP-Vorgängen erfasst werden.
In diesem Dokument werden die folgenden Schritte beschrieben:
- Python-Projekt mit dem
uvPaketmanager vorbereiten. - MCP-Server für mathematische Operationen erstellen.
- In Cloud Run bereitstellen.
- MCP-Client authentifizieren.
- Selbst gehosteten MCP-Server testen.
- Telemetriedaten ansehen.
Hinweis
- Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch kein Konto haben Google Cloud, erstellen Sie ein Konto, um zu sehen, 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.
Aktivieren Sie die APIs für Artifact Registry, Cloud Run, Cloud Build, Telemetry, Cloud Logging, Cloud Monitoring und Cloud Trace.
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Administrator der Dienstnutzung“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen.- Richten Sie Ihre Cloud Run-Entwicklungsumgebung ein in Ihrem Google Cloud Projekt.
- Achten Sie darauf, dass Sie die entsprechenden
Berechtigungen zum Bereitstellen von Diensten haben und dass Ihrem Konto die Rollen „Cloud Run-Administrator“ (
roles/run.admin) und „Dienstkontonutzer“ (roles/iam.serviceAccountUser) zugewiesen sind. - Weisen Sie Ihrem Konto die Rolle „Cloud Run
Aufrufer (
roles/run.invoker)“ zu. Mit dieser Rolle kann der selbst gehostete MCP-Server auf den Cloud Run-Dienst zugreifen. -
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. Dies ist in der Regel 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_ID: Die Kennung des Projekts.
- PRINCIPAL: Eine Kennzeichnung für das Hauptkonto, dem Sie die Rolle zuweisen möchten. Hauptkonto-Kennzeichnungen haben normalerweise das folgende Format:
PRINCIPAL-TYPE:ID. Beispiel:user:my-user@example.comEine vollständige Liste der Formate, diePRINCIPALhaben kann, finden Sie unter Hauptkonto-IDs. - ROLE: Eine IAM-Rolle.
Wenn Sie einer Organisationsrichtlinie zur Domaineinschränkung unterliegen, die nicht authentifizierte Aufrufe für Ihr Projekt einschränkt, müssen Sie auf Ihren bereitgestellten Dienst zugreifen, wie unter Private Dienste testen beschrieben.
- Installieren Sie Uv, einen Python-Paket- und Projektmanager.
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:
Python-Projekt vorbereiten
In den folgenden Schritten wird beschrieben, wie Sie Ihr Python-Projekt mit dem uv Paketmanager 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-cloudrunErstellen Sie mit dem Tool
uvein 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.10Mit dem Befehl
uv initwird die folgendepyproject.toml-Datei 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.pyfür den Quellcode des MCP-Servers.otel_setup.pyzum Konfigurieren von OpenTelemetry.test_server.pyzum Testen des selbst gehosteten Servers.- Ein Dockerfile für die Bereitstellung in Cloud Run.
touch server.py otel_setup.py test_server.py DockerfileIhr Projektverzeichnis sollte die folgende Struktur haben:
├── mcp-on-cloudrun │ ├── pyproject.toml │ ├── otel_setup.py │ ├── server.py │ ├── test_server.py │ └── Dockerfile
MCP-Server für mathematische Operationen erstellen
In diesem Abschnitt richten Sie einen MCP-Server für mathematische Operationen mit FastMCP ein. FastMCP bietet eine schnelle Möglichkeit, MCP-Server und ‑Clients mit Python zu erstellen.
Führen Sie die folgenden Schritte aus, um einen MCP-Server für mathematische Operationen wie Addition und Subtraktion zu erstellen.
Führen Sie den folgenden Befehl aus, um FastMCP und die erforderlichen OpenTelemetry-Abhängigkeiten in der Datei
pyproject.tomlhinzuzufügen:uv add fastmcp==3.2.0 opentelemetry-api==1.40.0 opentelemetry-sdk==1.40.0 opentelemetry-exporter-otlp-proto-grpc==1.40.0 --no-syncFügen Sie der Datei
otel_setup.pyden folgenden OpenTelemetry-Einrichtungscode hinzu:Fügen Sie der Datei
server.pyden folgenden Quellcode des MCP-Servers für mathematische Operationen hinzu:Fügen Sie dem Dockerfile den folgenden Code hinzu, um das Tool
uvzum Ausführen der Dateiserver.pyzu verwenden:
In Cloud Run bereitstellen
Sie können den MCP-Server als Container-Image oder als Quellcode:
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 self-hosted-mcp-servers \ --repository-format=docker \ --location=us-central1 \ --description="Repository for self-hosted MCP servers" \ --project=PROJECT_IDErstellen Sie das Container-Image und übertragen Sie es mit Cloud Build per Push in Artifact Registry:
gcloud builds submit --region=us-central1 --tag us-central1-docker.pkg.dev/PROJECT_ID/self-hosted-mcp-servers/mcp-server:latestStellen Sie das Container-Image des MCP-Servers in Cloud Run bereit:
gcloud run deploy mcp-server \ --image us-central1-docker.pkg.dev/PROJECT_ID/self-hosted-mcp-servers/mcp-server:latest \ --region=us-central1 \ --no-allow-unauthenticated
Quelle
Sie können selbst gehostete 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 selbst gehosteten MCP-Server herstellt, authentifizieren.
Weisen Sie dem Dienstkonto die Rolle „Cloud Run-Aufrufer“ (
roles/run.invoker) zu. Diese Identity and Access Management-Richtlinienbindung sorgt dafür, dass ein starker Sicherheitsmechanismus verwendet wird, um Ihren lokalen MCP-Client zu authentifizieren.Führen Sie den Cloud Run-Proxy aus, um einen authentifizierten Tunnel zum selbst gehosteten MCP-Server auf Ihrem lokalen Computer zu erstellen:
gcloud run services proxy mcp-server --region=us-central1Wenn 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 selbst gehosteten MCP-Server weiter.
Selbst gehosteten MCP-Server testen
Sie testen und verbinden sich mit Ihrem selbst gehosteten MCP-Server, indem Sie den FastMCP-Client verwenden und auf die URL http://127.0.0.1:8080/mcp zugreifen.
So testen und rufen Sie den Mechanismus zum Hinzufügen und Subtrahieren auf:
Führen Sie den Cloud Run-Proxy aus, bevor Sie den Testserver ausführen.
Erstellen Sie eine Testdatei mit dem Namen
test_server.pyund fügen Sie den folgenden Code hinzu:Führen Sie in einem neuen Terminal den Testserver aus:
uv run test_server.pyEs 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
Telemetriedaten ansehen
In diesem Abschnitt wird beschrieben, wie Sie die Log-, Messwert- und Trace-Daten ansehen können, die von Ihrem selbst gehosteten MCP-Server generiert werden.
Hinweis
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Aufrufen von Log-, Messwert- und Trace-Daten benötigen:
- Loganzeige (
roles/logging.viewer) - Monitoring Viewer (
roles/monitoring.viewer) - Cloud Trace User (
roles/cloudtrace.user)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Telemetriedaten ansehen
Informationen zum Aufrufen von Log-, Messwert- und Trace-Daten finden Sie unter:
Logdaten
Rufen Sie in der Google Cloud Console das Segment und die Seite Log-Explorer auf:
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis mit der Zwischenüberschrift Logging aus.
Weitere Informationen zur Verwendung der Seite Log-Explorer finden Sie unter Logs ansehen und analysieren.
Messwertdaten
Rufen Sie in der Google Cloud Console die leaderboard Metrics Explorer Seite auf:
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.
Weitere Informationen zur Verwendung der Seite Metrics Explorer finden Sie unter Diagramme mit Metrics Explorer erstellen.
Trace-Daten
Rufen Sie in der Google Cloud Console die Seite
Trace Explorer auf:
Sie können diese Seite auch über die Suchleiste finden.
Der folgende Screenshot zeigt den Bereich Details auf der Seite Trace Explorer, in dem Trace-Spans angezeigt werden, die aus tools/call-Vorgängen generiert wurden:
Weitere Informationen zur Verwendung der Seite Trace Explorer finden Sie unter Traces suchen und untersuchen.
Nächste Schritte
Informationen zum Untersuchen von MCP-Aufrufen mit Cloud Trace .
Weitere Informationen zu den Optionen zum Ansehen, Untersuchen und Analysieren von Telemetriedaten
Weitere Informationen zum Hosten von MCP-Servern in Cloud Run
Informationen zum Bereitstellen von Code in Cloud Run mit einem MCP-Server