返回市场
天气-mcp

天气-mcp

作者:haichaozheng4 星标更新:2025-06-17

项目介绍

技术文档摘要

集成气象信息与多源工具系统

本项目展示了如何利用LangGraph框架和MCP协议将多种工具来源(自定义工具、本地MCP服务及第三方API)整合到一个统一的AI代理中,实现功能丰富的智能助手系统。

项目组件

1. 气象服务器(weather.py)

提供与气象相关的API工具:

  • get_alerts:获取美国各州级气象警报
  • get_forecast:根据经纬度获取天气预报

基于MCP协议的本地服务,提供实时气象信息访问。

2. 自定义工具(langgraph_tools.py)

提供一系列基本工具:

  • 数学工具:加法、减法、乘法、除法、平方根、幂运算
  • 字符串工具:字符串连接、转换为大写、转换为小写

这些工具通过LangChain的@tool装饰器定义,可以被AI代理调用。

3. 第三方MCP工具(mcp_third_party.py)

集成第三方MCP服务:

  • Zhipu网络搜索工具:通过Zhipu AI提供的MCP接口获得实时网络搜索能力
  • 提供通用的MCP工具加载函数以扩展更多第三方服务

4. MCP客户端(mcp_client.py)

连接气象服务器并使用其提供的工具。通过SSE(服务器发送事件)协议与服务器通信,处理连接和重试逻辑。

5. 综合代理(agent_with_diverse_tools.py)

核心组件,整合所有来源的工具:

  • 自定义本地工具:数学计算、字符串处理
  • 本地MCP服务工具:气象查询服务
  • 第三方MCP工具:Zhipu网络搜索
  • 使用LangGraph架构的React代理
  • 基于Moonshot API实现

使用说明

安装依赖

pip install -r requirements.txt

环境配置

.env文件中设置以下变量:

  • MOONSHOT_API_KEY:Moonshot API密钥(用于LLM)
  • ZHIPU_API_KEY:Zhipu API密钥(用于网络搜索服务)

启动服务

  1. 启动气象服务器
python weather/weather.py
  1. 运行综合代理测试
python weather/agent_with_diverse_tools.py
  1. 测试Zhipu网络搜索工具
python weather/mcp_third_party.py

示例查询

综合代理能够处理各种类型的查询:

  • 数学计算

    • 计算23+45的结果
    • 计算16的平方根
    • 计算7*8并减去10
  • 字符串操作

    • 将'hello world'转换为大写
    • 连接'I'、'Love'、'China'并用空格分隔
  • 气象信息

    • 纽约州有哪些气象警报
    • 旧金山的天气预报是什么
    • 加利福尼亚州有哪些严重气象警告
  • 网络搜索

    • 中国最近的航天成就有哪些
    • 2024世界经济论坛的主要议题是什么
    • 人工智能研究的最新进展是什么
  • 混合查询

    • 计算7*8并减去10,然后检查上海的天气预报

系统特性

  • 模块化设计:每个工具来源相互独立,便于维护和扩展
  • 容错性:即使某个服务不可用,系统仍可使用其他可用工具
  • 可扩展性:易于添加新的工具来源和功能
  • 多源集成:将不同来源和类型的工具统一到一个代理中

扩展方向

  • 添加更多的第三方MCP服务
  • 实现工具调用的可视化界面
  • 添加用户交互模式(如对话模式)
  • 添加更多领域的专业工具

注意事项

  • 在运行代理前确保已启动气象服务器
  • 服务器默认运行在localhost:8000
  • 气象数据来自美国国家气象局(USS)API
  • Zhipu网络搜索需要有效的API密钥

系统架构

技术栈

  • Python 3.11+
  • MCP(模型控制协议)
  • FastMCP服务器
  • LangGraph + LangChain
  • SSE(服务器发送事件)传输

安装

  1. 克隆仓库:

    git clone https://github.com/haichaozheng/weather-mcp.git
    cd weather-mcp
    
  2. 创建虚拟环境:

    # 使用Python标准库
    python -m venv weather_venv
    
    # 激活虚拟环境(Windows)
    weather_venv\Scripts\activate
    
    # 激活虚拟环境(Linux/Mac)
    source weather_venv/bin/activate
    
  3. 安装依赖:

    pip install -r requirements.txt
    
  4. 配置环境变量:

    • 创建.env文件,参考.env.example文件格式
    • 添加必要的API密钥

项目结构

weather-mcp/ ├── weather/ │∝ - weather.py # 主服务器文件 │∝ - mcp_client.py # 客户端测试文件 ∝ - requirements.txt # 项目依赖 ∝ --.env.example # 环境变量示例文件 └ -- README.md # 本文档

环境变量配置

项目使用.env文件存储环境变量和敏感信息。请按照以下步骤设置:

  1. 复制环境变量模板文件:

    cp .env.example .env
    
  2. 编辑.env文件,填写实际配置:

    MOONSHOT_API_KEY=your_actual_api_key
    
  3. 确保.env文件不会提交到版本控制系统

环境变量

.env文件中设置以下变量:

  • MOONSHOT_API_KEY:Moonshot API密钥

注意事项

  • 在运行代理前确保已启动气象服务器
  • 服务器默认运行在localhost:8000
  • 气象数据来自美国国家气象局(USS)API