2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Gemini CLIのためにMCPツールをセットアップして使用する方法

Last updated at Posted at 2025-10-07

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 は次のようになります:

  1. あなたの意図を理解します
  2. ツールボックス内の get_time ツールを自動的にマッチングします
  3. ツールを呼び出して結果を取得します
  4. 結果を回答に統合します

仕組み: 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()
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?