Начало работы с серверами Google MCP

1. Введение

Добро пожаловать! В этом практическом занятии вы узнаете, как значительно повысить эффективность ваших ИИ-агентов, используя серверы Google Managed Model Context Protocol (MCP) .

Протокол контекста модели (MCP) — это стандарт с открытым исходным кодом, позволяющий моделям ИИ безопасно и эффективно подключаться к внешним источникам данных и инструментам. Хотя большинство реализаций MCP работают локально на вашем компьютере, Google предоставляет управляемые удаленные серверы MCP . Это полностью размещенные, готовые к использованию в корпоративной среде конечные точки, которые позволяют вашим агентам напрямую взаимодействовать с инфраструктурой Google Cloud без необходимости управления серверным кодом или контейнерами.

Преимущество «управляемого управления»

В отличие от локальных MCP-серверов, использующих стандартный ввод/вывод (stdio), управляемые серверы Google используют потоковый HTTP . Такая архитектура обеспечивает:

  • Отсутствие инфраструктуры: не требуется выделение или масштабирование серверов.
  • Безопасность по умолчанию: встроенная интеграция с Google Cloud IAM и журналами аудита.
  • Масштабирование без сохранения состояния: Бесперебойное взаимодействие через стандартные балансировщики нагрузки и прокси-серверы.

Что вы узнаете

  • Как включить и аутентифицировать управляемые серверы MCP.
  • Как использовать сервер Cloud Logging MCP в качестве базовой платформы.
  • Как организовать работу нескольких серверов MCP (Developer Knowledge, Firestore и т. д.) для создания автономных рабочих процессов.

Что вам понадобится

  • Проект Google Cloud с включенной функцией выставления счетов .
  • Знание консоли Google Cloud и интерфейса командной строки gcloud .
  • Google Cloud Shell (здесь предварительно установлен Antigravity CLI).

Этот практический семинар предназначен для пользователей и разработчиков всех уровней (включая начинающих).

Сообщение о проблемах

В процессе работы над лабораторной работой и с программой Antigravity вы можете столкнуться с проблемами.

По вопросам, связанным с этим руководством (опечатки, неверные инструкции), пожалуйста, сообщите об ошибке, используя кнопку Report a mistake в левом нижнем углу этого руководства:

b06b582bcd847f6d.png

2. Перед началом работы

На этом этапе вы подготовите свою среду Google Cloud. Все задачи будут выполняться в Google Cloud Shell , который предоставляет постоянно доступный, предварительно настроенный терминал.

Активировать Cloud Shell

  1. Перейдите в консоль Google Cloud .
  2. Нажмите на значок «Активировать Cloud Shell» в правом верхнем углу.
  3. После запуска терминальной сессии подтвердите запрос, если он потребуется.

Укажите идентификатор вашего проекта.

Убедитесь, что ваша оболочка Cloud Shell указывает на правильный проект:

# Set your active project
gcloud config set project YOUR_PROJECT_ID

# Verify the setting
gcloud config list project

Включить API Foundation

Для работы управляемых серверов MCP необходимо включить как базовый API продукта, так и интерфейс MCP. Включение службы также включает базовый интерфейс MCP для этой службы.

Выполните следующую команду, чтобы включить бэкэнд облачного логирования (наш базовый уровень для этой лабораторной работы):

# Enable the Cloud Logging API and its MCP interface
gcloud services enable logging.googleapis.com

Настройка учетных данных приложения по умолчанию (ADC)

Antigravity CLI использует ваши учетные данные для связи с серверами MCP. Предоставьте агенту разрешение действовать от вашего имени:

gcloud auth application-default login

Перейдите по указанной в терминале ссылке, войдите в систему и вставьте код авторизации обратно в Cloud Shell.

Назначьте базовые роли IAM.

Управляемые серверы MCP используют двухуровневую модель безопасности. Для подтверждения личности или для открытия этих шлюзов необходимы два определенных шлюза :

  1. Gate 1 (MCP Access): Роль, позволяющая вызывать протокол.
  2. Вход 2 (Доступ к сервису): Роль, позволяющая просматривать данные (например, журналы).

Выполните следующие действия, чтобы предоставить себе необходимый доступ:

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. Основы: Подключение вашего первого сервера MCP

На этом этапе вы свяжете своего ИИ-агента (Antigravity CLI) с сервером Google Cloud Logging MCP . Это наша «основа», поскольку она позволяет агенту видеть, что происходит внутри вашего проекта в режиме реального времени.

Задание 1: Настройка сервера MCP для ведения журналов.

Antigravity CLI использует файл mcp_config.json для настройки серверов MCP. Вам потребуется отредактировать этот файл (находящийся в папке ~/.gemini/config ), добавив следующий фрагмент кода в блок mcpServers . Замените YOUR_PROJECT_ID на фактический идентификатор вашего проекта:

"logging-mcp": {
      "url": "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"
      }
}

Примечание : заголовок x-goog-user-project необходим для управляемых серверов MCP, чтобы гарантировать корректное отнесение использования API и выставления счетов к вашему проекту.

Задание 2: Моделирование проектной деятельности (создание журналов)

Если ваш проект новый или простаивает, в нем может не быть никаких недавних «интересных» записей в логах. Давайте воспользуемся CLI gcloud , чтобы добавить несколько пользовательских записей, чтобы у агента было что искать.

Выполните эти команды по очереди, чтобы смоделировать последовательность событий:

# 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

Задание 3: Проверка инструментов в интерфейсе командной строки Antigravity.

Прежде чем начать общение, давайте убедимся, что агент может «видеть» инструменты, предоставляемые сервером логирования. Запустите интерфейс командной строки Antigravity:

agy

После входа в командную строку Antigravity ( > ), выполните команду list:

/mcp list

Контрольная точка проверки: Вы должны увидеть, что logging-mcp находится в состоянии «Готов» , и доступно примерно 6 инструментов , включая list_log_entries .

Задание 4: Ваше первое задание по использованию работающей инфраструктуры

Теперь давайте попросим агента найти только что созданные нами логи. Поскольку вы ранее предоставили роль roles/logging.viewer , агент теперь может "обратиться" и прочитать состояние вашего проекта.

Введите следующую команду в командную строку Antigravity:

Show me the 3 most recent log entries from the log named 'mcp-test-log'. What is the highest severity issue you see?

Наблюдайте за агентом:

  1. Возможно, агент запросит у вас идентификатор проекта Google Cloud. Пожалуйста, укажите его.
  2. Это позволит определить, что требуется инструмент list_log_entries .
  3. Программа запросит у вас разрешения на запуск инструментов. Пожалуйста, разрешите это.
  4. Программа проанализирует JSON-ответ и сообщит вам об ошибке «Cloud SQL Permission Denied», которую мы смоделировали.

4. Путешествие А: Мозг (Программа MCP для разработчиков)

В ходе этого проекта вы наделите своего агента «мозгом», подключив его к серверу Google Developer Knowledge MCP .

Одна из самых больших опасностей, связанных с агентами ИИ, — это галлюцинации , то есть уверенная передача устаревших команд CLI или неактуальных параметров API. Этот сервер MCP решает эту проблему, используя в качестве основы для агента официальную документацию Google для разработчиков (охватывающую Google Cloud, Firebase, Android и многое другое).

Задача 1: Внедрить сервисы управления знаниями.

Как и на первом этапе, нам необходимо включить бэкэнд API и конечную точку сервиса MCP.

# 1. Enable the Developer Knowledge API
gcloud services enable developerknowledge.googleapis.com

Задача 2: Предоставление ключа API с ограниченным доступом

