@cyanheads/aviation-weather-mcp-server
公共托管服务器: https://aviation-weather.caseyjhand.com/mcp
工具
五个工具涵盖航空天气——站点查询、当前观测、终端天气预报、飞行员报告和活跃的咨询:
工具 | 描述 |
| 按 ICAO ID、边界框或美国州来解析机场和气象站。返回 ICAO/IATA/FAA ID、坐标、海拔和可用数据类型。 |
| 获取一个或多个机场的当前天气观测(METAR)。返回解码的风、能见度、云底、当前天气、温度/露点、高度表、云层、飞行类别(VFR/MVFR/IFR/LIFR)以及原始 METAR 字符串。 |
| 获取一个或多个机场的终端机场天气预报。返回每个预报时段的有效时间、地面风、低空风切变、能见度、解码天气、云层以及垂直能见度(进入预报的遮蔽现象),还有原始 TAF 字符串。 |
| 获取机场附近或给定边界框内的近期飞行员报告。返回解码的湍流、结冰和云层报告,包含高度、飞机类型、强度以及原始 PIREP 字符串。 |
| 获取某个区域的活跃国内 SIGMET。返回危险类型(CONVECTIVE、TURBULENCE、ICING、IFR)、严重程度、高度范围、有效时段、多边形坐标和原始文本。 |
aviation_find_stations
通过多种搜索模式解析和发现气象站。
按 4 字母 ICAO ID 查询一个或多个站点(每次调用最多 20 个 ID)——查询仅支持 ICAO,但每条返回记录都会包含其 IATA/FAA 别名(如果有)
发现某个地理边界框内的所有站点
通过两位美国邮政服务代码(USPS)列出 50 个美国州或哥伦比亚特区的站点(使用 bbox 加客户端侧州过滤)
返回
data_types(METAR、TAF 等),以便代理在查询前确认哪些数据可用每条结果都会说明上游 400 行上限是否截断了结果,因此截断的抽取永远不会被误认为是该区域的所有站点——被截断的州查询还会报告州过滤之前的行数,而更小的
bbox是明确的调整手段
aviation_get_metar
获取当前或近期的 METAR 观测(每次调用 1–10 个站点)。
hours参数(1–12)按站点返回观测历史;默认 1 仅返回最近一次飞行类别(VFR/MVFR/IFR/LIFR)直接来自 AWC API,无需客户端计算
除原始 METAR 字符串外,还解码云层、含阵风的风、能见度和当前天气(原始分组加上通俗英语,每组一个读数)
云底涵盖破碎、阴天和遮蔽层,并报告高度是否实测还是不确定云底——垂直能见度进入遮蔽现象
METAR 类型字段区分
METAR(例行)和SPECI(因显著天气变化触发的特殊观测)每批都会报告哪些请求的站点返回了,因此部分结果永远不会被误认为是完整覆盖——缺失的 ID 会明确列出并附恢复指南
aviation_get_taf
获取 1–4 个机场的终端机场天气预报。
返回结构化的预报时段,包含变化类型(
FM、TEMPO、BECMG)和概率在原始分组旁边逐组解码预报天气(
-SHRA BR→light rain showers; mist),与aviation_get_metar返回的形状相同预报的遮蔽层保留其层次,并带有垂直能见度(
VV002→ 200 英尺的不确定云底),而不是读作晴空低空风切变(
WS020/20040KT)被解码为剪切层顶和该高度的预报风valid_from/valid_to采用 ISO 8601 格式,便于直接进行时间比较每批都会报告哪些请求的站点返回了,因此部分结果永远不会被误认为是完整覆盖——缺失的 ID 会明确列出并附恢复指南
aviation_get_pireps
按站点+半径或边界框搜索近期飞行员报告。
station_id+distance_nm(10–500 海里,省略时为 100)用于机场周围的径向搜索bbox用于地理区域搜索——适合航路走廊检查;distance_nm在此没有意义,会与它一起被拒绝altitude_min_ft/altitude_max_ft过滤器用于隔离巡航高度的报告,可以单独使用一个边界,也可以同时使用(最小值不得超过最大值)湍流和结冰数组每条报告最多包含两层(如 API 报告)
每条结果都会说明上游 400 行上限是否截断了结果,并指出
bbox、distance_nm和hours是上限生效前缩小查询范围的措施——高度过滤器在上限之后运行,无法恢复被丢弃的报告注意:没有 PIREP 并不意味着天气平静——它们本质上就是稀疏的
aviation_get_advisories
列出当前活跃的国内 SIGMET。
advisory_type过滤器:sigmet或all(默认)——两者都返回活跃的 SIGMET 集合hazard过滤器:CONVECTIVE、TURBULENCE、ICING、IFRbbox过滤器在客户端应用(AWC API 返回所有活跃的咨询;工具按多边形重叠进行过滤)不提供 AIRMET。上游数据仅包含国内 SIGMET,因此
advisory_type: airmet以及MTN OBSCN、SURFACE WIND和LLWS危险会被拒绝并提供指南,而不是用 SIGMET 或空数组来回答在天气晴好的时期,可能没有活跃的 SIGMET——空结果是有效状态,不是错误
Related MCP server: mcp-metar
提示
类型 | 名称 | 描述 |
Prompt |
| 为一个或多个机场构建飞行前天气简报。引导 LLM 依次调用 |
所有资源数据都可通过工具访问。此服务器没有资源——所有航空天气数据都是时效敏感的(METAR 大约 1 小时有效,咨询从几分钟到几小时不等),不适合作为稳定 URI 的资源。
功能
基于 @cyanheads/mcp-ts-core 构建:
声明式工具和提示定义——每个原语一个文件,框架处理注册和验证
统一错误处理——处理器抛出,框架捕获、分类并格式化
可插拔认证:
none、jwt、oauth结构化日志,并可选 OpenTelemetry 追踪
支持 STDIO 和 Streamable HTTP 传输
航空天气专用:
无密钥——无需 API 密钥或认证;所有数据均来自公共 AWC Data API
单一服务(
aviation-weather-service),对无密钥的公共端点提供重试+指数退避原始编码字符串(
rawOb、rawTAF、rawAirSigmet)与解码字段一同呈现,让代理同时拥有两层信息州→边界框表支持 AWC API 原生不支持的美国州站点查询
服务器级
instructions字段在initialize时向所有客户端显示“非正式简报”安全免责声明
代理友好的输出:
飞行类别(
VFR/MVFR/IFR/LIFR)作为判别字符串字段——代理可以直接基于它进行分支,无需解析云底+能见度结构化错误契约,带有类型化的
reason字段和recovery提示(例如,“使用aviation_find_stations验证 ICAO ID”)aviation_preflight_brief提示编码了正确的 METAR → TAF → PIREPs → advisories 简报顺序,代理经常因为遗漏步骤而出错
快速开始
公共托管实例
公共托管实例位于 https://aviation-weather.caseyjhand.com/mcp。将其添加到您的 MCP 客户端配置中:
{
"mcpServers": {
"aviation-weather": {
"type": "streamable-http",
"url": "https://aviation-weather.caseyjhand.com/mcp"
}
}
}自托管 / 本地
将以下内容添加到您的 MCP 客户端配置文件中。
{
"mcpServers": {
"aviation-weather": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/aviation-weather-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}或使用 npx(无需 Bun):
{
"mcpServers": {
"aviation-weather": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@cyanheads/aviation-weather-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}或使用 Docker:
{
"mcpServers": {
"aviation-weather": {
"type": "stdio",
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "MCP_TRANSPORT_TYPE=stdio",
"ghcr.io/cyanheads/aviation-weather-mcp-server:latest"
]
}
}
}如需 Streamable HTTP,请设置传输方式并启动服务器:
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp前提条件
Bun v1.3.0 或更高版本(或 Node.js v24+)。
无需 API 密钥——AWC Data API 完全公开且无需密钥。
安装
克隆仓库:
git clone https://github.com/cyanheads/aviation-weather-mcp-server.git进入目录:
cd aviation-weather-mcp-server安装依赖:
bun install配置环境:
cp .env.example .env
# edit .env if you need to override AWC_BASE_URL or AWC_TIMEOUT_MS配置
变量 | 描述 | 默认值 |
| NWS AWC 数据 API 的基础 URL。 |
|
| 每次请求的超时时间(毫秒,1000–60000)。 |
|
| 传输方式: |
|
| HTTP 服务器端口。 |
|
| 认证模式: |
|
| 日志级别(RFC 5424)。 |
|
| 启用 OpenTelemetry 插桩。 |
|
有关可选覆盖项的完整列表,请参阅 .env.example。
运行服务器
本地开发
构建并运行:
bun run rebuild bun run start:stdio # or bun run start:http运行检查与测试:
bun run devcheck # Lint, format, typecheck, security bun run test # Vitest test suite bun run lint:mcp # Validate MCP definitions against spec
Docker
docker build -t aviation-weather-mcp-server .
docker run --rm -p 3010:3010 aviation-weather-mcp-serverDockerfile 默认使用 HTTP 传输、无状态会话模式,并将日志写入 /var/log/aviation-weather-mcp-server。OpenTelemetry 对等依赖默认安装——如需省略,请使用 --build-arg OTEL_ENABLED=false 构建。
项目结构
目录 | 用途 |
|
|
| 服务器特定的环境变量解析( |
| AWC 数据 API 客户端——HTTP 请求、指数退避重试、响应规范化。 |
| 工具定义( |
| 提示词定义( |
| 与 |
开发指南
有关开发指南和架构规则,请参阅 CLAUDE.md。简要说明:
处理器抛出异常,框架负责捕获——工具逻辑中不使用
try/catch使用
ctx.log进行请求级日志记录,使用ctx.state进行租户级存储通过
src/mcp-server/*/definitions/index.ts中的桶文件注册新工具和提示词封装外部 API 调用:验证原始数据 → 规范化为领域类型 → 返回输出模式;绝不虚构缺失字段
并非官方飞行前简报。 AWC 的数据仅供参考。实际飞行计划需要授权来源(例如 Leidos/1800wxbrief.com)。服务器通过每次
initialize时发送的instructions字段展示此免责声明。
贡献
欢迎提交 Issue 和拉取请求。提交前请运行检查与测试:
bun run devcheck
bun run test许可证
Apache-2.0——详情请参阅 LICENSE。
This server cannot be deployed
Maintenance
Related MCP Connectors
Aviation Weather MCP — METAR, TAF, PIREPs, AIRMET/SIGMET, station info
Hosted MCP server for Xweather weather data: conditions, forecasts, alerts, and more.
FlightAware MCP — wraps FlightAware AeroAPI v4 (aeroapi.flightaware.com)
NOAA and ECMWF weather forecast MCP for discovery, validation, and GribStream OAuth queries.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides aviation weather information through a Model Context Protocol server, enabling access to METARs, TAFs, PIREPs, and route weather data for informational purposes only.2MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for fetching METAR and TAF aviation weather data for airports by ICAO code.13 PyPIMIT
- FlicenseNot gradedqualityDmaintenanceFetches and parses METAR/TAF aviation weather data from NOAA with caching and human-readable formatting.1-
- AlicenseNot gradedqualityCmaintenanceMCP server providing real-time aviation weather data (METAR, TAF, PIREPs, AIRMETs) from aviationweather.gov for flight planning and analysis.14 npmMIT