FastMCP多服务器集合
  
全面 模型上下文协议(MCP) 服务器集合,通过提供多种专业服务来展示MCP的强大功能:天气警报、数学运算和用户管理。该项目展示了如何使用FastMCP和LangChain在单个应用程序中构建、集成和编排多个MCP服务器。
🚀 特性
🌤️ 天气服务器
- 实时天气警报:使用美国国家气象局API获取美国任何州的活跃天气警报
- 详细预测:检索任何地理位置的综合天气预报
- 专业的API集成:强大的错误处理和速率限制
🧮 数学服务器
- 基本操作:加法、减法、乘法和除法
- 错误处理:带零校验保护的安全分区
- 类型安全:正确的类型注释和验证
👤 用户名服务器
- 用户身份:简单的用户识别服务
- HTTP传输:演示可流式传输的HTTP协议
- 可扩展:易于扩展,可提供额外的用户服务
🤖 智能客户端
- 多服务器集成:无缝连接到所有MCP服务器
- AI 代理:使用谷歌的Gemini 2.0 Flash模型进行智能响应
- LangGraph集成:实现ReAct代理模式以进行复杂推理
📋 先决条件
- Python 3.11或更高版本
- Gemini模型的Google API密钥
- 天气数据的互联网连接
🛠️ 安装
- 克隆存储库:
git clone
cd fastmcp-multi-server- 安装依赖项:
pip install -r requirements.txt
# Or using uv
uv sync- 设置环境变量:
创建一个 .env 项目根目录中的文件:
GOOGLE_API_KEY=your_google_api_key_here🚀 用法
运行单个服务器
气象服务器(STDIO传输)
python weatherserver.py数学服务器(STDIO传输)
python mathserver.py用户名服务器(HTTP传输)
python username_server.py用户名服务器将于启动 http://localhost:8000/mcp
运行完整演示
python client.py这将演示所有三台服务器协同工作:
- 数学计算:“(3+5)x 12?”→ 退货:96
- 天气查询“纽约的天气警报是什么?”→ 返回当前纽约警报
- 用户标识“我叫什么名字?”→ 返回:“Subhash班加罗尔Satheesha”
🏗️ 建筑
graph TB
A[Client with Gemini AI] --> B[MultiServerMCPClient]
B --> C[Math Server - STDIO]
B --> D[Weather Server - STDIO]
B --> E[Username Server - HTTP]
C --> F[Basic Math Operations]
D --> G[National Weather Service API]
E --> H[User Identity Service]服务器详细信息
| 服务器 | 传输 | 端口 | 用途 |
|---|---|---|---|
| 数学服务器 | STDIO | - | 数学运算 |
| 天气服务器 | STDIO | - | 来自NWS API的天气数据 |
| 用户名服务器 | HTTP | 8000 | 用户标识 |
📡 api参考
天气服务器工具
get_alerts(state: str) -> str
获取美国某个州的活跃天气警报。
- 参数:
state-两个字母的美国州代码(例如“NY”、“CA”) - 退货:带有活动警报的格式化字符串
get_forecast(latitude: float, longitude: float) -> str
获取特定坐标的天气预报。
- 参数:
- latitude -纬度坐标 - longitude -经度坐标
- 退货:5天预报,含详细信息
数学服务器工具
add(a: int, b: int) -> int
将两个整数相加。
subtract(a: int, b: int) -> int
减去两个整数。
multiply(a: int, b: int) -> int
将两个整数相乘。
divide(a: int, b: int) -> float | None
除以两个整数(如果除以零,则返回None)。
用户名服务器工具
username_tool() -> str
获取当前用户名。
- 退货:“Subhash班加罗尔Satheesha”
🔧 配置
传输协议
本项目演示了MCP传输协议:
- STDIO传输:由数学和天气服务器使用
- 通过标准输入/输出进行通信 - 非常适合命令行工具和脚本
- HTTP传输:由用户名服务器使用
- RESTful API通信 - 更适合web服务和微服务
定制
- 修改用户数据:编辑
username_server.py返回动态用户信息 - 添加数学运算:扩展
mathserver.py具有更复杂的数学函数 - 天气来源:在中集成其他天气API
weatherserver.py
🛡️ 错误处理
- 网络超时:天气API调用超时30秒
- API错误:妥善处理NWS API故障
- 除以零:具有错误检查功能的安全数学运算
- 坐标无效:天气预报请求的验证
🤝 贡献
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
📝 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
🙏 致谢
📊 项目统计
- 代码行: ~200
- MCP服务器: 3
- 传输协议:2(STDIO,HTTP)
- 外部API:1(国家气象局)
- 人工智能集成:谷歌双子座2.0 Flash
🔮 未来的增强功能
- \[\]添加身份验证和授权
- \[\]实现天气数据缓存
- \[\]添加更多数学函数(三角学、统计学)
- \[\]整合其他天气服务提供商
- \[\]添加全面的日志记录和监控
- \[\]Docker容器化
- \[\]易于交互的Web UI
______________________________________________________________________
内置于❤️ 使用模型上下文协议和FastMCP