В программе MCP для разработчиков используются ключи API для аутентификации. В целях безопасности мы создадим ключ и ограничим его использование, чтобы он мог работать только с этим конкретным API.

  1. Запустите следующий скрипт, чтобы создать и получить свой ключ:
# Create the restricted API key
gcloud 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 services api-keys list \
   --filter="displayName='MCP-Knowledge-Key'" \
   --format="value(uid)"
  1. Скопируйте длинную строку символов, возвращенную второй командой. Это ваш YOUR_API_KEY .

Задание 3: Настройка интерфейса командной строки Antigravity.

Теперь зарегистрируйте сервер Knowledge MCP у своего агента. Это позволит агенту осуществлять поиск в официальной документации всякий раз, когда он столкнется с техническим вопросом, на который не может ответить со 100% уверенностью.

Добавьте следующий фрагмент кода в раздел mcpServers в файле ~/.gemini/config/mcp_config.json , заменив YOUR_API_KEY скопированной строкой:

"developer-knowledge-mcp": {
      "url": "https://developerknowledge.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "YOUR_API_KEY"
      }
}

Задание 4: Тест на антигаллюцинаторность

Давайте убедимся, что агент теперь «проводит исследование», а не «угадывает».

Запуск интерфейса командной строки Antigravity:

agy

Убедитесь, что сервер готов: введите /mcp list . Вы должны увидеть google-developer-knowledge с тремя инструментами ( search_documents, answer_query and get_documents ).

Подсказка: Попросите агента найти конкретную современную команду.

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.

На что обратить внимание:

  • Убедитесь, что вы явно указываете сервер Developer Knowledge MCP, который необходимо вызвать. Gemini запросит разрешение на использование определенных инструментов.
  • В окончательный ответ следует включить команду gcloud storage buckets create ... , цитируемую непосредственно из документации.

5. Этап B: Первичная диагностика (автономное устранение неполадок)

Предварительное условие: Для прохождения этого задания необходимо завершить задание A: «Мозг» , чтобы агент мог изучить возможные решения проблемы.

В этом процессе вы объедините «глаза» (Cloud Logging MCP) и «мозг» (Developer Knowledge MCP) вашего агента, чтобы создать автономный цикл устранения неполадок .

Вместо того чтобы вручную копировать коды ошибок в поисковую систему, вы дадите агенту одну команду на проверку вашего проекта на наличие ошибок, поиск официального решения и создание отчета с инструкциями по устранению проблемы.

Задание 1: Смоделируйте «неудачный день» в GCP.

Чтобы увидеть возможности автономного устранения неполадок, нам необходим реалистичный набор сбоев. Мы будем использовать скрипт на Python для внедрения различных проблем инфраструктуры — от ошибок отказа в доступе до проблем с квотами — непосредственно в ваши журналы.

  1. В Cloud Shell создайте папку по своему выбору и перейдите в неё.
  2. Создайте файл с именем simulate_errors.py :
nano simulate_errors.py
  1. Вставьте следующий код в редактор:
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)
  1. Нажмите Ctrl+O, Enter и Ctrl+X для сохранения и выхода.
  2. Установите библиотеку Google Cloud Logging и запустите скрипт:
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)

Задание 2: Выполнение автономного цикла

Теперь мы отправим сложную команду, которая даст указание Antigravity CLI одновременно управлять обоими серверами MCP.

Запуск интерфейса командной строки Antigravity:

agy

Введите в терминал следующий "Основной запрос":

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 |.

Чего ожидать

Вы наблюдаете за рабочим процессом Agentic в режиме реального времени. Агент выполнит следующие действия:

  1. Вызовите функцию list_log_entries , чтобы увидеть "неудачный день", который мы только что смоделировали.
  2. Проанализируйте текст, чтобы определить, что GCS, Cloud Run и Secret Manager не работают.
  3. Для поиска соответствующих ролей IAM или исправлений конфигурации вызовите функции search_documents и get_document для каждой из этих служб.
  4. Представляем вам структурированную таблицу, похожую на эту (рекомендации могут отличаться):

ce3907897f1e05e7.png

6. Путешествие C: Данные (Firestore MCP)

В этом путешествии вы будете использовать Firestore MCP Server для управления документоориентированной базой данных NoSQL, используя исключительно естественный язык.

Firestore — это гибкая и масштабируемая база данных, но управление ею часто требует написания сложного кода SDK или работы с консолью. С MCP ваш агент становится администратором базы данных , способным заполнять данные, запрашивать записи и даже выполнять сложные миграции схем через чат.

Задача 1: Включение служб Firestore

Сначала включите API Firestore и соответствующую ему конечную точку MCP.

# 1. Enable the Firestore API
gcloud services enable firestore.googleapis.com

Задание 2: Назначение ролей IAM в Firestore

Для выполнения запросов вашей учетной записи требуются определенные права доступа, выходящие за рамки базового доступа к MCP.

# Grant Firestore User role
gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member="user:$USER_EMAIL" \
    --role="roles/datastore.user"

Задание 3: Создание выделенной тестовой базы данных

Для обеспечения безопасности наших экспериментов мы создадим специальную базу данных Firestore под названием mcp-lab-db .

gcloud firestore databases create --database=mcp-lab-db --location=nam5 --type=firestore-native

Задание 4: Настройка интерфейса командной строки Antigravity.

Добавьте сервер Firestore MCP в свой агент. Добавьте следующую конфигурацию в раздел mcpServers в файле ~/.gemini/settings.json . Замените YOUR_PROJECT_ID на фактический идентификатор вашего проекта:

"firestore-mcp": {
      "url": "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"
      }
}

Задание 5: Работа с базами данных на естественном языке.

Запустите Antigravity CLI и выполните несколько простых операций для проверки соединения.

Запуск интерфейса командной строки Antigravity:

agy

Убедитесь, что сервер готов: введите команду /mcp list . Вы должны увидеть firestore-mcp с несколькими инструментами ( add_document, create_database, list_documents, etc ).

Попробуйте выполнить следующие действия в указанном порядке:

Данные о семенах:

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).

Проверять:

In the 'mcp-lab-db' firestore database, create a 'products' collection and add three documents to it: Include a laptop (stock 5), a mouse (stock 25), and a keyboard (stock 8).

Попробуйте также другие варианты подсказок, которые помогут вам управлять базами данных и коллекциями Firestore с помощью естественного языка.

7. Путешествие D: Интеллект (BigQuery и карты)

В ходе этого путешествия вы научите своего агента анализировать петабайты данных и понимать физический мир, используя серверы BigQuery и Maps Grounding Lite MCP.

К концу этого раздела ваш агент сможет переводить естественный язык в сложные SQL-запросы и предоставлять контекстно-зависимые геопространственные рекомендации (например, время в пути и погоду), чтобы его ответы соответствовали реальности.

Задача 1: Обеспечение работы разведывательных служб.

Включите API и интерфейсы MCP для BigQuery и Google Maps.

# 1. Enable product APIs
gcloud services enable bigquery.googleapis.com mapstools.googleapis.com

Задание 2: Назначение ролей IAM в BigQuery

Для выполнения запросов вашей учетной записи требуются определенные права доступа, выходящие за рамки базового доступа к 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"

Задание 3: Создание ключа API для работы с картами.

В отличие от других сервисов, которые полагаются исключительно на IAM, сервер Maps Grounding Lite требует наличия ключа API для управления квотами и выставления счетов.

Создайте ключ:

gcloud services api-keys create --display-name="MCP-Maps-Key"

Получите ключевую строку:

Подождите несколько секунд, пока ключ распространится, затем получите строку.

gcloud services api-keys get-key-string \
    $(gcloud alpha services api-keys list \
    --filter="displayName='MCP-Maps-Key'" \
    --format="value(name)") \
    --format="value(keyString)"

Скопируйте ключевую строку для следующего шага.

Задание 4: Настройка интерфейса командной строки Antigravity.

Теперь зарегистрируйте оба сервера. Добавьте приведенные ниже фрагменты кода в раздел mcpServers в файле ~/.gemini/settings.json . Замените значения YOUR_PROJECT_ID и YOUR_MAPS_API_KEY соответственно.

"bigquery-mcp": {
      "url": "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": {
      "url": "https://mapstools.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "YOUR_MAPS_API_KEY"
      }
}

Задание 5: Разведка в действии

Запустите Antigravity CLI и протестируйте новые возможности «Интеллекта».

agy

Убедитесь, что сервер готов: введите команду /mcp list . Вы должны увидеть bigquery-mcp и maps-grounding-lite-mcp с несколькими перечисленными инструментами.

Сценарий 1: Аналитический движок (BigQuery) Попросите агента выполнить запрос к общедоступному набору данных, не зная при этом SQL-кода:

Run a query to count the number of penguins on each island in the BigQuery public dataset ml_datasets.penguins.

Сценарий 2: Геопространственный контекст (карты) Попросите агента спланировать реальную поездку:

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?

На что обратить внимание:

  • В случае BigQuery агент вызовет execute_sql для определения схемы и выполнения запроса.
  • В случае с Картами, программа будет использовать функции lookup_weather и compute_routes для составления реалистичного и удобного плана поездки.

8. Укрепление безопасности: безопасность производства и управление идентификацией и доступом (IAM).

На этом заключительном этапе вы перейдете от использования широких прав доступа «Владелец» к модели многоуровневой защиты производственного уровня .

По своей природе агенты ИИ «полезны». Если вы ограничиваете доступ к инструменту на уровне пользовательского интерфейса, умный агент может попытаться обойти это ограничение, выполнив вместо этого команду оболочки. Для обеспечения подлинной безопасности вашей инфраструктуры необходимо установить жесткие границы с помощью Google Cloud IAM .

Двухуровневая модель безопасности

Для выполнения любого действия агент должен пройти через два ворот:

  1. Вход 1 (Вход MCP): Имеет ли пользователь права доступа roles/mcp.toolUser ? (Разрешение на использование протокола).
  2. Шлюз 2 (Сервисный шлюз): Имеет ли пользователь определенную роль в продукте (например, roles/datastore.viewer )? (Разрешение на просмотр данных).

Задача 1: Уровень 1 — Фильтрация на стороне клиента ( excludeTools )

Первый уровень защиты заключается в сокрытии инструментов от агента, чтобы он даже не «подумал» об их использовании.

  1. Откройте настройки Antigravity CLI в редакторе Cloud Shell:
cloudshell edit ~/.gemini/config/settings.json
  1. Найдите блок firestore-mcp и добавьте директиву excludeTools , чтобы скрыть деструктивные действия:
"firestore-mcp": {
  "url": "https://firestore.googleapis.com/mcp",
  "excludeTools": ["delete_database", "update_database", "delete_document"],
  ...
}

Сохраните файл и перезапустите Antigravity CLI. Выполните команду /mcp list и обратите внимание, что эти инструменты исчезли.

Задание 2: Уровень 2 — Превосходство инфраструктуры (IAM Bouncer)

Фильтрация на стороне клиента — это своего рода «мягкая» защита. Если вы попросите агента «Удалить мою базу данных Firestore», а инструмент скрыт, он может попытаться выполнить команду gcloud firestore databases delete . Чтобы предотвратить это, мы используем учетную запись службы с минимальными привилегиями.

Создайте учетную запись службы "Только для чтения":

# 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"

Сгенерируйте и активируйте ключ:

gcloud iam service-accounts keys create reader-key.json --iam-account=$SA_EMAIL
export GOOGLE_APPLICATION_CREDENTIALS=$(pwd)/reader-key.json

Задание 3: Тест на "полезного агента" среди вышибал

Теперь давайте проверим, сможет ли агент обойти нашу систему безопасности.

Первым делом мы активируем учетную запись службы, чтобы даже если агент будет использовать команду gcloud , он работал под учетной записью службы, которую мы только что создали.

Активируйте учетную запись службы:

Выполните следующую команду, заменив [PATH_TO_KEY_FILE] фактическим путем к вашему JSON-файлу ключей (например, reader-key.json ).

gcloud auth activate-service-account --key-file=[PATH_TO_KEY_FILE]

Проверьте изменения:

После выполнения команды вы можете убедиться в активности учетной записи службы, выполнив следующую команду:

gcloud auth list

В результате выполнения программы в качестве активных учетных данных будет указана учетная запись службы.

Запуск интерфейса командной строки Antigravity:

agy

Введите следующую подсказку:

I want to delete the 'mcp-lab-db' firestore database. If the tool is missing, try using the gcloud firestore command in the terminal.

Что происходит?

  1. Сначала агент попытается использовать инструмент delete_database на сервере Firestore MCP. Это не удастся из-за отсутствия необходимых прав доступа.
  2. Затем программа пытается оказать "помощь", переключаясь на инструмент run_shell_command и используя команду gcloud firestore.

Результат:

Команда завершается с ошибкой «Запрещено». Поскольку агент работает под учетной записью mcp-reader-sa , у него отсутствует разрешение datastore.databases.delete. IAM — это крайняя мера защиты. Независимо от того, как агент пытается получить доступ к ресурсу, «Bouncer» на уровне API Google Cloud заблокирует запрос.

Вернитесь в свою учетную запись пользователя:

Чтобы вернуться к своей учетной записи, выполните следующую команду:

gcloud config set account YOUR_EMAIL_ADDRESS

9. Уборка

Чтобы избежать нежелательных расходов, удалите тестовые ресурсы:

# 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. Заключение

Поздравляем! Вы успешно освоили весь набор управляемых серверов Google MCP .

Вы начали с «базовой» части лаборатории, установив фундаментальную связь с Cloud Logging . Оттуда вы перешли к модульным «приключениям» — закреплению знаний вашего агента, автоматизации сложных циклов устранения неполадок, миграции данных в Firestore и извлечению информации из BigQuery и Maps .

Самое важное, что вы завершили работу, закрепив своего агента в основах безопасности производственной среды. Вы доказали, что, хотя агент может быть чрезмерно «полезным», Google Cloud IAM — это своего рода «вышибала», гарантирующий, что ваши автономные рабочие процессы всегда будут соблюдать принцип наименьших привилегий.

Основные выводы

  • Управляемый = Масштабируемый: Вы подключились к инструментам инфраструктурного уровня через потоковый HTTP без развертывания единого сервера.
  • Обязательное знание основ: Вы заменили «угадывание» в рамках LLM на MCP для разработчиков , гарантируя, что ваш агент использует актуальные и допустимые команды.
  • Оркестрация – это сила: вы видели, что настоящая магия происходит, когда агент объединяет несколько серверов MCP для решения одной бизнес-задачи.
,

1. Введение

Добро пожаловать! В этом практическом занятии вы узнаете, как значительно повысить эффективность ваших ИИ-агентов, используя серверы Google Managed Model Context Protocol (MCP) .

Протокол контекста модели (MCP) — это стандарт с открытым исходным кодом, позволяющий моделям ИИ безопасно и эффективно подключаться к внешним источникам данных и инструментам. Хотя большинство реализаций MCP работают локально на вашем компьютере, Google предоставляет управляемые удаленные серверы MCP . Это полностью размещенные, готовые к использованию в корпоративной среде конечные точки, которые позволяют вашим агентам напрямую взаимодействовать с инфраструктурой Google Cloud без необходимости управления серверным кодом или контейнерами.

Преимущество «управляемого управления»

В отличие от локальных MCP-серверов, использующих стандартный ввод/вывод (stdio), управляемые серверы Google используют потоковый HTTP . Такая архитектура обеспечивает:

  • Отсутствие инфраструктуры: не требуется выделение или масштабирование серверов.
  • Безопасность по умолчанию: встроенная интеграция с Google Cloud IAM и журналами аудита.
  • Масштабирование без сохранения состояния: Бесперебойное взаимодействие через стандартные балансировщики нагрузки и прокси-серверы.

Что вы узнаете

  • Как включить и аутентифицировать управляемые серверы MCP.
  • Как использовать сервер Cloud Logging MCP в качестве базовой платформы.
  • Как организовать работу нескольких серверов MCP (Developer Knowledge, Firestore и т. д.) для создания автономных рабочих процессов.

Что вам понадобится

  • Проект Google Cloud с включенной функцией выставления счетов .
  • Знание консоли Google Cloud и интерфейса командной строки gcloud .
  • Google Cloud Shell (здесь предварительно установлен Antigravity CLI).

Этот практический семинар предназначен для пользователей и разработчиков всех уровней (включая начинающих).

Сообщение о проблемах

В процессе работы над лабораторной работой и с программой Antigravity вы можете столкнуться с проблемами.

По вопросам, связанным с этим руководством (опечатки, неверные инструкции), пожалуйста, сообщите об ошибке, используя кнопку Report a mistake в левом нижнем углу этого руководства:

b06b582bcd847f6d.png

2. Перед началом работы

На этом этапе вы подготовите свою среду Google Cloud. Все задачи будут выполняться в Google Cloud Shell , который предоставляет постоянно доступный, предварительно настроенный терминал.

Активировать Cloud Shell

  1. Перейдите в консоль Google Cloud .
  2. Нажмите на значок «Активировать Cloud Shell» в правом верхнем углу.
  3. После запуска терминальной сессии подтвердите запрос, если он потребуется.

Укажите идентификатор вашего проекта.

Убедитесь, что ваша оболочка Cloud Shell указывает на правильный проект:

# Set your active project
gcloud config set project YOUR_PROJECT_ID

# Verify the setting
gcloud config list project

Включить API Foundation

Для работы управляемых серверов MCP необходимо включить как базовый API продукта, так и интерфейс MCP. Включение службы также включает базовый интерфейс MCP для этой службы.

Выполните следующую команду, чтобы включить бэкэнд облачного логирования (наш базовый уровень для этой лабораторной работы):

# Enable the Cloud Logging API and its MCP interface
gcloud services enable logging.googleapis.com

Настройка учетных данных приложения по умолчанию (ADC)

Antigravity CLI использует ваши учетные данные для связи с серверами MCP. Предоставьте агенту разрешение действовать от вашего имени:

gcloud auth application-default login

Перейдите по указанной в терминале ссылке, войдите в систему и вставьте код авторизации обратно в Cloud Shell.

Назначьте базовые роли IAM.

Управляемые серверы MCP используют двухуровневую модель безопасности. Для подтверждения личности или для открытия этих шлюзов необходимы два определенных шлюза :

  1. Gate 1 (MCP Access): Роль, позволяющая вызывать протокол.
  2. Вход 2 (Доступ к сервису): Роль, позволяющая просматривать данные (например, журналы).

Выполните следующие действия, чтобы предоставить себе необходимый доступ:

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. Основы: Подключение вашего первого сервера MCP

На этом этапе вы свяжете своего ИИ-агента (Antigravity CLI) с сервером Google Cloud Logging MCP . Это наша «основа», поскольку она позволяет агенту видеть, что происходит внутри вашего проекта в режиме реального времени.

Задание 1: Настройка сервера MCP для ведения журналов.

Antigravity CLI использует файл mcp_config.json для настройки серверов MCP. Вам потребуется отредактировать этот файл (находящийся в папке ~/.gemini/config ), добавив следующий фрагмент кода в блок mcpServers . Замените YOUR_PROJECT_ID на фактический идентификатор вашего проекта:

"logging-mcp": {
      "url": "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"
      }
}

Примечание : заголовок x-goog-user-project необходим для управляемых серверов MCP, чтобы гарантировать корректное отнесение использования API и выставления счетов к вашему проекту.

Задание 2: Моделирование проектной деятельности (создание журналов)

Если ваш проект новый или простаивает, в нем может не быть никаких недавних «интересных» записей в логах. Давайте воспользуемся CLI gcloud , чтобы добавить несколько пользовательских записей, чтобы у агента было что искать.

Выполните эти команды по очереди, чтобы смоделировать последовательность событий:

# 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

Задание 3: Проверка инструментов в интерфейсе командной строки Antigravity.

Прежде чем начать общение, давайте убедимся, что агент может «видеть» инструменты, предоставляемые сервером логирования. Запустите интерфейс командной строки Antigravity:

agy

После входа в командную строку Antigravity ( > ), выполните команду list:

/mcp list

Контрольная точка проверки: Вы должны увидеть, что logging-mcp находится в состоянии «Готов» , и доступно примерно 6 инструментов , включая list_log_entries .

Задание 4: Ваше первое задание по использованию работающей инфраструктуры

Теперь давайте попросим агента найти только что созданные нами логи. Поскольку вы ранее предоставили роль roles/logging.viewer , агент теперь может "обратиться" и прочитать состояние вашего проекта.

Введите следующую команду в командную строку Antigravity:

Show me the 3 most recent log entries from the log named 'mcp-test-log'. What is the highest severity issue you see?

Наблюдайте за агентом:

  1. Возможно, агент запросит у вас идентификатор проекта Google Cloud. Пожалуйста, укажите его.
  2. Это позволит определить, что требуется инструмент list_log_entries .
  3. Программа запросит у вас разрешения на запуск инструментов. Пожалуйста, разрешите это.
  4. Программа проанализирует JSON-ответ и сообщит вам об ошибке «Cloud SQL Permission Denied», которую мы смоделировали.

4. Путешествие А: Мозг (Программа MCP для разработчиков)

В ходе этого проекта вы наделите своего агента «мозгом», подключив его к серверу Google Developer Knowledge MCP .

Одна из самых больших опасностей, связанных с агентами ИИ, — это галлюцинации , то есть уверенная передача устаревших команд CLI или неактуальных параметров API. Этот сервер MCP решает эту проблему, используя в качестве основы для агента официальную документацию Google для разработчиков (охватывающую Google Cloud, Firebase, Android и многое другое).

Задача 1: Внедрить сервисы управления знаниями.

Как и на первом этапе, нам необходимо включить бэкэнд API и конечную точку сервиса MCP.

# 1. Enable the Developer Knowledge API
gcloud services enable developerknowledge.googleapis.com

Задача 2: Предоставление ключа API с ограниченным доступом

В программе MCP для разработчиков используются ключи API для аутентификации. В целях безопасности мы создадим ключ и ограничим его использование, чтобы он мог работать только с этим конкретным API.

  1. Запустите следующий скрипт, чтобы создать и получить свой ключ:
# Create the restricted API key
gcloud 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 services api-keys list \
   --filter="displayName='MCP-Knowledge-Key'" \
   --format="value(uid)"
  1. Скопируйте длинную строку символов, возвращенную второй командой. Это ваш YOUR_API_KEY .

Задание 3: Настройка интерфейса командной строки Antigravity.

Теперь зарегистрируйте сервер Knowledge MCP у своего агента. Это позволит агенту осуществлять поиск в официальной документации всякий раз, когда он столкнется с техническим вопросом, на который не может ответить со 100% уверенностью.

Добавьте следующий фрагмент кода в раздел mcpServers в файле ~/.gemini/config/mcp_config.json , заменив YOUR_API_KEY скопированной строкой:

"developer-knowledge-mcp": {
      "url": "https://developerknowledge.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "YOUR_API_KEY"
      }
}

Задание 4: Тест на антигаллюцинаторность

Давайте убедимся, что агент теперь «проводит исследование», а не «угадывает».

Запуск интерфейса командной строки Antigravity:

agy

Убедитесь, что сервер готов: введите /mcp list . Вы должны увидеть google-developer-knowledge с тремя инструментами ( search_documents, answer_query and get_documents ).

Подсказка: Попросите агента найти конкретную современную команду.

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.

На что обратить внимание:

  • Убедитесь, что вы явно указываете сервер Developer Knowledge MCP, который необходимо вызвать. Gemini запросит разрешение на использование определенных инструментов.
  • В окончательный ответ следует включить команду gcloud storage buckets create ... , цитируемую непосредственно из документации.

5. Этап B: Первичная диагностика (автономное устранение неполадок)

Предварительное условие: Для прохождения этого задания необходимо завершить задание A: «Мозг» , чтобы агент мог изучить возможные решения проблемы.

В этом процессе вы объедините «глаза» (Cloud Logging MCP) и «мозг» (Developer Knowledge MCP) вашего агента, чтобы создать автономный цикл устранения неполадок .

Вместо того чтобы вручную копировать коды ошибок в поисковую систему, вы дадите агенту одну команду на проверку вашего проекта на наличие ошибок, поиск официального решения и создание отчета с инструкциями по устранению проблемы.

Задание 1: Смоделируйте «неудачный день» в GCP.

Чтобы увидеть возможности автономного устранения неполадок, нам необходим реалистичный набор сбоев. Мы будем использовать скрипт на Python для внедрения различных проблем инфраструктуры — от ошибок отказа в доступе до проблем с квотами — непосредственно в ваши журналы.

  1. В Cloud Shell создайте папку по своему выбору и перейдите в неё.
  2. Создайте файл с именем simulate_errors.py :
nano simulate_errors.py
  1. Вставьте следующий код в редактор:
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)
  1. Нажмите Ctrl+O, Enter и Ctrl+X для сохранения и выхода.
  2. Установите библиотеку Google Cloud Logging и запустите скрипт:
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)

Задание 2: Выполнение автономного цикла

Теперь мы отправим сложную команду, которая даст указание Antigravity CLI одновременно управлять обоими серверами MCP.

Запуск интерфейса командной строки Antigravity:

agy

Введите в терминал следующий "Основной запрос":

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 |.

Чего ожидать

Вы наблюдаете за рабочим процессом Agentic в режиме реального времени. Агент выполнит следующие действия:

  1. Вызовите функцию list_log_entries , чтобы увидеть "неудачный день", который мы только что смоделировали.
  2. Проанализируйте текст, чтобы определить, что GCS, Cloud Run и Secret Manager не работают.
  3. Для поиска соответствующих ролей IAM или исправлений конфигурации вызовите функции search_documents и get_document для каждой из этих служб.
  4. Представляем вам структурированную таблицу, похожую на эту (рекомендации могут отличаться):

ce3907897f1e05e7.png

6. Путешествие C: Данные (Firestore MCP)

В этом путешествии вы будете использовать Firestore MCP Server для управления документоориентированной базой данных NoSQL, используя исключительно естественный язык.

Firestore — это гибкая и масштабируемая база данных, но управление ею часто требует написания сложного кода SDK или работы с консолью. С MCP ваш агент становится администратором базы данных , способным заполнять данные, запрашивать записи и даже выполнять сложные миграции схем через чат.

Задача 1: Включение служб Firestore

Сначала включите API Firestore и соответствующую ему конечную точку MCP.

# 1. Enable the Firestore API
gcloud services enable firestore.googleapis.com

Задание 2: Назначение ролей IAM в Firestore

Для выполнения запросов вашей учетной записи требуются определенные права доступа, выходящие за рамки базового доступа к MCP.

# Grant Firestore User role
gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member="user:$USER_EMAIL" \
    --role="roles/datastore.user"

Задание 3: Создание выделенной тестовой базы данных

Для обеспечения безопасности наших экспериментов мы создадим специальную базу данных Firestore под названием mcp-lab-db .

gcloud firestore databases create --database=mcp-lab-db --location=nam5 --type=firestore-native

Задание 4: Настройка интерфейса командной строки Antigravity.

Добавьте сервер Firestore MCP в свой агент. Добавьте следующую конфигурацию в раздел mcpServers в файле ~/.gemini/settings.json . Замените YOUR_PROJECT_ID на фактический идентификатор вашего проекта:

"firestore-mcp": {
      "url": "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"
      }
}

Задание 5: Работа с базами данных на естественном языке.

Запустите Antigravity CLI и выполните несколько простых операций для проверки соединения.

Запуск интерфейса командной строки Antigravity:

agy

Убедитесь, что сервер готов: введите команду /mcp list . Вы должны увидеть firestore-mcp с несколькими инструментами ( add_document, create_database, list_documents, etc ).

Попробуйте выполнить следующие действия в указанном порядке:

Данные о семенах:

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).

Проверять:

In the 'mcp-lab-db' firestore database, create a 'products' collection and add three documents to it: Include a laptop (stock 5), a mouse (stock 25), and a keyboard (stock 8).

Попробуйте также другие варианты подсказок, которые помогут вам управлять базами данных и коллекциями Firestore с помощью естественного языка.

7. Путешествие D: Интеллект (BigQuery и карты)

В ходе этого путешествия вы научите своего агента анализировать петабайты данных и понимать физический мир, используя серверы BigQuery и Maps Grounding Lite MCP.

К концу этого раздела ваш агент сможет переводить естественный язык в сложные SQL-запросы и предоставлять контекстно-зависимые геопространственные рекомендации (например, время в пути и погоду), чтобы его ответы соответствовали реальности.

Задача 1: Обеспечение работы разведывательных служб.

Включите API и интерфейсы MCP для BigQuery и Google Maps.

# 1. Enable product APIs
gcloud services enable bigquery.googleapis.com mapstools.googleapis.com

Задание 2: Назначение ролей IAM в BigQuery

Для выполнения запросов вашей учетной записи требуются определенные права доступа, выходящие за рамки базового доступа к 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"

Задание 3: Создание ключа API для работы с картами.

В отличие от других сервисов, которые полагаются исключительно на IAM, сервер Maps Grounding Lite требует наличия ключа API для управления квотами и выставления счетов.

Создайте ключ:

gcloud services api-keys create --display-name="MCP-Maps-Key"

Получите ключевую строку:

Подождите несколько секунд, пока ключ распространится, затем получите строку.

gcloud services api-keys get-key-string \
    $(gcloud alpha services api-keys list \
    --filter="displayName='MCP-Maps-Key'" \
    --format="value(name)") \
    --format="value(keyString)"

Скопируйте ключевую строку для следующего шага.

Задание 4: Настройка интерфейса командной строки Antigravity.

Теперь зарегистрируйте оба сервера. Добавьте приведенные ниже фрагменты кода в раздел mcpServers в файле ~/.gemini/settings.json . Замените значения YOUR_PROJECT_ID и YOUR_MAPS_API_KEY соответственно.

"bigquery-mcp": {
      "url": "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": {
      "url": "https://mapstools.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "YOUR_MAPS_API_KEY"
      }
}

Задание 5: Разведка в действии

Запустите Antigravity CLI и протестируйте новые возможности «Интеллекта».

agy

Убедитесь, что сервер готов: введите команду /mcp list . Вы должны увидеть bigquery-mcp и maps-grounding-lite-mcp с несколькими перечисленными инструментами.

Сценарий 1: Аналитический движок (BigQuery) Попросите агента выполнить запрос к общедоступному набору данных, не зная при этом SQL-кода:

Run a query to count the number of penguins on each island in the BigQuery public dataset ml_datasets.penguins.

Сценарий 2: Геопространственный контекст (карты) Попросите агента спланировать реальную поездку:

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?

На что обратить внимание:

  • В случае BigQuery агент вызовет execute_sql для определения схемы и выполнения запроса.
  • В случае с Картами, программа будет использовать функции lookup_weather и compute_routes для составления реалистичного и удобного плана поездки.

8. Укрепление безопасности: безопасность производства и управление идентификацией и доступом (IAM).

На этом заключительном этапе вы перейдете от использования широких прав доступа «Владелец» к модели многоуровневой защиты производственного уровня .

По своей природе агенты ИИ «полезны». Если вы ограничиваете доступ к инструменту на уровне пользовательского интерфейса, умный агент может попытаться обойти это ограничение, выполнив вместо этого команду оболочки. Для обеспечения подлинной безопасности вашей инфраструктуры необходимо установить жесткие границы с помощью Google Cloud IAM .

Двухуровневая модель безопасности

Для выполнения любого действия агент должен пройти через два ворот:

  1. Вход 1 (Вход MCP): Имеет ли пользователь права доступа roles/mcp.toolUser ? (Разрешение на использование протокола).
  2. Шлюз 2 (Сервисный шлюз): Имеет ли пользователь определенную роль в продукте (например, roles/datastore.viewer )? (Разрешение на просмотр данных).

Задача 1: Уровень 1 — Фильтрация на стороне клиента ( excludeTools )

Первый уровень защиты заключается в сокрытии инструментов от агента, чтобы он даже не «подумал» об их использовании.

  1. Откройте настройки Antigravity CLI в редакторе Cloud Shell:
cloudshell edit ~/.gemini/config/settings.json
  1. Найдите блок firestore-mcp и добавьте директиву excludeTools , чтобы скрыть деструктивные действия:
"firestore-mcp": {
  "url": "https://firestore.googleapis.com/mcp",
  "excludeTools": ["delete_database", "update_database", "delete_document"],
  ...
}

Сохраните файл и перезапустите Antigravity CLI. Выполните команду /mcp list и обратите внимание, что эти инструменты исчезли.

Задание 2: Уровень 2 — Превосходство инфраструктуры (IAM Bouncer)

Фильтрация на стороне клиента — это своего рода «мягкая» защита. Если вы попросите агента «Удалить мою базу данных Firestore», а инструмент скрыт, он может попытаться выполнить команду gcloud firestore databases delete . Чтобы предотвратить это, мы используем учетную запись службы с минимальными привилегиями.

Создайте учетную запись службы "Только для чтения":

# 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"

Сгенерируйте и активируйте ключ:

gcloud iam service-accounts keys create reader-key.json --iam-account=$SA_EMAIL
export GOOGLE_APPLICATION_CREDENTIALS=$(pwd)/reader-key.json

Задание 3: Тест на "полезного агента" среди вышибал

Теперь давайте проверим, сможет ли агент обойти нашу систему безопасности.

Первым делом мы активируем учетную запись службы, чтобы даже если агент будет использовать команду gcloud , он работал под учетной записью службы, которую мы только что создали.

Активируйте учетную запись службы:

Выполните следующую команду, заменив [PATH_TO_KEY_FILE] фактическим путем к вашему JSON-файлу ключей (например, reader-key.json ).

gcloud auth activate-service-account --key-file=[PATH_TO_KEY_FILE]

Проверьте изменения:

После выполнения команды вы можете убедиться в активности учетной записи службы, выполнив следующую команду:

gcloud auth list

В результате выполнения программы в качестве активных учетных данных будет указана учетная запись службы.

Запуск интерфейса командной строки Antigravity:

agy

Введите следующую подсказку:

I want to delete the 'mcp-lab-db' firestore database. If the tool is missing, try using the gcloud firestore command in the terminal.

Что происходит?

  1. Сначала агент попытается использовать инструмент delete_database на сервере Firestore MCP. Это не удастся из-за отсутствия необходимых прав доступа.
  2. Затем программа пытается оказать "помощь", переключаясь на инструмент run_shell_command и используя команду gcloud firestore.

Результат:

The command fails with a Forbidden error. Because the agent is running under the mcp-reader-sa identity, it lacks the datastore.databases.delete permission. IAM is the ultimate backstop. No matter how the agent tries to reach the resource, the "Bouncer" at the Google Cloud API level will block the request.

Switch back to your user account:

To switch back to your user account, give the following command:

gcloud config set account YOUR_EMAIL_ADDRESS

9. Cleanup

To avoid unwanted charges, delete your test resources:

# 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. Заключение

Congratulations! You've successfully navigated the full stack of Google Managed MCP Servers .

You started with the "Trunk" of the lab, establishing a foundational connection to Cloud Logging . From there, you branched out into modular "Adventures"—grounding your agent's knowledge, automating complex troubleshooting loops, migrating data in Firestore , and extracting intelligence from BigQuery and Maps .

Most importantly, you finished by anchoring your agent in the Roots of production security. You proved that while an agent can be "helpful" to a fault, Google Cloud IAM is the ultimate bouncer, ensuring that your autonomous workflows always respect the Principle of Least Privilege.

Основные выводы

  • Managed = Scalable: You connected to infrastructure-level tools via Streamable HTTP without deploying a single server.
  • Grounding is Mandatory: You replaced LLM "guessing" with the Developer Knowledge MCP , ensuring your agent uses current, valid commands.
  • Orchestration is Power: You saw that the true magic happens when an agent combines multiple MCP servers to solve a single business problem.
,

1. Введение

Welcome! In this codelab, you will learn how to supercharge your AI agents using Google Managed Model Context Protocol (MCP) Servers .

The Model Context Protocol (MCP) is an open-source standard that enables AI models to safely and efficiently connect to external data sources and tools. While most MCP implementations run locally on your machine, Google provides Managed Remote MCP Servers . These are fully hosted, enterprise-ready endpoints that allow your agents to interact directly with Google Cloud infrastructure without you having to manage any server-side code or containers.

The "Managed" Advantage

Unlike local MCP servers that use standard input/output (stdio), Google's managed servers utilize Streamable HTTP . This architecture offers:

  • Zero Infrastructure: No servers to provision or scale.
  • Security by Design: Native integration with Google Cloud IAM and Audit Logs.
  • Stateless Scaling: Seamless interaction through standard load balancers and proxies.

Что вы узнаете

  • How to enable and authenticate Managed MCP Servers.
  • How to use the Cloud Logging MCP Server as a foundational baseline.
  • How to orchestrate multiple MCP servers (Developer Knowledge, Firestore, etc.) to build autonomous workflows.

Что вам понадобится

  • A Google Cloud Project with billing enabled .
  • Familiarity with the Google Cloud Console and gcloud CLI.
  • Google Cloud Shell (Antigravity CLI is pre-installed here).

This codelab, designed for users and developers of all levels (including beginners).

Сообщение о проблемах

As you work through the codelab and with Antigravity, you might encounter problems.

For codelab related issues (typos, wrong instructions), please open a bug with Report a mistake button in bottom left corner of this codelab:

b06b582bcd847f6d.png

2. Before You Begin

In this step, you will prepare your Google Cloud environment. We will be performing all tasks within Google Cloud Shell , which provides a persistent, pre-configured terminal.

Активировать Cloud Shell

  1. Navigate to the Google Cloud Console .
  2. Click the Activate Cloud Shell icon in the top right header.
  3. Once the terminal session starts, authorize the prompt if asked.

Set your Project ID

Ensure your Cloud Shell is pointing to the correct project:

# Set your active project
gcloud config set project YOUR_PROJECT_ID

# Verify the setting
gcloud config list project

Enable Foundation APIs

Managed MCP servers require both the underlying product API and the MCP interface to be enabled. By enabling the service, the underlying MCP interface for the service will also get enabled.

Run the following command to enable the Cloud Logging backend (our baseline for this lab):

# Enable the Cloud Logging API and its MCP interface
gcloud services enable logging.googleapis.com

Setup Application Default Credentials (ADC)

Antigravity CLI uses your user identity to communicate with MCP servers. Grant the agent permission to act on your behalf:

gcloud auth application-default login

Follow the URL in the terminal, sign in, and paste the authorization code back into Cloud Shell.

Assign Foundational IAM Roles

Managed MCP servers use a Dual-Layer security model. You need two specific gates that you need to get validated at or for the gates to be open:

  1. Gate 1 (MCP Access): The role that allows you to call the protocol.
  2. Gate 2 (Service Access): The role that allows you to see the data (eg, viewing logs).

Run the following to grant yourself the required access:

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. Foundations: Connecting Your First MCP Server

In this step, you will link your AI agent (Antigravity CLI) to the Google Cloud Logging MCP Server . This is our "foundation" because it allows the agent to see what is happening inside your project in real-time.

Task 1: Configure the Logging MCP Server

Antigravity CLI uses a mcp_config.json file to configure the MCP Servers. You will need to edit this file (present in ~/.gemini/config folder) to add the following snippet inside the mcpServers block. Replace YOUR_PROJECT_ID with your actual Project ID:

"logging-mcp": {
      "url": "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"
      }
}

Note : The x-goog-user-project header is required for Managed MCP servers to ensure that API usage and billing are correctly attributed to your project.

Task 2: Simulate Project Activity (Create Logs)

If your project is new or idle, it might not have any recent "interesting" logs. Let's use the gcloud CLI to inject a few custom entries so the agent has something to find.

Run these commands one by one to simulate a sequence of events:

# 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

Task 3: Verify Tools in Antigravity CLI

Before we start chatting, let's verify that the agent can "see" the tools exposed by the Logging server. Launch the Antigravity CLI:

agy

Once inside the Antigravity CLI prompt ( > ), run the list command:

/mcp list

Verification Checkpoint: You should see logging-mcp listed as Ready with approximately 6 tools available, including list_log_entries .

Task 4: Your First Live Infrastructure Prompt

Now, let's ask the agent to find the logs we just created. Because you granted the roles/logging.viewer role earlier, the agent can now "reach out" and read your project state.

Type the following prompt into the Antigravity CLI:

Show me the 3 most recent log entries from the log named 'mcp-test-log'. What is the highest severity issue you see?

Observe the Agent:

  1. The Agent might prompt you for the Google Cloud Project Id. Please provide that.
  2. It will identify that it needs the list_log_entries tool.
  3. It will ask for your permissions to run the tools. Please allow that.
  4. It will parse the JSON response and tell you about the Cloud SQL Permission Denied error we simulated.

4. Journey A: The Brain (Developer Knowledge MCP)

In this journey, you will give your agent a "brain" by connecting it to the Google Developer Knowledge MCP Server .

One of the biggest risks with AI agents is hallucination ie confidently providing outdated CLI commands or deprecated API parameters. This MCP server solves that by grounding the agent in Google's official, live developer documentation corpus (covering Google Cloud, Firebase, Android, and more).

Task 1: Enable the Knowledge Services

As with our foundation step, we must enable the backend API and the MCP service endpoint.

# 1. Enable the Developer Knowledge API
gcloud services enable developerknowledge.googleapis.com

Task 2: Provision a Restricted API Key

The Developer Knowledge MCP uses API Keys for authentication. For security, we will create a key and restrict it so it can only be used with this specific API.

  1. Run the following script to create and retrieve your key:
# Create the restricted API key
gcloud 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 services api-keys list \
   --filter="displayName='MCP-Knowledge-Key'" \
   --format="value(uid)"
  1. Copy the long string of characters returned by the second command. This is your YOUR_API_KEY .

Task 3: Configure Antigravity CLI

Now, register the Knowledge MCP server with your agent. This allows the agent to search the official docs whenever it encounters a technical question it can't answer with 100% certainty.

Add the following snippet inside your mcpServers section in ~/.gemini/config/mcp_config.json file, replacing YOUR_API_KEY with the string you just copied:

"developer-knowledge-mcp": {
      "url": "https://developerknowledge.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "YOUR_API_KEY"
      }
}

Task 4: The Anti-Hallucination Test

Let's verify that the agent is now "researching" instead of "guessing."

Launch Antigravity CLI:

agy

Verify the server is Ready: Type /mcp list . You should see google-developer-knowledge with 3 tools ( search_documents, answer_query and get_documents ).

The Prompt: Ask the agent to find a specific, modern command.

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.

На что обратить внимание:

  • Make sure that you explicitly call out the Developer Knowledge MCP Server to be invoked. Gemini will ask for permission to use specific tools.
  • The final answer should include a gcloud storage buckets create ... command, cited directly from the documentation.

5. Journey B: The Triage (Autonomous Troubleshooting)

Prerequisite: This journey requires you to have completed Journey A: The Brain so the agent can research fixes.

In this journey, you will combine your agent's Eyes (Cloud Logging MCP) and Brain (Developer Knowledge MCP) to build an Autonomous Troubleshooting Loop .

Instead of manually copying error codes into a search engine, you will give the agent a single prompt to scan your project for errors, research the official resolution, and generate an actionable fix report.

Task 1: Simulate a "Bad Day" in GCP

To see the power of autonomous troubleshooting, we need a realistic set of failures. We will use a Python script to inject a variety of infrastructure hurdles—from permission denied errors to quota issues—directly into your logs.

  1. In Cloud Shell, create a folder of your choice and navigate into it.
  2. create a file named simulate_errors.py :
nano simulate_errors.py
  1. Paste the following code into the editor:
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)
  1. Press Ctrl+O, Enter, and Ctrl+X to save and exit.
  2. Install the Google Cloud Logging library and run the script:
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)

Task 2: Execute the Autonomous Loop

Now, we will fire a complex prompt that instructs Antigravity CLI to orchestrate both MCP servers simultaneously.

Launch Antigravity CLI:

agy

Type this "Master Prompt" into the agent:

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 |.

Чего ожидать

You are now watching an Agentic Workflow in real-time. The agent will:

  1. Call list_log_entries to see the "Bad Day" we just simulated.
  2. Analyze the text to identify that GCS, Cloud Run, and Secret Manager are failing.
  3. Call search_documents and get_document for each of those services to find the correct IAM roles or configuration fixes.
  4. Present you with a structured table that looks similar to this (the recommendations could differ):

ce3907897f1e05e7.png

6. Journey C: The Data (Firestore MCP)

In this journey, you will use the Firestore MCP Server to manage a NoSQL document database using nothing but natural language.

Firestore is a flexible, scalable database, but managing it often requires writing complex SDK code or navigating the console. With MCP, your agent becomes a Database Administrator , capable of seeding data, querying records, and even performing complex schema migrations via chat.

Task 1: Enable Firestore Services

First, enable the Firestore API and its corresponding MCP endpoint.

# 1. Enable the Firestore API
gcloud services enable firestore.googleapis.com

Task 2: Assign Firestore IAM Roles

To run queries, your identity needs specific permissions beyond the basic MCP access.

# Grant Firestore User role
gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member="user:$USER_EMAIL" \
    --role="roles/datastore.user"

Task 3: Create a Dedicated Test Database

To keep our experiments safe, we will create a dedicated Firestore database named mcp-lab-db .

gcloud firestore databases create --database=mcp-lab-db --location=nam5 --type=firestore-native

Task 4: Configure Antigravity CLI

Add the Firestore MCP server to your agent. Add the following configuration to the mcpServers section in the ~/.gemini/settings.json file. Replace YOUR_PROJECT_ID with your actual Project ID:

"firestore-mcp": {
      "url": "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"
      }
}

Task 5: Natural Language DB Ops

Launch Antigravity CLI and perform some basic operations to verify the connection.

Launch Antigravity CLI:

agy

Verify the server is Ready: Type /mcp list . You should see firestore-mcp with several tools ( add_document, create_database, list_documents, etc ).

Try these prompts in order:

Seed Data:

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).

Проверять:

In the 'mcp-lab-db' firestore database, create a 'products' collection and add three documents to it: Include a laptop (stock 5), a mouse (stock 25), and a keyboard (stock 8).

Do try out other prompts that help you manage Firestore databases and collections via natural language.

7. Journey D: Intelligence (BigQuery & Maps)

In this journey, you will equip your agent with the ability to analyze petabytes of data and understand the physical world using the BigQuery and Maps Grounding Lite MCP servers.

By the end of this section, your agent will be able to translate natural language into complex SQL queries and provide context-aware geospatial advice (like travel times and weather) to ground its responses in reality.

Task 1: Enable Intelligence Services

Enable the APIs and MCP interfaces for both BigQuery and Google Maps.

# 1. Enable product APIs
gcloud services enable bigquery.googleapis.com mapstools.googleapis.com

Task 2: Assign BigQuery IAM Roles

To run queries, your identity needs specific permissions beyond the basic MCP access.

# 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"

Task 3: Provision a Maps API Key

Unlike other services that rely solely on IAM, the Maps Grounding Lite server requires an API Key for quota and billing.

Create the key:

gcloud services api-keys create --display-name="MCP-Maps-Key"

Fetch the key string:

Wait a few seconds for the key to propagate, then fetch the string.

gcloud services api-keys get-key-string \
    $(gcloud alpha services api-keys list \
    --filter="displayName='MCP-Maps-Key'" \
    --format="value(name)") \
    --format="value(keyString)"

Copy the key string for the next step.

Task 4: Configure Antigravity CLI

Now, register both servers. Add the snippets below to the mcpServers section in the ~/.gemini/settings.json file. Replace YOUR_PROJECT_ID and YOUR_MAPS_API_KEY accordingly.

"bigquery-mcp": {
      "url": "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": {
      "url": "https://mapstools.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "YOUR_MAPS_API_KEY"
      }
}

Task 5: Intelligence in Action

Launch Antigravity CLI and test the new "Intelligence" capabilities.

agy

Verify the server is Ready: Type /mcp list . You should see bigquery-mcp and maps-grounding-lite-mcp with several tools listed. .

Scenario 1: The Analytical Engine (BigQuery) Ask the agent to query a public dataset without you knowing any SQL:

Run a query to count the number of penguins on each island in the BigQuery public dataset ml_datasets.penguins.

Scenario 2: Geospatial Context (Maps) Ask the agent to plan a real-world trip:

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?

На что обратить внимание:

  • For BigQuery, the agent will call execute_sql to discover the schema and run the query.
  • For Maps, it will orchestrate lookup_weather and compute_routes to give you a grounded, helpful travel plan.

8. Hardening: Production Security & IAM

In this final step, you will move from using broad "Owner" permissions to a Production-Grade Defense-in-Depth model.

AI agents are "helpful" by nature. If you restrict a tool at the UI level, a smart agent might attempt to bypass that restriction by running a shell command instead. To truly secure your infrastructure, you must build hard boundaries using Google Cloud IAM .

The Dual-Layer Security Model

To execute any action, an agent must pass through two gates:

  1. Gate 1 (The MCP Gate): Does the identity have roles/mcp.toolUser ? (Permission to use the protocol).
  2. Gate 2 (The Service Gate): Does the identity have the specific product role (eg, roles/datastore.viewer )? (Permission to see the data).

Task 1: Layer 1 - Client-Side Filtering ( excludeTools )

The first layer of defense is hiding tools from the agent so it doesn't even "think" about using them.

  1. Open your Antigravity CLI settings in the Cloud Shell editor:
cloudshell edit ~/.gemini/config/settings.json
  1. Find the firestore-mcp block and add the excludeTools directive to hide destructive actions:
"firestore-mcp": {
  "url": "https://firestore.googleapis.com/mcp",
  "excludeTools": ["delete_database", "update_database", "delete_document"],
  ...
}

Save the file and restart Antigravity CLI. Run /mcp list and notice those tools are now gone.

Task 2: Layer 2 - Infrastructure Supremacy (The IAM Bouncer)

Client-side filtering is a "soft" guardrail. If you ask the agent to "Delete my Firestore database," and the tool is hidden, it might try to run gcloud firestore databases delete . To prevent this, we use a Least Privilege Service Account.

Create a "Reader-Only" Service Account:

# 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"

Generate and Activate the Key:

gcloud iam service-accounts keys create reader-key.json --iam-account=$SA_EMAIL
export GOOGLE_APPLICATION_CREDENTIALS=$(pwd)/reader-key.json

Task 3: The "Helpful Agent" Bouncer Test

Now, let's test if the agent can bypass our security.

Our first step will be to activate the Service Account, so that even if the agent falls back on using gcloud command, it operates under the service account identity that we have just created.

Activate the Service Account:

Run the following command, replacing [PATH_TO_KEY_FILE] with the actual path to your JSON key file (eg, reader-key.json ).

gcloud auth activate-service-account --key-file=[PATH_TO_KEY_FILE]

Verify the Change:

After running the command, you can verify that the service account is active by running:

gcloud auth list

The output will show the service account as the active credential.

Launch Antigravity CLI:

agy

Type this prompt:

I want to delete the 'mcp-lab-db' firestore database. If the tool is missing, try using the gcloud firestore command in the terminal.

Что происходит?

  1. The agent will first attempt to use the delete_database tool in the Firestore MCP Server. It will fail because of lack of permission.
  2. It then attempts to be "helpful" by falling back to the run_shell_command tool to use the gcloud firestore command.

Результат:

The command fails with a Forbidden error. Because the agent is running under the mcp-reader-sa identity, it lacks the datastore.databases.delete permission. IAM is the ultimate backstop. No matter how the agent tries to reach the resource, the "Bouncer" at the Google Cloud API level will block the request.

Switch back to your user account:

To switch back to your user account, give the following command:

gcloud config set account YOUR_EMAIL_ADDRESS

9. Cleanup

To avoid unwanted charges, delete your test resources:

# 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. Заключение

Congratulations! You've successfully navigated the full stack of Google Managed MCP Servers .

You started with the "Trunk" of the lab, establishing a foundational connection to Cloud Logging . From there, you branched out into modular "Adventures"—grounding your agent's knowledge, automating complex troubleshooting loops, migrating data in Firestore , and extracting intelligence from BigQuery and Maps .

Most importantly, you finished by anchoring your agent in the Roots of production security. You proved that while an agent can be "helpful" to a fault, Google Cloud IAM is the ultimate bouncer, ensuring that your autonomous workflows always respect the Principle of Least Privilege.

Основные выводы

  • Managed = Scalable: You connected to infrastructure-level tools via Streamable HTTP without deploying a single server.
  • Grounding is Mandatory: You replaced LLM "guessing" with the Developer Knowledge MCP , ensuring your agent uses current, valid commands.
  • Orchestration is Power: You saw that the true magic happens when an agent combines multiple MCP servers to solve a single business problem.