An MCP server for the US civil aircraft registry that decodes N-numbers into aircraft, engine, status, and owner data, and supports searching registrations by owner, model, state, type, or Mode S code. It uses a locally built FAA registry index for offline, keyless lookups and can resolve active, deregistered, reserved, or unknown registration status.
From the registry: Offline, keyless lookup of the US civil aircraft registry — decode N-numbers, search records.
$ FAA_MIRROR_PATH=<path-to-faa-registry.db> npx -y @cyanheads/faa-aircraft-registry-mcp-server@latest mirror:inithttps://registry.faa.gov/database/ReleasableAircraft.zipPlease install the `faa-aircraft-registry-mcp-server` MCP server into my current AI client (that's you).
Required prerequisites (do these first if not already done):
- **Create and persist the FAA registry index** — Before first use, build the local SQLite index from the FAA Releasable Aircraft Database using the mirror CLI. Queries will fail until this has been run once. Keep FAA_MIRROR_PATH stable and pointed at persistent storage. Run: `FAA_MIRROR_PATH=<path-to-faa-registry.db> npx -y @cyanheads/faa-aircraft-registry-mcp-server@latest mirror:init` (https://registry.faa.gov/database/ReleasableAircraft.zip)
- **Ensure disk space and network access for initial ingest** — Have a few hundred MB available for the built index at FAA_MIRROR_PATH, and network access during mirror:init or mirror:refresh to download the FAA ZIP. Runtime queries do not require network access.
Optional prerequisites:
- Install Node.js or Bun — Install Bun v1.3+ or Node.js v24+ to run the server. Prefer the npm/npx path for portability if you already have Node.js. (https://bun.sh/)
Canonical MCP server config (stdio transport):
- command: `npx`
- args: ["-y","@cyanheads/faa-aircraft-registry-mcp-server@latest"]
- required environment variables:
- `MCP_TRANSPORT_TYPE`: Transport mode for the MCP server. Use stdio for local MCP client integration. (example: `stdio`)
- `FAA_MIRROR_PATH`: Filesystem path to the local SQLite index built by mirror:init. Must match the persistent path used during first-run setup. (example: `<path-to-faa-registry.db>`)
- optional environment variables:
- `MCP_LOG_LEVEL`: Log level for server logging. (example: `info`)
- `FAA_REDACT_OWNER_PII`: Whether to redact owner name and address from output and disable owner-name search. Defaults to true; set false only for a trusted local install. (example: `false`)
- `FAA_DATABASE_URL`: Override source URL for the FAA Releasable Aircraft Database ZIP, used only by mirror:init and mirror:refresh. (example: `<your-faa-database-url>`)
- `MCP_AUTH_MODE`: Authentication mode: none, jwt, or oauth. (example: `none`)
- `LOGS_DIR`: Directory for log files on Node.js deployments. (example: `<path-to-logs-directory>`)
- `OTEL_ENABLED`: Enable OpenTelemetry instrumentation. (example: `true`)
Note: The README supports both local stdio and Streamable HTTP. The simplest portable local install is npx over stdio. A public hosted HTTP endpoint is also available. For self-hosted HTTP, the server uses MCP_TRANSPORT_TYPE=http with MCP_HTTP_PORT and optional MCP_HTTP_ENDPOINT_PATH, but the README does not provide a canonical MCP client config snippet for self-hosted HTTP beyond the hosted URL.
Add this MCP server to my current client's config in the correct format for you. If you need secrets or credentials I haven't provided, ASK me — do not invent values or leave raw placeholders. After adding it, tell me how to verify the server is connected.FAA_REDACT_OWNER_PIIControls whether owner name and address are included in lookup results and whether owner-name search is enabled.FAA_MIRROR_PATHrequiredFilesystem path to the locally built FAA registry database/index used for offline queries.MCP_TRANSPORT_TYPESelects the MCP transport mode, such as stdio.MCP_LOG_LEVELSets the server log level.MCP server for searching Airweave collections with natural language queries.