Skip to main content
Glama
README.md
# flightaware-mcp

[![npm](https://img.shields.io/npm/v/@chrischall/flightaware-mcp)](https://www.npmjs.com/package/@chrischall/flightaware-mcp)

MCP server for **FlightAware AeroAPI** (v4) — live flight tracking and aviation data for Claude. Track flights, read airport boards, look up operators and aircraft, fetch scheduled flights, and manage flight alerts, all over stdio.

> Developed and maintained by AI (Claude Code). Use at your own discretion.

## Quick start

```json
{
  "mcpServers": {
    "flightaware": {
      "command": "npx",
      "args": ["-y", "@chrischall/flightaware-mcp"],
      "env": { "AEROAPI_API_KEY": "your-aeroapi-key-here" }
    }
  }
}
```

Get a key at [flightaware.com/aeroapi/portal](https://www.flightaware.com/aeroapi/portal/). The free **Personal** tier (500 calls/month) is enough to start; AeroAPI bills per query.

## Tools

| Area | Tools |
| --- | --- |
| Flights | `fa_get_flights`, `fa_search_flights`, `fa_search_flights_advanced`, `fa_search_flight_positions`, `fa_count_flights`, `fa_get_flight_track`, `fa_get_flight_position`, `fa_get_flight_route`, `fa_get_flight_map`, `fa_get_flight_history`, `fa_resolve_flight` |
| Airports | `fa_get_airport`, `fa_get_airport_flights`, `fa_get_airport_flight_counts`, `fa_get_airport_routes`, `fa_list_airports`, `fa_get_nearby_airports`, `fa_get_airport_delays`, `fa_get_airport_weather`, `fa_resolve_airport` |
| Operators / aircraft | `fa_get_operator`, `fa_get_operator_flights`, `fa_list_operators`, `fa_get_aircraft_owner` |
| Schedules / predictive | `fa_get_scheduled_flights`, `fa_foresight_search` (premium tier) |
| Alerts | `fa_list_alerts`, `fa_get_alert`, `fa_create_alert`, `fa_update_alert`, `fa_delete_alert`, `fa_get_alerts_endpoint`, `fa_set_alerts_endpoint` |
| Health | `fa_healthcheck` — is this connector working? Reports whether AEROAPI_API_KEY resolved, whether AeroAPI accepted it, and what to fix. Uses a static-cached lookup, so repeat checks are not re-billed. |

Alert mutations are **confirm-gated**: without `confirm: true` they return a dry-run preview and make no network call.

## Configuration

| Var | Required | Purpose |
| --- | --- | --- |
| `AEROAPI_API_KEY` | yes | Your AeroAPI key (sent as the `x-apikey` header). |
| `AEROAPI_OUTPUT_DIR` | no | Default directory for flight-map PNGs (default: cwd). |
| `AEROAPI_CACHE_TTL` | no | Seconds to cache identical **live-data** GET responses (default: 15; `0` disables). Cuts AeroAPI per-query billing. |
| `AEROAPI_STATIC_CACHE_TTL` | no | Longer TTL for **reference data** — airport/operator info, routes, ownership, canonical lookups (default: 3600; `0` disables). |

## Development

```bash
npm install
npm run build
npm test
```

Every request rides your own AeroAPI key and counts against your subscription quota. See `docs/FLIGHTAWARE-API.md` for the pinned endpoint surface.

## License

MIT

TDQS

A3.7/5.0

Scored across 34 tools

Disambiguation4/5

Most tools target a distinct resource and action (flights, airports, operators, alerts), but the flight-search family (fa_search_flights, fa_search_flights_advanced, fa_search_flight_positions) and flight-list family (fa_get_flights, fa_get_flight_history, fa_get_scheduled_flights) overlap enough that an agent must read descriptions carefully to pick the right one.

Naming Consistency4/5

The fa_ prefix and mostly get/search/list/count verb-noun pattern is consistent and predictable. Minor deviations like fa_healthcheck, fa_foresight_search, and fa_search_flights_advanced break the pattern slightly, but the overall naming is recognizable and organized by resource.

Tool Count2/5

34 tools is a large surface that exceeds the 25+ threshold for 'too many.' The FlightAware domain is broad, but several search variants and alert operations could be consolidated, making the server feel heavy and harder to navigate rather than carefully curated.

Completeness5/5

The tool set provides comprehensive coverage of the AeroAPI domain: flight current/history/track/position/route/map/scheduled, airport details/flights/delays/weather/routes, operators, aircraft owners, and full alert CRUD plus endpoint management. There are no obvious dead ends in the covered surface.

Maintenance

ActivityActive
ResponsivenessWithin a week