天气MCP服务器

一个基于模型上下文协议(MCP)的天气数据服务器,提供天气警报和预报功能。

  • by Yachitha
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Yachitha/weather-mcp-server

使用说明

MCP 服务器 – Weather MCP Server

这个项目实现了一个使用模型上下文协议(Model Context Protocol)构建的MCP服务器。它遵循了(此处根据上下文可能需要补充具体遵循的原则或标准,但原文未给出,所以翻译时保留原样) “构建MCP服务器”教程 并为您的应用程序提供定制工具。

目录

这会做什么

此服务器提供了MCP工具,MCP客户端(如Claude for Desktop客户端)可以调用这些工具来执行特定操作。
在你所遵循的教程中,示例实现了两种工具: get_alerts(state) 并且 get_forecast(latitude, longitude)。
在你的版本中,你可能根据你的使用场景对工具进行了修改或添加。

先决条件

  • Python 3.10 或更高版本(或您使用的任意版本)
  • 如所述,需使用MCP SDK版本≥1.2.0(适用于Python)。
  • (如适用) uv 用于运行服务器的工具(或等效工具)。
  • 网络连接(如果工具需要查询外部API)。
  • 要与Claude for Desktop进行集成:请确保已正确安装并配置客户端。

安装

  1. 克隆此存储库:

    git clone <repo-url>
    cd <repo-name>
    
  2. 创建并激活一个虚拟环境:

    source .venv/bin/activate   # (on macOS/Linux)
    # or on Windows: .venv\Scripts\activate
    
  3. 安装依赖项:

    pip install mcp[cli] httpx
    

使用方法

启动MCP服务器:

uv run <server_file>.py

或者如果你不使用UV,那么只需:

python <server_file>.py

服务器将开始监听MCP主机消息(通过stdio或HTTP,具体取决于您的传输方式)。

如果你正在将Claude与桌面版集成,请按以下方式更新你的claude_desktop_config.json文件:

{
  "mcpServers": {
    "<server-name>": {
      "command": "uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/PARENT/FOLDER/<server-dir>",
        "run",
        "<server_file>.py"
      ]
    }
  }
}

然后重新启动桌面版的Claude以应用此配置。

工具/终端点

以下是服务器提供的工具:

获取警报(state: str) -> str

获取美国某州(2个字母代码,例如“CA”、“NY”)的天气警报。 如果存在警报,则返回格式化的警报字符串;如果不存在,则返回一条信息性消息。

获取天气预报(纬度: 浮点数, 经度: 浮点数) -> 字符串

获取给定纬度和经度(仅限美国,基于外部API)的天气预报。 返回一个可读的字符串,总结接下来几个预报时段的情况。

(如果您添加了额外工具,请修改此部分。)

建筑及其工作原理

当客户端发送请求时:

  1. 客户端将您的问题发送给大型语言模型(LLM)主机。

  2. 主机根据MCP工具元数据选择要调用的工具(或工具集)。

  3. MCP服务器通过JSON-RPC(或HTTP)接收工具调用并执行它。

  4. 结果返回给主机,主机随后利用大型语言模型(LLM)为用户生成自然语言的回复。 (此流程基于教程中的“幕后发生了什么”部分。)

日志记录与最佳实践

  • 对于使用stdio传输的服务器(在Python中:避免使用print()语句),不要将输出写入stdout,因为这可能会破坏JSON-RPC消息。请改用将日志写入stderr或文件的日志库。

  • 工具名称应遵循MCP指定的命名规范。

  • 验证输入并优雅地处理错误(例如,当外部API失败或返回意外数据时)。

故障排除

  • 如果服务器未在客户端(例如,桌面版的Claude)中显示:

    • 检查你的JSON配置语法。

    • 确保您的服务器脚本路径是绝对路径。

    • 确保您完全退出并重新启动客户端应用程序。

  • 如果工具调用静默失败:

    • 检查客户端日志(例如,在 macOS 上位于 ~/Library/Logs/Claude/ 目录下的 mcp*.log 文件)。
    • 验证您的服务器是否能够无启动错误地运行。
    • 确认您的网络/API访问是否正常(例如,如果使用的是外部天气API)。
  • 如果你在美国以外的地方工作,且示例API仅支持美国地区:请考虑切换到全球API或相应调整逻辑。