【実践編】Agent Development Kit でAIエージェントを作ってみた
- 柳川 陸
- 4月18日
- 読了時間: 4分
更新日:4月30日
著者:柳川 陸(金融NEXT企画部 AI開発課)
前回の記事では、Google Cloud のAIエージェントの全体図について理解を深めてきました。本記事では、実際に Agent Development Kit を用いてAIエージェントを作っていきましょう。
この記事では Slack議事録作成エージェント を作っていきます。特定のSlackチャンネルで行われた商談をもとに議事録を作成して投稿するシンプルなものです。シングルエージェント型 かつ 会話型 にとらえられるかなと思います。まずは動作イメージを掴んでいただくために、以下のデモ動画をご覧ください。
本記事で取り扱う範囲
本記事で取り扱う範囲は、以下の図における右側の Agent Frameworks 、Tools と Models になります。エージェントの実行環境である Agent Engine や マルチエージェントのプロトコルである Agent2Agent は本記事では取り扱いません。
AIエージェントのアーキテクチャ

要件
動作要件は以下の通りです。
Python 3.12.3
Docker version 28.0.4, build b8034c0
※ Cloud Shell 上で作業すれば特に上記を気にする必要は無いかなと思います。
手順
Slackチャンネルのアクセス権限の設定
下記URLの Setup に従って設定を進めてください。
https://github.com/modelcontextprotocol/servers/blob/main/src/slack/README.md
また、後ほど以下の3つの情報を取り扱うため、忘れずにメモをお願いします。OrG ID または Team ID と Channel ID については、Web版Slackで該当するチャンネルを開くと、URL部分に記載されています。まだチャンネルが無い場合は作成してください。
・ Bot User OAuth Token( xoxb-12345... のようなもの )
・ OrG ID または Team ID( Txxxxxxxx または Exxxxxxxx のいずれか )
・ Channel ID( Cxxxxxxxxxx )
作成したパブリックチャンネルに App を追加します。
Slackでパブリックチャンネルを作成した後、チャンネル名のところをクリックして、 「設定」>「インテグレーション」 から 「アプリを追加する」をクリックします。検索バーがあるので、先ほど作成した App の名前で検索して追加します。
Slack MCP Server のDockerコンテナを準備する
最初に Model Context Protocol 公式リポジトリをクローンしてきます。このリポジトリには様々なMCPサーバーが含まれており、この中にある Slack MCP Server のDockerコンテナを使います。また、クローンしたディレクトリの中に移動します。
$ git clone https://github.com/modelcontextprotocol/servers.git
$ cd servers
Slack MCP Server の Docker Image をビルドします。
$ docker build -t mcp/slack -f src/slack/Dockerfile .
mcp/slack の Docker Image が正常にビルドされたことを確認します。
$ docker images
>>>
REPOSITORY TAG IMAGE ID CREATED SIZE
mcp/slack latest a0b0c316646c 25 seconds ago 163MB
<<<
Slack議事録作成エージェントの実装
servers ディレクトリから出ます。
$ cd ..
meeting ディレクトリを作成して移動します。
$ mkdir meeting
$ cd meeting
さらに root_agent ディレクトリを作成して移動します。
$ mkdir root_agent
$ cd root_agent
__init__.py と .env と agent.py を作成します。
$ touch __init__.py
$ touch .env
$ touch agent.py
__init__.py に以下の1行のコードを記述します。
from . import agent
.env に以下の環境変数を記述します。GOOGLE_API_KEY については Google AI Studio にアクセスしていただき、「Get API Key」から取得してください。
GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=XXXXXXXXXXXXXXXXXXXX
agent.py に以下のコードを記述します。また、コード中の SLACK_BOT_TOKEN と SLACK_TEAM_ID と SLACK_CHANNEL_IDS を先ほどメモしたものに置き換えてください。
import asyncio
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.artifacts.in_memory_artifact_service import InMemoryArtifactService
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset, SseServerParams, StdioServerParameters
load_dotenv('.env')
async def get_tools_async():
tools, exit_stack = await MCPToolset.from_server(
connection_params=StdioServerParameters(
command='docker',
args=["run",
"-i",
"--rm",
"-e",
"SLACK_BOT_TOKEN",
"-e",
"SLACK_TEAM_ID",
"-e",
"SLACK_CHANNEL_IDS",
"mcp/slack"
],
env={
"SLACK_BOT_TOKEN": "xoxb-12345... のようなもの",
"SLACK_TEAM_ID": "Txxxxxxxx または Exxxxxxxx",
"SLACK_CHANNEL_IDS": "Cxxxxxxxxxx"
}
)
)
return tools, exit_stack
async def get_agent_async():
tools, exit_stack = await get_tools_async()
agent = LlmAgent(model='gemini-2.5-pro-preview-03-25', name='meeting_assistant', instruction='Slackの操作を支援します。', tools=tools)
return agent, exit_stack
async def main():
agent, exit_stack = await get_agent_async()
session_service = InMemorySessionService()
session = session_service.create_session(state={}, app_name="meeting_app", user_id="user123")
runner = Runner(agent=agent, app_name="meeting_app", session_service=session_service)
async with exit_stack:
while True:
query = input("User: ")
content = types.Content(role="user", parts=[types.Part(text=query)])
async for event in runner.run_async(session_id=session.id, user_id="user123", new_message=content):
for part in event.content.parts:
if part.text:
print(part.text)
asyncio.run(main())
必要なPythonモジュールをインポートします。
pip install google-generativeai
pip install google-adk
動作確認
以下のコマンドを実行してAIエージェントとのチャットを開始できます。デモ動画のように特定のチャンネルのメッセージをもとに議事録作成をしたり、チャンネルへの投稿ができるか確認してみましょう。
$ python agent.py
まとめ
いかがでしたでしょうか?MCPによってエージェントとツールの連携が可能になりました。今回はSlackと連携しましたが、この他にも利用可能なMCPサーバーは数多く公開されているため、いくつかのものを組み合わせてみたりして、様々なアイデアを試してみてください!