多服务器集合工具

FastMCP多服务器集合是一个基于模型上下文协议(MCP)的多功能服务集成工具,提供天气警报、数学运算和用户管理等功能,适用于需要多服务协同的应用场景。

  • by subhashbs36
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 subhashbs36/fastmcp-multi-server

使用说明

FastMCP多服务器集合

全面 模型上下文协议(MCP) 服务器集合,通过提供多种专业服务来展示MCP的强大功能:天气警报、数学运算和用户管理。该项目展示了如何使用FastMCP和LangChain在单个应用程序中构建、集成和编排多个MCP服务器。

🚀 特性

🌤️ 天气服务器

  • 实时天气警报:使用美国国家气象局API获取美国任何州的活跃天气警报
  • 详细预测:检索任何地理位置的综合天气预报
  • 专业的API集成:强大的错误处理和速率限制

🧮 数学服务器

  • 基本操作:加法、减法、乘法和除法
  • 错误处理:带零校验保护的安全分区
  • 类型安全:正确的类型注释和验证

👤 用户名服务器

  • 用户身份:简单的用户识别服务
  • HTTP传输:演示可流式传输的HTTP协议
  • 可扩展:易于扩展,可提供额外的用户服务

🤖 智能客户端

  • 多服务器集成:无缝连接到所有MCP服务器
  • AI 代理:使用谷歌的Gemini 2.0 Flash模型进行智能响应
  • LangGraph集成:实现ReAct代理模式以进行复杂推理

📋 先决条件

  • Python 3.11或更高版本
  • Gemini模型的Google API密钥
  • 天气数据的互联网连接

🛠️ 安装

  1. 克隆存储库:

    git clone <repository-url>
    cd fastmcp-multi-server
    
  2. 安装依赖项:

    pip install -r requirements.txt
    # Or using uv
    uv sync
    
  3. 设置环境变量: 创建一个 .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

这将演示所有三台服务器协同工作:

  1. 数学计算:“(3+5)x 12?”→ 退货:96
  2. 天气查询“纽约的天气警报是什么?”→ 返回当前纽约警报
  3. 用户标识“我叫什么名字?”→ 返回:“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传输协议:

  1. STDIO传输:由数学和天气服务器使用

    • 通过标准输入/输出进行通信
    • 非常适合命令行工具和脚本
  2. HTTP传输:由用户名服务器使用

    • RESTful API通信
    • 更适合web服务和微服务

定制

  1. 修改用户数据:编辑 username_server.py 返回动态用户信息
  2. 添加数学运算:扩展 mathserver.py 具有更复杂的数学函数
  3. 天气来源:在中集成其他天气API weatherserver.py

🛡️ 错误处理

  • 网络超时:天气API调用超时30秒
  • API错误:妥善处理NWS API故障
  • 除以零:具有错误检查功能的安全数学运算
  • 坐标无效:天气预报请求的验证

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

📝 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

🙏 致谢

📊 项目统计

  • 代码行: ~200
  • MCP服务器: 3
  • 传输协议:2(STDIO,HTTP)
  • 外部API:1(国家气象局)
  • 人工智能集成:谷歌双子座2.0 Flash

🔮 未来的增强功能

  • []添加身份验证和授权
  • []实现天气数据缓存
  • []添加更多数学函数(三角学、统计学)
  • []整合其他天气服务提供商
  • []添加全面的日志记录和监控
  • []Docker容器化
  • []易于交互的Web UI

内置于❤️ 使用模型上下文协议和FastMCP