1. Введение
В этой лабораторной работе вы научитесь создавать и разворачивать сервер Model Context Protocol (MCP) для расширения возможностей Gemini CLI . Вы будете создавать godoctor — сервер на базе Go, предоставляющий специальные инструменты для разработки на Go, превращая Gemini CLI из универсального помощника по программированию в специализированного эксперта по разработке на Go.
В этой лабораторной работе используется подход, основанный на подсказках. Вы будете выступать в роли технического руководителя, предоставляя подсказки своему ИИ-помощнику (самому Gemini CLI). Ваша цель — научиться переводить требования проекта в эффективные подсказки и доверить ИИ управление деталями реализации.
В основе этого проекта лежит протокол контекста модели (MCP). MCP — это протокол с открытым исходным кодом, который стандартизирует взаимодействие больших языковых моделей (LLM), таких как Gemini, с внешними инструментами и сервисами. Он действует как мост, позволяя ИИ получать доступ к реальной информации и выполнять действия, выходящие за рамки его встроенных знаний. Создавая сервер MCP, вы создаете специальный плагин, который интерфейс командной строки Gemini может обнаружить и использовать, эффективно обучая его новым навыкам.
Чему вы научитесь
- Как установить и настроить Gemini CLI
- Как сформулировать эффективные подсказки для помощника ИИ при разработке программного обеспечения
- Как предоставить контекст и рекомендации помощнику на основе искусственного интеллекта
- Как создать и настроить сервер MCP для расширения возможностей Gemini CLI
- Как контейнеризировать и развернуть приложение Go в Google Cloud Run
Что вам понадобится
Этот семинар можно полностью запустить в Google Cloud Shell, который предварительно установлен со всеми необходимыми зависимостями (gcloud CLI, Go, Docker, Gemini CLI).
Если же вы предпочитаете работать на собственном станке, вам понадобится следующее:
- Node.js 20 или более поздняя версия
- Проект Google Cloud с включенным биллингом
- Установлен и инициализирован Google Cloud SDK (gcloud CLI)
- Go 1.24 или более поздняя версия, установленная на вашей системе
- Docker установлен в вашей системе
Ключевые технологии
Здесь вы можете найти более подробную информацию о технологиях, которые мы будем использовать:
- Gemini CLI : интерфейс командной строки на базе искусственного интеллекта, который мы будем расширять
- Model Context Protocol (MCP) : протокол с открытым исходным кодом, который позволяет Gemini CLI взаимодействовать с нашим пользовательским инструментом.
- Go SDK для MCP : библиотека Go, которую мы будем использовать для реализации нашего сервера MCP.
Советы для успешного проведения кодлабораторной работы
Работа с ИИ-помощником — это новый подход к разработке программного обеспечения. Вот несколько советов, которые помогут сделать процесс плавным и успешным:
- Не бойтесь нажимать ESC. ИИ иногда предлагает действия или код, с которыми вы не согласны. Используйте клавишу ESC, чтобы отменить предложенное действие и дать новую подсказку, которая поможет ему двигаться в правильном направлении. Вы — пилот.
- Поощряйте использование инструментов. Если ИИ кажется потерянным или выдумывает информацию, предложите ему использовать доступные инструменты. Подсказки вроде «Можно ли использовать Google Поиск, чтобы проверить это?» или «Используйте инструмент read_file, чтобы понять текущий код, прежде чем вносить изменения» могут быть очень эффективными.
- Избегайте ручных изменений. Постарайтесь поручить всю работу ИИ. Это основной навык, который вы оттачиваете. Однако, если вам необходимо внести изменения вручную, сообщите об этом ИИ позже. Подсказка типа «Я вручную обновил файл README.md. Пожалуйста, перечитайте его, чтобы освежить свои знания», обеспечит синхронизацию ИИ с вашим проектом.
- Вы пробовали выключить и снова включить его? В редких случаях, когда ИИ пытается навязать заданный путь вопреки вашей команде, это может быть связано с ухудшением контекста (иногда называемым «контекстной порчей»). В этом случае вы можете использовать команду Gemini CLI «/compress» для уменьшения контекстного шума или, в крайнем случае, команду «/clear» для очистки всей истории сеанса.
2. Настройка среды
Настройка среды для самостоятельного обучения
- Войдите в Google Cloud Console и создайте новый проект или используйте существующий. Если у вас ещё нет учётной записи Gmail или Google Workspace, вам необходимо её создать .
- Название проекта — отображаемое имя участников проекта. Это строка символов, не используемая API Google. Вы можете изменить её в любой момент.
- Идентификатор проекта уникален для всех проектов Google Cloud и неизменяем (нельзя изменить после установки). Cloud Console автоматически генерирует уникальную строку; обычно вам не важно, какой именно. В большинстве практических работ вам потребуется указать идентификатор проекта (обычно обозначаемый как
PROJECT_ID
). Если вам не нравится сгенерированный идентификатор, вы можете сгенерировать другой случайный идентификатор. Вы также можете попробовать использовать свой собственный идентификатор и посмотреть, доступен ли он. После этого шага его нельзя будет изменить, и он останется на протяжении всего проекта. - К вашему сведению, существует третье значение — номер проекта , который используется некоторыми API. Подробнее обо всех трёх значениях можно узнать в документации .
- Далее вам нужно включить биллинг в Cloud Console для использования облачных ресурсов/API. Выполнение этой лабораторной работы не потребует больших затрат, если вообще потребует. Чтобы отключить ресурсы и избежать списания средств за пределами этого руководства, вы можете удалить созданные вами ресурсы или проект. Новые пользователи Google Cloud могут воспользоваться бесплатной пробной версией стоимостью 300 долларов США .
Запустить Cloud Shell
Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лабораторной работе вы будете использовать Google Cloud Shell — среду командной строки, работающую в облаке.
В консоли Google Cloud Console нажмите значок Cloud Shell на верхней правой панели инструментов:
Подготовка и подключение к среде займёт всего несколько минут. После завершения вы увидите примерно следующее:
Эта виртуальная машина содержит все необходимые инструменты разработки. Она предоставляет постоянный домашний каталог объёмом 5 ГБ и работает в облаке Google Cloud, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лабораторной работе можно выполнять в браузере. Вам не нужно ничего устанавливать.
3. Начало работы с Gemini CLI
В этом разделе вы узнаете о Gemini CLI, в том числе о том, как установить и настроить его для вашей среды.
Что такое Gemini CLI?
Gemini CLI — это интерфейс командной строки на базе искусственного интеллекта, который поможет вам в решении широкого спектра задач разработки. Он способен понимать контекст вашего проекта, отвечать на вопросы, генерировать код и использовать внешние инструменты для расширения своих возможностей.
Установка
Установите Gemini CLI глобально с помощью npm.
npm install -g @google/gemini-cli
Вы можете убедиться, что CLI установлен, выполнив:
gemini --version
Конфигурация
Поведение Gemini CLI контролируется файлами конфигурации и переменными окружения. Существует два ключевых файла:
-
GEMINI.md
: этот файл содержит инструкции и контекст для ИИ по естественному языку. Интерфейс командной строки (CLI) считывает этот файл, чтобы определить стандарты и соглашения по кодированию вашего проекта. -
.gemini/settings.json
: этот файл управляет конфигурацией CLI, включая подключение к внешним инструментам. Мы будем использовать этот файл для настройки CLI на использование сервера MCP, который мы создаём в этой лабораторной работе.
Сначала мы настроим среду, а затем создадим файл GEMINI.md
. Файл settings.json
будет настроен позже.
- Создайте и инициализируйте каталог проекта:
mkdir godoctor
cd godoctor
go mod init godoctor
- Выполните аутентификацию, используя учетные данные приложения Google Cloud по умолчанию:
Нам необходимо войти в учетную запись, имеющую доступ к проекту GCP, который вы собираетесь использовать для этой лабораторной работы:
- Убедитесь, что у вас установлен и инициализирован Google Cloud SDK .
- Выполните следующую команду, чтобы настроить учетные данные приложения по умолчанию:
gcloud auth application-default login
4. Руководство по разработке
Чтобы ИИ-помощник мог генерировать качественный и понятный код на Go, необходимо предоставить ему чёткие инструкции. Это делается в файле GEMINI.md.
Цель: Создать файл GEMINI.md, который будет служить набором правил для ИИ-помощника в этом проекте.
Задача: Создайте файл с именем GEMINI.md в корневом каталоге вашего godoctor и вставьте в него следующее содержимое.
# Go Development Guidelines
All code contributed to this project must adhere to the following principles.
### 1. Formatting
All Go code **must** be formatted with `gofmt` before being submitted.
### 2. Naming Conventions
- **Packages:** Use short, concise, all-lowercase names.
- **Variables, Functions, and Methods:** Use `camelCase` for unexported identifiers and `PascalCase` for exported identifiers.
- **Interfaces:** Name interfaces for what they do (e.g., `io.Reader`), not with a prefix like `I`.
### 3. Error Handling
- Errors are values. Do not discard them.
- Handle errors explicitly using the `if err != nil` pattern.
- Provide context to errors using `fmt.Errorf("context: %w", err)`.
### 4. Simplicity and Clarity
- "Clear is better than clever." Write code that is easy to understand.
- Avoid unnecessary complexity and abstractions.
- Prefer returning concrete types, not interfaces.
### 5. Documentation
- All exported identifiers (`PascalCase`) **must** have a doc comment.
- Comments should explain the *why*, not the *what*.
# Agent Guidelines
- **Reading URLs:** ALWAYS read URLs provided by the user. They are not optional.
Теперь ваша среда разработки полностью настроена.
5. Начальная сборка: сервер godoc
Ваша первая цель — создать начальную версию сервера godoctor
. Эта версия должна представлять собой минимальное, готовое к использованию приложение, предоставляющее единый инструмент godoc
для поиска документации по Go.
Цель: создать готовый к использованию сервер MCP, предоставляющий доступ к команде go doc, что позволяет LLM запрашивать документацию Go.
Запустите команду Gemini CLI в оболочке:
gemini
При первом запуске CLI вам будет предложено выбрать режим аутентификации и тему. Выберите «Войти через Google», чтобы войти с помощью личного аккаунта Google и воспользоваться щедрым бесплатным доступом Gemini CLI. Вы увидите опцию выбора режима аутентификации, похожую на эту:
Если вам необходимо изменить свой выбор, вы можете ввести /auth
и нажать Enter, чтобы снова открыть это меню.
Далее вам будет предложено выбрать тему:
Подобно /auth
, вы также можете изменить тему позже с помощью команды /theme
.
После выбора метода аутентификации и предпочитаемой темы вы перейдете в командную строку. Здесь вы можете вводить команды, например:
Write a hello world application in Go.
Интерфейс командной строки (CLI) использует комбинацию собственных алгоритмов (через модель Gemini, например, Gemini Flash или Gemini Pro) и инструментов для выполнения задач. Он использует инструменты всякий раз, когда ему необходимо взаимодействовать с файловой системой или внешними службами, такими как API, базы данных и т. д. Примерами готовых инструментов, или «внутренних инструментов», являются read_file , write_file , web_fetch и google_search . Создаваемый нами сервер MCP также станет инструментом, доступным для CLI.
При первом запуске инструмента он запросит ваше разрешение. Вы можете предоставить ему одноразовое разрешение, полное разрешение на весь сеанс или отклонить запрос. Если это операция редактирования файла, вы также найдете возможность редактировать файл с помощью внешнего редактора, на случай, если вам понадобится внести какие-либо изменения. Например, вот вывод приведенного выше запроса на создание программы «Hello World»:
Помимо приглашений, вы также можете использовать команды с косой чертой. Если вы введёте «/», CLI автоматически покажет варианты автодополнения. Вы можете продолжить вводить команду полностью или выбрать один из предложенных вариантов. Упомянутые выше команды /auth
и /theme
— примеры таких команд.
Ознакомившись с интерфейсом, можно приступать к выполнению основной задачи этого раздела — попросить CLI написать для нас сервер MCP.
Создание MCP-сервера Hello World
Один из лучших способов обеспечить более согласованное выполнение модели — разбить сложные задачи на пошаговые этапы. Хотя модель может справиться со сложной задачей самостоятельно, без правильной настройки ей потребуется много времени, чтобы найти правильную реализацию.
Для более последовательного подхода мы сначала попросим его построить MCP-сервер «Hello World», прежде чем реализовывать нужную нам функциональность (см. документацию go).
Пример подсказки показан ниже:
Your task is to create a Model Context Protocol (MCP) server to expose a "hello world" tool. For the MCP implementation, you should use the official Go SDK for MCP and use the stdio transport.
Read these references to gather information about the technology and project structure before writing any code:
- https://github.com/modelcontextprotocol/go-sdk/blob/main/README.md
- https://modelcontextprotocol.io/specification/2025-06-18/basic/lifecycle
- https://go.dev/doc/modules/layout
To test the server, use shell commands like these:
(
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18"}}';
echo '{"jsonrpc":"2.0","method":"notifications/initialized","params":{}}';
echo '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}';
) | ./bin/godoctor
Обратите внимание, что приведенная выше подсказка состоит из трех основных сегментов:
- Спецификация проблемы, включая то, что мы хотим построить, и ограничения (например, использовать официальный SDK вместо любого SDK)
- Справочная документация для модели, помогающая ей разрешить неоднозначность запроса
- Процедура тестирования, которая служит критерием приемки задачи
Наличие этих трех компонентов поможет модели достигать желаемых результатов более последовательно.
Реализация инструмента Go doc
Как только у вас появится рабочая реализация, мы можем перейти к реализации настоящего инструмента «go doc»:
Add a new tool to our MCP server called "godoc" that invokes the "go doc" shell command. The tool will take a mandatory "package" argument and an optional "symbol" argument.
Read the reference for the go doc command to understand its API: https://pkg.go.dev/golang.org/x/tools/cmd/godoc
Test it by executing the call with:
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name": "godoc", "arguments": {"package": "fmt"} } }'
| ./bin/godoctor
Test it using both a standard library package and an external package like "github.com/modelcontextprotocol/go-sdk/mcp", both with and without symbols.
Не стесняйтесь экспериментировать с этим предложением или придумать свое собственное.
Удобный интерфейс командной строки
Как только вы определитесь с подходящей реализацией, вы можете поручить модели создать CLI-интерфейс Godoctor с помощью MCP-клиента. Это поможет оптимизировать тестирование функций, избавив от необходимости вручную создавать вызовы JSON-RPC, как это делалось до сих пор.
Пример подсказки:
Now create a godoctor-cli component that will call the MCP server using command transport. This CLI will expose all tools using subcommands and allow us to test the MCP server implementation without needing to build the JSON-RPC calls manually.
Use the reference implementation at https://github.com/modelcontextprotocol/go-sdk/blob/main/README.md to build the client.
Test it by calling from the command line:
- the hello_world tool
- the godoc tool with a local package
- the godoc tool with a local package and symbol
- the godoc tool with an external package
- the godoc tool with an external package and symbol
Теперь, когда у вас есть рабочий набор клиента и сервера, в следующем разделе вы настроите Gemini CLI с сервером MCP, который вы только что создали, чтобы начать использовать его преимущества в следующей задаче кодирования.
Полезные ресурсы
Учитывая, что MCP всё ещё является новой концепцией, а Go SDK для MCP — новой библиотекой, на этом этапе Gemini может потребоваться много времени, чтобы самостоятельно найти подходящую реализацию. Чтобы помочь модели найти правильное решение, можно предоставить ей следующие ссылки:
- Вы можете дать модели следующую подсказку, чтобы она могла более последовательно обнаруживать API SDK: «используйте команду оболочки go doc, чтобы обнаружить API для библиотеки go-sdk».
- Если модель попытается проверить исходный код SDK с помощью инструмента
read_file
, это завершится ошибкой, поскольку Gemini CLI не может читать файлы за пределами текущей области действия. Вы можете указать ей использовать командыcat
иls
с помощью инструментаrun_shell_command
. - Если у модели возникают проблемы с отладкой приложения, поручите ей добавить более подробное журналирование и улучшить контекстную информацию в сообщениях об ошибках.
- Если все остальное не помогает, используйте эталонную реализацию: https://github.com/danicat/godoctor
6. Настройка godoctor как сервера MCP для Gemini CLI
После того, как ИИ-помощник сгенерирует код для клиента и сервера, вы можете поручить ему выполнить несколько ручных тестов. Например:
retrieve the documentation for the package net/http
Обязательно протестируйте его с внешней зависимостью (не в стандартной библиотеке):
retrieve the documentation for the go-sdk package
Когда вы будете удовлетворены результатами, поручите ему написать README.md с инструкциями по использованию и развитию этого проекта.
Now write a detailed README.md file explaining both from a user and a developer perspective how to use and to build this project.
Теперь мы настроим сервер так, чтобы Gemini CLI мог использовать его на следующем этапе разработки.
- Попросите CLI обновить GEMINI.md, чтобы использовать
godoc
в качестве предпочтительного метода чтения документации:
update the GEMINI.md file to use the godoc tool to retrieve documentation about Go packages or symbols. Always prefer to use godoc over WebFetch and GoogleSearch, and only use those when godoc doesn't give a clear answer.
- Теперь нам нужно перезапустить Gemini CLI для его настройки. Для начала сохраним сеанс чата, чтобы вы могли продолжить с того места, на котором остановились, после перезапуска.
/chat save workshop001
- Выйдите из CLI, дважды нажав Ctrl+D.
- Скомпилируйте двоичный файл сервера: создайте каталог
bin
и скомпилируйте в него сервер godoctor.
mkdir -p bin
go build -o ./bin/godoctor ./cmd/godoctor # adjust paths as needed
- Настройте Gemini CLI для локального инструмента: создайте файл
.gemini/settings.json
в корневом каталоге вашего проекта и добавьте разделmcpServers
, чтобы указать Gemini CLI, как запускать ваш скомпилированный сервер.
mkdir -p .gemini
touch .gemini/settings.json
- Теперь добавьте следующее содержимое в новый файл, используя редактор командной строки, такой как
vim
илиnano
:
{
"mcpServers": {
"godoctor": {
"command": "./bin/godoctor"
}
}
}
- Теперь запустите Gemini CLI и восстановите сеанс чата:
/chat resume workshop001
- Вы сможете увидеть, что инструмент загружен, нажав Ctrl+T:
- Проверьте интеграцию, попросив Gemini CLI использовать ваш инструмент с помощью подсказки типа «Получить документацию по net/http».
Вы должны увидеть что-то вроде этого:
Если инструмент работает правильно, вы должны увидеть документацию, полученную с помощью вызова инструмента:
Поздравляем, вы создали инструмент MCP! Но это ещё не всё: мы можем сделать его ещё более полезным.
7. Добавление рецензента кода на основе искусственного интеллекта
Давайте добавим более сложную функцию на базе искусственного интеллекта: средство проверки кода, использующее API Gemini.
Цель: добавить в существующий проект новый инструмент code_review. Этот инструмент будет использовать API Gemini для анализа кода Go и предоставления обратной связи.
Пример подсказки:
I want to add a new tool to my project called code_review. This tool should use the Gemini API to analyze Go code and provide a list of improvements in json format according to the best practices accepted by the Go community. The tool should take the Go code content and an optional hint as input. The hint will be used to provide additional guidance for the AI reviewer, like "focus on security" or "help me simplify this code". Please update the server to include this new tool and modify the CLI client to add a review command to use it.
Use this SDK to call Gemini: https://github.com/googleapis/go-genai
Полезные советы
Как только модель начнёт работать, вы можете автоматически увидеть запрос на вызов инструмента godoc
для просмотра документации по пакету genai
. Если этого не произойдёт, вы всегда можете прервать процесс, нажав клавишу ESC, и напомнить, что теперь у неё есть инструмент godoc
.
Тестирование Code Reviewer
- Необходимо перезапустить Gemini CLI для сборки и перезагрузки сервера MCP. Сохраните сеанс чата командой
/chat save workshop002
, а затем выйдите из CLI, дважды нажав Ctrl+D. - Инструменту
code_review
необходим ключ API, поскольку мы вызываем модель Gemini для проведения проверок. Вы можете сгенерировать ключ API с помощью Google AI Studio . - Настройте переменную среды
GEMINI_API_KEY
с помощью ключа API, сгенерированного на предыдущем шаге:
export GEMINI_API_KEY="YOUR_API_KEY"
- Перекомпилируйте сервер: после добавления нового инструмента необходимо перекомпилировать двоичный файл сервера, чтобы включить изменения.
go build -o ./bin/godoctor ./cmd/godoctor
- Снова запустите Gemini CLI. Восстановите сеанс чата командой
/chat resume workshop002
. - Важно. Убедитесь, что вы прошли аутентификацию с помощью своего личного аккаунта Gmail, чтобы интерфейс командной строки Gemini не использовал ваш платёжный аккаунт. Это можно сделать с помощью команды
/auth
:
- Подтвердите включение инструмента, нажав Ctrl+T. Вы должны увидеть что-то вроде этого:
- Теперь давайте протестируем инструмент
code-review
просмотрев один из исходных файлов инструмента:
«Используйте инструмент godoctor для проверки файла cmd/godoctor/main.go».
You should see something like this:
Теперь, когда инструмент проверки кода работает, вы можете предложить модели применить некоторые из найденных ею улучшений для полноценного «самосовершенствующегося» рабочего процесса!
Вы убедились, что инструмент code-review
работает. В следующем разделе вы займётесь его развертыванием в облаке.
Чтобы очистить GEMINI_API_KEY:
- Сохраните текущий сеанс с помощью
/chat save workshop003
и выйдите из CLI. - Сохраните резервную копию ключа API в безопасном месте:
export | grep GEMINI_API_KEY > env.bkp
- Отменить установку
GEMINI_API_KEY
:
export GEMINI_API_KEY=
- Перезапустите CLI и загрузите сеанс с помощью
/chat resume workshop003
- Попросите модель применить улучшения проверки кода.
8. Подготовьте свой сервер к облаку
Разработанный нами на данный момент сервер MCP работает только на локальной машине, что приемлемо, если вы разрабатываете инструменты для собственного использования, но в корпоративных средах часто требуется развертывать инструменты для более широкого использования сотнями или даже тысячами разработчиков.
Чтобы масштабировать наш сервер MCP, нам необходимо преобразовать его из сервера, поддерживающего только стандартный ввод-вывод, в сервер с поддержкой HTTP и развернуть его в месте, где он будет доступен различным разработчикам. Для этой цели мы будем использовать транспортный режим, определённый в спецификации MCP как потоковое HTTP, и Cloud Run в качестве цели развёртывания.
Цель: Реорганизовать сервер Godoctor для использования потокового HTTP-транспорта.
Пример подсказки:
The godoctor server is currently using the stdio transport. I want to deploy it to Cloud Run, so I need to refactor it to use the streamable HTTP transport instead. Please modify the server to comply with the streamable HTTP specification.
Полезные ресурсы
- Если модель испытывает трудности с реализацией потокового HTTP-транспорта, вы можете предоставить ей следующую ссылку: https://github.com/modelcontextprotocol/go-sdk/blob/main/design/design.md
- Модель может попытаться использовать HTTP+SSE, который устарел. Если вы видите, что она идёт по этому пути, верните её к потоковому HTTP.
Тестирование сервера с использованием HTTP
Попросите модель обновить клиент godoctor, чтобы он также использовал потоковый HTTP, чтобы вы могли проверить, что он все еще работает.
Now update the client to use streamable HTTP and run a test by retrieving documentation from one package
Необязательно: если вы хотите настроить Gemini CLI для использования сервера через HTTP:
- Сохраните сеанс и выйдите из CLI.
- Отредактируйте файл
.gemini/settings.json
и измените конфигурацию так, чтобы она указывала на ваш локальный работающий сервер.
"mcpServers": {
"godoctor": {
"httpUrl": "http://localhost:8080"
}
}
- Запустите рефакторинговый сервер локально:
go run ./cmd/godoctor/main.go
- В новом терминале (поскольку указанная выше операция блокирует) запустите Gemini CLI и введите запрос на проверку соединения, например: «Используйте инструмент godoctor для получения документации по fmt.Println».
- После завершения тестирования остановите сервер сочетанием клавиш Ctrl+C.
9. Контейнеризация приложения с помощью Docker
Теперь, когда наш сервер использует правильный транспортный протокол, мы можем контейнеризировать его для развертывания.
Цель: создать Dockerfile для упаковки сервера Godoctor в портативный, готовый к использованию образ контейнера.
Пример подсказки:
Please create a multi-stage Dockerfile that compiles the Go binary and copies it into a minimal golang image like golang:1.24-alpine.
Тестирование образа Docker
После создания Dockerfile
соберите образ и запустите его, чтобы убедиться в его корректной работе. Вы можете поручить это сделать Gemini:
build the image and test the connectivity to the server using the godoctor client
Необязательно: если вы хотите провести тест вручную:
- Сборка контейнера:
docker build -t godoctor:latest .
- Запустите контейнер локально:
docker run -p 8080:8080 -e PORT=8080 godoctor:latest
- Проверьте работающий контейнер: в другом терминале запустите Gemini CLI и попросите его загрузить документацию.
- После завершения тестирования остановите сервер сочетанием клавиш Ctrl+C.
10. Развертывание в Cloud Run
Теперь пришло время развернуть наш контейнер в облаке.
Цель: Развернуть контейнерный сервер Godoctor в Google Cloud Run.
Подсказка: попросите своего помощника на основе искусственного интеллекта предоставить команды gcloud для развертывания вашего контейнера.
Пример подсказки:
Now please deploy this image to Cloud Run and return me an URL I can use to call the MCP tool. Deploy it to us-central1 and use the project currently configured in the environment.
После завершения развертывания мы настроим Gemini CLI для использования только что развернутого вами инструмента.
Попросите Gemini обновить ваш файл .gemini/settings.json
, чтобы изменить конфигурацию инструмента MCP так, чтобы она указывала на развернутую вами службу.
now update the .gemini/settings.json file to use this URL for the godoctor server
Окончательный раздел mcpServers
должен выглядеть следующим образом (не забудьте заменить заполнитель на URL-адрес вашего фактического приложения Cloud Run):
"mcpServers": {
"godoctor": {
"httpUrl": "https://<your-cloud-run-id>.us-central1.run.app"
}
}
Тестирование развертывания Cloud Run
Теперь вы готовы к финальному сквозному тесту.
Перезапустите Gemini CLI в последний раз (используя /chat save
и /chat resume
для сохранения контекста). Теперь CLI должен иметь возможность обращаться к удалённому серверу MCP. Попробуйте запросить документацию по любым пакетам.
Помните, что для использования инструмента проверки кода сервису необходим ключ GEMINI_API_KEY
. Вы можете попросить Gemini CLI повторно развернуть его в нужной среде:
update the cloud run environment to add a GEMINI_API_KEY and use the value in @env.bkp. Then update the .gemini/settings.json file with the correct service URL
Перезапустите CLI и проверьте его с помощью приглашения:
Use the godoctor tool to review the cmd/godoctor/main.go file
Теперь Gemini CLI подключится к развернутой службе Cloud Run и выполнит проверку кода.
Пример подсказки:
I'm done with my tests on the CloudRun server, please delete this deployment for me and revert my .gemini/settings.json to use the local version.
11. Поздравляем!
Вы успешно руководили работой помощника на основе искусственного интеллекта (ИИ) по созданию, контейнеризации и развертыванию сложного инструмента на базе ИИ. Что ещё важнее, вы отработали важнейший навык современной разработки программного обеспечения: преобразование требований в эффективные подсказки. Вы успешно расширили интерфейс командной строки Gemini, добавив специальный инструмент, сделав его более мощным и специализированным помощником по разработке на Go.