天气数据服务

一个通过MCP协议提供全球天气数据的服务,包括实时天气、小时预报和每日预报。

  • by alexatnordnet
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 alexatnordnet/mcp-yrno-weather-prediction-server

使用说明

MCP YR.no气象服务器

一种模型上下文协议(MCP)服务器,提供对挪威气象研究所(YR.no)天气数据的访问。该服务器通过MCP协议公开天气预报功能,允许AI助手获取全球任何地点的当前天气、每小时预报和每日预报。

特性

  • 当前天气:获取任何位置的实时天气状况
  • 每小时预测:获取详细的每小时天气预报(最多48小时)
  • 每日预测:获取每日天气摘要(最多7天)
  • 详细预测:获取所有可用参数的综合天气数据
  • 天气描述:将天气符号代码转换为人类可读的描述

安装

  1. 克隆此存储库并导航到以下目录:
git clone <repository-url>
cd mcp-yrno-weather-prediction-server
  1. 安装依赖项:
npm install
  1. 构建TypeScript代码:
npm run build

用法

发展模式

在开发模式下运行服务器并自动重新加载:

npm run dev

生产模式

构建并运行编译后的服务器:

npm run build
npm start

MCP工具

服务器提供以下工具:

get_current_weather

获取某个位置的当前天气状况。

参数:

  • latitude (数字,必填):纬度坐标(-90到90,最多4位小数)
  • longitude (数字,必填):经度坐标(-180到180,最多4位小数)
  • altitude (数字,可选):海拔高度(单位:米)

例子:

{
  "latitude": 59.9139,
  "longitude": 10.7522,
  "altitude": 100
}

get_hourly_forecast

获取某个地点的每小时天气预报。

参数:

  • latitude (数字,必填):纬度坐标(-90到90,最多4位小数)
  • longitude (数字,必填):经度坐标(-180到180,最多4位小数)
  • hours (数字,可选):要预测的小时数(1-48,默认值:24)
  • altitude (数字,可选):海拔高度(单位:米)

get_daily_forecast

获取一个地点的每日天气预报(最多7天)。

参数:

  • latitude (数字,必填):纬度坐标(-90到90,最多4位小数)
  • longitude (数字,必填):经度坐标(-180到180,最多4位小数)
  • altitude (数字,可选):海拔高度(单位:米)

get_detailed_forecast

从API获取详细的天气预报和完整的数据。

参数:

  • latitude (数字,必填):纬度坐标(-90到90,最多4位小数)
  • longitude (数字,必填):经度坐标(-180到180,最多4位小数)
  • altitude (数字,可选):海拔高度(单位:米)

get_weather_description

将天气符号代码转换为人类可读的描述。

参数:

  • symbolCode (字符串,必填):天气符号代码(例如,“clearsky_day”、“rain”、“snow”)

配置

天气客户端配置了:

  • 用户代理:“MCP Yr无气象服务器/1.0https://github.com/example/mcp-yrno-weather"
  • 基本URL: "https://api.met.no/weatherapi/locationforecast/2.0"
  • 超时:10秒

您可以在中修改配置 src/weather-client.ts 如果需要的话。

MCP客户端配置

要将此服务器与MCP客户端一起使用,请将其添加到您的客户端配置中:

{
  "mcpServers": {
    "yrno-weather": {
      "command": "node",
      "args": ["/path/to/your/mcp-yrno-weather-prediction-server/dist/index.js"]
    }
  }
}

API费率限制

API挪威气象研究所有费率限制:

  • 尊重API的使用
  • 客户自动将坐标四舍五入到4位小数,以符合API的要求
  • 优雅地处理速率限制错误(HTTP 429)

天气数据

服务器提供丰富的天气数据,包括:

  • 温度(电流、最小值、最大值)
  • 湿度
  • 气压
  • 风速与风向
  • 云层覆盖范围
  • 降水量和概率
  • 天气状况符号
  • 紫外线指数(如有)

错误处理

服务器处理各种错误情况:

  • 无效坐标(HTTP 422)
  • 速率限制(HTTP 429)
  • 禁止访问(HTTP 403)
  • 网络超时
  • API响应无效

发展

脚本

  • npm run build:将TypeScript编译为JavaScript
  • npm run dev:使用tsx在开发模式下运行
  • npm run watch:运行文件监视以进行开发
  • npm start:运行已编译的服务器

文件结构

src/
├── index.ts          # Main MCP server implementation
└── weather-client.ts # YR.no API client and types

许可证

MIT许可证

鸣谢