增强型多服务器MCP示例
这是多服务器MCP(模型上下文协议)客户端的增强版本,它结合了WeatherAssistant和任务管理系统的功能。客户端同时连接到多个MCP服务器,并为天气信息、任务管理等提供统一的接口。
特性
天气能力
- 综合天气数据:当前状况、每小时预报(48小时)、每日预报(8天)、天气警报
- 位置支持:带有可选国家代码的城市名称(例如“英国伦敦”)
- 天气比较:使用提示比较多个位置之间的天气
- 详细信息:紫外线指数、能见度、风速、湿度、压力等
任务管理
- 持久任务列表:添加和管理跨会话持续的任务
- 任务操作:添加新任务,列出现有任务
- 资源访问:访问会议笔记和组织资源
增强的客户端功能
- 多服务器支持:无缝连接到多个MCP服务器
- 提示系统:从任何连接的服务器访问并执行提示
- 资源管理:从不同服务器加载和处理资源
- 智能错误处理:通过用户友好的消息进行全面的错误处理
- 环境配置:通过环境变量实现安全的API密钥管理
设置
1.安装依赖项
pip install -r requirements.txt2.配置环境变量
复制示例环境文件并配置API密钥:
cp .env.example .env编辑 .env 使用API密钥:
GOOGLE_GEMINI_API_KEY=your_google_gemini_api_key_here
OPENWEATHERMAP_API_KEY=your_openweathermap_api_key_here3.获取API密钥
Google Gemini API密钥
- 访问 谷歌人工智能工作室
- 创建新的API密钥
- 将其添加到您的
.env文件
OpenWeatherMap API密钥
- 注册地址: 开放天气地图
- 订阅“One Call by Call”以获取完整的天气功能
- 将API密钥添加到
.env文件
用法
启动客户端
python mcp_client.py可用命令
天气命令
What's the weather in London?
Compare weather between New York and London
Get a 3-day forecast for Tokyo任务管理命令
Add task "Buy groceries"
List my tasks
Add task "Finish the report by Friday"系统命令
/prompts - List all available prompts
/prompt
"args"... - Execute a specific prompt
/resources - List all available resources
/resource - Load a resource
exit/quit/q - Quit the application交互示例
天气示例
You: What's the weather in Paris?
AI: The weather in Paris, France is currently...
You: /prompt weather compare_weather_prompt "London" "Tokyo"
AI: [Executes weather comparison prompt]
You: /resource weather file://delivery_log
Resource loaded. What should I do with this content? > Analyze delivery locations for weather patterns任务管理示例
You: Add a task to finish the quarterly report
AI: Task 'finish the quarterly report' was added successfully.
You: What are my current tasks?
AI: Here are your current tasks: [lists all tasks]
You: /resource tasks file://meeting_notes
Resource loaded. What should I do with this content? > Extract action items and add them as tasks服务器架构
已连接的服务器
- 天气服务器 (
weather_mcp_server.py)
- OpenWeatherMap One Call API 3.0集成 - 综合气象数据检索 - 天气比较提示 - 交付日志和索引资源
- 任务服务器 (
tasklist_mcp_server.py)
- 持久任务存储在 tasks.txt - 任务添加和列表功能 - 会议笔记资源访问
服务器配置
客户端使用中的配置自动连接到两个服务器 server_configs:
- 天气:处理与天气有关的操作
- 任务:管理与任务相关的操作
高级功能
提示系统
访问特定于服务器的增强功能提示:
/prompts # List all available prompts
/prompt weather compare_weather_prompt "NYC" "LA" # Execute weather comparison资源管理
加载和处理各种资源:
/resources # List all resources
/resource weather file://delivery_log # Load delivery log
/resource tasks file://meeting_notes # Load meeting notes上下文管理
客户端在交互中维护对话上下文,允许后续问题和复杂的多步骤操作。
错误处理
增强的客户端包括全面的错误处理功能,用于:
- 网络连接问题
- API密钥身份验证问题
- 命令或参数无效
- 服务器通信失败
- 资源访问错误
文件结构
multi-server-mcp-example/
├── mcp_client.py # Enhanced multi-server client
├── weather_mcp_server.py # Weather MCP server
├── tasklist_mcp_server.py # Task management MCP server
├── requirements.txt # Python dependencies
├── .env.example # Environment variable template
├── .env # Your API keys (create from .env.example)
├── tasks.txt # Persistent task storage (auto-created)
└── README.md # This file贡献
此增强版本汇集了以下最佳功能:
- WeatherAssistant单服务器实现
- 任务管理能力
- 多服务器架构
- 增强的错误处理和用户体验
您可以通过添加更多服务器或功能来扩展此示例!
故障排除
常见问题
- 导入错误:确保所有依赖项都已安装
pip install -r requirements.txt - API关键问题:验证API密钥是否在中正确设置
.env文件 - 服务器连接:检查服务器文件是否与客户端位于同一目录中
- Weather API订阅:确保您已订阅OpenWeatherMap的“一次通话”
获取帮助
如果您遇到问题:
- 检查控制台中的错误消息
- 验证您的API密钥和网络连接
- 确保所有依赖项都已正确安装
- 检查服务器日志以获取详细的错误信息
