1. Wprowadzenie
Poznaj AllStrides, kompleksową platformę do zarządzania wydarzeniami dla społeczności fitness. Mimo że ma wiele funkcji, obecnie jest dostępna tylko lokalnie. Korzysta z lokalnej bazy danych SQLite i ręcznego wykonywania Node.js. Aby społeczność mogła się rozwijać, AllStrides potrzebuje skali, niezawodności i bezpieczeństwa Google Cloud.
W tym ćwiczeniu z programowania nie przeprowadzisz tradycyjnej migracji. Zamiast tego będziesz pełnić rolę architekta produktu, a interfejs wiersza poleceń Gemini będzie Twoim partnerem. Wyposażając Gemini w 3 serwery protokołu kontekstu modelu (MCP) Google Cloud, umożliwisz AI „kontaktowanie się” i bezpośrednie interakcje z usługami Google Cloud. Na początku użyjesz MCP Developer Knowledge, aby wybrać najlepszą bazę danych Google Cloud dla aplikacji allstrides. Następnie użyjesz MCP Cloud SQL, aby udostępnić instancję bazy danych i przenieść lokalne dane społeczności do chmury za pomocą jednego promptu. Na koniec użyjesz platformy MCP Cloud Run, aby skonteneryzować aplikację, dzięki czemu AllStrides będzie dostępna na całym świecie.

Wymagania wstępne
- Podstawowa znajomość konsoli Google Cloud
- Podstawowe umiejętności w zakresie interfejsu wiersza poleceń i Cloud Shell
Czego się nauczysz
- Jak wdrożyć i skonfigurować interfejs wiersza poleceń Gemini do pracy ze zdalnym MCP
- Korzystanie z serwera MCP Development Knowledge
- Jak używać zdalnego serwera MCP Cloud SQL do migracji danych do chmury
- Jak używać zdalnego serwera MCP Cloud Run do wdrażania aplikacji w chmurze
- Jak korzystać z interfejsu wiersza poleceń Gemini w Google Cloud Shell
Czego potrzebujesz
- Konto Google Cloud i projekt Google Cloud
- przeglądarka internetowa, np. Chrome, obsługująca konsolę Google Cloud i Cloud Shell;
2. Konfiguracja i wymagania
Konfiguracja projektu
- Zaloguj się w konsoli Google Cloud. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.
Używaj konta osobistego zamiast konta służbowego lub szkolnego.
- Utwórz nowy projekt lub użyj istniejącego. Aby utworzyć nowy projekt w konsoli Google Cloud, w nagłówku kliknij przycisk Wybierz projekt. Otworzy się okno wyskakujące.

W oknie Wybierz projekt kliknij przycisk Nowy projekt, który otworzy okno dialogowe nowego projektu.

W oknie dialogowym wpisz preferowaną nazwę projektu i wybierz lokalizację.

- Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Nazwa projektu nie jest używana przez interfejsy API Google i można ją w każdej chwili zmienić.
- Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić po ustawieniu. Konsola Google Cloud automatycznie generuje unikalny identyfikator, ale możesz go dostosować. Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować inny losowy identyfikator lub podać własny, aby sprawdzić jego dostępność. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu, który jest zwykle oznaczony zmienną PROJECT_ID.
- 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.
Włącz płatności
Konfigurowanie osobistego konta rozliczeniowego
Jeśli skonfigurujesz płatności za pomocą środków w Google Cloud, możesz pominąć ten krok.
- Kliknij ten link i zaloguj się na osobiste konto Google.
- Zobaczysz coś takiego:

- Kliknij przycisk KLIKNIJ TUTAJ, ABY UZYSKAĆ DOSTĘP DO ŚRODKÓW. Spowoduje to otwarcie strony, na której możesz skonfigurować profil płatności. Jeśli pojawi się ekran rejestracji w bezpłatnym okresie próbnym, kliknij Anuluj i przejdź do połączenia rozliczeń.

- Kliknij Potwierdź. Nastąpi połączenie z próbnym kontem rozliczeniowym Google Cloud Platform.

Konfigurowanie osobistego konta rozliczeniowego
Jeśli skonfigurujesz płatności za pomocą środków w Google Cloud, możesz pominąć ten krok.
Aby skonfigurować osobiste konto rozliczeniowe, włącz płatności w konsoli Google Cloud.
Uwagi:
- Pod względem opłat za zasoby chmury ukończenie tego modułu powinno kosztować mniej niż 3 USD.
- Jeśli chcesz uniknąć dalszych opłat, wykonaj czynności opisane na końcu tego modułu, aby usunąć zasoby.
- Nowi użytkownicy mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Uruchamianie Cloud Shell
Z Google Cloud można korzystać zdalnie na laptopie, 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:

