天气信息服务器

提供来自美国国家气象局的天气信息和警报的模型上下文协议(MCP)服务器。

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

使用说明

气象MCP服务器

一种模型上下文协议(MCP)服务器,提供来自国家气象局(NWS)的天气信息和警报。

特性

  • 获取警报:检索美国某个州的活动天气警报
  • 获取预测:获取特定位置(纬度/经度)的天气预报

先决条件

  • Python 3.10或更高版本
  • Docker和Docker Compose(用于容器化部署)

安装

本地设置

# Clone the repository
git clone https://github.com/yourusername/weather-mcp.git
cd weather-mcp

# Create and activate virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -e .

# Run the server
weather-mcp

Docker设置

# Build and run with Docker Compose
docker-compose up -d

# View logs
docker-compose logs -f weather-mcp

配置

Claude桌面集成

要将此服务器与Claude Desktop一起使用,请将以下内容添加到 ~/.config/Claude/claude_desktop_config.json (Linux/macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):

选项1:本地安装

{
  "mcpServers": {
    "weather": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/weather-mcp",
        "run",
        "-m",
        "weather.main"
      ]
    }
  }
}

选项2:Docker容器

{
  "mcpServers": {
    "weather": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "weather-mcp-server"
      ]
    }
  }
}

发展

运行测试

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run tests with coverage
pytest --cov=src/weather

代码格式化和Linting

# Format code with Black
black src tests

# Lint with Ruff
ruff check src tests

项目结构

weather-mcp/
├── src/weather/              # Main package
│   ├── __init__.py
│   ├── main.py              # Entry point
│   └── server.py            # Server implementation
├── config/                   # Configuration files
│   ├── __init__.py
│   └── settings.py
├── tests/                    # Test suite
├── Dockerfile               # Docker image definition
├── docker-compose.yml       # Docker Compose configuration
├── pyproject.toml          # Project metadata and dependencies
├── README.md               # This file
└── DOCKER_SETUP.md         # Docker setup guide

api参考

get_alerts(状态:str)->str

获取美国某个州的活跃天气警报。

参数:

  • state:两个字母的美国州代码(例如,加利福尼亚州、纽约州、德克萨斯州)

退货: 包含活动天气警报或消息(如果找不到)的格式化字符串。

get_forecast(纬度:float,经度:float)->str

获取特定位置的天气预报。

参数:

  • latitude:位置纬度(建议最多保留4位小数)
  • longitude:位置经度(建议最多保留4位小数)

退货: 包含未来5个预测期(包括温度、风和条件)的格式化字符串。

故障排除

服务器无法启动

  • 检查Python版本: python --version (要求3.10+)
  • 确保安装了依赖项: pip install -e .
  • 检查日志以获取详细的错误消息

Docker问题

  • 重建映像: docker-compose build --no-cache
  • 查看日志: docker-compose logs weather-mcp
  • 确保Docker守护进程正在运行

Claude Desktop未检测到服务器

  • 验证中的路径 claude_desktop_config.json
  • 配置更改后重新启动Claude Desktop
  • 检查Claude Desktop中的MCP服务器设置

日志记录

服务器登录到stderr,以避免干扰MCP协议对stdout的使用。日志会自动发送到stderr,包括时间戳和严重性级别。

许可证

MIT许可证-有关详细信息,请参阅许可证文件

贡献

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

支持

有关问题、疑问或建议,请在GitHub上打开问题。