Gemini CLIのためにMCPツールをセットアップして使用する方法
生成AIはウェブ検索やAPI呼び出し、コード実行などを通じて外部データにアクセスできるようになりました。
しかし、これらの方法は一時的かつ非構造的で、エラーが発生しやすく、安定して運用するには課題が残ります。
このチュートリアルでは、Gemini CLI 用にカスタム MCP ツールを作成して使用する完全なプロセスを説明します。
目標: get_time という名前のカスタムツールを作成し、Gemini CLI で現在のシステム時刻を返すことができるようにします。
ステップ1:プロジェクトのセットアップ
まず、クリーンな作業ディレクトリを作成します。
mkdir -p mcp_project
cd mcp_project
ステップ2:FastMCPのインストール
MCPサーバーを作成するために必要な依存ライブラリをインストールします。
pip3 install 'fastmcp>=2.12.3'
注意: インストール後、fastmcp コマンドのパス(例: ~/.local/bin)がシステムの PATH に含まれていないという警告が表示されることがあります。この完全なパスをメモしておいてください。後のステップで必要になります。
ステップ3:ツールサーバーの作成
mcp_project ディレクトリに server.py ファイルを作成します。
# server.py
import datetime
from fastmcp import FastMCP
# 1. FastMCP のインスタンスを作成します(インスタンス名として mcp を推奨)
mcp = FastMCP()
# 2. インスタンスをデコレータとして使用してツールを登録します
@mcp.tool
def get_time() -> str:
"""ISO 8601 形式の現在のシステム時刻を返します。"""
return datetime.datetime.now().isoformat()
# 3. このインスタンスを実行します
if __name__ == "__main__":
mcp.run()
重要なポイント:
-
FastMCP()を使用してアプリケーションインスタンスを作成します -
@mcp.toolデコレータを使用してツールを登録します - ツールのドキュメンテーション文字列(docstring)は重要です。これにより、Gemini がツールの目的を理解するのに役立ちます
-
mcp.run()を使用してサービスを起動します
ステップ4:サーバー設定ファイル settings.json の生成
mcp_project ディレクトリに .gemini/settings.json ファイルを作成します。
{
"mcpServers": {
"FastMCP-****": {
"command": "/***/python",
"args": [
"/***/server.py"
],
"env": {}
}
}
}
ステップ4:MCPサーバーの登録
これは最も重要なステップです。Gemini CLI に新しいツールサーバーがあることを伝えます。
mcp_project ディレクトリで以下のコマンドを実行します。実際の状況に合わせて fastmcp のパスを置き換えてください。
# ステップ2で見つけた完全なパスを使用します
/home/***/.local/bin/fastmcp install gemini-cli server.py
Successfully installed 'server' in Gemini CLI という成功メッセージが表示されれば、設定は完了です。
ステップ5:MCPサーバーの登録*: 設定ファイルの生成
Gemini CLI の設定ファイル(commands.toml)に、次のような内容を追加します:
[server]
help = "Starts the MCP server."
run = "python3 server.py"
ステップ5:サービスの起動
Gemini CLI でサービスを起動します:
/mcp refresh
これにより、CLI は STDIO モードでサービスを起動し、その標準入出力を管理します。
ステップ6:サービスの状態を確認する
すべてのツールをリスト表示し、サービスの状態を確認します:
/mcp list
出力には 🟢 server - Ready (1 tool) と表示されるはずです。これは、サービスが正常に接続されたことを示します。
ステップ7:自然言語を使用してツールを呼び出す
これは MCP の最も巧妙な部分です。ツールが正常に登録され接続されると、それは Gemini 大規模モデルの能力に統合されます。
ツールを呼び出すために特別なコマンドは必要ありません。普段 Gemini と対話するように、自然言語で要求を出すだけです:
あなた:今何時ですか?
Gemini は次のようになります:
- あなたの意図を理解します
- ツールボックス内の
get_timeツールを自動的にマッチングします - ツールを呼び出して結果を取得します
- 結果を回答に統合します
仕組み: Gemini CLI は、ユーザー定義のツールをモデルの API にシームレスに統合します。モデルが内部でツールの呼び出しを決定し、CLI がその呼び出しをキャッチして server.py 内の get_time 関数を実行し、結果をモデルに返します。
主要な概念
-
MCPにはサーバーが必要:
fastmcpを使用してサーバーを作成し、登録する必要があります - STDIO モード: MCP サービスは標準入出力を介して CLI と通信し、CLI によって起動が管理されます
- 自然言語による呼び出し: 特別なコマンドは不要で、直接対話するだけでツールの呼び出しがトリガーされます
- ツールのドキュメンテーション文字列: Gemini がツールの用途を理解し、いつ呼び出すかを決定するのに役立ちます
高度な設定:複数のツールの作成
from fastmcp import FastMCP
import datetime
import platform
app = FastMCP()
@app.tool
def get_time() -> str:
"""現在のシステム時刻を返します"""
return datetime.datetime.now().isoformat()
@app.tool
def get_system_info() -> str:
"""システム情報を返します"""
return f"システム: {platform.system()}, バージョン: {platform.version()}"
@app.tool
def calculate_age(birth_year: int) -> int:
"""誕生年に基づいて年齢を計算します"""
current_year = datetime.datetime.now().year
return current_year - birth_year
if __name__ == "__main__":
app.run()