Możesz też nacisnąć G, a potem S. Ta sekwencja aktywuje Cloud Shell, jeśli korzystasz z konsoli Google Cloud. Możesz też użyć tego linku.
Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinny pojawić się dane wyjściowe podobne do tych:

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Wszystkie zadania w tym laboratorium możesz wykonać w przeglądarce. Nie musisz niczego instalować.
3. Zanim zaczniesz
Włączanie podstawowego interfejsu API
Aby korzystać z usług zarządzanych baz danych, takich jak Cloud SQL, i innych usług do tworzenia i wdrażania aplikacji w Cloud Run, musisz włączyć odpowiednie interfejsy API w projekcie Google Cloud.
W zależności od podejścia możesz opcjonalnie pominąć ten krok i później pozwolić interfejsowi wiersza poleceń Gemini włączyć wszystkie wymagane interfejsy API. W takim przypadku możesz jednak napotkać pewne opóźnienia i powtarzające się kroki podczas wykonywania.
W terminalu Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany:
gcloud config set project [YOUR-PROJECT-ID]
Ustaw zmienną środowiskową PROJECT_ID:
PROJECT_ID=$(gcloud config get-value project)
Włącz wszystkie niezbędne usługi:
gcloud services enable sqladmin.googleapis.com \
aiplatform.googleapis.com \
secretmanager.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
run.googleapis.com \
containerregistry.googleapis.com
Oczekiwane dane wyjściowe:
student@cloudshell:~ (test-project-001-402417)$ PROJECT_ID=$(gcloud config get-value project)
Your active configuration is: [cloudshell-14650]
student@cloudshell:~ (test-project-001-402417)$
student@cloudshell:~ (test-project-001-402417)$ gcloud services enable sqladmin.googleapis.com \
aiplatform.googleapis.com \
secretmanager.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
run.googleapis.com \
containerregistry.googleapis.com
Operation "operations/acat.p2-812263612774-c2dbeef3-c4c1-4a7d-a4b2-b5380be65044" finished successfully.
Przyznawanie uprawnień kontu usługi
Aby móc tworzyć i przechowywać obrazy aplikacji, musisz przyznać domyślnemu kontu usługi Compute Engine uprawnienia administratora pamięci. Podobnie jak w poprzednim kroku możesz przekazać to uprawnienie interfejsowi wiersza poleceń Gemini później, podczas wykonywania.
PROJECT_ID=$(gcloud config get-value project)
gcloud projects add-iam-policy-binding $PROJECT_ID --member=serviceAccount:$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")-compute@developer.gserviceaccount.com --role=roles/storage.admin
Włącz zdalny MCP
Usługi MCP zdalnego dostępu powinny być wyraźnie włączone dla każdej usługi w projekcie. Są one domyślnie wyłączone i pomagają regulować dostęp do interfejsów API na poziomie projektu i usługi.
Zacznijmy od usługi MCP Developer Knowledge. Aby włączyć interfejs Developer Knowledge API i usługę zdalną MCP, uruchom te polecenia gcloud.
PROJECT_ID=$(gcloud config get-value project)
gcloud beta services mcp enable developerknowledge.googleapis.com --project=$PROJECT_ID
Gdy interfejs API i zdalny MCP dla wiedzy programistycznej są włączone, możesz wykonać te same czynności w przypadku zdalnej usługi MCP Cloud SQL.
gcloud beta services mcp enable sqladmin.googleapis.com --project=$PROJECT_ID
Podobnie jak w przypadku wszystkich zdalnych MCP baz danych, dostęp i uprawnienia MCP są etapowe, co zapewnia szczegółowy dostęp na poziomie projektu do samego interfejsu API. Może to zrobić tylko podmiot (użytkownik lub konto usługi) z rolą Administrator usługi (roles/serviceusage.serviceUsageAdmin).
Połączenia z zdalnym interfejsem API MCP mogą wykonywać tylko podmioty z rolą Użytkownik narzędzia MCP (roles/mcp.toolUser).
Jeśli na przykład nie masz roli Administrator Cloud SQL (roles/cloudsql.admin), nie możesz tworzyć, klonować ani aktualizować żadnej instancji w projekcie.
Więcej informacji o wymaganych rolach i uprawnieniach znajdziesz w dokumentacji.
Jak widać, etapowa i szczegółowa autoryzacja chroni nas przed nieautoryzowanym atakiem nawet wtedy, gdy zdalny punkt końcowy MCP jest włączony, co sprawia, że jest on wystarczająco bezpieczny w przypadku środowiska produkcyjnego.
Następny zdalny MCP, który włączymy, dotyczy usługi Cloud Run. Podejście do włączania i uzyskiwania dostępu do zdalnego MCP w Cloud Run jest podobne do zdalnego MCP w Cloud SQL.
Włącz usługę Cloud Run MCP za pomocą tego polecenia.
gcloud beta services mcp enable run.googleapis.com --project=$PROJECT_ID
Na koniec możemy sprawdzić, czy wszystkie zdalne MCP są włączone w naszym projekcie, za pomocą tego polecenia:
gcloud beta services mcp list --project=$PROJECT_ID
Oczekiwane dane wyjściowe:
student@cloudshell:~ (test-project-001-402417)$ gcloud beta services mcp list --project=$PROJECT_ID NAME: services/developerknowledge.googleapis.com MCP_ENDPOINT: developerknowledge.googleapis.com NAME: services/run.googleapis.com MCP_ENDPOINT: run.googleapis.com/mcp NAME: services/sqladmin.googleapis.com MCP_ENDPOINT: sqladmin.googleapis.com/mcp
Teraz, gdy wszystkie interfejsy API i usługi są włączone, musimy skonfigurować interfejs CLI Gemini.
4. Konfigurowanie interfejsu wiersza poleceń Gemini
W tym laboratorium będziemy używać interfejsu wiersza poleceń Gemini jako głównego agenta do wykonywania większości działań. Pierwszym krokiem jest skonfigurowanie go do pracy ze zdalnymi serwerami MCP. Zalecamy też używanie najnowszej wersji interfejsu wiersza poleceń Gemini i najnowszej wersji Gemini, np. Gemini-3-pro lub Gemini-3-flash (obecnie w wersji podglądowej).
Jeśli masz już najnowszą wersję interfejsu wiersza poleceń Gemini i skonfigurowano ją do korzystania z najnowszych modeli Gemini, możesz pominąć 2 kolejne kroki i przejść bezpośrednio do kroku 3.
1. Uzyskiwanie klucza interfejsu Gemini API
Aby korzystać z najnowszych modeli Gemini w interfejsie wiersza poleceń Gemini, musisz skonfigurować uwierzytelnianie za pomocą klucza interfejsu API. Klucz interfejsu API możemy uzyskać w Google AI Studio.
- W przeglądarce otwórz Google AI Studio –> Pobierz klucz interfejsu API.
- Po prawej stronie ekranu kliknij przycisk
Create API key. - W wyskakującym okienku wybierz projekt lub zaimportuj go, jeśli nie jest widoczny.

