Skip to main content
Glama
cyanheads

@cyanheads/aviation-weather-mcp-server

by cyanheads

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework

公共托管服务器: https://aviation-weather.caseyjhand.com/mcp


工具

五个工具涵盖航空天气——站点查询、当前观测、终端天气预报、飞行员报告和活跃的咨询:

工具

描述

aviation_find_stations

按 ICAO ID、边界框或美国州来解析机场和气象站。返回 ICAO/IATA/FAA ID、坐标、海拔和可用数据类型。

aviation_get_metar

获取一个或多个机场的当前天气观测(METAR)。返回解码的风、能见度、云底、当前天气、温度/露点、高度表、云层、飞行类别(VFR/MVFR/IFR/LIFR)以及原始 METAR 字符串。

aviation_get_taf

获取一个或多个机场的终端机场天气预报。返回每个预报时段的有效时间、地面风、低空风切变、能见度、解码天气、云层以及垂直能见度(进入预报的遮蔽现象),还有原始 TAF 字符串。

aviation_get_pireps

获取机场附近或给定边界框内的近期飞行员报告。返回解码的湍流、结冰和云层报告,包含高度、飞机类型、强度以及原始 PIREP 字符串。

aviation_get_advisories

获取某个区域的活跃国内 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 个机场的终端机场天气预报。

  • 返回结构化的预报时段,包含变化类型(FMTEMPOBECMG)和概率

  • 在原始分组旁边逐组解码预报天气(-SHRA BRlight 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 行上限是否截断了结果,并指出 bboxdistance_nmhours 是上限生效前缩小查询范围的措施——高度过滤器在上限之后运行,无法恢复被丢弃的报告

  • 注意:没有 PIREP 并不意味着天气平静——它们本质上就是稀疏的


aviation_get_advisories

列出当前活跃的国内 SIGMET。

  • advisory_type 过滤器:sigmetall(默认)——两者都返回活跃的 SIGMET 集合

  • hazard 过滤器:CONVECTIVETURBULENCEICINGIFR

  • bbox 过滤器在客户端应用(AWC API 返回所有活跃的咨询;工具按多边形重叠进行过滤)

  • 不提供 AIRMET。上游数据仅包含国内 SIGMET,因此 advisory_type: airmet 以及 MTN OBSCNSURFACE WINDLLWS 危险会被拒绝并提供指南,而不是用 SIGMET 或空数组来回答

  • 在天气晴好的时期,可能没有活跃的 SIGMET——空结果是有效状态,不是错误


Related MCP server: Aviation Weather MCP Server

提示

类型

名称

描述

Prompt

aviation_preflight_brief

为一个或多个机场构建飞行前天气简报。引导 LLM 依次调用 aviation_get_metaraviation_get_tafaviation_get_advisories,并综合生成一个带有飞行类别和活跃危险的放行/不放行图景。

所有资源数据都可通过工具访问。此服务器没有资源——所有航空天气数据都是时效敏感的(METAR 大约 1 小时有效,咨询从几分钟到几小时不等),不适合作为稳定 URI 的资源。


功能

基于 @cyanheads/mcp-ts-core 构建:

  • 声明式工具和提示定义——每个原语一个文件,框架处理注册和验证

  • 统一错误处理——处理器抛出,框架捕获、分类并格式化

  • 可插拔认证:nonejwtoauth

  • 结构化日志,并可选 OpenTelemetry 追踪

  • 支持 STDIO 和 Streamable HTTP 传输

航空天气专用:

  • 无密钥——无需 API 密钥或认证;所有数据均来自公共 AWC Data API

  • 单一服务(aviation-weather-service),对无密钥的公共端点提供重试+指数退避

  • 原始编码字符串(rawObrawTAFrawAirSigmet)与解码字段一同呈现,让代理同时拥有两层信息

  • 州→边界框表支持 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 完全公开且无需密钥。

安装

  1. 克隆仓库:

git clone https://github.com/cyanheads/aviation-weather-mcp-server.git
  1. 进入目录:

cd aviation-weather-mcp-server
  1. 安装依赖:

bun install
  1. 配置环境:

cp .env.example .env
# edit .env if you need to override AWC_BASE_URL or AWC_TIMEOUT_MS

配置

变量

描述

默认值

AWC_BASE_URL

NWS AWC 数据 API 的基础 URL。

https://aviationweather.gov/api/data

AWC_TIMEOUT_MS

每次请求的超时时间(毫秒,1000–60000)。

10000

MCP_TRANSPORT_TYPE

传输方式:stdiohttp

stdio

MCP_HTTP_PORT

HTTP 服务器端口。

3010

MCP_AUTH_MODE

认证模式:nonejwtoauth

none

MCP_LOG_LEVEL

日志级别(RFC 5424)。

info

OTEL_ENABLED

启用 OpenTelemetry 插桩

false

有关可选覆盖项的完整列表,请参阅 .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-server

Dockerfile 默认使用 HTTP 传输、无状态会话模式,并将日志写入 /var/log/aviation-weather-mcp-server。OpenTelemetry 对等依赖默认安装——如需省略,请使用 --build-arg OTEL_ENABLED=false 构建。


项目结构

目录

用途

src/index.ts

createApp() 入口点——注册工具/提示词并初始化服务。

src/config

服务器特定的环境变量解析(AWC_BASE_URLAWC_TIMEOUT_MS)。

src/services/aviation-weather

AWC 数据 API 客户端——HTTP 请求、指数退避重试、响应规范化。

src/mcp-server/tools

工具定义(*.tool.ts)。

src/mcp-server/prompts

提示词定义(*.prompt.ts)。

tests/

src/ 对应的单元测试和集成测试。


开发指南

有关开发指南和架构规则,请参阅 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

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
2dResponse time
6dRelease cycle
12Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cyanheads/aviation-weather-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server