Gemini CLI と Go を使用して MCP サーバーを構築する方法

1. はじめに

この Codelab では、Model Context Protocol(MCP)サーバーを構築してデプロイし、Gemini CLI の機能を拡張する方法を学びます。ここでは、Go 開発用のカスタムツールを提供する Go ベースのサーバーである godoctor を構築します。これにより、Gemini CLI が汎用コーディング アシスタントから Go 開発の専門家へと変貌します。

この Codelab では、プロンプト駆動型のアプローチを使用します。あなたは技術リーダーとして、AI アシスタント(Gemini CLI 自体)にプロンプトを提供します。このチュートリアルでは、プロジェクトの要件を効果的なプロンプトに変換し、実装の詳細を AI に処理させる方法を学びます。

このプロジェクトの中核となるのは、Model Context Protocol(MCP)です。MCP は、Gemini などの大規模言語モデル(LLM)が外部のツールやサービスと通信する方法を標準化するオープンソース プロトコルです。MCP は、AI が現実世界の情報にアクセスし、組み込みの知識を超えたアクションを実行できるようにするブリッジとして機能します。MCP サーバーを構築することで、Gemini CLI が検出して使用できるカスタム プラグインを作成し、新しいスキルを効果的に学習させることができます。

学習内容

  • Gemini CLI をインストールして構成する方法
  • ソフトウェア開発で AI アシスタントをガイドする効果的なプロンプトを作成する方法
  • AI アシスタントにコンテキストとガイドラインを提供する方法
  • Gemini CLI の機能を拡張するために MCP サーバーを作成して構成する方法
  • Go アプリケーションをコンテナ化して Google Cloud Run にデプロイする方法

必要なもの

このワークショップは、Google Cloud Shell 内で完全に実行できます。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: 拡張する AI 搭載のコマンドライン インターフェース
  • Model Context Protocol(MCP): Gemini CLI がカスタムツールと通信できるようにするオープンソース プロトコル
  • MCP 用 Go SDK: MCP サーバーの実装に使用する Go ライブラリ

Codelab を成功させるためのヒント

AI アシスタントを活用したソフトウェア開発は、新しい開発手法です。スムーズかつ確実に移行するためのヒントをいくつかご紹介します。

  1. ESC キーを押すことを恐れないでください。AI が提案するアクションやコードが、ユーザーの意図と異なる場合があります。ESC キーを使用して提案されたアクションをキャンセルし、新しいプロンプトを入力して正しい方向に誘導します。パートナー様がパイロットです。
  2. ツールの使用を促します。AI が迷っているように見える場合や、情報をでっち上げている場合は、利用可能なツールを使用するように促します。「Google 検索を使用して確認できますか?」や「read_file ツールを使用して現在のコードを理解してから変更してください」などのプロンプトは非常に効果的です。
  3. 手動による変更を避ける。AI にすべての作業を実行させます。これが、練習するコアスキルです。ただし、手動で変更する必要がある場合は、後で AI にそのことを伝えてください。「README.md ファイルを手動で更新しました。「もう一度読んで知識を更新してください」と指示することで、AI がプロジェクトと同期された状態を維持できます。
  4. 一度オフにしてからオンにするのは試しましたか?まれに、AI がユーザーのコマンドに反して特定のパスを強制しようとすることがあります。これは、コンテキストの劣化(コンテキストの腐敗とも呼ばれます)が原因である可能性があります。この場合は、Gemini CLI コマンド「/compress」を使用してコンテキスト ノイズを減らすか、極端な場合は「/clear」コマンドを使用してセッション履歴全体をクリアできます。

2. 環境設定

セルフペース型の環境設定

  1. Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。いつでも更新できます。
  • プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は PROJECT_ID と識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成できます。または、ご自身で試して、利用可能かどうかを確認することもできます。このステップ以降は変更できず、プロジェクトを通して同じ ID になります。
  • なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
  1. 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に請求が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクトを削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。

Cloud Shell を起動する

Google Cloud はノートパソコンからリモートで操作できますが、この Codelab では、Google Cloud Shell(Cloud 上で動作するコマンドライン環境)を使用します。

Google Cloud Console で、右上のツールバーにある Cloud Shell アイコンをクリックします。

Cloud Shell をアクティブにする