- Utwórz klucz interfejsu API.
- Możesz skopiować klucz, klikając przycisk kopiowania po prawej stronie.

Klucz jest gotowy i możemy go teraz używać w interfejsie wiersza poleceń Gemini.
2. Konfigurowanie interfejsu wiersza poleceń Gemini
Interfejs Gemini CLI można skonfigurować za pomocą pliku konfiguracji ustawień lub interaktywnie za pomocą polecenia /settings. Chcemy, aby nasze ustawienia były zachowane w pliku ustawień.
Najpierw utworzymy katalog projektu. Nazwijmy katalog projectmcp i przejdźmy do niego za pomocą tych poleceń.
mkdir ~/projectmcp
cd ~/projectmcp
W tym katalogu utworzymy katalog plików konfiguracyjnych Gemini i będziemy uruchamiać wszystkie polecenia. Interfejs wiersza poleceń Gemini domyślnie używa pliku konfiguracji zakresu użytkownika i rozszerzeń zainstalowanych w katalogu ~/.gemini. Utworzymy jednak własną konfigurację zakresu projektu w katalogu ~/projectmcp. Zacznijmy od utworzenia katalogu i plików konfiguracyjnych.
mkdir ~/projectmcp/.gemini
touch ~/projectmcp/.gemini/settings.json
Następnie otwieramy plik ~/projectmcp/.gemini/settings.json za pomocą edytora Cloud Shell.
edit ~/projectmcp/.gemini/settings.json
W otwartym oknie edytora dodaj tę konfigurację.
{
"general": {
"preferredEditor": "vscode",
"previewFeatures": true,
"sessionRetention": {
"enabled": true
}
},
"ide": {
"enabled": true,
"hasSeenNudge": true
},
"security": {
"auth": {
"selectedType": "gemini-api-key"
}
},
"ui": {
"theme": "Default"
},
"tools": {
"shell": {
"enableInteractiveShell": false
}
}
}
Po edycji pliku możesz użyć ctrl+s, aby zapisać zmiany, i wrócić do terminala, klikając przycisk Open Terminal.

W plikach settings.json powyżej typ uwierzytelniania interfejsu Gemini CLI jest ustawiony na gemini-api-key. Musisz podać klucz do modelu. Możesz to zrobić, tworząc plik .env w katalogu, w którym chcesz pracować z interfejsem wiersza poleceń Gemini, i przechowując klucz interfejsu API do uwierzytelniania interfejsu wiersza poleceń Gemini jako zmienną środowiskową, która zostanie pobrana po uruchomieniu środowiska IDE.
Edytowanie pliku za pomocą edytora Cloud Shell
edit ~/projectmcp/.env
i zapisz klucz interfejsu API utworzony w kroku 1.
GEMINI_API_KEY= <YOUR_API_KEY>
Teraz możesz wrócić do terminala i kontynuować. Następnym krokiem jest zaktualizowanie interfejsu wiersza poleceń Gemini do najnowszej wersji. Wersja w Google Cloud Shell lub w Twoim środowisku może być nieaktualna i może nie działać prawidłowo z najnowszymi konfiguracjami i usługami MCP. Dlatego ważne jest, aby zaktualizować interfejs wiersza poleceń Gemini do najnowszej wersji i go uruchomić. W terminalu wykonaj te czynności.
cd ~/projectmcp/
npm install -g @google/gemini-cli@latest
Teraz możesz sprawdzić wersję. Pamiętaj, że jeśli pracujesz w Google Cloud Shell, za każdym razem, gdy ponownie uruchomisz powłokę, może ona wrócić do poprzedniej wersji. Zmiany wprowadzone w samym interfejsie wiersza poleceń Gemini nie są trwałe w Cloud Shell.
gemini --version
Powinna się wyświetlić najnowsza wersja interfejsu Gemini CLI (w momencie pisania tego laboratorium jest to wersja 0.27). Najnowszą wersję interfejsu wiersza poleceń Gemini możesz sprawdzić tutaj. Teraz możemy go uruchomić i sprawdzić, czy korzysta z najnowszego modelu Gemini. Aby uruchomić interfejs wiersza poleceń Gemini, w folderze projektu uruchom to polecenie:
gemini
Gdy interfejs wiersza poleceń Gemini zostanie uruchomiony, możesz sprawdzić wersję i model, uruchamiając w interfejsie polecenie /about. Powinien pojawić się obraz podobny do tego poniżej.

