Erste Schritte mit Google MCP-Servern

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:

b06b582bcd847f6d.png

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

  1. Öffnen Sie die Google Cloud Console:
  2. Klicken Sie rechts oben in der Kopfzeile auf das Symbol Cloud Shell aktivieren.
  3. 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:

  1. Gate 1 (MCP-Zugriff): Die Rolle, mit der Sie das Protokoll aufrufen können.
  2. 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:

  1. Der Kundenservicemitarbeiter fragt Sie möglicherweise nach der Google Cloud-Projekt-ID. Bitte geben Sie diese an.
  2. Es wird erkannt, dass das Tool list_log_entries benötigt wird.
  3. Sie werden um Erlaubnis gebeten, das Tool auszuführen. Wählen Sie 1. Ja, einmal erlauben.
  4. 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.

  1. 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)"
  1. 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_documents zu verwenden.
  • Anschließend wird wahrscheinlich get_document aufgerufen, 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.

  1. Erstellen Sie in Cloud Shell einen Ordner Ihrer Wahl und rufen Sie ihn auf.
  2. Erstellen Sie eine Datei mit dem Namen simulate_errors.py:
nano simulate_errors.py
  1. 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)
  1. Drücken Sie zum Speichern und Beenden Strg + O, die Eingabetaste und Ctrl+X.
  2. 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:

  1. Rufen Sie list_log_entries auf, um den gerade simulierten „schlechten Tag“ zu sehen.
  2. Analysieren Sie den Text, um festzustellen, dass GCS, Cloud Run und Secret Manager fehlschlagen.
  3. Rufen Sie search_documents und get_document für jeden dieser Dienste auf, um die richtigen IAM-Rollen oder Konfigurationskorrekturen zu finden.
  4. 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 roles/storage.objectCreator.

Cloud Run

Port 8080 konnte nicht überwacht werden

Die App muss an 0.0.0.0 auf dem durch $PORT definierten Port gebunden sein.

Secret Manager

Fehlende Zugriffsrolle für Version

Weisen Sie der Identität roles/secretmanager.secretAccessor zu.

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_sql auf, um das Schema zu ermitteln und die Abfrage auszuführen.
  • Für Google Maps wird lookup_weather orchestriert 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:

  1. Gate 1 (MCP-Gate): Hat die Identität roles/mcp.toolUser? (Berechtigung zur Verwendung des Protokolls).
  2. 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.

  1. Öffnen Sie die Einstellungen für die Gemini CLI im Cloud Shell-Editor:
cloudshell edit ~/.gemini/settings.json
  1. 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?

  1. Der Agent versucht zuerst, das Tool „delete_database“ auf dem Firestore-MCP-Server zu verwenden. Der Vorgang schlägt aufgrund fehlender Berechtigungen fehl.
  2. 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.