Agent Development Kit × MCP 最速チュートリアル ― Chat‑Ops Bot を 30 行で作ろう
2025 年 4 月 11 日に Agent Development Kit (ADK) が公式 β としてリリースされました。Google は “100 行以内で本番レベルのマルチエージェントを構築できる” とアピールしており、すでに Vertex AI の Agent Builder からも利用できます。
ADK は Model Context Protocol (MCP) とネイティブ統合されており、MCP サーバー経由で外部ツール/サービスを安全に呼び出せるのが特長です。
目次
- TL;DR — 30 行で動く Chat‑Ops Bot
- ADK とは何か、なぜ今注目なのか
- MCP とは何か、なぜ組み合わせるのか
- 開発環境セットアップ
- コード詳細解説
- 仕組み — アーキテクチャ図で理解
- 発展編 — 本番運用に耐えるためのヒント
- トラブルシューティング & FAQ
- まとめ & 次のステップ
1. TL;DR — 30 行で動く Chat‑Ops Bot
下記を chatops_bot.py
として保存し、.env
に SLACK_BOT_TOKEN
を設定すれば “deploy staging” などのコマンドを Slack 上から実行できます(26 行)。
注意 : サンプルは Slack MCP Server を例にしています(
@modelcontextprotocol/server-slack
)。お好みで GitHub、Filesystem、Google Maps など任意の MCP サーバーに置き換えてください。
import asyncio, os
from dotenv import load_dotenv
from google.genai import types
from google.adk.agents.llm_agent import LlmAgent
from google.adk.runners import Runner
from google.adk.sessions import InMemorySessionService
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset, StdioServerParameters
load_dotenv()
async def get_agent_async():
tools, exit_stack = await MCPToolset.from_server(
connection_params=StdioServerParameters(
command='npx', args=['-y','@modelcontextprotocol/server-slack'],
env={'SLACK_BOT_TOKEN': os.getenv('SLACK_BOT_TOKEN')}))
return LlmAgent(model='gemini-2.0-flash', name='chatops_bot',
instruction='You are a Chat‑Ops assistant.', tools=tools), exit_stack
async def main():
svc = InMemorySessionService()
session = svc.create_session(state={}, app_name='chatops', user_id='dev')
msg = types.Content(role='user', parts=[types.Part(text='deploy staging')])
agent, es = await get_agent_async()
async for e in Runner(app_name='chatops', agent=agent,
session_service=svc).run_async(session.id, session.user_id, msg):
print(e)
await es.aclose()
if __name__=='__main__':
asyncio.run(main())
2. ADK とは何か、なぜ今注目なのか
- 生産性 — Python ベースで 型安全 なツール呼び出しとストリーミングを備え、単一エージェントから複雑なマルチエージェントまでシームレスにスケール。
- 決定論的ガードレール — ステート管理、ツール実行、メモリをコードで明示できるため、LLM の予測不可能性を抑制。
- クラウド統合 — Vertex AI、Gemini 2 系モデル、Cloud Run/GKE など Google Cloud ネイティブな実行環境をワンコマンドでデプロイ。
-
オープンソース —
pip install google-adk
でインストールでき、GitHub 上で活発に開発が進む。
3. MCP とは何か、なぜ組み合わせるのか
Model Context Protocol (MCP) は LLM ⇄ 外部世界 を標準化するクライアント/サーバー・プロトコルです。
LLM ホスティング側(ここでは ADK)が MCP client としてツール一覧を取得し、必要に応じて function 呼び出しをプロキシ。逆に ADK を MCP server として公開すれば、他システムから ADK ツールを安全に利用できます。
Chat‑Ops におけるメリット
観点 | 従来の Slash Command Bot | ADK × MCP Bot |
---|---|---|
コード量 | Web サーバー+パーサ用に数百行 | 30 行以下(上記サンプル) |
ツール呼び出し | REST で個別実装 | MCP により統一、差し替え自在 |
思考/応答 | if–else ロジック | LLM による自然言語ワークフロー |
拡張性 | Slack 専用 | Slack / Discord / CLI などマルチチャネル |
4. 開発環境セットアップ
4.1 前提バージョン
- Python 3.10+
- Node.js ≥ 18(
npx
が使えること) - gcloud CLI(Vertex AI 利用時)
4.2 インストール手順
# 1. 仮想環境
python -m venv .venv && source .venv/bin/activate
# 2. Agent Development Kit
pip install google-adk python-dotenv # ADK 本体
# 3. (任意)MCP サーバー
npm install -g @modelcontextprotocol/server-slack
ワンポイント : ADK CLI (
adk dev
) を使うとブラウザ UI & WebSocket が起動し、会話ログやトレースをリアルタイムで確認できます。
4.3 環境変数
# .env
SLACK_BOT_TOKEN=xoxb-***
GOOGLE_VERTEX_PROJECT=your‑gcp‑project
5. コード詳細解説
行数 | 説明 |
---|---|
1–7 | 主要インポート。google.genai は Vertex AI のストリーミング型メッセージ。 |
9 |
.env ロード(API キー漏洩を防ぐため必須)。 |
10–16 |
MCPToolset.from_server で Slack MCP Server に接続。実行中は exit_stack がコネクションを管理。 |
17–19 |
LlmAgent を生成。tools に MCP で受け取ったツール群を渡すだけで、エージェントが自動推論して呼び出す。 |
20–27 |
Runner.run_async で非同期ストリームを受け取りつつ標準出力に表示。Slack チャンネル側でも応答が確認できる。 |
28–29 | 後始末。exit_stack.aclose() を忘れるとローカル MCP プロセスが残るので注意。 |
30 |
asyncio.run でエントリーポイントを実行。 |
6. 仕組み — アーキテクチャ図で理解
ポイント
- MCP Server は npx で立ち上がる Node.js プロセス。
-
ADK Runner がストリームを multiplex し、Slack 側の
tool.*
イベントを検知して再呼び出し。 - 同じ MCP Server を複数エージェントで共有すれば poly‑agent な Chat‑Ops も実現可。
7. 発展編 — 本番運用に耐えるためのヒント
テーマ | ヒント |
---|---|
セキュリティ | Vertex AI Service Accounts で最小権限を付与。Slack トークンは Secret Manager。 |
回路ブレーカー |
Runner のコールバックでツール呼び出し回数を監視し、過負荷時は自動 Abort。 |
テスト |
adk test + pytest で会話シナリオをスナップショット比較。 |
デプロイ | Cloud Run deploy: adk deploy --platform=cloudrun --region=asia-northeast1 . |
コスト | Gemini 2.0 Flash は Price/Latency が優秀。CPU x 0.25, Memory 512 MiB で idling ¥0. |
8. トラブルシューティング & FAQ
症状 | 原因 & 対処 |
---|---|
ModuleNotFoundError: google.adk |
仮想環境を忘れている/pip install google-adk を再確認。 |
ConnectionRefusedError |
MCP Server プロセスが起動していない。npx -y @modelcontextprotocol/server-slack を手動実行しポートを確認。 |
Slack に応答がない | Bot Token のスコープ不足。chat:write , commands , app_mentions:read を追加。 |
Unexpected function_call |
instruction が曖昧。エージェントのシステムメッセージで行動方針を明示する。 |
9. まとめ & 次のステップ
- ADK がもたらす “コードで制御できるエージェント” と MCP の “ツール標準化” は、Chat‑Ops の実装コストを劇的に下げる。
- まずはローカルで動かし、
adk dev
でストリームを可視化 → Cloud Run でデプロイ、という流れが鉄板になりそう? - 公開 β の今こそフィードバックを送って見るのも良いですね。
参考文献
- Google Developers Blog — Agent Development Kit: Making it easy to build multi‑agent applications, 2025‑04‑09.
- Vertex AI Agent Builder 製品ページ.
- Google Cloud Blog — Build and manage multi‑system agents with Vertex AI, 2025‑04‑10.
- ADK 公式ドキュメント — Install ADK.
- ADK 公式ドキュメント — Quickstart.
- ADK 公式ドキュメント — MCP tools(Model Context Protocol 概要).
Discussion