使用说明

项目简介

这是一个基于 Model Context Protocol (MCP) 构建的天气预报服务器。它通过 AccuWeather API 获取天气数据,并以结构化的JSON格式向 MCP 客户端提供指定地点的当前天气状况和未来12小时的每小时天气预报。

主要功能点

  • 获取当前天气状况:包括温度、天气描述、相对湿度和降水情况等。
  • 12小时天气预报:提供未来12小时的每小时天气数据,包括温度、天气描述、降水概率、降水类型和降水强度。
  • 基于地点查询:用户可以根据地点名称查询天气预报。
  • 数据缓存:为了提高效率,服务器会缓存地点信息。

安装步骤

  1. 安装 uv 和依赖: 首先确保你的系统安装了 uv 包管理器。然后,在本地克隆仓库或下载代码后,在项目根目录下执行以下命令创建虚拟环境并安装依赖:
    uv venv
    uv sync
  2. 配置 AccuWeather API 密钥: 在项目根目录下创建 '.env' 文件,并添加你的 AccuWeather API 密钥。你需要访问 AccuWeather API 开发者网站 注册并获取 API 密钥。
    ACCUWEATHER_API_KEY=你的_API_密钥

服务器配置

MCP 客户端需要以下配置信息来启动和连接到天气服务器。将以下 JSON 配置添加到你的 MCP 客户端的服务器配置中。

{
  "mcpServers": {
    "weather": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/adhikasp/mcp-weather.git", "mcp-weather"],
      "env": {
        "ACCUWEATHER_API_KEY": "你的_API_密钥"
      }
    }
  }
}

配置参数说明:

  • 'server name': 服务器名称,这里是 'weather',客户端可以使用此名称来引用该服务器。
  • 'command': 启动服务器的命令,这里使用 'uvx',它允许直接从 Git 仓库运行 Python 包。
  • 'args': 传递给 'uvx' 命令的参数列表。
    • '--from "git+https://github.com/adhikasp/mcp-weather.git"': 指定从 GitHub 仓库 'https://github.com/adhikasp/mcp-weather.git' 获取代码。
    • '"mcp-weather"': 指定要运行的包或模块名称,这里是 'mcp-weather'。
  • 'env': 设置环境变量。
    • 'ACCUWEATHER_API_KEY': 你的 AccuWeather API 密钥,服务器将使用此密钥访问 AccuWeather API。请务必替换为你的真实 API 密钥。

注意: 这种配置方式允许客户端直接从 Git 仓库运行服务器,无需手动下载和部署代码。'uvx' 会自动处理依赖安装和代码执行。 确保你的 MCP 客户端环境安装了 'uv' 和 'uvx'。

基本使用方法

配置完成后,MCP 客户端可以通过调用 'weather' 服务器提供的 'get_hourly_weather' 工具来获取天气预报。客户端需要提供地点名称作为参数。

例如,使用 MCP 客户端发送以下请求 (假设客户端使用 JSON-RPC 协议):

{
  "jsonrpc": "2.0",
  "method": "call",
  "params": {
    "server": "weather",
    "tool": "get_hourly_weather",
    "arguments": {
      "location": "北京"
    }
  },
  "id": 1
}

服务器会返回包含北京当前天气状况和未来12小时每小时天气预报的 JSON 响应。响应格式示例如 README.md 的 "API Usage" 部分。

{
    "location": "Beijing",
    "location_key": "101010100",
    "country": "China",
    "current_conditions": {
        // ... 当前天气数据
    },
    "hourly_forecast": [
        // ... 未来12小时天气预报数据
    ]
}

请参考仓库的 README.md 文件和 'weather.py' 代码了解更详细的 API 使用和实现细节。

信息

分类

网页与API