Начало работы с серверами 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 (здесь предустановлен Gemini 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. Выполните следующую команду, чтобы включить бэкэнд облачного логирования (наш базовый уровень для этой лабораторной работы):

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

Примечание: Управляемые сервисы MCP в настоящее время находятся в стадии бета-тестирования . Для их включения необходимо использовать компонент gcloud beta.

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

Gemini 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

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

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

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

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

Примечание : заголовок 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: Проверка инструментов в Gemini CLI

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

gemini

Находясь в командной строке Gemini ( > ), выполните команду list:

/mcp list

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

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

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

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

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. Программа запросит ваше разрешение на запуск. Выберите 1. Да, разрешить один раз .
  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. Enable the MCP Server interface
gcloud beta services mcp enable developerknowledge.googleapis.com

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

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

  1. Запустите следующий скрипт, чтобы создать и получить свой ключ:
# 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)"
  1. Скопируйте длинную строку символов, возвращенную второй командой. Это ваш YOUR_API_KEY .

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

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

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

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

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

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

Запустите Gemini CLI:

gemini

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

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

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.

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

  • Gemini запросит разрешение на использование search_documents .
  • Затем, скорее всего, будет вызвана функция get_document для чтения найденной страницы.
  • В окончательный ответ следует включить команду 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: Выполнение автономного цикла

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

Запустите Gemini CLI:

gemini

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

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. Представляем вам структурированную таблицу, похожую на эту (рекомендации могут отличаться):

Услуга

Сводка ошибок

Рекомендуемое решение

Облачное хранилище

403 Запрещено при загрузке

Предоставьте учетной записи службы права доступа к roles/storage.objectCreator .

Cloud Run

Не удалось прослушать порт 8080

Убедитесь, что приложение привязано к адресу 0.0.0.0 на порту, определенном переменной $PORT .

Секретный менеджер

Отсутствует роль доступа к версии.

Назначьте roles/secretmanager.secretAccessor для учетной записи.

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. Enable the MCP Server interface
gcloud beta services mcp 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: Настройка интерфейса командной строки Gemini.

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

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

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

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

Запустите Gemini CLI:

gemini

Убедитесь, что сервер готов: введите команду /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).

Проверять:

List all documents in the 'products' collection from the 'mcp-lab-db' database.

Попробуйте также другие варианты подсказок, которые помогут вам управлять базами данных и коллекциями 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. Enable MCP Server interfaces
gcloud beta services mcp enable bigquery.googleapis.com
gcloud beta services mcp enable 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 alpha services api-keys create --display-name="MCP-Maps-Key"

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

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

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

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

Теперь зарегистрируйте оба сервера. Добавьте приведенные ниже фрагменты кода в раздел mcpServers в файле ~/.gemini/settings.json . Замените значения YOUR_PROJECT_ID и 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"
      }
}

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

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

gemini

Убедитесь, что сервер готов: введите команду /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. Откройте настройки Gemini CLI в редакторе Cloud Shell:
cloudshell edit ~/.gemini/settings.json
  1. Найдите блок firestore-mcp и добавьте директиву excludeTools , чтобы скрыть деструктивные действия:
"firestore-mcp": {
  "httpUrl": "https://firestore.googleapis.com/mcp",
  "excludeTools": ["delete_database", "update_database", "delete_document"],
  ...
}

Сохраните файл и перезапустите Gemini 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

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

Запустите Gemini CLI:

gemini

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

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 для решения одной бизнес-задачи.