22
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【実践ガイド】Google ADKからMCPを呼び出す!Gemini時代の最新エージェント開発

Posted at

概要

近年、AIエージェントの機能を拡張する標準プロトコルとしてMCP(Model Context Protocol)が大きな注目を集めています。GoogleのADK(Agent Development Kit)を活用することで、Geminiモデルをベースとした強力なエージェントに、外部ツールやデータソースを容易に統合できるようになりました。

この記事では、ADKからMCPツールセットを呼び出して、ローカルのファイルシステムを操作できるエージェントを構築する具体的な実装方法を解説します。

前提条件

この実装を始める前に、以下の環境が整っていることを確認してください

  • Python 3.12以上のインストール

    • python --versionで確認できます。
  • Node.js 20.x以上のインストール

    • MCPサーバーをnpxで実行するために必要です。
    • node --versionで確認できます。
    • nvmを使用する場合: nvm install 20
  • Agent Development Kit (ADK) のセットアップ

    • Google ADKの公式ドキュメントに従ってセットアップを完了してください。
  • Google Gemini APIの設定

    • Google Cloud プロジェクトの作成、Gemini APIの有効化を行い、APIキーを取得して環境変数へ設定してください。
  • 必要なPythonパッケージのインストール

    • pip install google-adk mcp python-dotenv
  • 「.env」ファイルの作成

    • プロジェクトルートに.envファイルを作成し、GOOGLE_API_KEY=your_api_key_hereを設定してください。

構成のポイント:ADKとMCPの連携

今回の構成では、ADKが「MCPクライアント」として機能し、stdio(標準入出力)を介してMCPサーバーと通信します。サーバー側には、公式で提供されている server-filesystem を使用し、特定のディレクトリへの読み書きを許可します。

ステップ1:MCPサーバーの設定(mcp_config.py)

まず、ADKから呼び出すMCPサーバーの起動コマンドや環境変数を定義します。npx を利用して、ローカルにインストールすることなくサーバーを起動する設定です。

# Python
# mcp_config.py

# MCPサーバーのタイムアウト設定(秒)
MCP_TIMEOUT = 60

# MCPサーバーの起動設定
MCP_SERVER_CONFIG = {
    "command": "~/.nvm/versions/node/v20.19.4/bin/npx", # npxのフルパスを指定
    "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "~/develop/test_20251202" # 操作を許可するディレクトリパス
    ],
    "env": {
        "PATH": "~/.nvm/versions/node/v20.19.4/bin:${PATH}"
    }
}

Point: npx や PATH のパスは、ご自身の環境に合わせて適切に書き換えてください。

ステップ2:エージェントの実装(agent.py)

次に、メインとなるエージェントの実装です。ADKの MCPToolset を使い、先ほどの設定を読み込ませます。

Python

# agent.py
from dotenv import load_dotenv
from google.adk.agents.llm_agent import LlmAgent
from google.adk.tools.mcp_tool.mcp_toolset import (
    MCPToolset,
    StdioConnectionParams,
)
from mcp.client.stdio import StdioServerParameters

# 先ほど作成した設定をインポート
from mcp_config import MCP_SERVER_CONFIG, MCP_TIMEOUT

load_dotenv()

# 1. MCPツールセットの作成
mcp_toolset = MCPToolset(
    connection_params=StdioConnectionParams(
        server_params=StdioServerParameters(**MCP_SERVER_CONFIG),
        timeout=MCP_TIMEOUT
    )
)

# 2. Geminiエージェントの定義
root_agent = LlmAgent(
    model="gemini-2.5-flash",
    name="assistant",
    instruction="""あなたはファイルシステム操作を支援するアシスタントです。
    利用可能なツールを使用して、以下のタスクをサポートしてください:
    - ディレクトリ内のファイル一覧表示
    - ファイルの読み取り
    - ファイルの作成・編集
    操作結果は分かりやすく日本語で説明してください。
    """,
    tools=[mcp_toolset],
)

実際の動作結果

実際に構築したエージェントに、特定のディレクトリ配下のファイルを教えるよう指示した結果がこちらです。
image.png

動作の解説

  1. ツールの自動選択: ユーザーの「フォルダ配下のファイルを教えて」という自然言語の問いかけに対し、エージェントが自動的にMCPツールの list_directory を選択して実行しています。

  2. 正確な情報取得: 指定されたディレクトリ内にある .env、main.py、mcp_agent.py といったファイル群を正確に読み取っています。

  3. 自然な日本語回答: 取得した情報を整理し、ユーザーが読みやすいリスト形式で回答を出力しています。

このように、ADKとMCPを組み合わせることで、LLMが「現実のファイルシステム」を認識し、対話を通じて操作できるようになります。

実装のポイントとSEO的なメリット

なぜこの構成が良いのか?

動的なツール利用: 今回の例のように、エージェントが必要に応じて自律的に list_directory などのMCP関数を呼び出すため、プログラミングの手間が大幅に削減されます。

参考リソース: Use Google ADK and MCP with an external server (Google Cloud Blog)

まとめ

Google ADKとMCPを組み合わせることで、Geminiが「考える」だけでなく、実際にローカルファイルを「操作する」強力なエージェントへと進化します。

今回の設定では npx をフルパスで指定し、環境パスを通すことで、実行時のエラーを回避する実戦的な手法をとっています。ぜひ、あなたのプロジェクトでも試してみてください!

最後に: 最後まで読んでいただきありがとうございました。この記事が、ADKとMCPを活用した次世代エージェント開発の一助となれば幸いです。

22
0
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
22
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?