关于 met-mcp
met-mcp 是提供挪威气象局(Yr)天气及相关数据的 MCP 服务,适用于按地点查询预报或观测数据的客户端。它将全球预报与仅限北欧的雷达、警报和沿海数据结合起来。
主要功能
- 01将地名转换为坐标
- 02获取全球逐小时预报
- 03查询北欧雷达降水临近预报
- 04查询挪威危险天气警报
- 05获取日出日落及沿海海洋预报
- 06查找气象站并检索历史观测
适用场景
- 01查询目的地的逐小时天气预报
- 02查看挪威天气警报
- 03检查附近气象站的历史观测
- 04查询挪威海岸的浪高和海水温度
MCP 相关
它通过本地 stdio 服务或远程 Streamable HTTP 端点向 MCP 客户端提供天气工具。两种部署方式共用工具定义。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://met-mcp.met-mcp-worker.workers.dev/mcpclaude mcp add --transport http trondbjoroy-met https://met-mcp.met-mcp-worker.workers.dev/mcp{"mcpServers":{"trondbjoroy-met":{"type":"http","url":"https://met-mcp.met-mcp-worker.workers.dev/mcp"}}}在 Cursor 中打开{"servers":{"trondbjoroy-met":{"type":"http","url":"https://met-mcp.met-mcp-worker.workers.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"trondbjoroy-met":{"type":"http","url":"https://met-mcp.met-mcp-worker.workers.dev/mcp"}}}{"mcpServers":{"trondbjoroy-met":{"serverUrl":"https://met-mcp.met-mcp-worker.workers.dev/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
8| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 地点名称,例如“Bergen”或“Oslo, Norway” |
| count | integer | 否 | 要返回的最大匹配数 |
详细介绍
met-mcp
一个用于获取挪威气象研究所(Yr)天气预报的 MCP 服务。作为学习项目构建。
提供三种使用方式:
- npm:
met-mcp— 通过 stdio 在本地运行 - 远程:
https://met-mcp.met-mcp-worker.workers.dev/mcp— 在 Cloudflare Workers 上通过 Streamable HTTP 提供,可将其添加为 claude.ai 连接器 - MCP 注册表:
io.github.trondbjoroy/met-mcp
工具
geocode_location(name, count)— 查找地点名称对应的坐标。使用免费的 Open-Meteo 地理编码器,因为 MET 没有地理编码 API。get_forecast(latitude, longitude, hours)— 来自 MET Locationforecast 2.0 的逐小时预报。全球可用,在北欧地区效果最佳。get_nowcast(latitude, longitude)— 未来 2 小时基于雷达的降水预报。仅限北欧地区。get_weather_alerts(latitude?, longitude?)— 挪威官方灾害预警(MetAlerts)。省略坐标即可获取整个挪威的预警。get_sun_events(latitude, longitude, date, utc_offset)— 日出、日落和太阳正午时间。全球可用。get_ocean_forecast(latitude, longitude, hours)— 挪威海岸沿线的浪高和海水温度。find_weather_stations(latitude, longitude, count)— 查找最近的官方气象站(Frost)。get_historical_weather(station_id, from, to, elements)— 来自 Frost 档案的每日历史观测数据;部分气象站的记录可追溯到 100 多年前。
这两个 Frost 工具需要免费的客户端 ID,可从 https://frost.met.no/auth/requestCredentials.html 获取,并将其设置为 FROST_CLIENT_ID 环境变量(或设置为 Cloudflare secret,供 worker 使用)。其他工具无需任何配置。
工具定义位于 src/tools.ts,由 stdio 服务和 worker 共用。
构建和测试
npm install
npm run build
npm test
测试会通过 stdio 启动服务,并调用两个工具访问实时 API。
与 Claude Code 配合使用
claude mcp add met-weather -- node C:\Users\trond\met-mcp\dist\index.js
然后向 Claude 提问:“明天卑尔根的天气怎么样?”
MET 服务条款
- 请发送包含联系信息的标识性 User-Agent。设置
MET_USER_AGENT环境变量,例如met-mcp/0.1.0 [email protected]。 - 坐标最多保留 4 位小数。服务会自动进行四舍五入。
- 数据许可:NLOD / CC BY 4.0。展示数据时请注明来源为 MET Norway。
远程版本
worker/ 中包含 Cloudflare Workers 部署:通过 MCP Streamable HTTP 和 createMcpHandler(MCP SDK v2)提供相同的两个工具。在 worker/ 中运行 npm run dev 进行开发,运行 npm run deploy 部署。
工作原理
src/index.ts是完整的服务。它通过 stdio 使用 MCP:在 stdin/stdout 上进行 JSON-RPC 通信。- 每个工具都使用 Zod 声明输入架构。MCP 客户端(Claude)会读取架构并验证参数。
- 工具结果是
content块。此服务会将 JSON 作为文本返回,并精简至大模型所需的内容;原始 MET 响应包含约 90 个时间步,以及多得多的字段。 - 切勿使用
console.log写入 stdout,否则会破坏协议流。请将日志写入 stderr。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。