天气数据服务

一个基于国家气象局API提供天气警报和预报的模型上下文协议(MCP)服务器。

  • by MikeySharma
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 mikeysharma/weather-mcp-server

使用说明

气象MCP服务器

模型上下文协议(MCP)服务器,使用美国国家气象局(NWS)API提供天气警报和预报。

特性

  • 天气警报:获取美国任何州的活跃天气警报
  • 位置预测:检索特定坐标的详细天气预报
  • 实时数据:从官方NWS API获取实时数据
  • MCP合规性:与Claude Desktop和其他MCP客户端完全兼容

安装

  1. 克隆存储库:
git clone https://github.com/MikeySharma/weather-mcp-server.git
cd weather-mcp-server
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build

配置

Claude桌面设置

将以下内容添加到您的Claude Desktop MCP设置中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "weather": {
      "command": "node",
      "args": ["/absolute/path/to/weather-mcp-server/build/index.js"],
      "env": {
        "NODE_ENV": "production"
      }
    }
  }
}

环境变量

服务器使用以下环境变量(可选):

# For debugging
export DEBUG_MCP=true
export NODE_ENV=development

用法

可用工具

1.获取天气警报

get_alerts(state: string)
  • 状态:两个字母的美国州代码(例如,“CA”、“NY”、“TX”)
  • 退货:指定状态的活动天气警报

2.获取天气预报

get_forecast(latitude: number, longitude: number)
  • 纬度:地理纬度(-90至90)
  • 经度地理经度(-180至180)
  • 退货:该地点的7天天气预报

Claude使用示例

@weather get_alerts(state: "CA")
@weather get_forecast(latitude: 37.7749, longitude: -122.4194)

api参考

美国国家气象局API

此服务器使用官方NWS API:

  • 基本URL: https://api.weather.gov
  • 速率限制:请遵守速率限制(通常为10个请求/分钟)
  • 数据覆盖:仅限美国领土

响应格式

警报响应

{
  features: Array<{
    properties: {
      event: string;
      severity: string;
      description: string;
      instruction: string;
      areaDesc: string;
      effective: string;
      expires: string;
    }
  }>
}

预测响应

{
  properties: {
    periods: Array<{
      name: string;
      temperature: number;
      temperatureUnit: string;
      windSpeed: string;
      windDirection: string;
      shortForecast: string;
      detailedForecast: string;
    }>
  }
}

发展

项目结构

weather-mcp-server/
├── src/
│   ├── index.ts          # Main server entry point
│   ├── tools/
│   │   └── weather-tools.ts  # Tool implementations
│   └── helpers/
│       └── weather-service.helpers.ts  # API helpers
├── build/                # Compiled JavaScript
├── package.json
└── tsconfig.json

从源头构建

  1. 安装TypeScript (如果尚未安装):
npm install -g typescript
  1. 构建项目:
npm run build
  1. 手表开发模式:
npm run dev

测试

以独立模式运行服务器进行测试:

npm start

错误处理

该服务器包括全面的错误处理功能,用于:

  • 网络超时
  • API速率限制
  • 坐标无效
  • 不支持的位置(非美国)
  • 响应格式错误

局限性

  • 仅限美国:NWS API仅提供美国领土的数据
  • 速率限制:遵守NWS API速率限制(10次请求/分钟)
  • 坐标精度:网格点限制为小数点后4位

贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

致谢

支持

对于问题和疑问:

  1. 检查 现有问题
  2. 创建具有详细描述的新问题
  3. 包括错误日志和复制步骤

更新日志

v1.0.0

  • 具有警报和预测功能的初始版本
  • MCP协议合规性
  • TypeScript实现
  • 全面的错误处理

备注:此服务器需要互联网连接才能从NWS API获取天气数据。