1. Einführung
Willkommen! In diesem Codelab erfahren Sie, wie Sie Ihre KI-Agenten mithilfe von von Google verwalteten MCP-Servern (Model Context Protocol) optimieren können.
Das Model Context Protocol (MCP) ist ein Open-Source-Standard, der es KI-Modellen ermöglicht, sich sicher und effizient mit externen Datenquellen und Tools zu verbinden. Die meisten MCP-Implementierungen werden lokal auf Ihrem Computer ausgeführt. Google bietet jedoch verwaltete Remote-MCP-Server an. Dies sind vollständig gehostete, unternehmensfähige Endpunkte, über die Ihre Kundenservicemitarbeiter direkt mit der Google Cloud-Infrastruktur interagieren können, ohne dass Sie serverseitigen Code oder Container verwalten müssen.
Vorteile von „Managed“
Im Gegensatz zu lokalen MCP-Servern, die Standard-Ein-/Ausgabe (stdio) verwenden, nutzen die verwalteten Server von Google Streamable HTTP. Diese Architektur bietet folgende Vorteile:
- Keine Infrastruktur:Es müssen keine Server bereitgestellt oder skaliert werden.
- Sicherheit durch Design:Native Einbindung in Google Cloud IAM und Audit-Logs.
- Zustandslose Skalierung:Nahtlose Interaktion über Standard-Load-Balancer und ‑Proxys.
Lerninhalte
- Hier erfahren Sie, wie Sie verwaltete MCP-Server aktivieren und authentifizieren.
- Cloud Logging MCP-Server als grundlegende Baseline verwenden
- Mehrere MCP-Server (Developer Knowledge, Firestore usw.) orchestrieren, um autonome Workflows zu erstellen.
Voraussetzungen
- Ein Google Cloud-Projekt mit aktivierter Abrechnungsfunktion.
- Vertrautheit mit der Google Cloud Console und der
gcloud-CLI. - Google Cloud Shell (die Gemini CLI ist hier vorinstalliert).
Dieses Codelab richtet sich an Nutzende und Entwickler*innen aller Erfahrungsstufen (auch Anfänger*innen).
Probleme mit der Berichterstellung
Während Sie das Codelab durcharbeiten und mit Antigravity arbeiten, können Probleme auftreten.
Wenn Sie Probleme mit dem Codelab haben (z. B. Tippfehler oder falsche Anleitungen), melden Sie einen Fehler über die Schaltfläche Report a mistake unten links in diesem Codelab:

2. Vorbereitung
In diesem Schritt bereiten Sie Ihre Google Cloud-Umgebung vor. Wir führen alle Aufgaben in der Google Cloud Shell aus, die ein persistentes, vorkonfiguriertes Terminal bietet.
Cloud Shell aktivieren
- Öffnen Sie die Google Cloud Console:
- Klicken Sie rechts oben in der Kopfzeile auf das Symbol Cloud Shell aktivieren.
- Sobald die Terminalsitzung beginnt, autorisieren Sie den Prompt, falls Sie dazu aufgefordert werden.
Projekt-ID festlegen
Prüfen Sie, ob Ihre Cloud Shell auf das richtige Projekt verweist:
# Set your active project
gcloud config set project YOUR_PROJECT_ID
# Verify the setting
gcloud config list project
Foundation APIs aktivieren
Für verwaltete MCP-Server müssen sowohl die zugrunde liegende Produkt-API als auch die MCP-Schnittstelle aktiviert sein. Führen Sie den folgenden Befehl aus, um das Cloud Logging-Backend zu aktivieren (unsere Baseline für dieses Lab):
# Enable the Cloud Logging API and its MCP interface
gcloud services enable logging.googleapis.com
gcloud beta services mcp enable logging.googleapis.com
Hinweis:Verwaltete MCP-Dienste befinden sich derzeit in der Betaphase. Sie müssen die gcloud-Betakomponente verwenden, um sie zu aktivieren.
Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) einrichten
Die Gemini CLI verwendet Ihre Nutzeridentität, um mit MCP-Servern zu kommunizieren. Erteilen Sie dem KI-Agenten die Berechtigung, in Ihrem Namen zu handeln:
gcloud auth application-default login
Folgen Sie der URL im Terminal, melden Sie sich an und fügen Sie den Autorisierungscode wieder in Cloud Shell ein.
Grundlegende IAM-Rollen zuweisen
Für verwaltete MCP-Server wird ein zweischichtiges Sicherheitsmodell verwendet. Dazu müssen zwei bestimmte „Tore“ geöffnet sein:
- Gate 1 (MCP-Zugriff): Die Rolle, mit der Sie das Protokoll aufrufen können.
- Gate 2 (Service Access): Die Rolle, mit der Sie die Daten sehen können (z.B. Logs ansehen).
Führen Sie den folgenden Befehl aus, um sich selbst den erforderlichen Zugriff zu gewähren:
export PROJECT_ID=$(gcloud config get-value project)
export USER_EMAIL=$(gcloud config get-value account)
# Gate 1: Permission to use the MCP protocol
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$USER_EMAIL" \
--role="roles/mcp.toolUser"
# Gate 2: Permission to view the actual logs
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$USER_EMAIL" \
--role="roles/logging.viewer"
3. Grundlagen: Ersten MCP-Server verbinden
In diesem Schritt verknüpfen Sie Ihren KI-Agenten (Gemini CLI) mit dem Google Cloud Logging MCP Server. Das ist unsere „Grundlage“, weil der Agent so in Echtzeit sehen kann, was in Ihrem Projekt passiert.
Aufgabe 1: Logging-MCP-Server konfigurieren
Die Gemini CLI verwendet eine Datei „settings.json“, um ihre Verbindungen zu verwalten. Sie müssen diese Datei (im Ordner ~/.gemini) bearbeiten, um das folgende Snippet in den Block „mcpServers“ einzufügen. Ersetzen Sie YOUR_PROJECT_ID durch Ihre tatsächliche Projekt-ID:
"logging-mcp": {
"httpUrl": "https://logging.googleapis.com/mcp",
"authProviderType": "google_credentials",
"oauth": {
"scopes": [
"https://www.googleapis.com/auth/logging.read"
]
},
"timeout": 30000,
"headers": {
"x-goog-user-project": "YOUR_PROJECT_ID"
}
}
Hinweis: Der Header x-goog-user-project ist für verwaltete MCP-Server erforderlich, damit die API-Nutzung und die Abrechnung korrekt Ihrem Projekt zugeordnet werden.
Aufgabe 2: Projektaktivität simulieren (Logs erstellen)
Wenn Ihr Projekt neu oder inaktiv ist, sind möglicherweise keine aktuellen „interessanten“ Logs vorhanden. Wir verwenden die gcloud-Befehlszeile, um einige benutzerdefinierte Einträge einzufügen, damit der Agent etwas finden kann.
Führen Sie diese Befehle nacheinander aus, um eine Ereignissequenz zu simulieren:
# 1. Simulate a standard system start
gcloud logging write mcp-test-log "System boot sequence initiated" --severity=INFO
# 2. Simulate a warning about resource limits
gcloud logging write mcp-test-log "High memory pressure detected in zone us-central1-a" --severity=WARNING
# 3. Simulate a critical authentication failure
gcloud logging write mcp-test-log "ERROR: Failed to connect to Cloud SQL. Permission Denied." --severity=ERROR
Aufgabe 3: Tools in der Gemini CLI überprüfen
Bevor wir mit dem Chatten beginnen, prüfen wir, ob der Agent die vom Logging-Server bereitgestellten Tools „sehen“ kann. Starten Sie die Gemini CLI:
gemini
Führen Sie im Gemini CLI-Prompt (>) den Befehl „list“ aus:
/mcp list
Prüfpunkt:logging-mcp sollte als Bereit mit etwa 6 Tools aufgeführt sein, darunter list_log_entries.
Aufgabe 4: Ihr erster Live-Infrastruktur-Prompt
Bitten wir den Agenten nun, die gerade erstellten Logs zu finden. Da Sie die Rolle roles/logging.viewer zuvor gewährt haben, kann der Agent jetzt „Kontakt aufnehmen“ und den Projektstatus lesen.
Geben Sie den folgenden Prompt in die Gemini CLI ein:
Show me the 3 most recent log entries from the log named 'mcp-test-log'. What is the highest severity issue you see?
Kundenservicemitarbeiter beobachten:
- Der Kundenservicemitarbeiter fragt Sie möglicherweise nach der Google Cloud-Projekt-ID. Bitte geben Sie diese an.
- Es wird erkannt, dass das Tool
list_log_entriesbenötigt wird. - Sie werden um Erlaubnis gebeten, das Tool auszuführen. Wählen Sie 1. Ja, einmal erlauben.
- Die JSON-Antwort wird geparst und Sie werden über den simulierten Fehler Cloud SQL-Berechtigung verweigert informiert.
4. Journey A: Das Gehirn (MCP für Entwicklerwissen)
In diesem Lernpfad geben Sie Ihrem Agenten ein „Gehirn“, indem Sie ihn mit dem Google Developer Knowledge MCP Server verbinden.
Eines der größten Risiken bei KI-Agenten ist die Halluzination – das selbstbewusste Bereitstellen veralteter CLI-Befehle oder eingestellter API-Parameter. Dieser MCP-Server löst dieses Problem, indem er den Agenten auf dem offiziellen, aktuellen Korpus der Google-Entwicklerdokumentation (für Google Cloud, Firebase, Android und mehr) basiert.
Aufgabe 1: Knowledge Services aktivieren
Wie beim Fundament müssen wir sowohl die Backend-API als auch den MCP-Dienstendpunkt aktivieren.
# 1. Enable the Developer Knowledge API
gcloud services enable developerknowledge.googleapis.com
# 2. Enable the MCP Server interface
gcloud beta services mcp enable developerknowledge.googleapis.com
Aufgabe 2: Eingeschränkten API-Schlüssel bereitstellen
Für die Authentifizierung verwendet das MCP für Entwicklerwissen API-Schlüssel. Aus Sicherheitsgründen erstellen wir einen Schlüssel und schränken ihn so ein, dass er nur mit dieser bestimmten API verwendet werden kann.
- Führen Sie das folgende Skript aus, um den Schlüssel zu erstellen und abzurufen:
# Create the restricted API key
gcloud alpha services api-keys create \
--display-name="MCP-Knowledge-Key" \
--api-target service=developerknowledge.googleapis.com
# Wait a few seconds for the key to propagate, then fetch the string
gcloud alpha services api-keys get-key-string \
$(gcloud alpha services api-keys list \
--filter="displayName='MCP-Knowledge-Key'" \
--format="value(name)") \
--format="value(keyString)"
- Kopieren Sie den langen String, der vom zweiten Befehl zurückgegeben wird. Das ist dein
YOUR_API_KEY.
Aufgabe 3: Gemini CLI konfigurieren
Registrieren Sie nun den Knowledge-MCP-Server bei Ihrem Agenten. So kann der Agent in der offiziellen Dokumentation suchen, wenn er auf eine technische Frage stößt, die er nicht mit 100-prozentiger Sicherheit beantworten kann.
Fügen Sie das folgende Snippet in den Abschnitt „mcpServers“ in der Datei ~/.gemini/settings.json ein und ersetzen Sie YOUR_API_KEY durch den String, den Sie gerade kopiert haben:
"developer-knowledge-mcp": {
"httpUrl": "https://developerknowledge.googleapis.com/mcp",
"headers": {
"X-Goog-Api-Key": "YOUR_API_KEY"
}
}
Aufgabe 4: Anti-Halluzinationstest
Wir prüfen jetzt, ob der Agent „recherchiert“ statt „rät“.
Gemini CLI starten:
gemini
Prüfen Sie, ob der Server bereit ist: Geben Sie /mcp list ein. Sie sollten google-developer-knowledge mit zwei Tools (search_documents, get_document) sehen.
Der Prompt:Bitten Sie den Agent, einen bestimmten modernen Befehl zu finden.
I want to create a Google Cloud Storage bucket using the modern gcloud storage command. Search the official documentation for the exact syntax and show me an example for a bucket in the 'us-central1' region.
Darauf solltest du achten:
- Gemini bittet um die Erlaubnis,
search_documentszu verwenden. - Anschließend wird wahrscheinlich
get_documentaufgerufen, um die gefundene Seite zu lesen. - Die endgültige Antwort sollte einen
gcloud storage buckets create ...-Befehl enthalten, der direkt aus der Dokumentation zitiert wird.
5. Journey B: Die Triage (autonome Fehlerbehebung)
Voraussetzung:Für diesen Lernpfad müssen Sie Lernpfad A: Das Gehirn abgeschlossen haben, damit der Kundenservicemitarbeiter nach Lösungen suchen kann.
In diesem Lernpfad kombinieren Sie die Augen (Cloud Logging MCP) und das Gehirn (Developer Knowledge MCP) Ihres Agenten, um einen Autonomous Troubleshooting Loop (Autonomer Fehlerbehebungsprozess) zu erstellen.
Anstatt Fehlercodes manuell in eine Suchmaschine zu kopieren, geben Sie dem Agenten einen einzelnen Prompt, um Ihr Projekt nach Fehlern zu durchsuchen, die offizielle Lösung zu recherchieren und einen umsetzbaren Fehlerbehebungsbericht zu erstellen.
Aufgabe 1: „Schlechten Tag“ in GCP simulieren
Um die Leistungsfähigkeit der autonomen Fehlerbehebung zu demonstrieren, benötigen wir eine realistische Reihe von Fehlern. Wir verwenden ein Python-Skript, um verschiedene Infrastrukturhürden direkt in Ihre Logs einzufügen, von Fehlern aufgrund verweigerter Berechtigungen bis hin zu Kontingentproblemen.
- Erstellen Sie in Cloud Shell einen Ordner Ihrer Wahl und rufen Sie ihn auf.
- Erstellen Sie eine Datei mit dem Namen
simulate_errors.py:
nano simulate_errors.py
- Fügen Sie den folgenden Code in den Editor ein:
import argparse
from google.cloud import logging
def simulate_errors(project_id):
client = logging.Client(project=project_id)
logger = client.logger("mcp-scenario-logger")
print(f"Simulating realistic errors for project: {project_id}...")
# 1. GCS Permission Error
logger.log_text("ERROR: GCS Upload failed for 'gs://my-app-bucket/data.json'. Status: 403 Forbidden. Missing 'storage.objects.create' for service account.", severity="ERROR")
# 2. Cloud Run Startup Error
logger.log_text("ERROR: Cloud Run service 'api-gateway' failed to start. Container failed to listen on port 8080. Check 'Cloud Run container startup requirements'.", severity="ERROR")
# 3. Secret Manager Access Error
logger.log_text("ERROR: Access denied to secret 'API_KEY'. The identity lacks 'secretmanager.versions.access'.", severity="ERROR")
print("Log entries written to 'mcp-scenario-logger'.")
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--project", required=True)
args = parser.parse_args()
simulate_errors(args.project)
- Drücken Sie zum Speichern und Beenden Strg + O, die Eingabetaste und
Ctrl+X. - Installieren Sie die
Google Cloud Logging-Bibliothek und führen Sie das Skript aus:
python -m venv mcp_env
source mcp_env/bin/activate
pip install google-cloud-logging
python simulate_errors.py --project $(gcloud config get-value project)
Aufgabe 2: Autonomen Loop ausführen
Jetzt senden wir einen komplexen Prompt, der Gemini anweist, beide MCP-Server gleichzeitig zu orchestrieren.
Gemini CLI starten:
gemini
Geben Sie diesen „Master-Prompt“ in den Agenten ein:
I need to troubleshoot recent issues in my project. Perform the following autonomous loop:
Step 1 : Retrieval: Use the Logging MCP to fetch the 5 most recent ERROR entries from the log 'mcp-scenario-logger'.
Step 2 : Iteration: For every unique error found, extract the service and specific error message.
Step 3 : Research: Use the Developer Knowledge MCP to find the official resolution or gcloud command to fix each issue.
Step 4 : Resolution: Consolidate everything into a markdown table with columns: | Service | Error Summary | Recommended Fix |.
Ablauf
Sie sehen sich jetzt einen Agentic Workflow in Echtzeit an. Der KI-Agent wird:
- Rufen Sie
list_log_entriesauf, um den gerade simulierten „schlechten Tag“ zu sehen. - Analysieren Sie den Text, um festzustellen, dass GCS, Cloud Run und Secret Manager fehlschlagen.
- Rufen Sie
search_documentsundget_documentfür jeden dieser Dienste auf, um die richtigen IAM-Rollen oder Konfigurationskorrekturen zu finden. - Sie erhalten eine strukturierte Tabelle, die etwa so aussieht (die Empfehlungen können abweichen):
Dienst | Fehlerzusammenfassung | Empfohlene Korrektur |
Cloud Storage | Fehler 403 beim Hochladen | Gewähren Sie dem Dienstkonto die Berechtigung |
Cloud Run | Port 8080 konnte nicht überwacht werden | Die App muss an 0.0.0.0 auf dem durch |
Secret Manager | Fehlende Zugriffsrolle für Version | Weisen Sie der Identität |
6. Journey C: Die Daten (Firestore MCP)
In diesem Kurs verwenden Sie den Firestore MCP Server, um eine NoSQL-Dokumentendatenbank ausschließlich mit natürlicher Sprache zu verwalten.
Firestore ist eine flexible, skalierbare Datenbank, für deren Verwaltung jedoch oft komplexer SDK-Code geschrieben oder die Console verwendet werden muss. Mit MCP wird Ihr Agent zum Datenbankadministrator, der Daten einfügen, Datensätze abfragen und sogar komplexe Schemamigrationen per Chat durchführen kann.
Aufgabe 1: Firestore-Dienste aktivieren
Aktivieren Sie zuerst die Firestore API und den entsprechenden MCP-Endpunkt.
# 1. Enable the Firestore API
gcloud services enable firestore.googleapis.com
# 2. Enable the MCP Server interface
gcloud beta services mcp enable firestore.googleapis.com
Aufgabe 2: Firestore-IAM-Rollen zuweisen
Zum Ausführen von Abfragen benötigen Sie bestimmte Berechtigungen, die über den grundlegenden MCP-Zugriff hinausgehen.
# Grant Firestore User role
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$USER_EMAIL" \
--role="roles/datastore.user"
Aufgabe 3: Dedizierte Testdatenbank erstellen
Um unsere Tests sicher durchzuführen, erstellen wir eine spezielle Firestore-Datenbank mit dem Namen mcp-lab-db.
gcloud firestore databases create --database=mcp-lab-db --location=nam5 --type=firestore-native
Aufgabe 4: Gemini CLI konfigurieren
Fügen Sie Ihrem Agenten den Firestore-MCP-Server hinzu. Fügen Sie dem Abschnitt „mcpServers“ in der Datei ~/.gemini/settings.json die folgende Konfiguration hinzu. Ersetzen Sie YOUR_PROJECT_ID durch Ihre tatsächliche Projekt-ID:
"firestore-mcp": {
"httpUrl": "https://firestore.googleapis.com/mcp",
"authProviderType": "google_credentials",
"oauth": {
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
},
"timeout": 30000,
"headers": {
"x-goog-user-project": "YOUR_PROJECT_ID"
}
}
Aufgabe 5: Datenbankvorgänge in natürlicher Sprache
Starten Sie die Gemini CLI und führen Sie einige grundlegende Vorgänge aus, um die Verbindung zu überprüfen.
Gemini CLI starten:
gemini
Prüfen Sie, ob der Server bereit ist: Geben Sie /mcp list ein. Sie sollten firestore-mcp mit mehreren Tools (add_document, create_database, list_documents, etc) sehen.
Probieren Sie diese Prompts in der angegebenen Reihenfolge aus:
Daten einlesen:
In the 'mcp-lab-db' database, add three documents to a 'products' collection. Include a laptop (stock 5), a mouse (stock 25), and a keyboard (stock 8).
Bestätigen:
List all documents in the 'products' collection from the 'mcp-lab-db' database.
Probieren Sie auch andere Prompts aus, mit denen Sie Firestore-Datenbanken und ‑Sammlungen über natürliche Sprache verwalten können.
7. Journey D: Intelligence (BigQuery & Maps)
In diesem Lernpfad statten Sie Ihren Agent mit der Fähigkeit aus, Petabyte an Daten zu analysieren und die physische Welt mithilfe der MCP-Server BigQuery und Maps Grounding Lite zu verstehen.
Am Ende dieses Abschnitts kann Ihr KI-Agent natürliche Sprache in komplexe SQL-Abfragen übersetzen und kontextbezogene geografische Ratschläge (z. B. Reisezeiten und Wetter) geben, um seine Antworten in der Realität zu verankern.
Aufgabe 1: Intelligence Services aktivieren
Aktivieren Sie die APIs und MCP-Schnittstellen für BigQuery und Google Maps.
# 1. Enable product APIs
gcloud services enable bigquery.googleapis.com mapstools.googleapis.com
# 2. Enable MCP Server interfaces
gcloud beta services mcp enable bigquery.googleapis.com
gcloud beta services mcp enable mapstools.googleapis.com
Aufgabe 2: BigQuery-IAM-Rollen zuweisen
Zum Ausführen von Abfragen benötigen Sie bestimmte Berechtigungen, die über den grundlegenden MCP-Zugriff hinausgehen.
# Grant BigQuery Job User and Data Viewer roles
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$USER_EMAIL" \
--role="roles/bigquery.jobUser"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$USER_EMAIL" \
--role="roles/bigquery.dataViewer"
Aufgabe 3: Maps API-Schlüssel bereitstellen
Im Gegensatz zu anderen Diensten, die ausschließlich auf IAM basieren, ist für den Maps Grounding Lite-Server ein API-Schlüssel für Kontingent und Abrechnung erforderlich.
Schlüssel erstellen:
gcloud alpha services api-keys create --display-name="MCP-Maps-Key"
Schlüsselstring abrufen:
# Wait a few seconds for the key to propagate, then fetch the string
gcloud alpha services api-keys get-key-string \
$(gcloud alpha services api-keys list \
--filter="displayName='MCP-Maps-Key'" \
--format="value(name)") \
--format="value(keyString)"
Kopieren Sie den Schlüsselstring für den nächsten Schritt.
Aufgabe 4: Gemini CLI konfigurieren
Registrieren Sie nun beide Server. Fügen Sie der Datei ~/.gemini/settings.json im Abschnitt mcpServers die folgenden Snippets hinzu. Ersetzen Sie YOUR_PROJECT_ID und YOUR_MAPS_API_KEY entsprechend.
"bigquery-mcp": {
"httpUrl": "https://bigquery.googleapis.com/mcp",
"authProviderType": "google_credentials",
"oauth": {
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
},
"timeout": 30000,
"headers": {
"x-goog-user-project": "YOUR_PROJECT_ID"
}
},
"maps-grounding-lite-mcp": {
"httpUrl": "https://mapstools.googleapis.com/mcp",
"headers": {
"X-Goog-Api-Key": "YOUR_MAPS_API_KEY"
}
}
Aufgabe 5: Intelligence in Action
Starten Sie die Gemini CLI und testen Sie die neuen „Intelligence“-Funktionen.
gemini
Prüfen Sie, ob der Server bereit ist: Geben Sie /mcp list ein. Sie sollten bigquery-mcp und maps-grounding-lite-mcp mit mehreren Tools sehen. .
Szenario 1: Die Analyse-Engine (BigQuery): Bitten Sie den Agent, ein öffentliches Dataset abzufragen, ohne dass Sie SQL-Kenntnisse benötigen:
Run a query to count the number of penguins on each island in the BigQuery public dataset ml_datasets.penguins.
Szenario 2: Geografischer Kontext (Karten) Bitten Sie den Agenten, eine Reise in der realen Welt zu planen:
I am planning a drive from Mumbai to Pune tomorrow morning. Based on current weather and routing, what should I expect in terms of travel time and what should I carry?
Darauf solltest du achten:
- Für BigQuery ruft der Agent
execute_sqlauf, um das Schema zu ermitteln und die Abfrage auszuführen. - Für Google Maps wird
lookup_weatherorchestriert und compute_routes aufgerufen, um einen fundierten, hilfreichen Reiseplan zu erstellen.
8. Härten: Produktionssicherheit und IAM
In diesem letzten Schritt wechseln Sie von der Verwendung allgemeiner „Inhaber“-Berechtigungen zu einem Defense-in-Depth-Modell in Produktionsqualität.
KI-Agents sind von Natur aus „hilfreich“. Wenn Sie ein Tool auf der Benutzeroberflächenebene einschränken, versucht ein Smart Agent möglicherweise, diese Einschränkung zu umgehen, indem er stattdessen einen Shell-Befehl ausführt. Um Ihre Infrastruktur wirklich zu schützen, müssen Sie mit Google Cloud IAM harte Grenzen schaffen.
Das zweischichtige Sicherheitsmodell
Damit ein Agent eine Aktion ausführen kann, muss er zwei Gates durchlaufen:
- Gate 1 (MCP-Gate): Hat die Identität
roles/mcp.toolUser? (Berechtigung zur Verwendung des Protokolls). - Gate 2 (Service-Gate): Hat die Identität die spezifische Produktrolle (z. B.
roles/datastore.viewer)? (Berechtigung zum Aufrufen der Daten)
Aufgabe 1: Ebene 1 – Clientseitige Filterung (excludeTools)
Die erste Schutzschicht besteht darin, Tools vor dem Agenten zu verbergen, damit er nicht einmal daran denkt, sie zu verwenden.
- Öffnen Sie die Einstellungen für die Gemini CLI im Cloud Shell-Editor:
cloudshell edit ~/.gemini/settings.json
- Suchen Sie den firestore-mcp-Block und fügen Sie die
excludeTools-Anweisung hinzu, um destruktive Aktionen auszublenden:
"firestore-mcp": {
"httpUrl": "https://firestore.googleapis.com/mcp",
"excludeTools": ["delete_database", "update_database", "delete_document"],
...
}
Speichern Sie die Datei und starten Sie die Gemini CLI neu. Führen Sie /mcp list aus. Die Tools sind jetzt nicht mehr vorhanden.
Aufgabe 2: Ebene 2 – Infrastruktur (IAM-Bouncer)
Die clientseitige Filterung ist eine „weiche“ Schutzmaßnahme. Wenn Sie den Agenten bitten, „Meine Firestore-Datenbank löschen“ und das Tool ausgeblendet ist, wird möglicherweise versucht, gcloud firestore databases delete auszuführen. Um dies zu verhindern, verwenden wir ein Dienstkonto mit minimalen Berechtigungen.
Dienstkonto mit der Rolle „Nur Leser“ erstellen:
# Create the service account
gcloud iam service-accounts create mcp-reader-sa --display-name="MCP Reader Only"
# Grant ONLY the necessary roles (Gate 1 + Gate 2)
export PROJECT_ID=$(gcloud config get-value project)
SA_EMAIL="mcp-reader-sa@$PROJECT_ID.iam.gserviceaccount.com"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/mcp.toolUser"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/datastore.viewer"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/aiplatform.user"
Schlüssel generieren und aktivieren:
gcloud iam service-accounts keys create reader-key.json --iam-account=$SA_EMAIL
export GOOGLE_APPLICATION_CREDENTIALS=$(pwd)/reader-key.json
Aufgabe 3: Bouncer-Test für „Hilfreicher Agent“
Jetzt testen wir, ob der Agent unsere Sicherheitsmaßnahmen umgehen kann.
Im ersten Schritt aktivieren wir das Dienstkonto, damit der Agent auch dann, wenn er auf den gcloud-Befehl zurückgreift, unter der Dienstkontoidentität agiert, die wir gerade erstellt haben.
Dienstkonto aktivieren:
Führen Sie den folgenden Befehl aus und ersetzen Sie [PATH_TO_KEY_FILE] durch den tatsächlichen Pfad zu Ihrer JSON-Schlüsseldatei (z.B. reader-key.json).
gcloud auth activate-service-account --key-file=[PATH_TO_KEY_FILE]
Änderung bestätigen:
Nachdem Sie den Befehl ausgeführt haben, können Sie mit dem folgenden Befehl prüfen, ob das Dienstkonto aktiv ist:
gcloud auth list
In der Ausgabe wird das Dienstkonto als aktive Anmeldedaten angezeigt.
Gemini CLI starten:
gemini
Geben Sie diesen Prompt ein:
I want to delete the 'mcp-lab-db' firestore database. If the tool is missing, try using the gcloud firestore command in the terminal.
Was passiert?
- Der Agent versucht zuerst, das Tool „delete_database“ auf dem Firestore-MCP-Server zu verwenden. Der Vorgang schlägt aufgrund fehlender Berechtigungen fehl.
- Anschließend wird versucht, „hilfreich“ zu sein, indem auf das
run_shell_command-Tool zurückgegriffen wird, um den gcloud firestore-Befehl zu verwenden.
Das Ergebnis:
Der Befehl schlägt mit einem „Forbidden“-Fehler fehl. Da der Agent unter der Identität mcp-reader-sa ausgeführt wird, fehlt ihm die Berechtigung „datastore.databases.delete“. IAM ist die letzte Sicherheitsmaßnahme. Unabhängig davon, wie der Agent versucht, auf die Ressource zuzugreifen, wird die Anfrage auf Google Cloud API-Ebene vom „Bouncer“ blockiert.
Zurück zu Ihrem Nutzerkonto wechseln:
Geben Sie den folgenden Befehl ein, um zu Ihrem Nutzerkonto zurückzukehren:
gcloud config set account YOUR_EMAIL_ADDRESS
9. Bereinigen
Löschen Sie Ihre Testressourcen, um unerwünschte Kosten zu vermeiden:
# Delete the Firestore database
gcloud firestore databases delete --database=mcp-lab-db
# Remove the service account
gcloud iam service-accounts delete mcp-reader-sa@$PROJECT_ID.iam.gserviceaccount.com
10. Fazit
Glückwunsch! Sie haben den gesamten Stack von von Google verwalteten MCP-Servern durchlaufen.
Sie haben mit dem „Stamm“ des Labs begonnen und eine grundlegende Verbindung zu Cloud Logging hergestellt. Von dort aus haben Sie sich in modulare „Adventures“ verzweigt, um das Wissen Ihres Agents zu fundieren, komplexe Fehlerbehebungsschleifen zu automatisieren, Daten in Firestore zu migrieren und Informationen aus BigQuery und Maps zu extrahieren.
Am wichtigsten ist, dass Sie Ihren Agenten in den Grundlagen der Produktionssicherheit verankert haben. Sie haben bewiesen, dass ein Agent zwar übermäßig „hilfreich“ sein kann, Google Cloud IAM aber der ultimative Türsteher ist, der dafür sorgt, dass Ihre autonomen Workflows immer das Prinzip der geringsten Berechtigung einhalten.
Zusammenfassung
- Verwaltet = Skalierbar:Sie haben über Streamable HTTP eine Verbindung zu Tools auf Infrastrukturebene hergestellt, ohne einen einzigen Server bereitzustellen.
- Fundierung ist obligatorisch:Sie haben das „Erraten“ von LLMs durch das Developer Knowledge MCP ersetzt, damit Ihr Agent aktuelle, gültige Befehle verwendet.
- Orchestration ist Power:Sie haben gesehen, dass das volle Potenzial erst dann erreicht wird, wenn ein KI-Agent mehrere MCP-Server kombiniert, um ein einzelnes geschäftliches Problem zu lösen.