返回市场
ADK-MCP-数据光源服务器

ADK-MCP-数据光源服务器

作者:arjunprabhulal7 星标更新:2025-06-07

项目介绍

Google ADK + Bright Data MCP 集成

ADK MCP Bright Data 示例

📖 特色文章: 使用MCP工具构建ADK(v1.2.0+)代理 作者:Arjun Prabhulal

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

调试控制台界面

🚀 主要特点

  • 现代ADK集成:利用ADK v1.2.0+并简化了MCP工具注册
  • 实时网络搜索:由Bright Data MCP提供当前准确的信息
  • 多种接口:Web UI、CLI和编程访问

🏗️ 架构

本项目展示了从ADK v0.5.0到v1.2.0+的变化:

ADK v0.5.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

ADK v1.2.0+(现代)

# 简化直接工具注册
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]  # 直接工具注册
)

📋 先决条件

  1. Python 3.10+
  2. Node.js 16+(用于npx命令)
  3. Google API密钥 - 从Google AI Studio获取
  4. Bright Data账户 - 在Bright Data注册

🛠️ 安装

1. 克隆仓库

git clone https://github.com/arjunprabhulal/adk-mcp-brightdata.git
cd adk-mcp-brightdata

2. 设置虚拟环境

# Mac/Linux
python -m venv venv
source venv/bin/activate

# Windows
python -m venv venv
venv\Scripts\activate

3. 安装依赖

# 安装Python包
pip install google-adk google-generativeai mcp python-dotenv rich

# 安装Bright Data MCP服务器
npm install -g @brightdata/mcp

4. 环境配置

在项目根目录创建一个.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包名

🎯 使用方法

选项1:Web界面

adk web

通过http://localhost:8000访问Web UI

选项2:命令行

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],
)

🔧 技术特性

ADK集成优势

  • 简化工具注册:直接MCPToolset集成
  • 自动资源管理:无需手动清理
  • 错误处理:内置超时和连接管理
  • 异步支持:正确的异步执行模式

⚠️ 已知问题

MCP会话超时(ADK v1.2.0+)

问题:默认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秒
    )
)

🚀 ADK v1.2.0+的主要改进

  1. 简化工具注册:直接MCPToolset集成
  2. 更简洁的代码:不再有复杂的异步执行器
  3. 更好的错误处理:改进的超时和连接管理
  4. 增强性能:优化的工具执行
  5. 开发者体验:更直观的代理构建

🤝 贡献指南

  1. 分叉仓库
  2. 创建功能分支(git checkout -b feature/amazing-feature
  3. 提交更改(git commit -m '添加精彩功能'
  4. 推送到分支(git push origin feature/amazing-feature
  5. 打开Pull Request

📚 额外资源

📄 许可证

本项目采用MIT许可证 - 查看LICENSE文件以获取详情。

👤 作者

Arjun Prabhulal