Widać, że korzysta z najnowszego modelu Gemini 3.
2. Konfigurowanie serwerów MCP w interfejsie wiersza poleceń Gemini
Teraz dodaj wszystkie włączone serwery MCP. Możesz je włączyć w interfejsie wiersza poleceń Gemini na 2 sposoby: za pomocą rozszerzeń lub bezpośrednio w ustawieniach. W tym module użyjesz pliku setting.json w zakresie projektu i dodasz do niego szczegóły uwierzytelniania serwerów MCP.
- W przypadku serwera Developer Knowledge MCP musisz utworzyć klucz API, aby uzyskać autoryzację w punkcie końcowym.
Aby to zrobić:
- W konsoli Google Cloud w projekcie, w którym został włączony interfejs API, otwórz stronę Dane logowania.
- Kliknij Utwórz dane logowania, a potem w menu wybierz Klucz interfejsu API. W oknie Utworzono klucz API pojawi się ciąg znaków nowo utworzonego klucza.
- W oknie kliknij link
Edit API key. - W polu
Namewpisz nazwę klucza. Na przykładDK API Key. - W sekcji Ograniczenia interfejsu API wybierz
Restrict key. - Na liście Wybierz interfejsy API włącz
Developer Knowledge APIi kliknij OK. - Kliknij Zapisz.

Jeśli chcesz użyć klucza, otwórz stronę i po prawej stronie kliknij Pokaż klucz.

Teraz musisz zapisać ten klucz w konfiguracji. Sekcja MCP w pliku settings.json będzie wyglądać tak (musisz tam wpisać wartość klucza interfejsu API DK): Oto przykład sekcji MCP w pliku settings.json, jeśli dodano tylko interfejs DK API. W dalszej części modułu zobaczysz też, jak powinien wyglądać plik settings.json ze wszystkimi serwerami MCP.
"mcpServers": {
"DeveloperKnowledge": {
"httpUrl": "https://developerknowledge.googleapis.com/mcp",
"headers": {
"X-Goog-Api-Key": "<Your DK API Key>"
}
}
},
- Następnie możesz dodać konfigurację serwera MCP Cloud SQL. W przypadku Cloud SQL MCP będziesz używać danych logowania Google zamiast interfejsu API. Jest bezpieczniejsza i umożliwia nam określanie ról i zakresu działań dozwolonych dla użytkownika. Oto konfiguracja serwera MCP. Zastąp ciąg „<YOUR_GCP_PROJECT>” identyfikatorem swojego projektu.
"Cloud SQL MCP Server": {
"httpUrl": "https://sqladmin.googleapis.com/mcp",
"authProviderType": "google_credentials",
"oauth": {
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
},
"timeout": 500000,
"trust": false,
"headers": {
"X-Goog-User-Project": "<YOUR_GCP_PROJECT>"
}
},
- Kolejny fragment kodu JSON zawiera konfigurację serwera MCP Cloud Run. Działa on w podobny sposób jak w przykładzie powyżej i używa danych logowania Google do uwierzytelniania i autoryzacji. Oto przykładowa konfiguracja.
"CloudRun": {
"httpUrl": "https://run.googleapis.com/mcp",
"authProviderType": "google_credentials",
"oauth": {
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
}
}
Wszystkie te informacje należy dodać do pliku ~/projectmcp/.gemini/settings.json.
Otwórz plik ~/projectmcp/.gemini/settings.json w edytorze Cloud Shell.
edit ~/projectmcp/.gemini/settings.json
Zastąp zawartość poniższą konfiguracją. W polach „X-Goog-Api-Key” i „X-Goog-User-Project” umieść klucz interfejsu API i identyfikator projektu odpowiednio do swojego środowiska.
{
"general": {
"preferredEditor": "vscode",
"previewFeatures": true,
"sessionRetention": {
"enabled": true
}
},
"ide": {
"enabled": true,
"hasSeenNudge": true
},
"security": {
"auth": {
"selectedType": "gemini-api-key"
}
},
"mcpServers": {
"DeveloperKnowledge": {
"httpUrl": "https://developerknowledge.googleapis.com/mcp",
"headers": {
"X-Goog-Api-Key": "<Your DK API Key>"
}
},
"Cloud SQL MCP Server": {
"httpUrl": "https://sqladmin.googleapis.com/mcp",
"authProviderType": "google_credentials",
"oauth": {
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
},
"timeout": 500000,
"trust": false,
"headers": {
"X-Goog-User-Project": "<YOUR_GCP_PROJECT>"
}
},
"CloudRun": {
"httpUrl": "https://run.googleapis.com/mcp",
"authProviderType": "google_credentials",
"oauth": {
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
}
}
},
"ui": {
"theme": "Default"
},
"tools": {
"shell": {
"enableInteractiveShell": false
}
}
}
Teraz możemy uruchomić interfejs wiersza poleceń Gemini i sprawdzić, czy wszystkie serwery MCP są włączone.
cd ~/projectmcp/
gemini
Po uruchomieniu interfejsu wiersza poleceń Gemini możesz wykonać polecenie /mcp, aby wyświetlić wszystkie działające serwery MCP.

