1. Einführung
In diesem Codelab erfahren Sie, wie Sie einen MCP-Server (Model Context Protocol) erstellen und bereitstellen, um die Funktionen der Gemini CLI zu erweitern. Sie entwickeln godoctor, einen Go-basierten Server, der benutzerdefinierte Tools für die Go-Entwicklung bereitstellt und die Gemini CLI von einem allgemeinen Programmierassistenten in einen spezialisierten Go-Entwicklungsexperten verwandelt.
In diesem Codelab wird ein „promptgesteuerter“ Ansatz verwendet. Sie sind der technische Leiter und stellen Ihrem KI‑Assistenten (der Gemini-Befehlszeile selbst) 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 die Gemini-Befehlszeile erkennen und verwenden kann. So können Sie ihr neue Fähigkeiten beibringen.
Lerninhalte
- Gemini-Befehlszeile installieren und konfigurieren
- So formulieren Sie effektive Prompts, um einen KI-Assistenten bei der Softwareentwicklung zu unterstützen
- Kontext und Richtlinien für einen KI‑Assistenten bereitstellen
- Einen MCP-Server erstellen und konfigurieren, um die Funktionen der Gemini-Befehlszeile zu erweitern
- Go-Anwendung containerisieren und in Google Cloud Run bereitstellen
Voraussetzungen
Dieser Workshop kann vollständig in der Google Cloud Shell ausgeführt werden, in der alle erforderlichen Abhängigkeiten (gcloud CLI, Go, Docker, Gemini CLI) vorinstalliert sind.
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, finden Sie hier:
- Gemini-Befehlszeile: 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 Zusammenarbeit 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 (manchmal auch „Kontext-Rot“ genannt). 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 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_ID
angegeben). 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 dauert nur einen Moment. 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-Befehlszeile, 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. Es kann den Kontext Ihres Projekts verstehen, Fragen beantworten, Code generieren und externe Tools verwenden, um seine 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 CLI, 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 Sie einen produktionsbereiten MCP-Server, 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 Befehlszeile verwendet eine Kombination aus eigener Argumentation (über ein Gemini-Modell wie Gemini Flash oder Gemini Pro) und Tools, um die Aufgaben auszuführen. Es verwendet Tools, wenn es mit dem Dateisystem oder externen Diensten wie APIs, Datenbanken usw. interagieren muss. 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 über die Befehlszeile 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 weiter 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: die CLI bitten, 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 möglicherweise eine komplexe Aufgabe 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 mit diesem Prompt experimentieren 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 die 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“ (verwende den Shell-Befehl „go doc“, um die API für die go-sdk-Bibliothek zu ermitteln).
- Wenn das Modell versucht, den Quellcode des SDK mit dem Tool
read_file
zu prüfen, schlägt dies fehl, da die Gemini CLI keine Dateien außerhalb des aktuellen Bereichs lesen kann. Sie können dasrun_shell_command
-Tool verwenden, um das Modell anzuweisen, stattdessen die Befehlecat
undls
zu 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-Befehlszeile 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 go-sdk 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
godoc
als 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-Befehlszeile 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.
- Kompilieren Sie die Server-Binärdatei: Erstellen Sie ein Verzeichnis
bin
und kompilieren Sie den godoctor-Server darin.
mkdir -p bin
go build -o ./bin/godoctor ./cmd/godoctor # adjust paths as needed
- Gemini CLI für das lokale Tool konfigurieren: Erstellen Sie im Stammverzeichnis Ihres Projekts eine
.gemini/settings.json
-Datei und fügen Sie einenmcpServers
-Abschnitt hinzu, um der Gemini CLI mitzuteilen, wie der kompilierte Server ausgeführt werden soll.
mkdir -p .gemini
touch .gemini/settings.json
- Fügen Sie der neuen Datei jetzt den folgenden Inhalt mit einem Befehlszeilen-Editor wie
vim
odernano
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 wurde, indem Sie Strg + T drücken:
- Testen Sie die Integration, indem Sie die 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 richtig 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 vorhandenen 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.
Beispiel für einen Prompt:
I want to add a new tool to my project called code_review. This tool should use the Gemini API 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 zu durchsuchen. 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
- Wir müssen die Gemini-Befehlszeile neu starten, um den MCP-Server zu erstellen und neu zu laden. Speichern Sie die Chatsitzung mit
/chat save workshop002
und beenden Sie dann die CLI, indem Sie zweimal Strg + D drücken. - Für das Tool
code_review
ist ein API-Schlüssel erforderlich, da wir ein Gemini-Modell aufrufen, um die Rezensionen für uns zu erstellen. Sie können einen API-Schlüssel mit Google AI Studio generieren. - Konfigurieren Sie die Umgebungsvariable
GEMINI_API_KEY
mit dem API-Schlüssel, der im vorherigen Schritt generiert wurde:
export GEMINI_API_KEY="YOUR_API_KEY"
- Server neu kompilieren: Nachdem Sie das neue Tool hinzugefügt haben, müssen Sie die Server-Binärdatei neu kompilieren, damit die Änderungen übernommen werden.
go build -o ./bin/godoctor ./cmd/godoctor
- Starten Sie die Gemini CLI noch einmal. Stellen Sie die Chatsitzung mit
/chat resume workshop002
wieder her. - Wichtig: Achten Sie darauf, dass Sie mit Ihrem privaten Gmail-Konto authentifiziert sind, damit die Gemini CLI selbst nicht Ihr Abrechnungskonto verwendet. Verwenden Sie dazu den Befehl
/auth
:
- Prüfen Sie, ob das Tool aktiviert ist, indem Sie Strg + T drücken. Auf dem Bildschirm sollte Folgendes zu sehen sein:
- Sehen wir uns nun das Tool
code-review
an, indem wir eine der Quelldateien des Tools prü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.
So löschen Sie den GEMINI_API_KEY:
- Aktuelle Sitzung mit
/chat save workshop003
speichern und die CLI beenden - Sichern Sie den API-Schlüssel an einem sicheren Ort:
export | grep GEMINI_API_KEY > env.bkp
- Deaktivieren Sie
GEMINI_API_KEY
:
export GEMINI_API_KEY=
- Starten Sie die CLI neu und laden Sie die Sitzung mit
/chat resume workshop003
. - Bitten Sie das Modell, die Verbesserungen aus der Codeüberprüfung anzuwenden.
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 der streamfähige HTTP-Transport verwendet wird.
Beispiel für einen Prompt:
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.json
und ä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) die 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.
Beispiel für einen Prompt:
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 richtig 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 fordern Sie sie auf, 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.
Beispiel für einen Prompt:
Now please deploy this image to Cloud Run and return me an URL I can use to call the MCP tool. Deploy it to us-central1 and use the project currently configured in the environment.
Sobald das Deployment abgeschlossen ist, konfigurieren wir die Gemini CLI so, dass das gerade bereitgestellte Tool verwendet wird.
Bitten Sie Gemini, Ihre .gemini/settings.json
-Datei zu aktualisieren, um die MCP-Toolkonfiguration so zu ändern, dass sie auf Ihren bereitgestellten Dienst verweist.
now update the .gemini/settings.json file to use this URL for the godoctor server
Der finale 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 sind Sie bereit für den finalen End-to-End-Test.
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.
Denken Sie daran, dass der Dienst für die Verwendung des Code-Review-Tools die GEMINI_API_KEY
benötigt. Sie können Gemini CLI bitten, die Funktion mit der richtigen Umgebung neu bereitzustellen:
update the cloud run environment to add a GEMINI_API_KEY and use the value in @env.bkp. Then update the .gemini/settings.json file with the correct service URL
Starten Sie die CLI neu und testen Sie sie mit einem Prompt:
Use the godoctor tool to review the cmd/godoctor/main.go file
Die Gemini CLI stellt jetzt eine Verbindung zu Ihrem bereitgestellten Cloud Run-Dienst her und führt die Codeüberprüfung aus.
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 Tool erweitert und so zu einem leistungsstärkeren und spezialisierten Go-Entwicklungsassistenten gemacht.