1. Einführung
In diesem Codelab erfahren Sie, wie Sie einen MCP-Server (Model Context Protocol) erstellen und bereitstellen, um die Funktionen der Gemini-Befehlszeile zu erweitern. Sie entwickeln godoctor, einen Go-basierten Server, der benutzerdefinierte Tools für die Go-Entwicklung bereitstellt und die Gemini-Befehlszeile von einem universellen Coding-Assistenten in einen spezialisierten Go-Entwicklungsexperten verwandelt.
In diesem Codelab wird ein „promptgesteuerter“ Ansatz verwendet. Sie sind der technische Leiter und stellen Ihrem KI‑Assistenten (Gemini CLI) Prompts zur Verfügung. Ihr Ziel ist es, zu lernen, wie Sie Projektanforderungen in effektive Prompts umwandeln und die KI die Implementierungsdetails erledigen lassen.
Das Herzstück dieses Projekts ist das Model Context Protocol (MCP). MCP ist ein Open-Source-Protokoll, das standardisiert, wie Large Language Models (LLMs) wie Gemini mit externen Tools und Diensten kommunizieren. Sie fungiert als Brücke, die es der KI ermöglicht, auf reale Informationen zuzugreifen und Aktionen auszuführen, die über ihr integriertes Wissen hinausgehen. Wenn Sie einen MCP-Server erstellen, erstellen Sie ein benutzerdefiniertes Plug-in, das von der Gemini CLI erkannt und verwendet werden kann. So können Sie der Gemini CLI neue Fähigkeiten beibringen.
Lerninhalte
- Gemini-Befehlszeile installieren und konfigurieren
- Effektive Prompts für KI-Assistenten in der Softwareentwicklung formulieren
- Kontext und Richtlinien für einen KI‑Assistenten bereitstellen
- MCP-Server erstellen und konfigurieren, um die Funktionen der Gemini CLI zu erweitern
- Go-Anwendung containerisieren und in Google Cloud Run bereitstellen
Voraussetzungen
Dieser Workshop kann vollständig in Google Cloud Shell ausgeführt werden. Dort sind alle erforderlichen Abhängigkeiten (gcloud CLI, Go, Docker, Gemini CLI) vorinstalliert.
Wenn Sie lieber auf Ihrem eigenen Computer arbeiten möchten, benötigen Sie Folgendes:
- Node.js 20 oder höher
- Ein Google Cloud-Projekt mit aktivierter Abrechnung
- Das Google Cloud SDK (gcloud CLI) ist installiert und initialisiert.
- Go 1.24 oder höher ist auf Ihrem System installiert.
- Docker ist auf Ihrem System installiert.
Wichtige Technologien
Weitere Informationen zu den Technologien, die wir verwenden werden:
- Gemini CLI: Die KI-basierte Befehlszeile, die wir erweitern werden
- Model Context Protocol (MCP): Das Open-Source-Protokoll, mit dem die Gemini-Befehlszeile mit unserem benutzerdefinierten Tool kommunizieren kann
- Go SDK for MCP: Die Go-Bibliothek, die wir zum Implementieren unseres MCP-Servers verwenden
Tipps für ein erfolgreiches Codelab
Die Arbeit mit einem KI-Assistenten ist eine neue Art der Softwareentwicklung. Hier sind einige Tipps für eine reibungslose und erfolgreiche Nutzung:
- Scheuen Sie sich nicht, die ESC-Taste zu drücken. Die KI schlägt manchmal Aktionen oder Code vor, mit denen Sie nicht einverstanden sind. Mit der ESC-Taste können Sie die vorgeschlagene Aktion abbrechen und einen neuen Prompt eingeben, um die KI in die richtige Richtung zu lenken. Sie sind der Pilot.
- Nutzer zum Verwenden von Tools anregen: Wenn die KI den Eindruck macht, dass sie sich verirrt hat oder Informationen erfindet, fordern Sie sie auf, die verfügbaren Tools zu verwenden. Prompts wie „Kannst du das mit der Google Suche überprüfen?“ oder „Verwende das Tool ‚read_file‘, um den aktuellen Code zu verstehen, bevor du Änderungen vornimmst“ können sehr effektiv sein.
- Manuelle Änderungen vermeiden: Lassen Sie die KI die ganze Arbeit erledigen. Das ist die Kernkompetenz, die Sie üben. Wenn Sie jedoch eine manuelle Änderung vornehmen müssen, informieren Sie die KI danach darüber. Ein Prompt wie „Ich habe die Datei README.md manuell aktualisiert. Wenn Sie „Bitte lesen Sie es noch einmal, um Ihr Wissen aufzufrischen“ eingeben, bleibt die KI auf dem neuesten Stand Ihres Projekts.
- Haben Sie es mit Aus- und Einschalten versucht? In seltenen Fällen kann es vorkommen, dass die KI einen bestimmten Pfad erzwingt, obwohl Sie einen anderen Befehl gegeben haben. Das kann an einem Kontextverlust liegen. In diesem Fall können Sie den Gemini CLI-Befehl „/compress“ verwenden, um das Kontextrauschen zu reduzieren. In extremen Fällen können Sie den Befehl „/clear“ verwenden, um den gesamten Sitzungsverlauf zu löschen.
2. Umgebung einrichten
Einrichtung der Umgebung im eigenen Tempo
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eins erstellen.



- Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird. Sie können sie jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich (kann nach dem Festlegen nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (in der Regel als
PROJECT_IDangegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie es mit einem eigenen Namen versuchen und sehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen. - Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs zu verwenden. Die Durchführung dieses Codelabs kostet wenig oder gar nichts. Wenn Sie Ressourcen herunterfahren möchten, um Kosten zu vermeiden, die über diese Anleitung hinausgehen, können Sie die erstellten Ressourcen oder das Projekt löschen. Neue Google Cloud-Nutzer können am Programm Kostenlose Testversion mit einem Guthaben von 300$ teilnehmen.
Cloud Shell starten
Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Google Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Klicken Sie in der Google Cloud Console in der Symbolleiste oben rechts auf das Cloud Shell-Symbol:

Die Bereitstellung und Verbindung mit der Umgebung sollte nur wenige Augenblicke dauern. Anschließend sehen Sie in etwa Folgendes:

Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Alle Aufgaben in diesem Codelab können in einem Browser ausgeführt werden. Sie müssen nichts installieren.
3. Erste Schritte mit der Gemini-Befehlszeile
In diesem Abschnitt erfahren Sie mehr über die Gemini CLI, einschließlich der Installation und Konfiguration für Ihre Umgebung.
Was ist die Gemini CLI?
Die Gemini CLI ist eine KI-basierte Befehlszeile, die Sie bei einer Vielzahl von Entwicklungsaufgaben unterstützen kann. Sie kann den Kontext Ihres Projekts verstehen, Fragen beantworten, Code generieren und externe Tools verwenden, um ihre Funktionen zu erweitern.
Installation
Installieren Sie die Gemini CLI global mit npm.
npm install -g @google/gemini-cli
Mit dem folgenden Befehl können Sie prüfen, ob die CLI installiert ist:
gemini --version
Konfiguration
Das Verhalten der Gemini CLI wird durch Konfigurationsdateien und Umgebungsvariablen gesteuert. Es gibt zwei wichtige Dateien:
GEMINI.md: Diese Datei enthält Richtlinien und Kontext in natürlicher Sprache für die KI. Die CLI liest diese Datei, um die Codierungsstandards und ‑konventionen Ihres Projekts zu verstehen..gemini/settings.json: Diese Datei steuert die Konfiguration der Befehlszeile, einschließlich der Verbindung zu externen Tools. Wir verwenden diese Datei, um die CLI so zu konfigurieren, dass der MCP-Server verwendet wird, den wir in diesem Lab erstellen.
Wir richten zuerst die Umgebung ein und erstellen dann die Datei GEMINI.md. Die Datei settings.json wird in einem späteren Schritt konfiguriert.
- Erstellen und initialisieren Sie ein Projektverzeichnis:
mkdir godoctor
cd godoctor
go mod init godoctor
- Authentifizieren Sie sich mit den Standardanmeldedaten für Anwendungen von Google Cloud:
Wir müssen uns in einem Konto anmelden, das Zugriff auf das GCP-Projekt hat, das Sie für dieses Codelab verwenden möchten:
- Prüfen Sie, ob das Google Cloud SDK installiert und initialisiert ist.
- Führen Sie den folgenden Befehl aus, um Standardanmeldedaten für Anwendungen einzurichten:
gcloud auth application-default login
4. Entwicklungsrichtlinien
Damit der KI-Assistent hochwertigen, idiomatischen Go-Code generiert, ist es wichtig, ihm klare Richtlinien zu geben. Dies erfolgt in der Datei GEMINI.md.
Ziel: Erstellen Sie eine GEMINI.md-Datei, die als Regelsatz für den KI-Assistenten während dieses Projekts dient.
Aufgabe: Erstellen Sie im Stammverzeichnis Ihres godoctor-Verzeichnisses eine Datei mit dem Namen GEMINI.md und fügen Sie den folgenden Inhalt ein.
# Go Development Guidelines
All code contributed to this project must adhere to the following principles.
### 1. Formatting
All Go code **must** be formatted with `gofmt` before being submitted.
### 2. Naming Conventions
- **Packages:** Use short, concise, all-lowercase names.
- **Variables, Functions, and Methods:** Use `camelCase` for unexported identifiers and `PascalCase` for exported identifiers.
- **Interfaces:** Name interfaces for what they do (e.g., `io.Reader`), not with a prefix like `I`.
### 3. Error Handling
- Errors are values. Do not discard them.
- Handle errors explicitly using the `if err != nil` pattern.
- Provide context to errors using `fmt.Errorf("context: %w", err)`.
### 4. Simplicity and Clarity
- "Clear is better than clever." Write code that is easy to understand.
- Avoid unnecessary complexity and abstractions.
- Prefer returning concrete types, not interfaces.
### 5. Documentation
- All exported identifiers (`PascalCase`) **must** have a doc comment.
- Comments should explain the *why*, not the *what*.
# Agent Guidelines
- **Reading URLs:** ALWAYS read URLs provided by the user. They are not optional.
Ihre Entwicklungsumgebung ist jetzt vollständig eingerichtet.
5. Der erste Build: Ein godoc-Server
Ihr erstes Ziel ist es, die erste Version des godoctor-Servers zu erstellen. Diese Version sollte eine minimale, produktionsreife Anwendung sein, die ein einzelnes Tool namens godoc enthält, mit dem die Go-Dokumentation aufgerufen werden kann.
Ziel: Erstellen eines produktionsreifen MCP-Servers, der den Befehl „go doc“ verfügbar macht, damit ein LLM die Go-Dokumentation abfragen kann.
Führen Sie den Gemini CLI-Befehl in der Shell aus:
gemini
Wenn Sie die CLI zum ersten Mal ausführen, werden Sie aufgefordert, einen Authentifizierungsmodus und ein Design auszuwählen. Wählen Sie für den Authentifizierungsmodus „Mit Google anmelden“ aus, um sich mit einem privaten Google-Konto anzumelden und vom großzügigen kostenlosen Kontingent der Gemini CLI zu profitieren. Sie sollten eine Option zum Auswählen des Authentifizierungsmodus sehen, die in etwa so aussieht:

Wenn Sie Ihre Auswahl ändern möchten, können Sie /auth eingeben und die Eingabetaste drücken, um dieses Menü wieder zu öffnen.
Als Nächstes werden Sie aufgefordert, ein Thema auszuwählen:

Ähnlich wie bei /auth können Sie das Thema später auch mit dem Befehl /theme ändern.
Nachdem Sie die Authentifizierungsmethode und Ihr bevorzugtes Design ausgewählt haben, werden Sie zur Eingabeaufforderung weitergeleitet. Hier können Sie Ihre Befehle eingeben, z. B.:
Write a hello world application in Go.
Die CLI verwendet eine Kombination aus eigener Schlussfolgerung (über ein Gemini-Modell wie Gemini Flash oder Gemini Pro) und Tools, um die Aufgaben auszuführen. Dazu werden Tools verwendet, wenn eine Interaktion mit dem Dateisystem oder externen Diensten wie APIs oder Datenbanken erforderlich ist. Beispiele für die standardmäßig verfügbaren oder „internen“ Tools sind read_file, write_file, web_fetch und google_search. Der MCP-Server, den wir erstellen, wird auch zu einem Tool, das für die CLI verfügbar ist.
Wenn ein Tool zum ersten Mal ausgeführt wird, werden Sie um Ihre Erlaubnis gebeten. Sie können der App eine einmalige Berechtigung oder eine pauschale Genehmigung für den Rest der Sitzung erteilen oder die Anfrage ablehnen. Wenn es sich um einen Dateibearbeitungsvorgang handelt, finden Sie auch die Option, die Datei mit einem externen Editor zu bearbeiten, falls Sie einige Anpassungen vornehmen möchten. Hier sehen Sie beispielsweise die Ausgabe des oben genannten Prompts zum Erstellen eines „Hello World“-Programms:

Neben Prompts können Sie auch Slash-Befehle verwenden. Wenn Sie „/“ eingeben, werden Ihnen in der CLI automatisch die Optionen für die automatische Vervollständigung angezeigt. Sie können den vollständigen Befehl eingeben oder eine der Optionen auswählen. Die oben erwähnten Befehle /auth und /theme sind einige Beispiele dafür.

Sobald Sie mit der Benutzeroberfläche vertraut sind, können Sie mit der Hauptaufgabe dieses Abschnitts beginnen: Sie bitten die CLI, den MCP-Server für Sie zu schreiben.
Hello World-MCP-Server erstellen
Eine der besten Möglichkeiten, um sicherzustellen, dass das Modell Dinge konsistenter erstellt, besteht darin, komplexe Aufgaben in inkrementelle Schritte zu unterteilen. Das Modell kann zwar auch komplexe Aufgaben allein lösen, aber ohne die richtige Einrichtung dauert es lange, bis die richtige Implementierung gefunden wird.
Um einen einheitlicheren Ansatz zu verfolgen, weisen wir ihn zuerst an, einen „Hello World“-MCP-Server zu erstellen, bevor wir die gewünschte Funktion (Go-Dokumentation lesen) implementieren.
Hier ein Beispiel für einen Prompt:
Your task is to create a Model Context Protocol (MCP) server to expose a "hello world" tool. For the MCP implementation, you should use the official Go SDK for MCP and use the stdio transport.
Read these references to gather information about the technology and project structure before writing any code:
- https://github.com/modelcontextprotocol/go-sdk/blob/main/README.md
- https://modelcontextprotocol.io/specification/2025-06-18/basic/lifecycle
- https://go.dev/doc/modules/layout
To test the server, use shell commands like these:
(
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18"}}';
echo '{"jsonrpc":"2.0","method":"notifications/initialized","params":{}}';
echo '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}';
) | ./bin/godoctor
Der Prompt oben besteht aus drei Hauptsegmenten:
- Die Problemspezifikation, einschließlich dessen, was wir erstellen möchten, und der Einschränkungen (z.B. das offizielle SDK anstelle eines beliebigen SDK verwenden)
- Referenzdokumentation für das Modell, damit es die Anfrage besser einordnen kann
- Ein Testverfahren, das als Akzeptanzkriterien für die Aufgabe dient
Mit diesen drei Komponenten kann das Modell die gewünschten Ergebnisse konsistenter erzielen.
Implementierung des Go-Dokumentationstools
Sobald Sie eine funktionierende Implementierung haben, können wir das eigentliche „go doc“-Tool implementieren:
Add a new tool to our MCP server called "godoc" that invokes the "go doc" shell command. The tool will take a mandatory "package" argument and an optional "symbol" argument.
Read the reference for the go doc command to understand its API: https://pkg.go.dev/golang.org/x/tools/cmd/godoc
Test it by executing the call with:
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name": "godoc", "arguments": {"package": "fmt"} } }'
| ./bin/godoctor
Test it using both a standard library package and an external package like "github.com/modelcontextprotocol/go-sdk/mcp", both with and without symbols.
Sie können diesen Prompt gerne ausprobieren oder einen eigenen erstellen.
Eine hilfreiche Befehlszeile
Sobald Sie sich für eine gute Implementierung entschieden haben, können Sie das Modell anweisen, eine godoctor-CLI mit einem MCP-Client zu erstellen. Dadurch wird das Testen von Funktionen vereinfacht, da JSON-RPC-Aufrufe nicht mehr manuell erstellt werden müssen.
Beispiel für einen Prompt:
Now create a godoctor-cli component that will call the MCP server using command transport. This CLI will expose all tools using subcommands and allow us to test the MCP server implementation without needing to build the JSON-RPC calls manually.
Use the reference implementation at https://github.com/modelcontextprotocol/go-sdk/blob/main/README.md to build the client.
Test it by calling from the command line:
- the hello_world tool
- the godoc tool with a local package
- the godoc tool with a local package and symbol
- the godoc tool with an external package
- the godoc tool with an external package and symbol
Nachdem Sie nun ein funktionierendes Client- und Serverset haben, konfigurieren Sie im nächsten Abschnitt die Gemini CLI mit dem gerade erstellten MCP-Server, um die Vorteile für die nächste Programmieraufgabe zu nutzen.
Nützliche Ressourcen
Da MCP noch ein neues Konzept und das Go-SDK für MCP eine neue Bibliothek ist, kann es in diesem Schritt lange dauern, bis Gemini die richtige Implementierung findet. Damit das Modell die richtige Lösung findet, können Sie ihm die folgenden Referenzen geben:
- Sie können dem Modell den folgenden Prompt geben, damit es die SDK API konsistenter erkennt: „use the go doc shell command to discover the api for the go-sdk library“
- Wenn das Modell versucht, den Quellcode des SDK mit dem Tool
read_filezu prüfen, schlägt dies fehl, da Gemini CLI keine Dateien außerhalb des aktuellen Bereichs lesen kann. Sie können dasrun_shell_command-Tool anweisen, stattdessen die Befehlecatundlszu verwenden. - Wenn das Modell Probleme beim Debuggen der Anwendung hat, weisen Sie es an, eine ausführlichere Protokollierung hinzuzufügen und die Kontextinformationen in Fehlermeldungen zu verbessern.
- Wenn alles andere fehlschlägt, können Sie eine Referenzimplementierung verwenden: https://github.com/danicat/godoctor.
6. godoctor als MCP-Server für die Gemini CLI konfigurieren
Nachdem der KI-Assistent den Code für Client und Server generiert hat, können Sie ihn anweisen, einige manuelle Tests auszuführen. Beispiel:
retrieve the documentation for the package net/http
Testen Sie es auch mit einer externen Abhängigkeit (nicht in der Standardbibliothek):
retrieve the documentation for the github.com/modelcontextprotocol/go-sdk/mcp package
Wenn Sie mit den Ergebnissen zufrieden sind, weisen Sie das Modell an, eine README.md-Datei mit einer Anleitung zur Verwendung und Entwicklung dieses Projekts zu erstellen.
Now write a detailed README.md file explaining both from a user and a developer perspective how to use and to build this project.
Jetzt konfigurieren wir den Server so, dass die Gemini CLI ihn in der nächsten Entwicklungsphase verwenden kann.
- Bitten Sie die CLI, GEMINI.md so zu aktualisieren, dass
godocals bevorzugte Methode zum Lesen der Dokumentation verwendet wird:
update the GEMINI.md file to use the godoc tool to retrieve documentation about Go packages or symbols. Always prefer to use godoc over WebFetch and GoogleSearch, and only use those when godoc doesn't give a clear answer.
- Jetzt müssen wir die Gemini CLI neu starten, um sie zu konfigurieren. Zuerst speichern wir die Chatsitzung, damit Sie nach dem Neustart an der Stelle weitermachen können, an der Sie aufgehört haben.
/chat save workshop001
- Beenden Sie die CLI, indem Sie zweimal Strg + D drücken oder den Befehl
/quiteingeben. - Kompilieren Sie die Server-Binärdatei: Erstellen Sie ein
bin-Verzeichnis und kompilieren Sie den godoctor-Server darin.
mkdir -p bin
go build -o ./bin/godoctor ./cmd/godoctor # adjust paths as needed
- Konfigurieren Sie die Gemini CLI für das lokale Tool: Erstellen Sie eine
.gemini/settings.json-Datei im Stammverzeichnis Ihres Projekts und fügen Sie einenmcpServers-Abschnitt hinzu, um der Gemini CLI mitzuteilen, wie Ihr kompilierter Server ausgeführt werden soll.
mkdir -p .gemini
touch .gemini/settings.json
- Fügen Sie der neuen Datei jetzt mit einem Befehlszeilen-Editor wie
vimodernanoden folgenden Inhalt hinzu:
{
"mcpServers": {
"godoctor": {
"command": "./bin/godoctor"
}
}
}
- Starten Sie jetzt die Gemini CLI und stellen Sie die Chat-Sitzung wieder her:
/chat resume workshop001
- Sie sollten sehen können, dass das Tool geladen wird, wenn Sie den Befehl
/mcpeingeben. Sie können auch die vollständige Beschreibung der Tools mit/mcp descaufrufen:

- Testen Sie die Integration, indem Sie Gemini CLI mit einem Prompt wie „Get the documentation for net/http“ (Rufe die Dokumentation für net/http ab) auffordern, Ihr Tool zu verwenden.
Auf dem Bildschirm sollte Folgendes zu sehen sein:

Wenn das Tool korrekt funktioniert, sollten Sie die Dokumentation sehen, die über den Tool-Aufruf abgerufen wurde:

Herzlichen Glückwunsch! Sie haben ein MCP-Tool erstellt. Aber das ist noch nicht alles. Wir können die Funktion noch etwas nützlicher machen.
7. KI-basierte Codeüberprüfung hinzufügen
Fügen wir eine anspruchsvollere, KI-basierte Funktion hinzu: einen Code-Reviewer, der die Gemini API verwendet.
Ziel: Dem bestehenden Projekt soll ein neues Tool namens „code_review“ hinzugefügt werden. Dieses Tool verwendet die Gemini API, um Go-Code zu analysieren und Feedback zu geben.
Beispielprompt:
I want to add a new tool to my project called code_review. This tool should use the Gemini API on Vertex AI (with gemini-2.5-flash) to analyze Go code and provide a list of improvements in json format according to the best practices accepted by the Go community.
The tool should take the Go code content and an optional hint as input. The hint will be used to provide additional guidance for the AI reviewer, like "focus on security" or "help me simplify this code". Please update the server to include this new tool and modify the CLI client to add a review command to use it.
Use this SDK to call Gemini: https://github.com/googleapis/go-genai
Nützliche Tipps
Sobald das Modell mit der Bearbeitung beginnt, wird möglicherweise automatisch das godoc-Tool aufgerufen, um die Dokumentation für das genai-Paket aufzurufen. Wenn nicht, können Sie den Vorgang jederzeit mit der Esc-Taste unterbrechen und das Modell daran erinnern, dass es jetzt das Tool godoc zur Verfügung hat.
Code Reviewer testen
- Speichern Sie die Chatsitzung mit
/chat save workshop002und beenden Sie dann die CLI, indem Sie zweimal Strg+D drücken. - Das
code_review-Tool benötigt Zugriff auf Vertex AI. Daher müssen wir zuerst die API aktivieren:
gcloud services enable aiplatform.googleapis.com
- Erstellen Sie eine
.env-Datei mit folgendem Inhalt. Vergessen Sie nicht, die Variable GOOGLE_CLOUD_PROJECT durch die tatsächliche Projekt-ID des Projekts zu ersetzen, das Sie am Anfang dieses Labs erstellt haben, und GOOGLE_CLOUD_LOCATION durch den gewünschten Standort (z. B. „us-central1“).
export GOOGLE_GENAI_USE_VERTEXAI=true
export GOOGLE_CLOUD_PROJECT='your-project-id'
export GOOGLE_CLOUD_LOCATION='your-location'
- Laden Sie die .env-Datei mit dem Befehl „source“:
source .env
- Kompilieren Sie den Server mit der neuen Tooldefinition neu:
go build -o ./bin/godoctor ./cmd/godoctor
- Starten Sie die Gemini CLI noch einmal. Stellen Sie die Chatsitzung mit
/chat resume workshop002wieder her. - Prüfen Sie mit dem Befehl
/mcp, ob das Tool aktiviert ist. Auf dem Bildschirm sollte Folgendes zu sehen sein:

- Sehen wir uns nun das Tool
code-reviewan, indem wir eine der Quelldateien des Tools überprüfen:
„Verwende das godoctor-Tool, um die Datei cmd/godoctor/main.go zu prüfen.“
You should see something like this:

Nachdem das Tool zur Codeüberprüfung funktioniert, können Sie dem Modell vorschlagen, einige der gefundenen Verbesserungen anzuwenden. So erhalten Sie einen vollständigen Workflow, der sich selbst verbessert.
Sie haben jetzt bestätigt, dass das code-review-Tool funktioniert. Im nächsten Abschnitt stellen Sie die Anwendung in der Cloud bereit. Speichern Sie Ihre aktuelle Sitzung mit /chat save workshop003 und beenden Sie die Befehlszeile.
8. Server für die Cloud vorbereiten
Der MCP-Server, den wir bisher entwickelt haben, wird nur auf dem lokalen Computer ausgeführt. Das ist in Ordnung, wenn Sie Tools für den eigenen Gebrauch entwickeln. In Unternehmensumgebungen müssen wir jedoch häufig Tools für die breitere Nutzung durch Hunderte oder sogar Tausende von Entwicklern bereitstellen.
Um unseren MCP-Server zu skalieren, müssen wir ihn von einem Server, der nur Standard-I/O unterstützt, in einen Server umwandeln, der HTTP unterstützt, und ihn an einem Ort bereitstellen, an dem er für verschiedene Entwickler zugänglich ist. Für dieses Ziel verwenden wir einen in der MCP-Spezifikation definierten Transportmodus als streamfähiges HTTP und Cloud Run als Bereitstellungsziel.
Ziel: Den godoctor-Server so umgestalten, dass er den streamfähigen HTTP-Transport verwendet.
Beispielprompt:
The godoctor server is currently using the stdio transport. I want to deploy it to Cloud Run, so I need to refactor it to use the streamable HTTP transport instead. Please modify the server to comply with the streamable HTTP specification.
Nützliche Ressourcen
- Wenn das Modell Schwierigkeiten bei der Implementierung des streamfähigen HTTP-Transports hat, können Sie ihm diese Referenz geben: https://github.com/modelcontextprotocol/go-sdk/blob/main/design/design.md.
- Das Modell versucht möglicherweise, stattdessen HTTP+SSE zu verwenden, was eingestellt wurde. Wenn Sie sehen, dass es diesen Pfad durchläuft, lenken Sie es zurück in Richtung streamfähiges HTTP.
Server mit HTTP testen
Bitten Sie das Modell, den godoctor-Client so zu aktualisieren, dass er auch streamfähiges HTTP verwendet, damit Sie testen können, ob er weiterhin funktioniert.
Now update the client to use streamable HTTP and run a test by retrieving documentation from one package
Optional:Wenn Sie die Gemini CLI so konfigurieren möchten, dass der Server über HTTP verwendet wird:
- Sitzung speichern und CLI beenden
- Bearbeiten Sie die Datei
.gemini/settings.jsonund ändern Sie die Konfiguration so, dass sie auf Ihren lokal ausgeführten Server verweist.
"mcpServers": {
"godoctor": {
"httpUrl": "http://localhost:8080"
}
}
- Führen Sie den refaktorisierten Server lokal aus:
go run ./cmd/godoctor/main.go
- Starten Sie in einem neuen Terminal (da der obige Vorgang blockiert) Gemini CLI und geben Sie einen Prompt ein, um die Verbindung zu testen, z.B.: „Verwende das godoctor-Tool, um die Dokumentation für fmt.Println abzurufen.“
- Beenden Sie den Server mit Strg+C, wenn Sie mit dem Testen fertig sind.
9. Anwendung mit Docker containerisieren
Da unser Server jetzt das richtige Transportprotokoll verwendet, können wir ihn für die Bereitstellung in einen Container packen.
Ziel: Ein Dockerfile erstellen, um den godoctor-Server in einem portablen, produktionsreifen Container-Image zu verpacken.
Beispielprompt:
Please create a multi-stage Dockerfile that compiles the Go binary and copies it into a minimal golang image like golang:1.24-alpine.
Docker-Image testen
Nachdem Dockerfile erstellt wurde, erstellen Sie das Image und führen Sie es aus, um sicherzustellen, dass es korrekt funktioniert. Sie können Gemini anweisen, das für Sie zu erledigen:
build the image and test the connectivity to the server using the godoctor client
Optional:So führen Sie den Test manuell durch:
- Erstellen Sie den Container:
docker build -t godoctor:latest .
- Führen Sie den Container lokal aus:
docker run -p 8080:8080 -e PORT=8080 godoctor:latest
- Laufenden Container testen: Starten Sie in einem anderen Terminal die Gemini CLI und bitten Sie sie, die Dokumentation abzurufen.
- Beenden Sie den Server mit Strg+C, wenn Sie mit dem Testen fertig sind.
10. In Cloud Run bereitstellen
Jetzt können wir unseren Container in der Cloud bereitstellen.
Ziel: Den containerisierten godoctor-Server in Google Cloud Run bereitstellen.
Prompt-Anleitung: Bitten Sie Ihren KI‑Assistenten, die gcloud-Befehle zum Bereitstellen Ihres Containers bereitzustellen.
Beispielprompt:
Now please deploy this image to Cloud Run and return me an URL I can use to call the MCP tool. Configure Cloud Run to use the environment variables in the .env file.
Nachdem die Bereitstellung abgeschlossen ist, konfigurieren wir die Gemini CLI so, dass das gerade bereitgestellte Tool verwendet wird.
Aktualisieren Sie Ihre .gemini/settings.json-Datei, um die MCP-Toolkonfiguration so zu ändern, dass sie auf Ihren bereitgestellten Dienst verweist. Alternativ können Sie Gemini CLI darum bitten:
now update the .gemini/settings.json file to use this URL for the godoctor server
Der endgültige mcpServers-Abschnitt sollte so aussehen. Denken Sie daran, den Platzhalter durch die tatsächliche URL Ihrer Cloud Run-App zu ersetzen:
"mcpServers": {
"godoctor": {
"httpUrl": "https://<your-cloud-run-id>.us-central1.run.app"
}
}
Cloud Run-Bereitstellung testen
Jetzt können Sie den endgültigen End-to-End-Test durchführen.
Starten Sie die Gemini CLI ein letztes Mal neu (mit /chat save und /chat resume, um den Kontext beizubehalten). Die CLI sollte jetzt den Remote-MCP-Server aufrufen können. Fragen Sie nach der Dokumentation für beliebige Pakete.
Sie können das Code-Review-Tool auch testen:
Use the godoctor tool to review the cmd/godoctor/main.go file
Bereinigen
Denken Sie daran, die Umgebung nach Abschluss der Tests zu bereinigen. Sie können Gemini anweisen, entweder Ihr Projekt zu löschen oder nur die Cloud Run-Bereitstellung zu entfernen. Beispiel für einen Prompt:
I'm done with my tests on the CloudRun server, please delete this deployment for me and revert my .gemini/settings.json to use the local version.
11. Glückwunsch!
Sie haben einen KI-Assistenten erfolgreich dabei unterstützt, ein anspruchsvolles KI-basiertes Tool zu erstellen, zu containerisieren und bereitzustellen. Vor allem aber haben Sie die wichtige Fähigkeit der modernen Softwareentwicklung geübt: Anforderungen in effektive Prompts zu übersetzen. Sie haben die Gemini CLI erfolgreich mit einem benutzerdefinierten MCP-Tool erweitert und so einen leistungsstärkeren und spezialisierten Go-Entwicklungsassistenten geschaffen.