5. Przygotowywanie aplikacji
W tym przykładzie spróbujesz przenieść przykładową aplikację lokalną do Google Cloud. Najpierw zainstalujemy aplikację lokalnie i ją przetestujemy.
1. Klonowanie kodu źródłowego
Musimy sklonować aplikację z repozytorium GitHub. W Cloud Shell lub w terminalu lokalnym w folderze projektu wykonaj to polecenie.
git clone https://github.com/google/mcp.git
2. Lokalne uruchamianie aplikacji
Przetestujmy aplikację i wczytajmy przykładowe dane
W tym samym oknie przejdź do folderu aplikacji i uruchom ją za pomocą polecenia
cd mcp/examples/allstrides
./start_allstrides.sh
3. Testowanie aplikacji
Jeśli pracujesz w Cloud Shell, naciśnij przycisk Web preview u góry okna Cloud Shell i wybierz Preview on port 8080.

Otworzy się nowa karta przeglądarki z interfejsem aplikacji, w którym możesz na przykład kliknąć przycisk Events.

Obecnie nie masz żadnych wydarzeń.
4. Wczytaj przykładowe dane
Możesz zarejestrować się w aplikacji i utworzyć własne zdarzenia, wiadomości na czacie i użytkowników lub użyć przykładowych danych dostarczonych z aplikacją.
Otwórz kolejną kartę Cloud Shell, klikając znak „+” u góry.

Na nowej karcie Cloud Shell przejdź do katalogu aplikacji i wykonaj importowanie za pomocą narzędzia sqllite3:
cd ~/projectmcp/mcp/examples/allstrides
sqlite3 allstrides.db < seed_data.sql
Jeśli wrócisz na stronę aplikacji, a potem ponownie klikniesz przycisk Zdarzenia, zobaczysz wiele zdarzeń.

