关于 Airports
Airports 为旅行应用和开发者提供机场及相关设施查询,结合 AirportGap 实时 API 与 OurAirports 数据副本。除按城市或 IATA 代码查找外,还能检索机场跑道、频率、导航台及多种类型的机场设施。
主要功能
- 01按城市或 IATA 代码搜索机场
- 02查询机场间的大圆距离
- 03按多种代码查找机场及设施
- 04检索跑道、频率和导航台
- 05按名称、国家或类型筛选
适用场景
- 01按城市或代码查找机场
- 02计算两个机场之间的距离
- 03查询机场跑道和无线电频率
- 04查找直升机场或水上机场等设施
MCP 相关
作为 MCP 服务,它向客户端提供机场搜索、代码查找、距离计算,以及跑道、无线电频率和导航台查询工具。可通过 Pipeworx 网关连接,也可作为本地 stdio MCP 服务运行;OurAirports 数据仅在网关运行时可用。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://gateway.pipeworx.io/airports/mcpclaude mcp add --transport http pipeworx-io-airports https://gateway.pipeworx.io/airports/mcp{"mcpServers":{"pipeworx-io-airports":{"type":"http","url":"https://gateway.pipeworx.io/airports/mcp"}}}在 Cursor 中打开{"servers":{"pipeworx-io-airports":{"type":"http","url":"https://gateway.pipeworx.io/airports/mcp"}}}在 VS Code 中打开{"mcpServers":{"pipeworx-io-airports":{"type":"http","url":"https://gateway.pipeworx.io/airports/mcp"}}}{"mcpServers":{"pipeworx-io-airports":{"serverUrl":"https://gateway.pipeworx.io/airports/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
49| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| q | string | 否 | question 的别名。 |
| ask | string | 否 | question 的别名。 |
| text | string | 否 | question 的别名。 |
| input | string | 否 | question 的别名。 |
| packs | array | 否 | 可选。将路由限制为这些包的 slug(例如 ["sec-form-d","sec-13f"]),路由器随后只会从这些包中的工具进行选择。省略则使用默认的完整目录路由。Slug 可从 list_packs / search_packs / https://pipeworx.io/directory 获取;未列出或未知的 slug 会被忽略,并在 _meta.pack_scope.ignored 中列出。如果没有任何 slug 能匹配问题,则会在整个目录中路由,并设置 _meta.pack_scope.full_catalog:true(绝不会返回空答案)。 |
| query | string | 否 | question 的别名。 |
| prompt | string | 否 | question 的别名。 |
| message | string | 否 | question 的别名。 |
| question | string | 是 | 用自然语言表达的问题或请求。支持 query、q、prompt、text、input、ask、message 作为别名。 |
详细介绍
@pipeworx/airports
机场查询,两个数据源并列提供:
属于 Pipeworx — 一个将 AI Agent 连接到 1872+ 个实时数据源的 MCP 网关。这是一个独立的非官方集成,与上游提供方无关联、未经其认可,也未由其发布。
- AirportGap(实时、免费、无需密钥)— 原有工具。基于 OpenFlights 数据生成的静态快照,仅覆盖 IATA 代码和约 150 个主要城市。
- OurAirports(fleet #2977,D1 副本)— 覆盖 OurAirports 追踪的所有机场:约 86,000 条记录,包括仅有 ICAO 标识码的机场、直升机场、水上飞机基地、气球机场和已关闭的机场,以及它们的跑道、无线电频率和导航设施。
工具
基于 AirportGap(实时获取上游数据)
search_airports(query)— 通过内置的 city->IATA 映射(约 150 个主要枢纽)按城市名称或 IATA 代码搜索。get_airport(iata_code)— 按 IATA 代码查询单个机场。calculate_distance(from, to)— 计算两个 IATA 代码对应机场之间的大圆距离。
如果 AirportGap 的快照中没有某个 IATA 代码(例如,2020 年才启用的 BER),工具会返回 found: false 并附上提示,而不是报错——这是已知的数据集时效边界,并非服务中断。
基于 OurAirports(D1,公共领域)
ourairports_lookup(code)— 按 ICAO 代码、IATA 代码、GPS 代码或 OurAirports 自有的本地/国家标识码查询任意机场(例如美国本地代码"00A",或非美国标识码"AT-0001")。返回名称、类型(large_airport/medium_airport/small_airport/heliport/seaplane_base/balloonport/closed)、坐标、海拔、国家/地区,以及是否提供定期航班服务。airport_runways(code)— 返回每条跑道的长度/宽度/道面/照明/关闭标记,以及两端的标识码、坐标、海拔、航向和内移入口。airport_frequencies(code)— 返回无线电频率(ATIS/TWR/GND/CLD/DIR/APP/DEP/CTAF/UNICOM/...)、说明和 MHz 数值。airport_navaids(code)— 返回与机场相关的导航设施(NDB/VOR/DME/VOR-DME/VORTAC/TACAN/...):标识码、名称、类型、以 kHz 为单位的频率、坐标、海拔、DME 信道和功率。ourairports_search(query?, country?, type?, limit?, offset?)— 按名称/市镇/标识码进行文本匹配,可选按 ISO 国家代码或机场类型缩小范围。必须至少提供query/country/type中的一项——否则会对约 86,000 条记录进行全表扫描。limit默认为 20(最大值为 100);若匹配记录数多于返回数,响应会包含truncated: true和total_matching。
所有基于 OurAirports 的工具都接受 ICAO/IATA/GPS/本地代码作为 code,并按确定性规则解析:优先匹配 OurAirports 自有的规范 ident,其次是 icao_code,再其次是 gps_code,最后是 iata_code,因此,即使某个代码在不同列中发生冲突,也不会悄悄解析到错误的机场。无法识别的代码会被明确拒绝并返回清晰的错误,而不会返回空结果并显示成功——如果还不知道正确代码,请先用 ourairports_search 按名称/城市查找。对于已知机场,如果没有匹配的子记录(例如没有固定翼跑道的直升机场),工具会返回空数组,并附上 found: true 和说明性的 note——这是实际数据,并非失败。
身份验证
无需密钥。基于 OurAirports 的工具只能通过 Pipeworx 网关响应,网关持有 D1 副本;单独执行 npm install 没有可供读取的数据,因此每个工具都会抛出清晰的“not bound in this runtime”错误,而不是返回空列表。
数据源
- AirportGap(airportgap.com)——免费的公共 API,无需身份验证。
- OurAirports——批量 CSV 导出
(davidmegginson.github.io/ourairports-data,是
ourairports.com 自有数据的公共镜像)。根据 ourairports.com/data/:“所有数据均以公共领域形式发布,不保证准确性或适用性。” 该网站仅发布批量文件(没有实时查询
API),因此此工具包会构建一份副本(
scripts/ourairports/load-data.mjs), 而不是做代理。全部六个 文件(机场、跑道、机场频率、导航设备、国家/地区、 区域)都会完整加载——在 OurAirports 的数据规模下,这里无需聚合或限制行数 (最大的表约有 86k 行)。
刷新
OurAirports 会滚动更新其 CSV(新增/变更机场、 跑道修改、频率变更)。刷新方法:
CLOUDFLARE_ACCOUNT_ID=ecc092eba5c5bacef3ccff9f9d7a4d8d \
node scripts/ourairports/load-data.mjs \
--db pipeworx-ourairports --config workers/gateway/wrangler.toml
需要先登录 Pipeworx Cloudflare 账户中的 wrangler。加载器会重新下载全部六个 CSV,重建每张表(DROP TABLE IF EXISTS
- 重新加载——OurAirports 会修订现有行,而不只是追加),
并按表核对已加载行数与解析后的行数;如果不匹配,就会明确中止(退出码非零,不会声称“已加载”部分数据),
而不是让数据库悄然处于不完整状态。目前尚未设置定时任务——数据看起来过时时请手动运行(
ourairports_lookup的data_as_of字段记录了上次加载时间)。
快速开始
添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):
{
"mcpServers": {
"airports": {
"url": "https://gateway.pipeworx.io/airports/mcp"
}
}
}
此端点实际提供的内容
https://gateway.pipeworx.io/airports/mcp 上的 tools/list 会返回上表中的工具,
以及共享的 Pipeworx 元工具——ask_pipeworx、
discover_tools、search_within、remember/recall 及其他
网关级工具。因此,你看到的工具数量会多于此表:目前,单个工具包端点会列出约 30 个共享工具,以及该工具包自身的工具。连接的 initialize 响应会说明其确切范围,是当天情况的权威依据。
这是有意为之,并非意外的多路复用。元工具可让受限连接回答此工具包未涵盖的问题——通过
ask_pipeworx 在整个目录中路由——无需添加第二个 MCP 服务。目前无法挂载不含这些工具的工具包端点;如果额外的架构定义消耗的上下文多于路由带来的收益,请改为连接一次完整网关,而不是连接多个工具包端点。
或者连接完整的 Pipeworx 网关,直接列出所有工具包的工具,而不只是此工具包的工具:
{
"mcpServers": {
"pipeworx": {
"url": "https://gateway.pipeworx.io/mcp"
}
}
}
两个 URL 都连接到同一个网关和相同的 1872+ 个数据源。唯一的区别是直接列出哪个工具包的工具;通过任一端点,ask_pipeworx 都可以访问所有工具。
没有 MCP 客户端?通过 HTTP 调用
curl -X POST https://gateway.pipeworx.io/v1/tools/search_airports \
-H 'Content-Type: application/json' \
-d '{"query":"New York"}'
首次调用无需账户。查看任意工具:GET https://gateway.pipeworx.io/v1/tools/search_airports。查找工具:使用 {"query":"..."} 调用 POST https://gateway.pipeworx.io/v1/tools/search_packs。
独立运行(无需网关账户)
此软件包也可以作为本地 stdio MCP 服务运行——无需 Pipeworx 账户,也无需经过网关往返:
{
"mcpServers": {
"airports": {
"command": "npx",
"args": ["-y", "@pipeworx/mcp-airports"]
}
}
}
也可以直接运行以确认其已启动:
npx -y @pipeworx/mcp-airports
它通过 stdin/stdout 使用 MCP 通信,并对仅限此工具包的工具响应 initialize/tools/list/tools/call——不包含上述网关连接额外提供的共享元工具。数据源相同、工具相同,但没有 ask_pipeworx 路由。
使用 ask_pipeworx
你可以用自然语言提问,而不是直接调用工具——此方式既适用于上面的工具包端点,也适用于完整网关:
ask_pipeworx({ question: "your question about Airports data" })
网关会自动选择合适的工具并填入参数。
更多信息
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。