mcpField
A
AENA Flights MCP

AENA Flights MCP

本地服务
github.com地图与出行211 周前更新

关于 AENA Flights MCP

AENA Flights MCP 为旅客和 Agent 提供西班牙 50 座 AENA 机场的实时航班信息,可查询到达、出发或特定航班。它将 AENA 的公共 API 和 OAuth2 REST API 整合为一组统一工具。

主要功能

  1. 01搜索机场到达与出发航班
  2. 02查询单个航班
  3. 03列出 AENA 机场及代码
  4. 04按航班、日期或当地时间筛选
  5. 05统一两种 API 的数据格式

适用场景

  1. 01按时间段查询机场出发航班
  2. 02查询指定日期从某城市抵达的航班
  3. 03查看航班状态和登机口
  4. 04浏览某地区的 AENA 机场

MCP 相关

MCP 服务向 MCP 客户端提供航班搜索、航班查询和机场列表工具。它可使用 AENA 公共网站 API 或 OAuth2 REST API,并可自动选择数据源或指定数据源。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"mrgo2-aena": {
"command": "npx",
"args": [
"-y",
"mcp-aena"
],
"env": {
"AENA_CLIENT_SECRET": "<AENA_CLIENT_SECRET>",
"AENA_CLIENT_ID": "<AENA_CLIENT_ID>",
"AENA_TENANT_ID": "<AENA_TENANT_ID>"
}
}
}
}
启动命令npx -y mcp-aena
需要配置的环境变量
AENA_CLIENT_SECRET密钥OAuth2 client secret for the REST API. Omit for website-only mode (still fully functional for discovery).
AENA_CLIENT_IDOAuth2 client id. Has a working default.
AENA_TENANT_IDAzure AD tenant id. Has a working default.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-aena0.1.3

工具

3

收录的工具列表 · 更新于 2 周前

参数类型必填说明
datestring否仅限此当地日期的航班(YYYY-MM-DD)。设置 fromLocal/toLocal 时,默认为今天。
sourceenum否auto | website | rest
airportstring是机场 IATA 代码,例如 MAD、BCN、SCQ
toLocalstring否仅限计划起飞时间不晚于此本地时间(HH:MM)的航班,例如下午的 20:00
directionenum是arrivals | departures
fromLocalstring否仅限计划起飞时间不早于此本地时间(HH:MM)的航班,例如下午的 12:00
hoursBacknumber否REST 时间范围:过去的小时数
flightNumberstring否在客户端筛选,例如 IB0459 或 UX7235
hoursForwardnumber否REST 时间范围:未来的小时数
collapseCodesharesboolean否将同一航班的代码共享航班合并为一条记录(默认为 true)

详细介绍

✈️ AENA Flights MCP

CI npm License: MIT

Español: README.es.md

AENA 运营的 50 座西班牙机场的实时航班数据,作为 MCP 服务提供。向 Claude 提问,例如 “今天下午有哪些航班从圣地亚哥起飞?” 或 “IB0459 延误了吗?”,它会根据真实机场数据作答,包括时间、登机口、航站楼、飞机、状态和代码共享信息。

它将 AENA 的两个航班 API 整合到一组简洁的工具中,因此 Agent 无论通过哪个 API 获取航班,得到的航班数据格式都相同。

🚀 30 秒即可使用(无需安装)

该服务公开运行于 https://aena-mcp.carlos-ls.workers.dev/mcp。只需单击一下,即可将其添加到 Claude:

➕ 添加到 Claude

该链接会打开已预填连接器信息的 claude.ai;只需确认即可。所有套餐均可使用,包括免费套餐。添加后,也可以在 Claude 应用中使用,包括手机应用。无需账户、API 密钥,也无需进行任何配置。

想手动添加?依次前往 Claude → Settings → Connectors → Add custom connector,将其命名为 AENA Flights,并粘贴上面的 URL。

🤖 也支持 ChatGPT

ChatGPT 没有一键安装链接,但同一服务也可在其中使用(仅限 Plus、Pro 和 Business 套餐,且仅限网页版):

  1. 前往 Settings → Apps → Advanced settings → 启用 Developer mode
  2. 在 Apps 面板中按 +,然后使用 URL https://aena-mcp.carlos-ls.workers.dev/mcp 添加服务,身份验证方式:无