Możesz też przetestować stronę czatu i wyświetlić na niej niektóre wiadomości.
Teraz możesz zamknąć drugą kartę, wpisując exit.
exit
Zatrzymaj aplikację na pierwszej karcie, naciskając klawisze Ctrl+C.
6. Testowanie wiedzy programisty MCP
Developer Knowledge MCP umożliwia nam korzystanie z dokumentów Google bezpośrednio w naszych narzędziach niezależnych od platformy, co pozwala weryfikować instrukcje, tworzyć samouczki i wykonywać inne zadania, które można uzupełniać najnowszą dokumentacją Google.
Uruchom interfejs Gemini CLI i wyświetl listę dostępnych narzędzi MCP na serwerze MCP Developer Knowledge.
/mcp
W przypadku MCP Developer Knowledge powinny być dostępne 3 narzędzia:
Oczekiwane dane wyjściowe:
🟢 DeveloperKnowledge - Ready (3 tools) Tools: - batch_get_documents - get_document - search_documents
Naszym zadaniem jest przeniesienie aplikacji do Google Cloud, co oznacza, że musimy przejść z lokalnej bazy danych SQLite na bardziej skalowalne rozwiązanie natywne dla chmury. Poprośmy Gemini o przeanalizowanie kodu aplikacji i doradzenie w sprawie rozwiązania dotyczącego bazy danych.
W wierszu poleceń interfejsu Gemini wpisz:
Hello, I need to choose a database platform for my allstrides application in Google Cloud. Can you analyze documentation and prepare a tutorial to choose the correct database engine?
Interfejs wiersza poleceń Gemini rozpocznie od analizy kodu, a następnie poprosi o wykonanie
Oczekiwane dane wyjściowe
? search_documents (DeveloperKnowledge MCP Server) {"query":"choose google cloud database"} ← │
│ │
│ MCP Server: DeveloperKnowledge │
│ Tool: search_documents │
│ │
│ Allow execution of MCP tool "search_documents" from server "DeveloperKnowledge"? │
│ │
│ ● 1. Allow once │
│ 2. Allow tool for this session │
│ 3. Allow all server tools for this session │
│ 4. No, suggest changes (esc)
Widzimy, że narzędzie używa MCP do ugruntowania odpowiedzi na podstawie dokumentacji Google. Zezwól na wykonanie żądania MCP dotyczącego wiedzy dewelopera. Może poprosić Cię o dodatkowe informacje jeszcze raz lub dwa, zanim udzieli odpowiedzi. Nie wprowadzaj żadnych zmian w swoim wniosku.
Na końcu utworzono samouczek z podsumowaniem, w którym Cloud SQL for Postgres został określony jako najlepszy wybór dla backendu bazy danych. Ze względu na niedeterministyczny charakter modeli generatywnej AI możesz otrzymać nieco inną odpowiedź.
Oczekiwane dane wyjściowe:
By switching to Cloud SQL for PostgreSQL, AllStrides gains a robust, scalable foundation suitable for production deployment on Google Cloud. The transition is straightforward due to the use of Sequelize ORM.
Możemy też poprosić o przygotowanie szczegółowego przewodnika po migracji danych. Wpisz nowy prompt w interfejsie wiersza poleceń Gemini:
I agree with the recommendation to use Cloud SQL for PostgreSQL as the new database for my application. Can you prepare a detailed migration tutorial based on Google documentation on how to move data from my local database to Cloud SQL in the cloud?
W tym przypadku oczekujemy, że podczas przygotowywania samouczka interfejs wiersza poleceń Gemini będzie korzystać z platformy Developer Knowledge MCP jako źródła informacji. Kolejność działań wykonywanych przez interfejs Gemini CLI może się nieznacznie różnić w zależności od konkretnego modelu i innych czynników. Może na przykład poprosić o przygotowanie najpierw skryptów migracji, a dopiero potem o opracowanie dokumentacji końcowej samouczka.
Oto jeden z przykładów, w którym prosi o zezwolenie na przeprowadzenie testu MCP z zakresu wiedzy o programowaniu:
? search_documents (DeveloperKnowledge MCP Server) {"query":"migrate local database to Cloud SQL for PostgreSQL"} ← │
│ │
│ MCP Server: DeveloperKnowledge │
│ Tool: search_documents │
│ │
│ Allow execution of MCP tool "search_documents" from server "DeveloperKnowledge"? │
│ │
│ ● 1. Allow once │
│ 2. Allow tool for this session │
│ 3. Allow all server tools for this session │
│ 4. No, suggest changes (esc) │
│ │
│ │
│ ⊷ search_documents (DeveloperKnowledge MCP Server) {"query":"import data into Cloud SQL PostgreSQL"}
Podczas wykonywania interfejs wiersza poleceń Gemini może poprosić Cię o wykonanie niektórych poleceń. Na przykład aby lepiej zrozumieć schemat danych i przygotować prawidłowe instrukcje migracji danych.
Na koniec powinien przygotować instrukcje krok po kroku dotyczące migracji danych.
Następnie możesz poprosić interfejs wiersza poleceń Gemini o zapisanie samouczka.
Please write the tutorial down
Utworzy on nowy plik Markdown z dokumentem samouczka.
Oczekiwane dane wyjściowe:
✦ I have created a detailed migration guide for you. You can find the tutorial in the new file: MIGRATION_GUIDE.md. This guide covers: 1. Exporting your local SQLite data to CSV format. 2. Creating the PostgreSQL schema with compatible data types. 3. Uploading data to Google Cloud Storage. 4. Importing data into Cloud SQL in the correct order to respect relationships. 5. Resetting ID sequences to ensure new data can be added without errors.
W następnym kroku będziemy pracować z platformą Cloud SQL MCP, przygotowując bazę danych i migrując dane.
7. Testowanie zdalnego MCP Cloud SQL
1. Utwórz instancję Cloud SQL
Możesz zacząć od sprawdzenia dostępnych narzędzi na serwerze MCP Cloud SQL, wpisując /mcp w interfejsie wiersza poleceń Gemini.
/mcp
Obecnie mamy do dyspozycji te narzędzia.
Oczekiwane dane wyjściowe:
🟢 Cloud SQL MCP Server - Ready (11 tools) Tools: - clone_instance - create_instance - create_user - execute_sql - get_instance - get_operation - import_data - list_instances - list_users - update_instance - update_user
Zdecydowaliśmy już, że jako backend naszej aplikacji w Google Cloud będziemy używać Cloud SQL for Postgres. Teraz możemy poprosić Gemini o utworzenie instancji Cloud SQL.
W prompcie interfejsu wiersza poleceń Gemini wpisz prośbę podobną do tej:
Please create a Cloud SQL for Postgres instance with appropriate edition and version in the us-central1 region to be a backend for our application with a public IPs in the current project with 2 CPU and 8 GB memory.
Aby uniknąć dodatkowych wywołań w celu zidentyfikowania bieżącego projektu, możesz wyraźnie określić jego identyfikator podczas wpisywania promptu. Jeśli nazwa projektu nie była wcześniej używana w kontekście, model poprosi o identyfikator projektu lub o wykonanie polecenia gcloud w celu zidentyfikowania projektu.
Następnie przeanalizuje istniejące narzędzia i poprosi o uruchomienie narzędzi MCP Cloud SQL. Powinna pojawić się prośba o zatwierdzenie.
? create_instance (Cloud SQL MCP Server MCP Server) {"tier":"db-custom-2-8192","region":"us-central1","project":"gleb-test-short-001-486416","databaseVersion":"POSTGRES_17","edition":"ENTERPRISE","nam... ← │
│ │
│ MCP Server: Cloud SQL MCP Server │
│ Tool: create_instance │
│ │
│ Allow execution of MCP tool "create_instance" from server "Cloud SQL MCP Server"? │
│ │
│ ● 1. Allow once │
│ 2. Allow tool for this session │
│ 3. Allow all server tools for this session │
│ 4. No, suggest changes (esc)
Po rozpoczęciu wykonywania skryptu poprosi on o monitorowanie stanu operacji i ewentualnych żądań uśpienia między sprawdzeniami. Coś w tym stylu:
✦ I will wait for 30 seconds before checking the status of the instance creation. ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ⊶ Shell sleep 30 [current working directory /home/gleb/demo] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ⠋ Refining Instance Configuration (esc to cancel, 11s)
Następnie pojawi się narzędzie get_operation dla serwera MCP Cloud SQL.
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ? get_operation (Cloud SQL MCP Server MCP Server) {"project":"gleb-test-short-001-486416","operation":"73c39ca7-65fe-46d1-bdb8-0dfa00000032"} ← │
│ │
│ MCP Server: Cloud SQL MCP Server │
│ Tool: get_operation │
│ │
│ Allow execution of MCP tool "get_operation" from server "Cloud SQL MCP Server"? │
│ │
│ ● 1. Allow once
Po ostatniej prośbie get_instance powinny zostać zwrócone informacje o utworzonej instancji. Coś w tym stylu:
Oczekiwane dane wyjściowe:
✦ I will wait for 30 seconds before checking the status of the instance creation. ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ⊶ Shell sleep 30 [current working directory /home/gleb/demo] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ⠋ Refining Instance Configuration (esc to cancel, 11s)
Po nim nastąpi get_operation narzędzie do serwera MCP Cloud SQL i wywołanie narzędzia MCP get_insance. Możesz zobaczyć dodatkowe kontrole i wywołania wykonywane przez interfejs wiersza poleceń Gemini, aby sprawdzić, czy zadanie zostało wykonane.
The Cloud SQL for Postgres instance allstrides-db has been successfully created in the us-central1 region with 2 vCPUs and 8 GB of RAM. Instance Details: - Project ID: gleb-test-short-001-486416 - Instance Name: allstrides-db - Public IP Address: 35.226.187.246 - Database Version: POSTGRES_17 - Machine Type: db-custom-2-8192 (2 vCPU, 8 GB RAM) - Region: us-central1 - Connection Name: gleb-test-short-001-486416:us-central1:allstrides-db The instance is configured with public IP enabled, IAM authentication turned on, and Data API access allowed.
2. Migruj dane
Instancja jest gotowa, więc możemy kontynuować przenoszenie wszystkich danych z dotychczasowej bazy danych SQLite do nowej bazy danych w chmurze.
W prompcie interfejsu wiersza poleceń Gemini wpisz to żądanie:
Now when we have our Cloud SQL instance ready it is time to move the data from our local database. Please migrate all the data to a new database in our Cloud SQL instance where the new user for application would be the database owner? Let's call the new database allstrides-db and the user allstrides. Please use our MCP tools whenever it is possible.
Podczas wykonywania interfejs wiersza poleceń Gemini przeanalizuje nasz model danych i poprosi o uprawnienia do uruchomienia niektórych poleceń. Ten proces nie jest w 100% deterministyczny, a niektóre kroki mogą się różnić.
Oto przykład, jak może się zacząć.
Oczekiwane dane wyjściowe:
✦ I will read the allstrides/README.md and allstrides/seed_data.sql files to understand the local database structure and data. ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ ReadFile allstrides/README.md │ │ │ │ │ │ ✓ ReadFile allstrides/seed_data.sql │ │ │ ╰─────────────────────────────────────────────────────────────────────────
Następnie po wykonaniu kilku czynności usługa Cloud SQL MCP przygotuje bazę danych i użytkownika, a potem przeprowadzi migrację danych. Jedną z pierwszych czynności, które wykonuje w bazie danych, jest dodanie Cię jako użytkownika IAM i przyznanie Ci uprawnień do tworzenia bazy danych i użytkownika. Musisz mieć wystarczające uprawnienia w Google Cloud jako IAM
Oto przykład niektórych kroków w procesie:
Oczekiwane dane wyjściowe:
✓ execute_sql (Cloud SQL MCP Server MCP Server) {"project":"gleb-test-short-001-486416","instance":"allstrides-db","sqlStatement":"CREATE DATABASE \"allstrides-db\";","database":"postgres"} │
│ │
│ { │
│ "messages": [ │
│ { │
│ "message": "Execution complete. 1 result set(s) returned.", │
│ "severity": "INFO" │
│ } │
│ ], │
│ "metadata": { │
│ "sqlStatementExecutionTime": "0.075591388s" │
│ }, │
│ "results": [ │
│ {} │
│ ] │
│ } │
│
3. Wdrażanie aplikacji w Cloud Run
Baza danych została utworzona, a dane aplikacji lokalnej zostały przeniesione do bazy danych Cloud SQL. Możesz już wdrożyć aplikację w Cloud Run. Podczas wdrażania będziesz używać kombinacji pakietu Google Cloud SDK do tworzenia obrazu w Google Cloud, a następnie wdrażać go za pomocą Cloud Run MCP.
W interfejsie wiersza poleceń Gemini uruchom ten prompt:
Now, when all the data is successfully migrated to our Cloud SQL instance allstrides-db we can migrate our allstrides application to Cloud Run and deploy using my Cloud SQL database. Please put the username and the password for my database user user to Secret Manager to not show openly in Cloud Run.
Let's build the image first and then use MCP to create the Cloud Run service.
Podczas wykonywania skrypt sprawdzi interfejsy API, przygotuje dane dla usługi Secret Manager i utworzy wymagane obiekty tajne. Zaktualizuje też aplikację, aby działała z bazą danych PostgreSQL, i doda niezbędne moduły npm.
Po utworzeniu obrazu i umieszczeniu go w Artifact Registry usługa MCP wdraża aplikację w Cloud Run.
Oto przykład wywołania Cloud Run MCP
Oczekiwane dane wyjściowe:
✦ I will deploy the 'allstrides' service to Cloud Run using the deploy_service_from_image tool. I will configure the environment variables and map the
database credentials from Secret Manager. Note that the MCP tool's schema does not explicitly expose the Cloud SQL instance attachment parameter, which is
typically required for the Unix socket connection (/cloudsql/...) to work. I will proceed with the deployment as requested, but if the database connection
fails due to the missing instance attachment, we may need to use gcloud to update that specific configuration.
╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Action Required 1 of 1 │
│ │
│ ? deploy_service_from_image (CloudRun MCP Server) {"service":{"invokerIamDisabled":true,"name":"projects/gleb-test-short-001-486416/locations/us-centra... │
│ │
│ MCP Server: CloudRun │
│ Tool: deploy_service_from_image │
│ Allow execution of MCP tool "deploy_service_from_image" from server "CloudRun"? │
│ │
│ ● 1. Allow once │
│ 2. Allow tool for this session │
│ 3. Allow all server tools for this session │
│ 4. No, suggest changes (esc) │
│ │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Dokładna ścieżka do wykonania wszystkich operacji może się różnić w zależności od wykonania. Agenci AI wybierają ścieżkę na podstawie kontekstu, danych wyjściowych polecenia i wielu innych zmiennych. Na tym polega siła oprogramowania opartego na AI – może ono reagować, dostosowywać podejście i ponawiać próby wykonania zadań, aby osiągnąć zamierzone rezultaty.
Aplikacja allstrides powinna być teraz wdrożona i uruchomiona w Cloud Run oraz połączona z bazą danych Cloud SQL.
Oto co możesz zobaczyć na końcu.
Oczekiwane dane wyjściowe:
✦ The application allstrides has been successfully migrated to Cloud Run and is connected to the Cloud SQL database allstrides-db.
Deployment Details:
* Service URL: https://allstrides-812263612774.us-central1.run.app
* Database: allstrides-db (PostgreSQL)
* Database User: allstrides (Password updated and stored in Secret Manager)
* Secrets: db-user and db-pass are mounted as environment variables.
* Region: us-central1
Steps Taken:
1. Database Configuration:
* Updated the allstrides database user password.
* Created db-user and db-pass secrets in Google Cloud Secret Manager.
* Updated database.ts to support PostgreSQL connections via Cloud SQL socket.
2. Build:
* Built the container image gcr.io/gleb-test-short-001-486416/allstrides using Cloud Build.
3. Deployment:
* Initiated deployment using the MCP deploy_service_from_image tool.
* Granted the Secret Manager Secret Accessor role to the Cloud Run service account.
* Attached the Cloud SQL instance connection using gcloud (as the MCP tool currently lacks this specific configuration parameter).
The application is now serving traffic and successfully connected to the database.
Gdy otworzysz podany adres URL w przeglądarce, powinna wyświetlić się strona aplikacji.

Wszystkie nasze wydarzenia powinny być tam widoczne.

Gratulacje! Udało Ci się przenieść lokalną aplikację do chmury za pomocą interfejsu wiersza poleceń Gemini i usług zdalnych MCP Google Cloud. Wdrożenie zostało zakończone i można usunąć wszystkie zasoby.
8. Czyszczenie środowiska
Najprostszym sposobem na wyczyszczenie środowiska jest poproszenie interfejsu wiersza poleceń Gemini o usunięcie wszystkich utworzonych komponentów. Powinien zachować w kontekście wszystkie komponenty. Jeśli jednak wylogujesz się i nie masz zapisanej historii, możesz spróbować bardziej precyzyjnie poprosić o wyczyszczenie usługi Cloud Run, obrazu i instancji Cloud SQL. Aby usunąć usługę, należy uwierzytelnić użytkownika, który ma wymagane uprawnienia i będzie używać polecenia gcloud.
Oto przykład promptu
Now, when we've tested the application can you please delete the created Cloud Run service, the image we've built and the Cloud SQL instance we've created in the project.
Po usunięciu możesz użyć zdalnych usług MCP, aby sprawdzić, czy usługa Cloud Run lub instancja Cloud SQL została usunięta.
Can you please list all Cloud SQL instances in the project and Cloud Run services in the project.
Na końcu powinien pojawić się komunikat podobny do tego:
Oczekiwane dane wyjściowe:
✦ There are currently no Cloud SQL instances or Cloud Run services (in us-central1) in the project gleb-test-short-001-486416.
To już wszystkie kroki w tym module.
9. Gratulacje
Gratulujemy ukończenia ćwiczenia.
Ścieżka szkoleniowa Google Cloud
Omówione zagadnienia
- Konfigurowanie interfejsu Gemini CLI do pracy ze zdalnymi platformami MCP Google Cloud
- Jak korzystać z Development KnowledgeMCP
- Jak używać Cloud SQL MCP do przenoszenia danych do chmury
- Jak używać Cloud Run MCP do wdrażania aplikacji w chmurze
- Jak korzystać z interfejsu wiersza poleceń Gemini w Google Cloud Shell
10. Ankieta
Dane wyjściowe: