项目简介

本项目是一个基于 Model Context Protocol (MCP)Server-Sent Events (SSE) 构建的天气服务后端。它作为一个MCP服务器,对外提供查询天气信息的功能,可以方便地与支持MCP协议的AI Agent或客户端集成,让AI能够获取实时的天气数据。

主要功能点

  • SSE-based MCP服务器: 采用Server-Sent Events协议实现MCP服务器,提供实时的单向数据推送能力。
  • 实时天气数据: 能够获取指定地点的当前天气状况和未来天气预报。
  • 工具集成: 通过MCP协议的工具 (Tool) 机制,将天气查询功能暴露给AI Agent使用。
  • 易于集成: 遵循MCP标准,可以轻松集成到任何支持MCP协议的AI应用中。

安装步骤

  1. 克隆仓库

    首先,使用Git克隆代码仓库到本地:

    git clone https://github.com/justjoehere/mcp-weather-sse
    cd mcp-weather-sse
  2. 运行安装脚本

    在项目根目录下,运行安装脚本以创建虚拟环境并安装依赖:

    scripts/setup.bat

    这个脚本会自动完成以下操作:

    • 创建Python虚拟环境 '.venv'
    • 激活虚拟环境
    • 安装项目所需的Python依赖包
  3. (可选) 配置IDE

    如果您使用IDE进行开发,建议配置IDE使用 '.venv' 目录下的Python解释器。

服务器配置

对于MCP客户端,您需要配置连接到此天气服务器的信息。以下是一个 'config.json' 示例,展示了如何配置一个名为 "weather" 的MCP服务器连接。

{
  "mcpServers": {
    "weather": {
      "type": "sse",
      "url": "http://127.0.0.1:3001/sse"
    }
  }
}

配置参数说明:

  • 'server name': 'weather' (服务器名称,客户端用于在配置中引用)
  • 'type': 'sse' (传输协议类型,这里使用Server-Sent Events)
  • 'url': 'http://127.0.0.1:3001/sse' (服务器SSE端点URL,客户端通过此URL与服务器建立连接)

无需配置启动命令 (command) 和参数 (args)。因为此MCP服务器是一个长期运行的服务,客户端只需要知道服务器的URL即可连接和使用,服务器的启动和运行由用户自行管理。 用户需要先手动启动 'weather_server.py',MCP客户端才能连接。

基本使用方法

  1. 启动服务器

    在项目根目录下,使用以下命令启动天气服务器:

    python src/mcp_weather_service/weather_server.py

    或者,您可以使用Uvicorn启动:

    uvicorn mcp_weather_service.weather_server:app --host 127.0.0.1 --port 3001

    服务器默认监听 'http://127.0.0.1:3001' 地址。

  2. 验证服务器

    • 浏览器验证: 打开浏览器访问 'http://127.0.0.1:3001/sse',如果看到类似 '/weather?session_id=...' 的响应,则服务器运行正常。

    • MCP Inspector: 运行 'scripts/inspect.bat' 启动MCP Inspector,并连接到 'http://127.0.0.1:3001/sse'。您可以使用Inspector测试天气查询工具。

  3. 集成到MCP客户端

    配置您的MCP客户端,例如 mcp_gradio_client,将上述 'config.json' 中的配置信息添加到客户端的配置文件中。客户端即可通过 "weather" 这个服务器名称调用天气查询工具。

可用工具

服务器提供以下工具 (Tool):

  • get_current_weather: 获取指定地点的当前天气和天气预报。

    输入参数:

    {
      "location_name": {
        "type": "string",
        "description": "The location to get the weather for"
      }
    }

    示例响应:

    {
      "currently": {
        "current_temperature": 72.5,
        "sky": "☀️",
        "feels_like": 74.2,
        "humidity": 65,
        "wind_speed": 8.5,
        "wind_direction": "NW↗️",
        "visibility": 10,
        "uv_index": 5,
        "description": "Clear skies",
        "forecasts": [
          {
            "date": "2024-12-05",
            "high_temperature": 75.8,
            "low_temperature": 62.4
          }
        ]
      }
    }

信息

分类

网页与API