
📖 特色文章: 使用MCP工具构建ADK(v1.2.0+)代理 作者:Arjun Prabhulal
这是一个全面实现Google的代理开发工具包(ADK) v1.2.0+与Bright Data的模型上下文协议(MCP)服务器集成的项目,用于智能网络搜索和数据提取能力。

本项目展示了从ADK v0.5.0到v1.2.0+的变化:
# 复杂异步执行器模式(已弃用)
def create_mcp_tool_executor():
async def mcp_tool_executor(**kwargs):
tools, exit_stack = await MCPToolset.from_server(...)
try:
return await try_tools_sequentially(tools, kwargs, exit_stack)
finally:
await exit_stack.aclose()
return mcp_tool_executor
# 简化直接工具注册
tools = MCPToolset(
connection_params=StdioServerParameters(
command='npx',
args=["-y", "@brightdata/mcp"],
env={"API_TOKEN": os.getenv("API_TOKEN")}
)
)
root_agent = Agent(
model="gemini-2.0-flash",
tools=[tools] # 直接工具注册
)
git clone https://github.com/arjunprabhulal/adk-mcp-brightdata.git
cd adk-mcp-brightdata
# Mac/Linux
python -m venv venv
source venv/bin/activate
# Windows
python -m venv venv
venv\Scripts\activate
# 安装Python包
pip install google-adk google-generativeai mcp python-dotenv rich
# 安装Bright Data MCP服务器
npm install -g @brightdata/mcp
在项目根目录创建一个.env文件:
# 从https://aistudio.google.com/app/apikey获取的Google API密钥
GOOGLE_API_KEY="your_google_api_key_here"
# 从https://brightdata.com/cp/zones获取的Bright Data凭证
API_TOKEN="your_brightdata_api_token"
WEB_UNLOCKER_ZONE="your_web_unlocker_zone" # 可选
# 可选:自定义代理配置
GEMINI_MODEL="gemini-2.0-flash" # 默认模型
AGENT_NAME="search_assistant" # 代理标识符
AGENT_DESCRIPTION="您的自定义描述" # 代理描述
# 可选:自定义MCP服务器配置
MCP_COMMAND="npx" # 运行MCP服务器的命令
MCP_PACKAGE="@brightdata/mcp" # MCP包名
adk web
通过http://localhost:8000访问Web UI
adk run search
这提供了直接访问ADK代理实现的方式。
adk-mcp-brightdata/
├── search/
│ ├── __init__.py
│ ├── agent.py # 核心ADK代理实现
│ └── prompt.py # 代理指令和提示
├── .env # 环境变量
├── requirements.txt # Python依赖
└── README.md
from google.adk.agents import Agent
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset, StdioServerParameters
tools = MCPToolset(
connection_params=StdioServerParameters(
command='npx',
args=["-y", "@brightdata/mcp"],
env={
"API_TOKEN": os.getenv("API_TOKEN"),
"WEB_UNLOCKER_ZONE": os.getenv("WEB_UNLOCKER_ZONE")
}
)
)
root_agent = Agent(
model="gemini-2.0-flash",
name="search_assistant",
description="集成MCP的Google ADK代理,用于智能网络搜索辅助。",
instruction=PROMPT,
tools=[tools],
)
问题:默认5秒超时在mcp_session_manager.py
临时解决办法:更新虚拟环境中的超时设置:
# 文件:.venv/lib/python3.12/site-packages/google/adk/tools/mcp_tool/mcp_session_manager.py
session = await self._exit_stack.enter_async_context(
ClientSession(
*transports[:2],
read_timeout_seconds=timedelta(seconds=60), 从5秒改为60秒
)
)
git checkout -b feature/amazing-feature)git commit -m '添加精彩功能')git push origin feature/amazing-feature)本项目采用MIT许可证 - 查看LICENSE文件以获取详情。
Arjun Prabhulal