💬 可以这样提问

  • 🛫 “16:00 到 18:00 之间从 MAD 起飞的航班”
  • 🛬 “明天下午有哪些从伦敦飞抵 BCN 的航班?”
  • 🔍 “航班 UX7235 现在在哪里?在哪个登机口?”
  • 🏝️ “列出加那利群岛的所有 AENA 机场”

🖥️ 其他运行方式

方式适用对象配置
☁️ 远程连接器(上文)所有人,包括 iPhone 用户单击即可
📦 桌面扩展Claude Desktop从最新版本下载 aena-mcp.mcpb,然后双击
🟩 npmClaude Code、Cursor、任何 MCP 客户端npx mcp-aena
🔧 从源代码运行开发者见下文

基于 npm 的客户端配置:

{
  "mcpServers": {
    "aena": {
      "command": "npx",
      "args": ["-y", "mcp-aena"]
    }
  }
}

在 Claude Code 中只需运行一条命令:

claude mcp add aena -- npx -y mcp-aena

🧰 工具

  • search_flights — 查询某个机场的到达或出发航班。可按航班号、日期或当地时间范围筛选(下午 = fromLocal 12:00、toLocal 20:00)。同一实际航班的代码共享航班会合并为一条记录,输出中的所有时间均为马德里当地时间。
  • get_flight — 按机场和航班号查询单个航班。
  • list_airports — 实时获取所有 AENA 机场及其 IATA/ICAO 代码。

🔀 为什么有两个 API

AENA 提供两种查询航班的方式,各自弥补了另一种方式的不足。

  • 🌐 网站 API 公开可用,无需凭据。可查询未来约 14 天的航班,但不提供过去的数据。适合发现航班。
  • 🔐 REST API 使用 OAuth2,需要客户端密钥。可查询过去约 54 小时和未来 24 小时的航班,并会告知代码共享航班背后的实际执飞航班。适合追踪航班。

服务会自动为你选择合适的 API(source: "auto"),也可以指定其中任意一个。不配置密钥时,服务会以仅使用网站 API 的模式运行,仍然可以正常工作。公开的远程服务已配置完整的 REST API 访问权限。

🛠️ 从源代码构建

pnpm install
pnpm build      # tsc → dist/
pnpm test       # unit tests over captured fixtures, no network, no credentials
pnpm inspect    # drive a live stdio session with the MCP inspector

将 .env.example 复制为 .env。网站 API 无需任何配置。对于 REST API,请设置 AENA_CLIENT_SECRET;AENA_CLIENT_ID 和 AENA_TENANT_ID 已有可用的默认值。

公共远程服务位于 worker/(Cloudflare Workers、Streamable HTTP、无需身份验证)。如要自行托管:

cd worker
pnpm install
npx wrangler deploy
npx wrangler secret put AENA_CLIENT_SECRET   # optional, enables the REST source

解析逻辑位于纯规范化函数(normalizeWebsiteRow、normalizeRestRow)中,因此无需实时调用即可测试映射。请参阅 CONTRIBUTING.md。

CI 会在 Node 20 和 22 上运行测试,并进行 MCP inspector 冒烟测试。推送标签(v*)后,会发布到 npm(OIDC 可信发布)、MCP Registry,并将 .mcpb 捆绑包附加到 GitHub 发布版本。

📝 数据说明

  • 在 REST API 中,到达航班为 "A",而在网站 API 中为 "L"。服务会隐藏这种差异。
  • REST 的 airlineIATA 字段实际存储的是 ICAO 代码。服务会解析这两种代码。
  • 航班号因数据来源而异:REST API 使用 ICAO 标识航班(VLG1674),网站使用 IATA 标识(VY1674)。
  • 两个 API 都不会在服务端按航班号筛选,因此搜索会获取整个机场的数据,再在本地筛选。
  • 两者都不提供实际起飞或着陆时间,只提供计划时间和预计时间。要获取离地和接地时间,需要使用 FlightRadar24 等数据源。

📄 许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。