天气信息服务器

一个基于国家气象局API的天气信息服务器,提供美国各州的天气警报和特定地点的天气预报功能。

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

使用说明

气象MCP服务器

这是一个模型上下文协议(MCP)服务器,使用美国国家气象局(NWS)API提供天气信息。

特性

  • 获取美国某个州的天气警报
  • 获取特定位置的天气预报(使用纬度和经度)

需求

  • Python 3.10+
  • FastMCP
  • httpx

安装

  1. 克隆此存储库
  2. 设置虚拟环境:
    python -m venv .venv
    source .venv/bin/activate  # On Windows, use `.venv\Scripts\activate`
    
  3. 使用uv安装所需的软件包:
    uv add "mcp[cli]" httpx
    

配置

服务器使用配置文件 config.py 具有以下设置:

  • NWS_API_BASE:美国国家气象局API的基本URL
  • USER_AGENT:向NWS API发出请求时使用的User-Agent字符串
  • LOG_LEVEL:日志记录级别(例如,“INFO”、“DEBUG”)
  • LOG_FORMAT:日志消息的格式字符串
  • REQUEST_TIMEOUT:API请求的超时时间(秒)

您可以在中修改这些设置 config.py 文件以自定义服务器行为。

用法

独立运行服务器

要独立运行服务器,请执行以下操作:

  1. 激活虚拟环境(如果尚未激活):
    source .venv/bin/activate  # On Windows, use `.venv\Scripts\activate`
    
  2. 运行服务器:
    python weather.py
    

与Cline一起使用

天气MCP服务器已添加到Cline配置中。要在Cline中使用它:

  1. 确保Cline已正确设置并运行。

  2. 天气MCP服务器将作为一个名为“天气”的工具提供。

  3. 您可以在Cline中使用以下工具:

    一 get_alerts(state: str):获取美国某个州的天气警报(使用两个字母的州代码,例如“CA”表示加利福尼亚州) b get_forecast(latitude: float, longitude: float):获取特定位置的天气预报

Cline中的示例用法:

# Get alerts for California
result = await mcp.call_tool("weather.get_alerts", state="CA")
print(result)

# Get forecast for San Francisco (approximate coordinates)
result = await mcp.call_tool("weather.get_forecast", latitude=37.7749, longitude=-122.4194)
print(result)

注意:调用MCP工具的确切语法可能因您的Cline设置而异。有关最新的使用说明,请参阅Cline文档。

错误处理和日志

该服务器包括改进的API请求错误处理和日志记录。如果在请求过程中发生错误,服务器将记录错误并返回相应的错误消息。日志将以配置的日志级别和格式打印到控制台。

测试

单元测试

要运行单元测试,请执行以下操作:

python -m unittest test_weather.py

这些测试涵盖了 get_alerts 和 get_forecast 工具。

手动测试

要手动测试服务器,您可以使用MCP客户端调用提供的工具。以下是一些示例命令:

# Get alerts for California
result = await mcp.call_tool("get_alerts", state="CA")
print(result)

# Get forecast for San Francisco (approximate coordinates)
result = await mcp.call_tool("get_forecast", latitude=37.7749, longitude=-122.4194)
print(result)

贡献

欢迎投稿!请随时提交拉取请求。

许可证

该项目是开源的,可在 MIT许可证.