1. Wprowadzenie
Z tego przewodnika dowiesz się, jak utworzyć i wdrożyć serwer protokołu kontekstu modelu (MCP), aby rozszerzyć możliwości interfejsu wiersza poleceń Gemini. Utworzysz godoctor, serwer oparty na Go, który udostępnia niestandardowe narzędzia do programowania w Go, przekształcając interfejs wiersza poleceń Gemini z ogólnego asystenta programistycznego w specjalistycznego eksperta w zakresie programowania w Go.
W tym laboratorium używamy podejścia „opartego na promptach”. Będziesz pełnić rolę lidera technicznego, przekazując prompty asystentowi AI (samemu interfejsowi Gemini CLI). Twoim celem jest nauczenie się, jak przekształcać wymagania projektu w skuteczne prompty i pozwalać AI zajmować się szczegółami wdrożenia.
Podstawą tego projektu jest protokół kontekstu modelu (MCP). MCP to protokół open source, który standaryzuje sposób, w jaki duże modele językowe (LLM), takie jak Gemini, komunikują się z narzędziami i usługami zewnętrznymi. Działa on jako pomost, który umożliwia AI dostęp do informacji ze świata rzeczywistego i wykonywanie działań wykraczających poza jej wbudowaną wiedzę. Tworząc serwer MCP, tworzysz niestandardową wtyczkę, którą interfejs wiersza poleceń Gemini może wykrywać i używać, co pozwala mu zdobywać nowe umiejętności.
Czego się nauczysz
- Instalowanie i konfigurowanie interfejsu wiersza poleceń Gemini
- Jak formułować skuteczne prompty, aby kierować asystentem AI w procesie tworzenia oprogramowania
- Jak przekazywać asystentowi AI kontekst i wskazówki
- Jak utworzyć i skonfigurować serwer MCP, aby zwiększyć możliwości interfejsu Gemini CLI
- Konteneryzacja i wdrażanie aplikacji w Go w Google Cloud Run
Czego potrzebujesz
Te warsztaty można w całości przeprowadzić w Google Cloud Shell, które ma już zainstalowane wszystkie niezbędne zależności (interfejs wiersza poleceń gcloud, Go, Docker, interfejs wiersza poleceń Gemini).
Jeśli wolisz pracować na własnym komputerze, potrzebujesz:
- Node.js w wersji 20 lub nowszej
- projekt Google Cloud z włączonymi płatnościami;
- Zainstalowany i zainicjowany pakiet Google Cloud SDK (interfejs wiersza poleceń gcloud)
- Go w wersji 1.24 lub nowszej zainstalowany w systemie
- Docker zainstalowany w systemie
Kluczowe technologie
Więcej informacji o technologiach, z których będziemy korzystać, znajdziesz tutaj:
- Interfejs wiersza poleceń Gemini: interfejs wiersza poleceń oparty na AI, który będziemy rozszerzać.
- Protokół kontekstu modelu (MCP): protokół open source, który umożliwia interfejsowi Gemini CLI komunikowanie się z naszym niestandardowym narzędziem.
- Pakiet SDK Go dla MCP: biblioteka Go, której użyjemy do wdrożenia serwera MCP.
Wskazówki dotyczące skutecznego przeprowadzenia ćwiczeń w Codelabs
Praca z asystentem AI to nowy sposób tworzenia oprogramowania. Oto kilka wskazówek, które pomogą Ci sprawnie i skutecznie korzystać z tej funkcji:
- Nie bój się nacisnąć klawisza ESC. AI może czasami proponować działania lub kod, z którymi się nie zgadzasz. Naciśnij klawisz ESC, aby anulować proponowane działanie i wpisać nowy prompt, który naprowadzi model na właściwe tory. Ty jesteś pilotem.
- Zachęcaj do korzystania z narzędzi. Jeśli sztuczna inteligencja wydaje się zagubiona lub zmyśla informacje, zachęć ją do korzystania z dostępnych narzędzi. Prośby takie jak „Czy możesz użyć wyszukiwarki Google, aby to sprawdzić?” lub „Użyj narzędzia read_file, aby zrozumieć bieżący kod przed wprowadzeniem zmian” mogą być bardzo skuteczne.
- Odrzucaj zmiany wprowadzane ręcznie. Spróbuj zlecić AI wykonanie wszystkich zadań. To podstawowa umiejętność, którą ćwiczysz. Jeśli jednak musisz wprowadzić zmianę ręcznie, poinformuj o tym AI. Prompt taki jak „Ręcznie zaktualizowałem plik README.md. „Please read it again to refresh your knowledge” (Przeczytaj jeszcze raz, aby odświeżyć wiedzę) zapewni synchronizację AI z Twoim projektem.
- Czy próbowałeś/próbowałaś wyłączyć i włączyć urządzenie ponownie? Jeśli w rzadkich przypadkach AI próbuje wymusić określoną ścieżkę wbrew Twojemu poleceniu, może to być spowodowane pogorszeniem kontekstu (czasami nazywanym też „rozkładem kontekstu”). W takim przypadku możesz użyć polecenia interfejsu Gemini „/compress”, aby zmniejszyć szum kontekstowy, lub w ekstremalnych przypadkach użyć polecenia „/clear”, aby wyczyścić całą historię sesji.
2. Konfiguracja środowiska
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail lub Google Workspace, musisz je utworzyć.
- Nazwa projektu to wyświetlana nazwa dla uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Zawsze możesz ją zaktualizować.
- Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić po ustawieniu. Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się tym przejmować. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako
PROJECT_ID
). Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować inny losowy identyfikator. Możesz też spróbować własnej nazwy i sprawdzić, czy jest dostępna. Po tym kroku nie można go zmienić i pozostaje on taki przez cały czas trwania projektu. - Warto wiedzieć, że istnieje trzecia wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć rozliczenia w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Wykonanie tego laboratorium nie będzie kosztować dużo, a może nawet nic. Aby wyłączyć zasoby i uniknąć naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Uruchamianie Cloud Shell
Google Cloud można obsługiwać zdalnie z laptopa, ale w tym module praktycznym będziesz używać Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.
W konsoli Google Cloud kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:
Udostępnienie środowiska i połączenie się z nim może zająć tylko kilka chwil. Po zakończeniu powinno wyświetlić się coś takiego:
Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i uwierzytelniania. Wszystkie zadania w tym laboratorium możesz wykonać w przeglądarce. Nie musisz niczego instalować.
3. Pierwsze kroki z interfejsem wiersza poleceń Gemini
W tej sekcji dowiesz się więcej o interfejsie wiersza poleceń Gemini, w tym jak go zainstalować i skonfigurować w swoim środowisku.
Czym jest interfejs wiersza poleceń Gemini?
Interfejs wiersza poleceń Gemini to oparty na AI interfejs wiersza poleceń, który może Ci pomóc w wykonywaniu różnorodnych zadań programistycznych. Może zrozumieć kontekst projektu, odpowiadać na pytania, generować kod i korzystać z narzędzi zewnętrznych, aby rozszerzać swoje możliwości.
Instalacja
Zainstaluj interfejs wiersza poleceń Gemini globalnie za pomocą npm.
npm install -g @google/gemini-cli
Aby sprawdzić, czy wiersz poleceń jest zainstalowany, uruchom to polecenie:
gemini --version
Konfiguracja
Działanie interfejsu wiersza poleceń Gemini jest kontrolowane przez pliki konfiguracyjne i zmienne środowiskowe. Istnieją 2 główne pliki:
GEMINI.md
: ten plik zawiera wytyczne i kontekst w języku naturalnym dla AI. Interfejs wiersza poleceń odczytuje ten plik, aby poznać standardy i konwencje kodowania projektu..gemini/settings.json
: ten plik kontroluje konfigurację interfejsu wiersza poleceń, w tym sposób łączenia się z narzędziami zewnętrznymi. Użyjemy tego pliku, aby skonfigurować interfejs wiersza poleceń do korzystania z serwera MCP, który tworzymy w tym module.
Najpierw skonfigurujemy środowisko, a następnie utworzymy plik GEMINI.md
. Plik settings.json
zostanie skonfigurowany w późniejszym kroku.
- Utwórz i zainicjuj katalog projektu:
mkdir godoctor
cd godoctor
go mod init godoctor
- Uwierzytelnij się za pomocą domyślnego uwierzytelniania aplikacji Google Cloud:
Musisz zalogować się na konto, które ma dostęp do projektu GCP, którego będziesz używać w tym samouczku:
- Upewnij się, że masz zainstalowany i zainicjowany pakiet Google Cloud SDK.
- Aby skonfigurować domyślne dane logowania aplikacji, uruchom to polecenie:
gcloud auth application-default login
4. Wytyczne dotyczące programowania
Aby asystent AI generował wysokiej jakości, idiomatyczny kod Go, musisz przekazać mu jasne wytyczne. Odbywa się to w pliku GEMINI.md.
Cel: utworzenie pliku GEMINI.md, który będzie służyć jako zestaw reguł dla asystenta AI w tym projekcie.
Zadanie: w katalogu głównym katalogu godoctor utwórz plik o nazwie GEMINI.md i wklej do niego tę treść.
# 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.
Środowisko programistyczne jest już w pełni skonfigurowane.
5. Pierwsza kompilacja: serwer godoc
Pierwszym celem jest utworzenie początkowej wersji godoctor
serwera. Ta wersja powinna być minimalną aplikacją gotową do wdrożenia, która zawiera jedno narzędzie o nazwie godoc
umożliwiające wyszukiwanie dokumentacji Go.
Cel: utworzenie serwera MCP gotowego do użycia w środowisku produkcyjnym, który udostępnia polecenie go doc, umożliwiając LLM wysyłanie zapytań do dokumentacji Go.
Uruchom polecenie interfejsu wiersza poleceń Gemini w powłoce:
gemini
Przy pierwszym uruchomieniu interfejsu CLI pojawi się prośba o wybranie trybu uwierzytelniania i motywu. W przypadku trybu uwierzytelniania wybierz „Zaloguj się przez Google”, aby zalogować się za pomocą osobistego konta Google i korzystać z obszernych bezpłatnych zasobów interfejsu CLI Gemini. Powinna pojawić się opcja wyboru trybu uwierzytelniania podobna do tej:
Jeśli chcesz zmienić wybór, wpisz /auth
i naciśnij Enter, aby ponownie otworzyć to menu.
Następnie pojawi się prośba o wybranie motywu:
Podobnie jak w przypadku /auth
, możesz później zmienić motyw za pomocą polecenia /theme
.
Po wybraniu metody uwierzytelniania i preferowanego motywu przejdziesz do wiersza poleceń. Możesz tu wpisywać polecenia, na przykład:
Write a hello world application in Go.
Interfejs CLI wykorzystuje do wykonywania zadań własne wnioskowanie (za pomocą modelu Gemini, takiego jak Gemini Flash lub Gemini Pro) oraz narzędzia. Używa narzędzi, gdy musi wchodzić w interakcję z systemem plików lub usługami zewnętrznymi, takimi jak interfejsy API, bazy danych itp. Przykładami narzędzi dostępnych od razu, czyli „narzędzi wewnętrznych”, są read_file, write_file, web_fetch i google_search. Tworzony przez nas serwer MCP stanie się też narzędziem dostępnym w interfejsie CLI.
Gdy narzędzie zostanie uruchomione po raz pierwszy, pojawi się prośba o zgodę. Możesz udzielić jednorazowego pozwolenia, ogólnej zgody na resztę sesji lub odrzucić prośbę. Jeśli jest to operacja edycji pliku, znajdziesz też opcję edycji pliku za pomocą edytora zewnętrznego, na wypadek gdybyś chciał wprowadzić jakieś zmiany. Oto na przykład wynik powyższego prompta, który służy do utworzenia programu „Hello World”:
Oprócz promptów możesz też używać poleceń rozpoczynających się ukośnikiem. Jeśli wpiszesz „/”, interfejs CLI automatycznie wyświetli opcje autouzupełniania. Możesz wpisać całe polecenie lub wybrać je z opcji. Wspomniane wyżej polecenia /auth
i /theme
to tylko niektóre z nich.
Gdy zapoznasz się z interfejsem, możesz rozpocząć główne zadanie tej sekcji, czyli poprosić interfejs wiersza poleceń o napisanie serwera MCP.
Tworzenie serwera MCP Hello World
Jednym z najlepszych sposobów na zapewnienie większej spójności działania modelu jest podzielenie złożonych zadań na mniejsze etapy. Model może być w stanie samodzielnie wykonać złożone zadanie, ale bez odpowiedniej konfiguracji odkrycie właściwego sposobu jego realizacji zajmie mu dużo czasu.
Aby uzyskać bardziej spójne podejście, najpierw poprosimy go o utworzenie serwera MCP „Hello World”, a potem o wdrożenie funkcji, której potrzebujemy (odczytywanie dokumentacji Go).
Przykładowy 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
Powyższy prompt składa się z 3 głównych segmentów:
- Specyfikacja problemu, w tym opis tego, co chcemy zbudować, i ograniczenia (np.użycie oficjalnego pakietu SDK zamiast dowolnego pakietu SDK).
- Dokumentacja referencyjna modelu, która pomoże mu rozróżnić prośby
- procedurę testową, która stanowi kryteria akceptacji zadania;
Te 3 komponenty pomogą modelowi w bardziej spójnym osiąganiu pożądanych wyników.
Implementacja narzędzia Go Doc
Gdy będziesz mieć działającą implementację, możemy przejść do wdrożenia prawdziwego narzędzia „go doc”:
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.
Możesz eksperymentować z tym promptem lub spróbować wymyślić własny.
Przydatny interfejs wiersza poleceń
Gdy znajdziesz odpowiednie wdrożenie, możesz poprosić model o utworzenie interfejsu CLI godoctor za pomocą klienta MCP. Ułatwi to testowanie funkcji, ponieważ nie trzeba będzie ręcznie tworzyć wywołań JSON-RPC, jak to miało miejsce do tej pory.
Przykładowy 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
Teraz, gdy masz działający zestaw klienta i serwera, w następnej sekcji skonfigurujesz interfejs Gemini CLI za pomocą utworzonego serwera MCP, aby zacząć korzystać z jego zalet w kolejnym zadaniu związanym z kodowaniem.
Przydatne materiały
Biorąc pod uwagę, że MCP to wciąż nowa koncepcja, a pakiet Go SDK do MCP jest nową biblioteką, na tym etapie Gemini może potrzebować dużo czasu, aby samodzielnie znaleźć odpowiednią implementację. Aby pomóc modelowi znaleźć właściwe rozwiązanie, możesz podać mu te odniesienia:
- Możesz podać modelowi ten prompt, aby bardziej konsekwentnie odkrywał interfejs API pakietu SDK: „use the go doc shell command to discover the api for the go-sdk library” (użyj polecenia powłoki go doc, aby odkryć interfejs API biblioteki go-sdk).
- Jeśli model spróbuje sprawdzić kod źródłowy pakietu SDK za pomocą narzędzia
read_file
, operacja się nie powiedzie, ponieważ interfejs Gemini CLI nie może odczytywać plików spoza bieżącego zakresu. Możesz poinstruować go, aby zamiast tego używał poleceńcat
ils
, za pomocą narzędziarun_shell_command
. - Jeśli model ma problem z debugowaniem aplikacji, poproś go o dodanie bardziej szczegółowych logów i poprawienie informacji kontekstowych w komunikatach o błędach.
- Jeśli wszystko inne zawiedzie, skorzystaj z implementacji referencyjnej: https://github.com/danicat/godoctor
6. Konfigurowanie godoctor jako serwera MCP dla interfejsu Gemini CLI
Gdy asystent AI wygeneruje kod zarówno dla klienta, jak i serwera, możesz poprosić go o przeprowadzenie kilku testów ręcznych. Na przykład:
retrieve the documentation for the package net/http
Sprawdź też, czy działa z zewnętrzną zależnością (nie w bibliotece standardowej):
retrieve the documentation for the go-sdk package
Gdy będziesz zadowolony(-a) z wyników, poproś go o napisanie pliku README.md z instrukcjami dotyczącymi korzystania z tego projektu i jego rozwijania.
Now write a detailed README.md file explaining both from a user and a developer perspective how to use and to build this project.
Teraz skonfigurujemy serwer, aby interfejs Gemini CLI mógł go używać w następnej fazie rozwoju.
- Poproś interfejs wiersza poleceń o zaktualizowanie pliku GEMINI.md, aby używać znaku
godoc
jako preferowanej metody odczytywania dokumentacji:
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.
- Teraz musimy ponownie uruchomić interfejs wiersza poleceń Gemini, aby go skonfigurować. Najpierw zapiszmy sesję czatu, aby po ponownym uruchomieniu można było kontynuować ją od miejsca, w którym została przerwana.
/chat save workshop001
- Zamknij interfejs CLI, naciskając dwukrotnie Ctrl+D.
- Skompiluj plik binarny serwera: utwórz katalog
bin
i skompiluj w nim serwer godoctor.
mkdir -p bin
go build -o ./bin/godoctor ./cmd/godoctor # adjust paths as needed
- Skonfiguruj interfejs Gemini CLI dla narzędzia lokalnego: utwórz plik
.gemini/settings.json
w katalogu głównym projektu i dodaj sekcjęmcpServers
, aby poinformować interfejs Gemini CLI, jak uruchomić skompilowany serwer.
mkdir -p .gemini
touch .gemini/settings.json
- Teraz dodaj do nowego pliku tę zawartość, korzystając z edytora wiersza poleceń, np.
vim
lubnano
:
{
"mcpServers": {
"godoctor": {
"command": "./bin/godoctor"
}
}
}
- Teraz uruchom interfejs wiersza poleceń Gemini i przywróć sesję czatu:
/chat resume workshop001
- Aby sprawdzić, czy narzędzie zostało wczytane, naciśnij Ctrl+T:
- Przetestuj integrację, prosząc interfejs wiersza poleceń Gemini o użycie Twojego narzędzia za pomocą prompta takiego jak „Get the documentation for net/http” (Pobierz dokumentację net/http).
Powinien pojawić się ekran podobny do tego:
Jeśli narzędzie działa prawidłowo, powinna się wyświetlić dokumentacja pobrana w ramach wywołania narzędzia:
Gratulacje, udało Ci się utworzyć narzędzie MCP. Ale to nie koniec – możemy jeszcze zwiększyć przydatność tego narzędzia.
7. Dodawanie weryfikatora kodu opartego na AI
Dodajmy bardziej zaawansowaną funkcję opartą na AI: narzędzie do sprawdzania kodu, które korzysta z interfejsu Gemini API.
Cel: dodanie do istniejącego projektu nowego narzędzia o nazwie code_review. To narzędzie będzie używać interfejsu Gemini API do analizowania kodu w Go i przekazywania opinii.
Przykładowy 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
Przydatne wskazówki
Gdy model zacznie pracować nad tym zadaniem, może automatycznie poprosić o wywołanie narzędzia godoc
w celu przeglądania dokumentacji pakietu genai
. Jeśli tak się nie stanie, możesz przerwać proces, naciskając klawisz Escape, i przypomnieć mu, że ma teraz do dyspozycji narzędzie godoc
.
Testowanie narzędzia do weryfikacji kodu
- Aby utworzyć i ponownie załadować serwer MCP, musimy ponownie uruchomić interfejs Gemini CLI. Zapisz sesję czatu, naciskając
/chat save workshop002
, a następnie zamknij interfejs CLI, naciskając dwukrotnie Ctrl+D. code_review
wymaga klucza interfejsu API, ponieważ wywołujemy model Gemini, aby przeprowadził dla nas weryfikację. Klucz interfejsu API możesz wygenerować za pomocą Google AI Studio.- Skonfiguruj zmienną środowiskową
GEMINI_API_KEY
za pomocą klucza interfejsu API wygenerowanego w poprzednim kroku:
export GEMINI_API_KEY="YOUR_API_KEY"
- Ponownie skompiluj serwer: po dodaniu nowego narzędzia musisz ponownie skompilować binarny plik serwera, aby uwzględnić zmiany.
go build -o ./bin/godoctor ./cmd/godoctor
- Ponownie uruchom interfejs wiersza poleceń Gemini. Przywróć sesję czatu za pomocą
/chat resume workshop002
. - Ważne: Upewnij się, że uwierzytelnianie odbywa się za pomocą osobistego konta Gmail, aby interfejs Gemini CLI nie korzystał z Twojego konta rozliczeniowego. Możesz to zrobić za pomocą polecenia
/auth
:
- Sprawdź, czy narzędzie jest włączone, naciskając Ctrl+T. Powinien pojawić się ekran podobny do tego:
- Teraz przetestujmy narzędzie
code-review
, sprawdzając jeden z jego plików źródłowych:
„Użyj narzędzia godoctor, aby przejrzeć plik cmd/godoctor/main.go”.
You should see something like this:
Gdy narzędzie do sprawdzania kodu działa, możesz zaproponować modelowi zastosowanie niektórych znalezionych przez niego ulepszeń, aby uzyskać pełny przepływ pracy „samodoskonalenia”.
Potwierdzasz w ten sposób, że narzędzie code-review
działa. W następnej sekcji dowiesz się, jak wdrożyć go w chmurze.
Aby wyczyścić GEMINI_API_KEY:
- Zapisz bieżącą sesję za pomocą
/chat save workshop003
i zamknij interfejs wiersza poleceń. - Utwórz kopię zapasową klucza interfejsu API w bezpiecznym miejscu:
export | grep GEMINI_API_KEY > env.bkp
- Usuń ustawienie
GEMINI_API_KEY
:
export GEMINI_API_KEY=
- Uruchom ponownie interfejs wiersza poleceń i wczytaj sesję za pomocą polecenia
/chat resume workshop003
. - Poproś model o zastosowanie ulepszeń z przeglądu kodu.
8. Przygotowywanie serwera do pracy w chmurze
Opracowany przez nas serwer MCP działa tylko na komputerze lokalnym, co jest w porządku, jeśli tworzysz narzędzia do własnego użytku. Jednak w środowiskach korporacyjnych często musimy wdrażać narzędzia do szerszego użytku przez setki, a nawet tysiące programistów.
Aby skalować nasz serwer MCP, musimy przekształcić go z serwera, który obsługuje tylko standardowe wejście/wyjście, w serwer, który może komunikować się za pomocą protokołu HTTP, i wdrożyć go w miejscu, w którym będzie dostępny dla różnych deweloperów. W tym celu użyjemy trybu transportu zdefiniowanego w specyfikacji MCP jako HTTP z możliwością przesyłania strumieniowego, a jako miejsce wdrożenia wykorzystamy Cloud Run.
Cel: zmodyfikować serwer godoctor, aby korzystał z przesyłania strumieniowego HTTP.
Przykładowy 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.
Przydatne materiały
- Jeśli model ma problemy z wdrożeniem przesyłania strumieniowego HTTP, możesz podać mu ten link: https://github.com/modelcontextprotocol/go-sdk/blob/main/design/design.md
- Model może spróbować użyć protokołu HTTP+SSE, który został wycofany. Jeśli zauważysz, że podąża tą ścieżką, skieruj ją z powrotem na strumieniowy protokół HTTP.
Testowanie serwera za pomocą protokołu HTTP
Poproś model o zaktualizowanie klienta godoctor, aby korzystał też z HTTP z możliwością przesyłania strumieniowego, dzięki czemu będziesz mieć pewność, że nadal działa.
Now update the client to use streamable HTTP and run a test by retrieving documentation from one package
Opcjonalnie: jeśli chcesz skonfigurować interfejs Gemini CLI tak, aby używał serwera przez HTTP:
- Zapisz sesję i zamknij interfejs CLI
- Edytuj plik
.gemini/settings.json
i zmień konfigurację, aby wskazywała lokalnie działający serwer.
"mcpServers": {
"godoctor": {
"httpUrl": "http://localhost:8080"
}
}
- Uruchom lokalnie przekształcony serwer:
go run ./cmd/godoctor/main.go
- W nowym terminalu (ponieważ powyższa operacja blokuje) uruchom interfejs wiersza poleceń Gemini i wpisz prompt, aby przetestować połączenie, np. „Użyj narzędzia godoctor, aby uzyskać dokumentację funkcji fmt.Println”.
- Po zakończeniu testowania zatrzymaj serwer, naciskając Ctrl+C.
9. Konteneryzacja aplikacji za pomocą Dockera
Teraz, gdy nasz serwer korzysta z prawidłowego protokołu transportowego, możemy go umieścić w kontenerze na potrzeby wdrożenia.
Cel: utworzyć plik Dockerfile, aby spakować serwer godoctor do przenośnego obrazu kontenera gotowego do wykorzystania w środowisku produkcyjnym.
Przykładowy 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.
Testowanie obrazu Dockera
Po utworzeniu Dockerfile
skompiluj obraz i uruchom go, aby upewnić się, że działa prawidłowo. Możesz poprosić Gemini o wykonanie tego zadania:
build the image and test the connectivity to the server using the godoctor client
Opcjonalnie: jeśli chcesz przeprowadzić test ręcznie:
- Utwórz kontener:
docker build -t godoctor:latest .
- Uruchom kontener lokalnie:
docker run -p 8080:8080 -e PORT=8080 godoctor:latest
- Przetestuj działający kontener: w innym terminalu uruchom interfejs wiersza poleceń Gemini i poproś go o pobranie dokumentacji.
- Po zakończeniu testowania zatrzymaj serwer, naciskając Ctrl+C.
10. Wdrażanie w Cloud Run
Teraz możemy wdrożyć kontener w chmurze.
Cel: wdrożenie skonteneryzowanego serwera godoctor w Google Cloud Run.
Wskazówki dotyczące promptów: poproś asystenta AI o podanie poleceń gcloud do wdrożenia kontenera.
Przykładowy 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.
Po zakończeniu wdrażania skonfigurujemy interfejs wiersza poleceń Gemini tak, aby korzystał z narzędzia, które właśnie zostało wdrożone.
Poproś Gemini o zaktualizowanie pliku .gemini/settings.json
, aby zmienić konfigurację narzędzia MCP tak, aby wskazywało ono na wdrożoną usługę.
now update the .gemini/settings.json file to use this URL for the godoctor server
Ostatnia sekcja mcpServers
powinna wyglądać tak (pamiętaj, aby zastąpić zmienną rzeczywistym adresem URL aplikacji Cloud Run):
"mcpServers": {
"godoctor": {
"httpUrl": "https://<your-cloud-run-id>.us-central1.run.app"
}
}
Testowanie wdrożenia Cloud Run
Możesz teraz przeprowadzić końcowy test kompleksowy.
Jeszcze raz uruchom ponownie interfejs wiersza poleceń Gemini (używając /chat save
i /chat resume
, aby zachować kontekst). Interfejs CLI powinien teraz móc wywoływać zdalny serwer MCP. Spróbuj poprosić o dokumentację dowolnych pakietów.
Pamiętaj tylko, że aby korzystać z narzędzia do sprawdzania kodu, usługa potrzebuje GEMINI_API_KEY
. Możesz poprosić interfejs wiersza poleceń Gemini o ponowne wdrożenie go w odpowiednim środowisku:
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
Uruchom ponownie interfejs wiersza poleceń i przetestuj go za pomocą prompta:
Use the godoctor tool to review the cmd/godoctor/main.go file
Interfejs Gemini CLI połączy się teraz z wdrożoną usługą Cloud Run i przeprowadzi weryfikację kodu.
Przykładowy 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. Gratulacje!
Udało Ci się poprowadzić asystenta AI w procesie tworzenia, konteneryzacji i wdrażania zaawansowanego narzędzia opartego na AI. Co ważniejsze, przećwiczysz podstawową umiejętność nowoczesnego tworzenia oprogramowania: przekształcanie wymagań w skuteczne prompty. Udało Ci się rozszerzyć interfejs wiersza poleceń Gemini o niestandardowe narzędzie, dzięki czemu stał się on bardziej zaawansowanym i wyspecjalizowanym asystentem programowania w Go.