1. Wprowadzenie
Witamy! Z tego ćwiczenia dowiesz się, jak ulepszyć agentów AI za pomocą serwerów Google Managed Model Context Protocol (MCP).
Model Context Protocol (MCP) to standard open source, który umożliwia modelom AI bezpieczne i wydajne łączenie się z zewnętrznymi źródłami danych i narzędziami. Większość implementacji MCP działa lokalnie na Twoim komputerze, ale Google udostępnia zarządzane zdalne serwery MCP. Są to w pełni hostowane punkty końcowe klasy korporacyjnej, które umożliwiają agentom bezpośrednią interakcję z infrastrukturą w chmurze Google Cloud bez konieczności zarządzania kodem po stronie serwera ani kontenerami.
Zalety „zarządzanego”
W przeciwieństwie do lokalnych serwerów MCP, które używają standardowego wejścia/wyjścia (stdio), zarządzane serwery Google korzystają z HTTP z możliwością przesyłania strumieniowego. Ta architektura zapewnia:
- Brak infrastruktury: nie trzeba udostępniać ani skalować serwerów.
- Bezpieczeństwo od samego początku: natywna integracja z usługami Google Cloud IAM i logami kontrolnymi.
- Skalowanie bezstanowe: płynna interakcja za pomocą standardowych systemów równoważenia obciążenia i serwerów proxy.
Czego się nauczysz
- Jak włączyć i uwierzytelnić zarządzane serwery MCP.
- Jak używać serwera MCP Cloud Logging jako podstawy.
- Jak aranżować wiele serwerów MCP (Developer Knowledge, Firestore itp.), aby tworzyć autonomiczne przepływy pracy.
Czego potrzebujesz
- projekt Google Cloud z włączonymi płatnościami;
- Znajomość konsoli Google Cloud i interfejsu
gcloudCLI. - Google Cloud Shell (interfejs wiersza poleceń Gemini jest tu preinstalowany).
To ćwiczenie jest przeznaczone dla użytkowników i deweloperów na wszystkich poziomach zaawansowania (w tym dla początkujących).
Problemy z raportowaniem
Podczas wykonywania ćwiczeń w tym laboratorium i pracy z Antigravity możesz napotkać problemy.
Jeśli masz problemy z codelabem (literówki, nieprawidłowe instrukcje), zgłoś błąd, klikając przycisk Report a mistake w lewym dolnym rogu tego codelabu:

2. Zanim zaczniesz
W tym kroku przygotujesz środowisko Google Cloud. Wszystkie zadania wykonamy w Google Cloud Shell, które udostępnia trwały, wstępnie skonfigurowany terminal.
Aktywowanie Cloud Shell
- Otwórz konsolę Google Cloud.
- W prawym górnym rogu kliknij ikonę Aktywuj Cloud Shell.
- Po rozpoczęciu sesji terminala autoryzuj prompt, jeśli pojawi się odpowiednia prośba.
Ustawianie identyfikatora projektu
Sprawdź, czy Cloud Shell wskazuje prawidłowy projekt:
# Set your active project
gcloud config set project YOUR_PROJECT_ID
# Verify the setting
gcloud config list project
Włączanie podstawowych interfejsów API
Zarządzane serwery MCP wymagają włączenia zarówno interfejsu API produktu bazowego, jak i interfejsu MCP. Aby włączyć backend Cloud Logging (nasz punkt odniesienia w tym laboratorium), uruchom to polecenie:
# Enable the Cloud Logging API and its MCP interface
gcloud services enable logging.googleapis.com
gcloud beta services mcp enable logging.googleapis.com
Uwaga: zarządzane usługi MCP są obecnie dostępne w wersji beta. Aby je włączyć, musisz użyć komponentu gcloud beta.
Konfigurowanie domyślnego uwierzytelniania aplikacji (ADC)
Interfejs wiersza poleceń Gemini używa Twojej tożsamości użytkownika do komunikacji z serwerami MCP. Przyznaj agentowi uprawnienia do działania w Twoim imieniu:
gcloud auth application-default login
Otwórz adres URL w terminalu, zaloguj się i wklej kod autoryzacji z powrotem do Cloud Shell.
Przypisywanie podstawowych ról uprawnień
Zarządzane serwery MCP korzystają z dwuwarstwowego modelu zabezpieczeń. Musisz otworzyć 2 konkretne „bramy”:
- Gate 1 (MCP Access): rola, która umożliwia wywoływanie protokołu.
- Brama 2 (dostęp do usługi): rola, która umożliwia wyświetlanie danych (np. logów).
Aby przyznać sobie wymagany dostęp, uruchom to polecenie:
export PROJECT_ID=$(gcloud config get-value project)
export USER_EMAIL=$(gcloud config get-value account)
# Gate 1: Permission to use the MCP protocol
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$USER_EMAIL" \
--role="roles/mcp.toolUser"
# Gate 2: Permission to view the actual logs
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$USER_EMAIL" \
--role="roles/logging.viewer"
3. Podstawy: łączenie pierwszego serwera MCP
W tym kroku połączesz agenta AI (interfejs wiersza poleceń Gemini) z serwerem MCP Google Cloud Logging. To nasza „podstawa”, ponieważ umożliwia agentowi obserwowanie w czasie rzeczywistym tego, co dzieje się w Twoim projekcie.
Zadanie 1. Skonfiguruj serwer MCP logowania
Interfejs wiersza poleceń Gemini używa pliku settings.json do zarządzania połączeniami. Musisz edytować ten plik (znajdujący się w folderze ~/.gemini), aby dodać ten fragment kodu w bloku mcpServers. Zastąp YOUR_PROJECT_ID identyfikatorem projektu:
"logging-mcp": {
"httpUrl": "https://logging.googleapis.com/mcp",
"authProviderType": "google_credentials",
"oauth": {
"scopes": [
"https://www.googleapis.com/auth/logging.read"
]
},
"timeout": 30000,
"headers": {
"x-goog-user-project": "YOUR_PROJECT_ID"
}
}
Uwaga: nagłówek x-goog-user-project jest wymagany w przypadku zarządzanych serwerów MCP, aby mieć pewność, że wykorzystanie interfejsu API i płatności są prawidłowo przypisane do Twojego projektu.
Zadanie 2. Symulowanie aktywności w projekcie (tworzenie logów)
Jeśli Twój projekt jest nowy lub nieaktywny, może nie zawierać żadnych ostatnich „interesujących” logów. Użyjmy interfejsu gcloud, aby wstrzyknąć kilka niestandardowych wpisów, dzięki czemu agent będzie miał coś do znalezienia.
Uruchom te polecenia kolejno, aby zasymulować sekwencję zdarzeń:
# 1. Simulate a standard system start
gcloud logging write mcp-test-log "System boot sequence initiated" --severity=INFO
# 2. Simulate a warning about resource limits
gcloud logging write mcp-test-log "High memory pressure detected in zone us-central1-a" --severity=WARNING
# 3. Simulate a critical authentication failure
gcloud logging write mcp-test-log "ERROR: Failed to connect to Cloud SQL. Permission Denied." --severity=ERROR
Zadanie 3. Sprawdź narzędzia w interfejsie wiersza poleceń Gemini
Zanim zaczniemy rozmawiać, sprawdźmy, czy agent „widzi” narzędzia udostępniane przez serwer logowania. Uruchom interfejs wiersza poleceń Gemini:
gemini
W wierszu poleceń interfejsu wiersza poleceń Gemini (>) uruchom polecenie list:
/mcp list
Punkt kontrolny weryfikacji: w sekcji logging-mcp powinien być widoczny stan Gotowe i dostępnych około 6 narzędzi, w tym list_log_entries.
Zadanie 4. Pierwszy prompt dotyczący infrastruktury na żywo
Teraz poprośmy agenta o znalezienie utworzonych przez nas logów. Ponieważ wcześniej przyznano Ci rolę roles/logging.viewer, agent może teraz „skontaktować się” z Tobą i odczytać stan Twojego projektu.
Wpisz w interfejsie wiersza poleceń Gemini ten prompt:
Show me the 3 most recent log entries from the log named 'mcp-test-log'. What is the highest severity issue you see?
Obserwuj pracownika obsługi klienta:
- Agent może poprosić Cię o podanie identyfikatora projektu Google Cloud. Podaj te informacje.
- Określi, że potrzebuje narzędzia
list_log_entries. - Pojawi się prośba o zezwolenie na uruchomienie narzędzia. Wybierz 1. Tak, zezwól raz.
- Przeanalizuje odpowiedź JSON i poinformuje Cię o symulowanym przez nas błędzie Cloud SQL Permission Denied.
4. Ścieżka A: mózg (Developer Knowledge MCP)
W tej ścieżce nadasz agentowi „mózg”, łącząc go z serwerem MCP Google Developer Knowledge.
Jednym z największych zagrożeń związanych z agentami AI są halucynacje, czyli podawanie nieaktualnych poleceń interfejsu wiersza poleceń lub wycofanych parametrów interfejsu API. Serwer MCP rozwiązuje ten problem, opierając agenta na oficjalnym, aktualnym korpusie dokumentacji dla deweloperów Google (obejmującym Google Cloud, Firebase, Androida i inne usługi).
Zadanie 1. Włącz usługi wiedzy
Podobnie jak w przypadku kroku podstawowego musimy włączyć interfejs API backendu i punkt końcowy usługi MCP.
# 1. Enable the Developer Knowledge API
gcloud services enable developerknowledge.googleapis.com
# 2. Enable the MCP Server interface
gcloud beta services mcp enable developerknowledge.googleapis.com
Zadanie 2. Udostępnianie klucza interfejsu API z ograniczeniami
Platforma wiedzy dla deweloperów MCP używa do uwierzytelniania kluczy interfejsu API. Ze względów bezpieczeństwa utworzymy klucz i ograniczymy jego użycie tak, aby można go było używać tylko w przypadku tego konkretnego interfejsu API.
- Aby utworzyć i pobrać klucz, uruchom ten skrypt:
# Create the restricted API key
gcloud alpha services api-keys create \
--display-name="MCP-Knowledge-Key" \
--api-target service=developerknowledge.googleapis.com
# Wait a few seconds for the key to propagate, then fetch the string
gcloud alpha services api-keys get-key-string \
$(gcloud alpha services api-keys list \
--filter="displayName='MCP-Knowledge-Key'" \
--format="value(name)") \
--format="value(keyString)"
- Skopiuj długi ciąg znaków zwrócony przez drugie polecenie. To Twój
YOUR_API_KEY.
Zadanie 3. Konfigurowanie interfejsu wiersza poleceń Gemini
Teraz zarejestruj serwer MCP Knowledge w agencie. Dzięki temu agent może przeszukiwać oficjalne dokumenty, gdy napotka pytanie techniczne, na które nie może odpowiedzieć ze 100% pewnością.
Dodaj ten fragment kodu do sekcji mcpServers w pliku ~/.gemini/settings.json, zastępując YOUR_API_KEY skopiowanym przed chwilą ciągiem znaków:
"developer-knowledge-mcp": {
"httpUrl": "https://developerknowledge.googleapis.com/mcp",
"headers": {
"X-Goog-Api-Key": "YOUR_API_KEY"
}
}
Zadanie 4. Test zapobiegający halucynacjom
Sprawdźmy, czy agent „szuka informacji” zamiast „zgadywać”.
Uruchom interfejs wiersza poleceń Gemini:
gemini
Sprawdź, czy serwer jest gotowy: wpisz /mcp list. Powinna się wyświetlić ikona google-developer-knowledge z 2 narzędziami (search_documents, get_document).
Prompt: poproś agenta o znalezienie konkretnego, nowoczesnego polecenia.
I want to create a Google Cloud Storage bucket using the modern gcloud storage command. Search the official documentation for the exact syntax and show me an example for a bucket in the 'us-central1' region.
Na co zwrócić uwagę:
- Gemini poprosi o uprawnienia do korzystania z
search_documents. - Następnie prawdopodobnie wywoła
get_document, aby odczytać znalezioną stronę. - Ostateczna odpowiedź powinna zawierać polecenie
gcloud storage buckets create ...zaczerpnięte bezpośrednio z dokumentacji.
5. Ścieżka B. Triage (autonomiczne rozwiązywanie problemów)
Wymagania wstępne: aby agent mógł wyszukać rozwiązania, musisz ukończyć ścieżkę A: Mózg.
W tym module połączysz oczy (MCP Cloud Logging) i mózg (MCP Developer Knowledge) agenta, aby utworzyć autonomiczną pętlę rozwiązywania problemów.
Zamiast ręcznie kopiować kody błędów do wyszukiwarki, możesz wydać agentowi jedno polecenie, aby przeskanował projekt pod kątem błędów, wyszukał oficjalne rozwiązanie i wygenerował raport z proponowanymi poprawkami.
Zadanie 1. Symulowanie „złego dnia” w GCP
Aby zobaczyć, jak działa autonomiczne rozwiązywanie problemów, potrzebujemy realistycznego zestawu awarii. Użyjemy skryptu w Pythonie, aby wstrzyknąć do Twoich logów różne przeszkody infrastrukturalne – od błędów odmowy uprawnień po problemy z limitami.
- W Cloud Shell utwórz wybrany folder i przejdź do niego.
- utwórz plik o nazwie
simulate_errors.py:
nano simulate_errors.py
- Wklej do edytora ten kod:
import argparse
from google.cloud import logging
def simulate_errors(project_id):
client = logging.Client(project=project_id)
logger = client.logger("mcp-scenario-logger")
print(f"Simulating realistic errors for project: {project_id}...")
# 1. GCS Permission Error
logger.log_text("ERROR: GCS Upload failed for 'gs://my-app-bucket/data.json'. Status: 403 Forbidden. Missing 'storage.objects.create' for service account.", severity="ERROR")
# 2. Cloud Run Startup Error
logger.log_text("ERROR: Cloud Run service 'api-gateway' failed to start. Container failed to listen on port 8080. Check 'Cloud Run container startup requirements'.", severity="ERROR")
# 3. Secret Manager Access Error
logger.log_text("ERROR: Access denied to secret 'API_KEY'. The identity lacks 'secretmanager.versions.access'.", severity="ERROR")
print("Log entries written to 'mcp-scenario-logger'.")
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--project", required=True)
args = parser.parse_args()
simulate_errors(args.project)
- Aby zapisać zmiany i zamknąć powłokę, naciśnij Ctrl+O, Enter i
Ctrl+X. - Zainstaluj bibliotekę
Google Cloud Loggingi uruchom skrypt:
python -m venv mcp_env
source mcp_env/bin/activate
pip install google-cloud-logging
python simulate_errors.py --project $(gcloud config get-value project)
Zadanie 2. Wykonaj pętlę autonomiczną
Teraz wyślemy złożony prompt, który nakazuje Gemini jednoczesne zarządzanie obydwoma serwerami MCP.
Uruchom interfejs wiersza poleceń Gemini:
gemini
Wpisz w agencie ten „główny prompt”:
I need to troubleshoot recent issues in my project. Perform the following autonomous loop:
Step 1 : Retrieval: Use the Logging MCP to fetch the 5 most recent ERROR entries from the log 'mcp-scenario-logger'.
Step 2 : Iteration: For every unique error found, extract the service and specific error message.
Step 3 : Research: Use the Developer Knowledge MCP to find the official resolution or gcloud command to fix each issue.
Step 4 : Resolution: Consolidate everything into a markdown table with columns: | Service | Error Summary | Recommended Fix |.
Czego możesz się spodziewać
Oglądasz teraz proces oparty na agentach w czasie rzeczywistym. Pracownik obsługi klienta:
- Zadzwoń pod numer
list_log_entries, aby zobaczyć symulację „złego dnia”. - Analizuj tekst, aby sprawdzić, czy usługi GCS, Cloud Run i Secret Manager działają nieprawidłowo.
- Wywołaj
search_documentsiget_documentdla każdej z tych usług, aby znaleźć odpowiednie role uprawnień lub poprawki konfiguracji. - Wyświetli Ci tabelę strukturalną podobną do tej (rekomendacje mogą się różnić):
Usługa | Podsumowanie błędów | Zalecane rozwiązanie |
Cloud Storage | Błąd 403 – dostęp zabroniony podczas przesyłania | Przyznaj kontu usługi uprawnienia |
Cloud Run | Nie udało się nasłuchiwać na porcie 8080 | Upewnij się, że aplikacja wiąże się z adresem 0.0.0.0 na porcie zdefiniowanym przez |
Secret Manager | Brak roli dostępu do wersji | Przypisz |
6. Ścieżka C. Dane (MCP Firestore)
W tej ścieżce nauczysz się zarządzać dokumentową bazą danych NoSQL za pomocą serwera Firestore MCP, używając tylko języka naturalnego.
Firestore to elastyczna i skalowalna baza danych, ale zarządzanie nią często wymaga pisania złożonego kodu pakietu SDK lub poruszania się po konsoli. Dzięki MCP Twój agent staje się administratorem bazy danych, który może wypełniać dane, wykonywać zapytania dotyczące rekordów, a nawet przeprowadzać złożone migracje schematów za pomocą czatu.
Zadanie 1. Włącz usługi Firestore
Najpierw włącz interfejs Firestore API i odpowiedni punkt końcowy MCP.
# 1. Enable the Firestore API
gcloud services enable firestore.googleapis.com
# 2. Enable the MCP Server interface
gcloud beta services mcp enable firestore.googleapis.com
Zadanie 2. Przypisywanie ról uprawnień Firestore
Aby uruchamiać zapytania, Twoja tożsamość musi mieć specjalne uprawnienia wykraczające poza podstawowy dostęp do MCP.
# Grant Firestore User role
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$USER_EMAIL" \
--role="roles/datastore.user"
Zadanie 3. Utwórz dedykowaną testową bazę danych
Aby zapewnić bezpieczeństwo naszych eksperymentów, utworzymy dedykowaną bazę danych Firestore o nazwie mcp-lab-db.
gcloud firestore databases create --database=mcp-lab-db --location=nam5 --type=firestore-native
Zadanie 4. Konfigurowanie interfejsu wiersza poleceń Gemini
Dodaj serwer MCP Firestore do agenta. Dodaj tę konfigurację do sekcji mcpServers w pliku ~/.gemini/settings.json. Zastąp YOUR_PROJECT_ID identyfikatorem projektu:
"firestore-mcp": {
"httpUrl": "https://firestore.googleapis.com/mcp",
"authProviderType": "google_credentials",
"oauth": {
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
},
"timeout": 30000,
"headers": {
"x-goog-user-project": "YOUR_PROJECT_ID"
}
}
Zadanie 5. Operacje na bazie danych w języku naturalnym
Uruchom interfejs wiersza poleceń Gemini i wykonaj kilka podstawowych operacji, aby sprawdzić połączenie.
Uruchom interfejs wiersza poleceń Gemini:
gemini
Sprawdź, czy serwer jest gotowy: wpisz /mcp list. Powinna się wyświetlić ikona firestore-mcp z kilkoma narzędziami (add_document, create_database, list_documents, etc).
Wypróbuj te prompty w podanej kolejności:
Dane początkowe:
In the 'mcp-lab-db' database, add three documents to a 'products' collection. Include a laptop (stock 5), a mouse (stock 25), and a keyboard (stock 8).
Zweryfikuj:
List all documents in the 'products' collection from the 'mcp-lab-db' database.
Wypróbuj inne prompty, które pomogą Ci zarządzać bazami danych i kolekcjami Firestore za pomocą języka naturalnego.
7. Ścieżka D: Intelligence (BigQuery i Mapy)
W tym module wyposażysz agenta w możliwość analizowania petabajtów danych i poznawania świata fizycznego za pomocą serwerów MCP BigQuery i Maps Grounding Lite.
Po zakończeniu tej sekcji Twój agent będzie w stanie tłumaczyć pytania w języku naturalnym na złożone zapytania SQL i udzielać porad geoprzestrzennych uwzględniających kontekst (np. czas podróży i pogoda), aby jego odpowiedzi były bardziej realistyczne.
Zadanie 1. Włącz usługi Intelligence Services
Włącz interfejsy API i MCP zarówno w przypadku BigQuery, jak i Map Google.
# 1. Enable product APIs
gcloud services enable bigquery.googleapis.com mapstools.googleapis.com
# 2. Enable MCP Server interfaces
gcloud beta services mcp enable bigquery.googleapis.com
gcloud beta services mcp enable mapstools.googleapis.com
Zadanie 2. Przypisz role IAM BigQuery
Aby uruchamiać zapytania, Twoja tożsamość musi mieć specjalne uprawnienia wykraczające poza podstawowy dostęp do MCP.
# Grant BigQuery Job User and Data Viewer roles
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$USER_EMAIL" \
--role="roles/bigquery.jobUser"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$USER_EMAIL" \
--role="roles/bigquery.dataViewer"
Zadanie 3. Udostępnianie klucza interfejsu API Map Google
W przeciwieństwie do innych usług, które opierają się wyłącznie na Uprawnieniach, serwer Maps Grounding Lite wymaga klucza interfejsu API do określania limitów i rozliczeń.
Utwórz klucz:
gcloud alpha services api-keys create --display-name="MCP-Maps-Key"
Pobierz ciąg znaków klucza:
# Wait a few seconds for the key to propagate, then fetch the string
gcloud alpha services api-keys get-key-string \
$(gcloud alpha services api-keys list \
--filter="displayName='MCP-Maps-Key'" \
--format="value(name)") \
--format="value(keyString)"
Skopiuj ciąg klucza, aby użyć go w następnym kroku.
Zadanie 4. Konfigurowanie interfejsu wiersza poleceń Gemini
Teraz zarejestruj oba serwery. Dodaj poniższe fragmenty kodu do sekcji mcpServers w pliku ~/.gemini/settings.json. Zastąp odpowiednio ciągi YOUR_PROJECT_ID i YOUR_MAPS_API_KEY.
"bigquery-mcp": {
"httpUrl": "https://bigquery.googleapis.com/mcp",
"authProviderType": "google_credentials",
"oauth": {
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
},
"timeout": 30000,
"headers": {
"x-goog-user-project": "YOUR_PROJECT_ID"
}
},
"maps-grounding-lite-mcp": {
"httpUrl": "https://mapstools.googleapis.com/mcp",
"headers": {
"X-Goog-Api-Key": "YOUR_MAPS_API_KEY"
}
}
Zadanie 5. Inteligencja w działaniu
Uruchom interfejs wiersza poleceń Gemini i przetestuj nowe funkcje „Intelligence”.
gemini
Sprawdź, czy serwer jest gotowy: wpisz /mcp list. Powinny być widoczne ikony bigquery-mcp i maps-grounding-lite-mcp z kilkoma narzędziami. .
Scenariusz 1. Silnik analityczny (BigQuery): poproś agenta o wysłanie zapytania do publicznego zbioru danych bez znajomości SQL:
Run a query to count the number of penguins on each island in the BigQuery public dataset ml_datasets.penguins.
Scenariusz 2. Kontekst geoprzestrzenny (Mapy) Poproś agenta o zaplanowanie wycieczki w świecie rzeczywistym:
I am planning a drive from Mumbai to Pune tomorrow morning. Based on current weather and routing, what should I expect in terms of travel time and what should I carry?
Na co zwrócić uwagę:
- W przypadku BigQuery agent wywoła funkcję
execute_sql, aby wykryć schemat i uruchomić zapytanie. - W przypadku Map będzie koordynować
lookup_weatheri compute_routes, aby zapewnić Ci przydatny plan podróży oparty na faktach.
8. Wzmacnianie zabezpieczeń: bezpieczeństwo środowiska produkcyjnego i IAM
W tym ostatnim kroku przejdziesz od korzystania z szerokich uprawnień „Właściciel” do modelu zaawansowanej ochrony wielowarstwowej.
Agenty AI są z natury „pomocne”. Jeśli ograniczysz dostęp do narzędzia na poziomie interfejsu, inteligentny agent może spróbować obejść to ograniczenie, uruchamiając zamiast tego polecenie powłoki. Aby naprawdę zabezpieczyć infrastrukturę, musisz utworzyć wyraźne granice za pomocą Google Cloud IAM.
Model zabezpieczeń dwuwarstwowych
Aby wykonać dowolne działanie, agent musi przejść przez 2 bramki:
- Brama 1 (brama MCP): czy tożsamość ma
roles/mcp.toolUser? (Zezwolenie na używanie protokołu). - Brama 2 (brama usługi): czy tożsamość ma określoną rolę w usłudze (np.
roles/datastore.viewer)? (Uprawnienie do wyświetlania danych).
Zadanie 1. Warstwa 1 – filtrowanie po stronie klienta (excludeTools)
Pierwszą warstwą ochrony jest ukrycie narzędzi przed agentem, aby nawet nie „myślał” o ich użyciu.
- Otwórz ustawienia interfejsu wiersza poleceń Gemini w edytorze Cloud Shell:
cloudshell edit ~/.gemini/settings.json
- Znajdź blok firestore-mcp i dodaj dyrektywę
excludeTools, aby ukryć działania destrukcyjne:
"firestore-mcp": {
"httpUrl": "https://firestore.googleapis.com/mcp",
"excludeTools": ["delete_database", "update_database", "delete_document"],
...
}
Zapisz plik i ponownie uruchom interfejs wiersza poleceń Gemini. Uruchom /mcp list i zauważ, że narzędzia zniknęły.
Zadanie 2. Warstwa 2 – przewaga infrastrukturalna (ochroniarz IAM)
Filtrowanie po stronie klienta to „miękkie” zabezpieczenie. Jeśli poprosisz agenta o „Usunięcie bazy danych Firestore”, a narzędzie jest ukryte, może on spróbować uruchomić gcloud firestore databases delete. Aby temu zapobiec, używamy konta usługi o minimalnych uprawnieniach.
Utwórz konto usługi z uprawnieniami „Tylko do odczytu”:
# Create the service account
gcloud iam service-accounts create mcp-reader-sa --display-name="MCP Reader Only"
# Grant ONLY the necessary roles (Gate 1 + Gate 2)
export PROJECT_ID=$(gcloud config get-value project)
SA_EMAIL="mcp-reader-sa@$PROJECT_ID.iam.gserviceaccount.com"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/mcp.toolUser"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/datastore.viewer"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/aiplatform.user"
Wygeneruj i aktywuj klucz:
gcloud iam service-accounts keys create reader-key.json --iam-account=$SA_EMAIL
export GOOGLE_APPLICATION_CREDENTIALS=$(pwd)/reader-key.json
Zadanie 3. Test „Pomocny agent”
Sprawdźmy teraz, czy agent może obejść nasze zabezpieczenia.
Najpierw aktywujemy konto usługi, aby nawet w przypadku, gdy agent powróci do używania polecenia gcloud, działał w ramach tożsamości konta usługi, które właśnie utworzyliśmy.
Aktywuj konto usługi:
Uruchom to polecenie, zastępując [PATH_TO_KEY_FILE] rzeczywistą ścieżką do pliku klucza JSON (np. reader-key.json).
gcloud auth activate-service-account --key-file=[PATH_TO_KEY_FILE]
Potwierdź zmianę:
Po uruchomieniu polecenia możesz sprawdzić, czy konto usługi jest aktywne, uruchamiając to polecenie:
gcloud auth list
W wyniku zobaczysz konto usługi jako aktywne dane logowania.
Uruchom interfejs wiersza poleceń Gemini:
gemini
Wpisz tego prompta:
I want to delete the 'mcp-lab-db' firestore database. If the tool is missing, try using the gcloud firestore command in the terminal.
Co się dzieje?
- Agent najpierw spróbuje użyć narzędzia delete_database na serwerze MCP Firestore. Nie powiedzie się z powodu braku uprawnień.
- Następnie próbuje „pomóc”, wracając do narzędzia
run_shell_command, aby użyć polecenia gcloud firestore.
Wynik:
Polecenie kończy się niepowodzeniem z błędem Forbidden (Zabroniony). Ponieważ agent działa w ramach tożsamości mcp-reader-sa, nie ma uprawnienia datastore.databases.delete. IAM to ostateczne zabezpieczenie. Niezależnie od tego, jak agent próbuje uzyskać dostęp do zasobu, „ochroniarz” na poziomie interfejsu Google Cloud API zablokuje żądanie.
Wróć na swoje konto użytkownika:
Aby wrócić do konta użytkownika, wpisz to polecenie:
gcloud config set account YOUR_EMAIL_ADDRESS
9. Czyszczenie
Aby uniknąć niepożądanych opłat, usuń zasoby testowe:
# Delete the Firestore database
gcloud firestore databases delete --database=mcp-lab-db
# Remove the service account
gcloud iam service-accounts delete mcp-reader-sa@$PROJECT_ID.iam.gserviceaccount.com
10. Podsumowanie
Gratulacje! Udało Ci się przejść przez cały stos serwerów MCP zarządzanych przez Google.
Zaczęliśmy od „pnia” laboratorium, czyli od podstawowego połączenia z usługą Cloud Logging. Następnie rozwinęliśmy tę koncepcję, tworząc modułowe „Przygody”, które pozwalają ugruntować wiedzę agenta, zautomatyzować złożone pętle rozwiązywania problemów, migrować dane w Firestore i wyodrębniać informacje z BigQuery oraz Map.
Co najważniejsze, na koniec osadziłeś agenta w podstawach bezpieczeństwa produkcji. Udowodniono, że chociaż agent może być „pomocny” do przesady, Google Cloud IAM jest najlepszym ochroniarzem, który dba o to, aby Twoje autonomiczne przepływy pracy zawsze przestrzegały zasady najmniejszych uprawnień.
Podsumowanie
- Zarządzane = skalowalne: połączono się z narzędziami na poziomie infrastruktury za pomocą protokołu HTTP z możliwością przesyłania strumieniowego bez wdrażania ani jednego serwera.
- Powiązanie ze źródłem informacji jest obowiązkowe: zastąpiono „zgadywanie” LLM wieloplatformowym komponentem wiedzy dewelopera, dzięki czemu agent używa aktualnych i prawidłowych poleceń.
- Orkiestracja to siła: prawdziwa magia dzieje się wtedy, gdy agent łączy wiele serwerów MCP, aby rozwiązać jeden problem biznesowy.