プロビジョニングと環境への接続にはそれほど時間はかかりません。完了すると、次のように表示されます。

環境が接続されていることを示す Google Cloud Shell ターミナルのスクリーンショット

この仮想マシンには、必要な開発ツールがすべて用意されています。永続的なホーム ディレクトリが 5 GB 用意されており、Google Cloud で稼働します。そのため、ネットワークのパフォーマンスと認証機能が大幅に向上しています。この Codelab での作業はすべて、ブラウザ内から実行できます。インストールは不要です。

3. Gemini CLI を使ってみる

このセクションでは、Gemini CLI について学習します。環境にインストールして構成する方法についても説明します。

Gemini CLI とは

Gemini CLI は、さまざまな開発タスクを支援する AI 搭載のコマンドライン インターフェースです。プロジェクトのコンテキストを理解し、質問に回答し、コードを生成し、外部ツールを使用して機能を拡張できます。

インストール

npm を使用して Gemini CLI をグローバルにインストールします。

npm install -g @google/gemini-cli

次のコマンドを実行して、CLI がインストールされていることを確認できます。

gemini --version

構成

Gemini CLI の動作は、構成ファイルと環境変数によって制御されます。主なファイルは次の 2 つです。

  • GEMINI.md: このファイルは、AI に自然言語のガイドラインとコンテキストを提供します。CLI はこのファイルを読み取って、プロジェクトのコーディング標準と規約を理解します。
  • .gemini/settings.json: このファイルは、外部ツールへの接続方法など、CLI の構成を制御します。このファイルを使用して、このラボで構築する MCP サーバーを使用するように CLI を構成します。

まず環境を設定し、次に GEMINI.md ファイルを作成します。settings.json ファイルは、後のステップで構成します。

  1. プロジェクト ディレクトリを作成して初期化します。
mkdir godoctor
cd godoctor
go mod init godoctor
  1. Google Cloud アプリケーションのデフォルト認証情報を使用して認証します。

この Codelab で使用する GCP プロジェクトにアクセスできるアカウントにログインする必要があります。

gcloud auth application-default login

4. 開発ガイドライン

AI アシスタントが高品質で慣用的な Go コードを生成できるようにするには、明確なガイドラインを提供することが不可欠です。これは GEMINI.md ファイルで行われます。

目標: このプロジェクトで AI アシスタントのルールセットとして機能する GEMINI.md ファイルを作成します。

タスク: godoctor ディレクトリのルートに GEMINI.md という名前のファイルを作成し、次の内容を貼り付けます。

# 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 サーバーの初期バージョンを作成することです。このバージョンは、Go ドキュメントを検索する機能を提供する godoc という単一のツールを提供する、最小限の本番環境対応アプリケーションである必要があります。

目標: go doc コマンドを公開し、LLM が Go ドキュメントをクエリできるようにする、本番環境対応の MCP サーバーを作成します。

シェルで Gemini CLI コマンドを実行します。

gemini

CLI を初めて実行すると、認証モードとテーマを選択するよう求められます。認証モードで [Google でログイン] を選択して個人の Google アカウントでログインすると、Gemini CLI の無料枠を利用できます。次のような認証モードを選択するオプションが表示されます。

7db0f94960fadac4.png

選択を変更する必要がある場合は、/auth と入力して Enter キーを押すと、このメニューを再度開くことができます。

次に、テーマを選択するよう求められます。

6289bdfb3b519fa7.png

/auth と同様に、後で /theme コマンドを使用してテーマを変更することもできます。

認証方法とテーマを選択すると、コマンド プロンプトが表示されます。ここにコマンドを入力します。たとえば、次のように入力します。

Write a hello world application in Go.

CLI は、独自の推論(Gemini Flash や Gemini Pro などの Gemini モデルを使用)とツールを組み合わせてタスクを実行します。ファイル システムや外部サービス(API、データベースなど)とやり取りする必要がある場合は、ツールを使用します。すぐに使用できるツール(「内部ツール」)の例としては、read_filewrite_fileweb_fetchgoogle_search などがあります。構築する MCP サーバーは、CLI で使用できるツールにもなります。

