使用说明

项目简介

本项目 'weather' 是一个简单的MCP服务器示例,它利用美国国家气象局 (NWS) 的API,对外提供天气警报和天气预报查询功能。该服务器实现了MCP协议,可以与任何兼容MCP协议的客户端进行交互,为LLM应用提供天气相关的上下文信息和工具调用能力。

主要功能点

  • 获取天气警报 (get_alerts): 根据美国州份代码,查询该地区当前生效的天气警报信息。
  • 获取天气预报 (get_forecast): 根据经纬度坐标,查询未来几天的详细天气预报信息。

安装步骤

  1. 确保已安装 uv 和 Python 环境: 如果尚未安装 uv,请先安装 uv 包管理器。同时确保你的环境中已安装 Python。
  2. 创建并进入项目目录: 按照 'README.md' 中的指示,创建项目目录 'mcp-server' 并进入该目录。
    uv init mcp-server
    cd mcp-server
  3. 创建并激活虚拟环境: 创建 Python 虚拟环境并激活它,以隔离项目依赖。
    uv venv
    source .venv/bin/activate   # Linux/macOS
    # .venv\Scripts\activate  # Windows
  4. 安装依赖: 使用 uv 安装项目所需的依赖包 'mcp[cli]' 和 'httpx'。
    uv add "mcp[cli]" httpx

服务器配置

MCP 客户端需要以下配置信息来连接到 'weather' MCP 服务器。请将以下 JSON 配置添加到你的 MCP 客户端配置中。

{
  "server_name": "weather",  // 服务器名称,与 FastMCP 初始化时定义的名称一致
  "command": "uv",         // 启动服务器的命令,这里使用 uv 运行 main.py
  "args": ["run", "main.py"] // 启动命令的参数,指定运行 main.py 文件
}

配置参数说明:

  • 'server_name': 定义了服务器的名称,这里设置为 "weather",这必须与 'main.py' 中 'FastMCP("weather")' 初始化时使用的名称相同。
  • 'command': 指定用于启动服务器的可执行命令。这里使用 'uv' 包管理器来运行 Python 脚本。
  • 'args': 一个字符串数组,包含了传递给 'command' 的参数。'["run", "main.py"]' 指示 'uv' 运行 'main.py' 文件。

基本使用方法

  1. 启动服务器: 在项目根目录下,运行以下命令启动 'weather' MCP 服务器。

    uv run main.py

    或者使用 inspector 工具调试启动:

    npx @modelcontextprotocol/inspector uv run main.py

    服务器启动后,将通过标准输入输出 (stdio) 与 MCP 客户端进行通信。

  2. 客户端调用工具: 使用 MCP 客户端连接到该服务器后,你可以调用以下工具:

    • get_alerts: 获取天气警报。需要提供 'state' 参数,即美国州份的两字母代码 (例如 "CA", "NY")。
    • get_forecast: 获取天气预报。需要提供 'latitude' (纬度) 和 'longitude' (经度) 参数,以指定地理位置。

    客户端需要构造符合 MCP 协议的 JSON-RPC 请求,来调用这些工具并获取天气信息。具体的请求格式和参数定义请参考 MCP 协议文档以及工具的 docstring 注释。

示例 (概念性,非实际 JSON-RPC 请求):

假设你使用 MCP 客户端,想要查询加州 (CA) 的天气警报,你需要在客户端中选择或配置调用 'weather' 服务器的 'get_alerts' 工具,并提供参数 '{"state": "CA"}'。服务器将返回包含天气警报信息的 JSON-RPC 响应。

同样,要查询特定经纬度 (例如 34.0522, -118.2437,洛杉矶) 的天气预报,你需要调用 'get_forecast' 工具,并提供参数 '{"latitude": 34.0522, "longitude": -118.2437}'。服务器将返回包含天气预报信息的 JSON-RPC 响应。

信息

分类

网页与API