🤖 使用AutoGen的MCP服务器示例
该存储库提供了使用 模型上下文协议(MCP) 在...之内 AutoGen 框架。
演示的主要功能:
- 双MCP集成: 演示如何将AutoGen代理连接到:
- A. 本地工具服务器 (math_server.py)使用 标准输入输出 运输。 - A. 远程工具服务器 (Apify的RAG Web浏览器Actor)使用 服务器发送事件(SSE) 运输。
- 本地工具示例: 一个简单的计算器(
add,multiply)通过本地运行math_server.py. - 远程工具示例: 利用Apify的 RAG网络浏览器演员 通过他们 MCP服务器 用于网络搜索和内容检索。
- AutoGen代理: 一
AssistantAgent被配置为利用这两组工具来回答用户查询。
目标: 说明MCP的灵活性,使AI代理能够通过标准化的通信协议(Stdio和SSE)访问各种工具,无论是本地还是远程托管的。
脚本: 示例代理回答了两个不同的问题:
- 一道数学题(
(3 + 5) x 12?),预计使用本地math_server.py. - 请求获取最新消息(“总结伊朗和美国谈判的最新消息……”),预计将使用远程Apify网络浏览工具。
📚 使用的库和框架
- AutoGen:AI代理框架(autogen_agentchat、autogen_core、autogen_ext)
- 主控程序:用于工具集成的模型上下文协议
- Python dotenv:用于环境变量管理
- OpenAI API:用于LLM能力
- Apify API:用于网页浏览功能
🛠️ 设置
请仔细按照以下步骤设置您的环境:
- 先决条件:
- 确保你有 Python 3.12 安装。 - 安装 uv 如果尚未安装:
pip install uv- 导航到项目目录:
cd mcp_autogen_sse_stdio- 创建和激活虚拟环境:
# Create virtual environment using uv
uv venv --python 3.12
# Activate the virtual environment
source .venv/bin/activate # On macOS/Linux
# OR
.\.venv\Scripts\activate # On Windows- 再进行:
# Install project dependencies
uv pip install -e .故障排除说明:如果您在安装MCP CLI时遇到任何问题,可以手动安装:
uv add "mcp[cli]"- 配置环境变量:
- 创建一个 .env 文件在 mcp_autogen_sse_stdio 目录。 - 添加API密钥:
OPENAI_API_KEY=your_openai_api_key_here
APIFY_API_KEY=your_apify_api_key_here- 从获取Apify API密钥 指定MCP服务器页面
🚀 运行项目
- 确保您位于父目录中(项目目录的上一级):
cd ..- 使用以下命令运行主脚本
uv:
uv run mcp_autogen_sse_stdio/main.py这将运行以下演示:
- 使用Apify工具总结有关伊朗-美国谈判的新闻
- 解决一个简单的数学问题:
(3 + 5) x 12使用本地数学工具
🔌 理解MCP(模型上下文协议)
MCP是一种规范AI模型和工具之间通信的协议。此示例演示了使用MCP的两种方法:
1.本地工具(StdioServerParams)
- 使用标准输入/输出进行通信
- 工具在您的机器上本地运行
- 示例:我们的
math_server.py提供简单的数学运算
2.远程工具(SseServerParams)
- 使用服务器发送事件(SSE)进行通信
- 在远程服务器上运行的工具(如Apify)
- 示例:通过Apify的rag网络浏览器进行网络浏览
📝 代码走读
我们的 main.py 演示:
- 环境设置:
- 加载API密钥并对其进行验证
- 工具配置:
- 使用StdioServerParams设置本地数学工具 - 使用来自的SseServerParams(API连接到Apify的web浏览器https://apify.com/apify/actors-mcp-server)
- 代理创建:
- 使用这两个工具集创建AutoGen助手 - 使用GPT-4作为基础型号
- 任务执行:
- 运行两个演示任务,显示两个工具的运行情况 - 网页浏览新闻摘要 - 算术题的数学计算
🔄 通信流
User → AutoGen Agent → MCP Tools → Results → User此示例显示了使用MCP将不同工具类型集成到一个代理中是多么容易!

