基于MCP的多智能体出行计划系统
一个完整的、可用于生产的Python项目,演示了使用模型上下文协议(MCP)的多代理AI系统。该系统协调两个专业代理,使用定制的MCP服务器和OpenAI的GPT-4来规划和验证行程。
🎯 系统架构
┌─────────────────┐
│ User Request │
└────────┬────────┘
│
▼
┌─────────────────────────────────┐
│ Orchestrator │
│ (Coordinates both agents) │
└────────┬───────────────┬────────┘
│ │
▼ ▼
┌────────────────┐ ┌──────────────────┐
│ PlannerAgent │ │ BudgetAgent │
│ (OpenAI SDK) │ │ (OpenAI SDK) │
└────────┬───────┘ └────────┬─────────┘
│ │
▼ ▼
┌─────────────────┐ ┌──────────────────┐
│ Planner MCP │ │ Budget MCP │
│ Server │ │ Server │
│ - search_hotels │ │ - calculate_cost │
│ - search_flights│ │ - get_exchange_ │
│ - search_places │ │ rates │
└─────────────────┘ └──────────────────┘📁 项目结构
agentic_ai/
│
├── mcp-servers/
│ ├── planner-server/
│ │ ├── server.py # MCP server for planning tools
│ │ ├── tools/
│ │ │ ├── search_hotels.py # Hotel search tool
│ │ │ ├── search_flights.py # Flight search tool
│ │ │ └── search_places.py # Places/attractions tool
│ │ └── requirements.txt
│ │
│ └── budget-server/
│ ├── server.py # MCP server for budget tools
│ ├── tools/
│ │ ├── calculate_cost.py # Cost calculation tool
│ │ └── get_exchange_rates.py # Currency exchange tool
│ └── requirements.txt
│
├── agents/
│ ├── planner_agent.py # Agent that creates itineraries
│ └── budget_agent.py # Agent that validates budgets
│
├── orchestrator.py # Main entry point
├── requirements.txt # Root dependencies
└── README.md # This file🚀 特性
MCP服务器
计划服务器 -展示行程规划工具:
search_hotels(location, max_price)-查找预算内的酒店search_flights(source, destination, date)-搜索航班search_places(city)-探索旅游景点
预算服务器 -展示预算管理工具:
calculate_cost(itinerary_json)-计算总行程成本get_exchange_rates(target_currency)-获取货币兑换率
AI代理
规划师代理人:
- 连接到Planner MCP服务器
- 使用OpenAI GPT-4进行函数调用
- 动态调用MCP工具搜索航班、酒店和景点
- 以JSON格式生成全面的行程
预算代理:
- 连接到Budget MCP服务器
- 使用OpenAI GPT-4进行函数调用
- 使用MCP工具计算总成本
- 根据用户预算进行验证
- 如果超出预算,建议进行修改
编排器
- 协调整个工作流程
- 将用户请求路由到PlannerAgent
- 将行程传递给BudgetAgent进行验证
- 返回最终批准或修改的行程
📋 先决条件
- Python 3.10或更高版本
- OpenAI API密钥
- macOS、Linux或Windows与WSL
🛠️ 安装
1.克隆或导航到项目目录
cd /Users/iddyasaksharajesh/Desktop/agentic_ai2.创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # On macOS/Linux
# or
# venv\Scripts\activate # On Windows3.安装依赖项
安装根依赖项:
pip install -r requirements.txt安装MCP服务器依赖项:
# Planner server
cd mcp-servers/planner-server
pip install -r requirements.txt
cd ../..
# Budget server
cd mcp-servers/budget-server
pip install -r requirements.txt
cd ../..#运行脚本:
- 导出USE_OLLAMA=true
- python3管弦乐器.py
交互菜单
编排器提供了一个交互式菜单,其中包含示例行程请求:
🌍 MULTI-AGENT TRIP PLANNING SYSTEM
================================================================================
Example trip requests:
1. Plan a 3-day trip to Paris from New York, departing on 2025-12-15.
I want to visit the Eiffel Tower and Louvre Museum.
Budget: $2000
2. I want to go to Tokyo from New York for 5 days starting 2025-12-20.
Show me hotels under $200/night.
Budget: $3000
3. Plan a weekend trip to London from New York, December 10-12, 2025.
Budget friendly options please.
Budget: $1500
4. Enter custom request
Select an option (1-4):自定义请求示例
Select an option (1-4): 4
Enter your trip request: Plan a 4-day trip to Tokyo from Paris in January 2026
Enter your budget (USD): 3500🔍 运作原理
第一步:规划阶段
这 PlannerAgent:
- 接收用户的出行请求
- 连接到Planner MCP服务器
- 使用GPT-4和函数调用:
- 提取目的地、日期和要求 - 呼叫 search_flights 查找航班 - 呼叫 search_hotels 寻找住宿 - 呼叫 search_places 发现景点
- 以JSON格式编译全面的行程
步骤2:预算验证阶段
这 BudgetAgent:
- 接收行程和用户预算
- 连接到Budget MCP服务器
- 使用GPT-4和函数调用:
- 呼叫 calculate_cost 计算总费用 - 与用户预算进行比较 - 可选呼叫 get_exchange_rates 用于货币兑换
- 返回批准或建议修改
步骤3:最终输出
编排者:
- 显示完整的已验证行程
- 显示预算明细
- 将结果保存到
trip_result.json
📊 输出示例
{
"request": "Plan a 3-day trip to Paris from New York, departing on 2025-12-15.",
"budget": 2000,
"approved": true,
"total_cost": 1892,
"difference": 108,
"message": "Your trip is approved! Total cost is within budget.",
"itinerary": {
"destination": "Paris",
"start_date": "2025-12-15",
"end_date": "2025-12-18",
"flights": [
{
"airline": "United",
"source": "New York",
"destination": "Paris",
"price": 780,
"duration": "8h 00m",
"date": "2025-12-15"
}
],
"hotels": [
{
"name": "Cozy Inn",
"location": "Paris",
"price_per_night": 120,
"rating": 4.0,
"nights": 3
}
],
"activities": [
{
"name": "Eiffel Tower",
"type": "Landmark",
"description": "Iconic iron tower with city views",
"entry_fee": 25
},
{
"name": "Louvre Museum",
"type": "Museum",
"description": "World's largest art museum",
"entry_fee": 17
}
],
"currency": "USD"
}
}🧪 测试单个组件
测试计划器MCP服务器
cd mcp-servers/planner-server
python server.py服务器通过stdio运行并等待MCP协议消息。
测试预算MCP服务器
cd mcp-servers/budget-server
python server.py独立测试计划代理
cd agents
python planner_agent.py独立测试BudgetAgent
cd agents
python budget_agent.py🔧 配置
更改MCP服务器路径
在 orchestrator.py,如果需要,请更新路径:
planner_server_path = self.base_path / "mcp-servers/planner-server/server.py"
budget_server_path = self.base_path / "mcp-servers/budget-server/server.py"在OpenAI和Anthropic之间切换
使用Anthropic的Claude:
- 安装Anthropic SDK:
pip install anthropic- 将代理中的OpenAI客户端替换为Anthropic客户端
- 将模型名称更新为Claude(例如。,
claude-3-5-sonnet-20241022) - 调整工具调用格式以匹配Anthropic的API
添加更多工具
要向MCP服务器添加新工具,请执行以下操作:
- 在中创建一个新的Python文件
tools/目录 - 执行工具功能
- 导入并注册
server.py - 更新
list_tools()处理器 - 添加工具调用
call_tool()处理器
📝 技术细节
MCP协议
本项目使用官方Python MCP SDK(mcp>=0.9.0)其实现了:
- 服务器端工具注册
- 通信标准传输
- 工具调用协议
- JSON-RPC消息传递
代理体系结构
两个代理都遵循这种模式:
- 连接 通过stdio传输到MCP服务器
- 列表 服务器上的可用工具
- 转换 将MCP工具模式转换为OpenAI函数格式
- 执行 与GPT-4的对话循环
- 呼叫 基于LLM决策的MCP工具动态
- 解析 结果并继续对话
- 提取 最终结构化输出(JSON)
- 断开 来自MCP服务器
异步/等待
整个系统使用Python asyncio 用于:
- 无阻塞MCP服务器通信
- 并行工具执行
- 高效的资源管理
🐛 故障排除
“OPENAI_API_KEY未设置”错误
确保已导出环境变量:
export OPENAI_API_KEY='your-key-here'
echo $OPENAI_API_KEY # Verify it's setMCP连接错误
检查:
- Python可以在PATH中访问
- 服务器路径正确
- 所有依赖项均已安装
导入错误
运行时请确保您位于项目根目录中:
cd /Users/iddyasaksharajesh/Desktop/agentic_ai
python orchestrator.py速率限制
如果你达到了OpenAI的速率限制:
- 在请求之间等待几分钟
- 考虑升级你的OpenAI计划
- 减少提示中的工具调用次数
🎓 学习资源
📄 许可证
本项目按原样提供,用于教育目的。
🤝 贡献
欢迎通过以下方式扩展此项目:
- 添加更多MCP工具(天气、地图、预订)
- 实施更多代理(翻译、审查分析)
- 支持其他法学硕士提供者(Anthropic、谷歌)
- 添加web界面(FastAPI、Streamlit)
📧 支持
有关问题或疑问,请查看:
- 此自述文件
- MCP文件
- OpenAI API文档
______________________________________________________________________
内置:
- Python 3.10+
- 模型上下文协议(MCP)
- OpenAI GPT-4
- 异步
快乐的旅行计划! ✈️🌍