ツールを初めて実行する際には、権限の付与を求めるメッセージが表示されます。1 回限りの権限を付与するか、セッションの残りの期間の包括的な承認を行うか、リクエストを拒否できます。ファイル編集操作の場合は、必要に応じて外部エディタを使用してファイルを編集するオプションもあります。たとえば、上記のプロンプトの出力は次のようになります。

2cfd761183e4b770.png

プロンプトの他に、スラッシュ コマンドも使用できます。「/」と入力すると、CLI に自動的に補完オプションが表示されます。コマンド全体を入力するか、オプションから 1 つを選択します。上記の /auth コマンドと /theme コマンドは、そのようなコマンドの 1 つです。

26c3f3f7b8bceb3f.png

インターフェースに慣れたら、このセクションの主なタスクである、CLI に MCP サーバーの作成を依頼します。

Hello World MCP サーバーの作成

モデルがより一貫して構築できるようにする最善の方法の一つは、複雑なタスクを段階的なステップに分割することです。モデルは複雑なタスクを単独で解決できるかもしれませんが、適切な設定がないと、適切な実装を見つけるのに時間がかかります。

より一貫したアプローチをとるため、まず「Hello World」MCP サーバーを構築してから、目的の機能(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

上記のプロンプトは、次の 3 つの主要なセグメントで構成されています。

  1. 構築したいものや制約(任意の SDK ではなく公式 SDK を使用するなど)を含む問題の仕様
  2. リクエストの曖昧さを解消するためにモデルが参照するドキュメント
  3. タスクの受け入れ基準として機能するテスト手順

これら 3 つのコンポーネントを用意することで、モデルはより一貫して目的の結果を達成できます。

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.

このプロンプトを試したり、独自のプロンプトを作成したりしてみてください。

便利なコマンドライン インターフェース

適切な実装が決まったら、MCP クライアントを使用して godoctor CLI を作成するようにモデルに指示できます。これにより、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

クライアントとサーバーのセットが機能するようになったので、次のセクションでは、作成した MCP サーバーを使用して Gemini CLI を構成し、次のコーディング タスクでそのメリットを活用します。

関連リソース

MCP はまだ新しいコンセプトであり、MCP 用の Go SDK は新しいライブラリであるため、このステップでは Gemini が適切な実装を独自に見つけるのに時間がかかることがあります。モデルが適切なソリューションを導き出せるように、次の参照情報を提供することをおすすめします。

  1. モデルに次のプロンプトを指定すると、SDK API をより一貫して検出できます。「go doc シェルコマンドを使用して go-sdk ライブラリの API を検出する」
  2. モデルが read_file ツールを使用して SDK のソースコードを検査しようとすると、Gemini CLI は現在のスコープ外のファイルを読み取ることができないため、失敗します。run_shell_command ツールを使用して、代わりに cat コマンドと ls コマンドを使用するように指示できます。
  3. モデルがアプリケーションのデバッグに苦労している場合は、より詳細なロギングを追加し、エラー メッセージのコンテキスト情報を改善するように指示します。
  4. 他の方法がすべて失敗した場合は、リファレンス実装(https://github.com/danicat/godoctor)を試してください。

6. Gemini CLI の MCP サーバーとして godoctor を構成する

AI アシスタントがクライアントとサーバーの両方のコードを生成したら、いくつかの手動テストを実行するよう指示できます。次に例を示します。

retrieve the documentation for the package net/http

外部依存関係(標準ライブラリに含まれていないもの)でもテストしてください。

retrieve the documentation for the github.com/modelcontextprotocol/go-sdk/mcp 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 が開発の次のフェーズで使用できるようにサーバーを構成します。

  1. 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.
  1. 次に、Gemini CLI を再起動して構成する必要があります。まず、チャット セッションを保存して、再起動後に中断したところから再開できるようにしましょう。
/chat save workshop001
  1. Ctrl+D キーを 2 回押すか、/quit コマンドを入力して CLI を終了します。
  2. サーバー バイナリをコンパイルする: bin ディレクトリを作成し、その中に godoctor サーバーをコンパイルします。
mkdir -p bin
go build -o ./bin/godoctor ./cmd/godoctor # adjust paths as needed
  1. ローカルツール用に Gemini CLI を構成する: プロジェクトのルートに .gemini/settings.json ファイルを作成し、コンパイルされたサーバーの実行方法を Gemini CLI に指示する mcpServers セクションを追加します。
mkdir -p .gemini
touch .gemini/settings.json
  1. vimnano などのコマンドライン エディタを使用して、新しいファイルに次のコンテンツを追加します。
{
  "mcpServers": {
    "godoctor": {
      "command": "./bin/godoctor"
    }
  }
}
  1. Gemini CLI を起動して、チャット セッションを復元します。
/chat resume workshop001
  1. /mcp コマンドを入力すると、ツールが読み込まれていることを確認できます。/mcp desc を使用して、ツールの完全な説明を表示することもできます。

84e399367085940f.png

  1. 「net/http のドキュメントを取得して」などのプロンプトを使用して Gemini CLI にツールを使用するようリクエストし、統合をテストします。

次のように表示されます。

ce0d27e7cc66df17.png

ツールが正しく動作している場合は、ツール呼び出しで取得されたドキュメントが表示されます。

eca5bcc6dc20df05.png

お疲れさまでした。これで MCP ツールが完成しました。しかし、これで終わりではありません。もう少し便利にすることができます。

7. AI を活用したコードレビュー担当者の追加

Gemini API を使用するコード レビューアという、より高度な AI 搭載機能を追加してみましょう。

目標: 既存のプロジェクトに code_review という名前の新しいツールを追加します。このツールは、Gemini API を使用して Go コードを分析し、フィードバックを提供します。

プロンプトの例:

I want to add a new tool to my project called code_review. This tool should use the Gemini API on Vertex AI (with gemini-2.5-flash) 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 ツールが利用可能になったことを通知できます。

コード レビュー担当者のテスト

  1. /chat save workshop002 でチャット セッションを保存し、Ctrl+D キーを 2 回押して CLI を終了します。
  2. code_review ツールは Vertex AI にアクセスする必要があるため、まず API を有効にする必要があります。
gcloud services enable aiplatform.googleapis.com
  1. 次の内容の .env ファイルを作成します。GOOGLE_CLOUD_PROJECT 変数を、このラボの冒頭で作成したプロジェクトの実際のプロジェクト ID に置き換え、GOOGLE_CLOUD_LOCATION を優先するロケーション(例: 「us-central1」)に置き換えることを忘れないでください。
export GOOGLE_GENAI_USE_VERTEXAI=true
export GOOGLE_CLOUD_PROJECT='your-project-id'
export GOOGLE_CLOUD_LOCATION='your-location'
  1. コマンドソースを使用して .env ファイルを読み込みます。
source .env
  1. 新しいツール定義を使用してサーバーを再コンパイルします。
go build -o ./bin/godoctor ./cmd/godoctor
  1. Gemini CLI を再度起動します。/chat resume workshop002 を使用してチャット セッションを復元します。
  2. /mcp コマンドを入力して、ツールが有効になっていることを確認します。次のように表示されます。

cde6e516c4993ad2.png

  1. 次に、ツールのソースファイルの 1 つを確認して、code-review ツールをテストします。

「godoctor ツールを使用して cmd/godoctor/main.go ファイルを確認します。」

    You should see something like this:

c55d1dc88ffa3924.png

コードレビュー ツールが動作するようになったので、モデルに改善案の適用を提案して、完全な「自己改善」ワークフローを実現できます。

これで、code-review ツールが動作することを確認できました。次のセクションでは、クラウドへのデプロイについて説明します。/chat save workshop003 で現在のセッションを保存し、CLI を終了します。

8. クラウド用にサーバーを準備する

これまで開発してきた MCP サーバーはローカルマシンでのみ実行されます。これは、自分用のツールを開発している場合は問題ありませんが、企業環境では、数百人、数千人の開発者が使用するツールをデプロイする必要があることがよくあります。

MCP サーバーをスケーリングするには、標準 I/O のみを使用するサーバーから HTTP を使用できるサーバーに変換し、さまざまなデベロッパーがアクセスできる場所にデプロイする必要があります。この目標では、MCP 仕様でストリーミング可能な HTTP として定義されているトランスポート モードを使用し、Cloud Run をデプロイ ターゲットとして使用します。

目標: ストリーミング可能な HTTP トランスポートを使用するように godoctor サーバーをリファクタリングします。

プロンプトの例:

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.

関連リソース

  1. モデルでストリーミング可能な HTTP トランスポートの実装に問題がある場合は、https://github.com/modelcontextprotocol/go-sdk/blob/main/design/design.md を参照してください。
  2. モデルは、非推奨の HTTP+SSE を使用しようとする可能性があります。このパスを通過している場合は、ストリーミング可能な HTTP に戻します。

HTTP を使用してサーバーをテストする

モデルに、godoctor クライアントを更新してストリーミング可能な HTTP も使用するように依頼し、引き続き動作することを確認します。

Now update the client to use streamable HTTP and run a test by retrieving documentation from one package

省略可: HTTP 経由でサーバーを使用するように Gemini CLI を構成する場合は:

  1. セッションを保存して CLI を終了する
  2. .gemini/settings.json ファイルを編集し、ローカルで実行中のサーバーを指すように構成を変更します。
"mcpServers": {
  "godoctor": {
    "httpUrl": "http://localhost:8080"
  }
}
  1. リファクタリングされたサーバーをローカルで実行します。
go run ./cmd/godoctor/main.go
  1. 新しいターミナルで(上記のオペレーションはブロックされているため)、Gemini CLI を起動し、接続をテストするプロンプトを指定します。例: 「godoctor ツールを使用して fmt.Println のドキュメントを取得します。」
  2. テストが完了したら、Ctrl+C キーを押してサーバーを停止します。

9. Docker を使用してアプリケーションをコンテナ化する

サーバーが正しいトランスポート プロトコルを使用するようになったので、デプロイ用にコンテナ化できます。

目標: godoctor サーバーをポータブルで本番環境に対応したコンテナ イメージにパッケージ化する Dockerfile を作成します。

プロンプトの例:

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

省略可: テストを手動で行う場合:

  1. コンテナを構築します。
docker build -t godoctor:latest .
  1. コンテナをローカルで実行します。
docker run -p 8080:8080 -e PORT=8080 godoctor:latest
  1. 実行中のコンテナをテストする: 別のターミナルで Gemini CLI を起動し、ドキュメントを取得するように指示します。
  2. テストが完了したら、Ctrl+C キーを押してサーバーを停止します。

10. Cloud Run へのデプロイ

次に、コンテナをクラウドにデプロイします。

目標: コンテナ化された godoctor サーバーを Google Cloud Run にデプロイします。

プロンプトのガイダンス: AI アシスタントに、コンテナをデプロイするための gcloud コマンドを提供するよう依頼します。

プロンプトの例:

Now please deploy this image to Cloud Run and return me an URL I can use to call the MCP tool. Configure Cloud Run to use the environment variables in the .env file.

デプロイが完了したら、デプロイしたツールを使用するように Gemini CLI を構成します。

.gemini/settings.json ファイルを更新して、デプロイされたサービスを指すように MCP ツールの構成を変更するか、Gemini CLI に変更を依頼します。

now update the .gemini/settings.json file to use this URL for the godoctor server

最終的な mcpServers セクションは次のようになります(プレースホルダを実際の Cloud Run アプリの URL に置き換えてください)。

"mcpServers": {
  "godoctor": {
    "httpUrl": "https://<your-cloud-run-id>.us-central1.run.app"
  }
}

Cloud Run デプロイをテストする

これで、最終的なエンドツーエンド テストの準備が整いました。

Gemini CLI をもう一度再起動します(/chat save/chat resume を使用してコンテキストを保持します)。これで、CLI からリモート MCP サーバーを呼び出すことができるようになります。パッケージのドキュメントをリクエストしてみてください。

コードレビュー ツールをテストすることもできます。

Use the godoctor tool to review the cmd/godoctor/main.go file

クリーンアップ

テストが完了したら、環境をクリーンアップします。Gemini に、プロジェクトを削除するか、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. 完了

AI アシスタントをガイドして、高度な AI 搭載ツールを構築、コンテナ化、デプロイしました。さらに重要なのは、要件を効果的なプロンプトに変換するという、最新のソフトウェア開発に不可欠なスキルを習得したことです。カスタム MCP ツールを使用して Gemini CLI を拡張し、より強力で専門的な Go 開発アシスタントにすることができました。

リファレンス ドキュメント