faa-aircraft-registry-mcp-server
Server Details
Offline, keyless lookup of the US civil aircraft registry — decode N-numbers, search records.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- cyanheads/faa-aircraft-registry-mcp-server
- GitHub Stars
- 1
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.7/5 across 5 of 5 tools scored.
Each tool has a clear and distinct purpose: faa_get_aircraft_type decodes a code to specs, faa_search_aircraft_types discovers codes by name; faa_lookup_registration gets full details for active N-numbers, faa_get_registration_status handles inactive or unreserved ones; faa_search_registrations searches by criteria. Descriptions explicitly clarify overlaps, so agents can reliably choose the right tool.
All tools follow a uniform 'faa_verb_noun' pattern with consistent verb choices (get, lookup, search). The naming is predictable and makes the toolset easy to navigate.
Five tools is ideal for a focused registry server. Each tool provides a necessary function (search, decode, status check, full lookup) without redundancy, covering the core workflow in a lean set.
The toolset covers all key operations for a read-only aircraft registry: searching registrations and aircraft types, looking up full records, and checking registration status across all files. There are no obvious gaps for the intended use case.
Available Tools
5 toolsfaa_get_aircraft_typefaa-aircraft-registry-mcp-server: get aircraft typeARead-onlyIdempotentInspect
Decode a 7-character FAA manufacturer/model/series code to aircraft specifications from the reference table — manufacturer, model, aircraft category, aircraft type, engine type, number of engines, number of seats, weight class, cruise speed, and type-certificate data sheet/holder. Use faa_search_aircraft_types first to discover a code by manufacturer or model name.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Manufacturer/model/series code (e.g. "2072714") — 6–7 uppercase alphanumeric characters, usually 7. Discover codes via faa_search_aircraft_types. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | Yes | The 7-char manufacturer/model/series code. |
| model | No | Aircraft model name. |
| category | No | Aircraft category (Land, Sea, Amphibian) as code + label. |
| engineType | No | Engine type as code + label. |
| weightClass | No | Weight class as the literal FAA string (e.g. "CLASS 1"). |
| aircraftType | No | Aircraft type as code + label. |
| manufacturer | No | Aircraft manufacturer name. |
| numberOfSeats | No | Number of seats; may be blank on the reference record. |
| cruiseSpeedMph | No | Cruise speed in mph; often blank (permissible field). |
| numberOfEngines | No | Number of engines; may be blank on the reference record. |
| builderCertification | No | Builder certification (Type Certificated, Not Type Certificated, Light Sport) as code + label. |
| typeCertificateDataSheet | No | Type-certificate data sheet identifier. |
| typeCertificateDataHolder | No | Type-certificate data holder. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds specific behavioral context (decoding to specifications from reference table) and lists return fields, which is consistent and valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. First sentence lists specific outputs, second provides usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given full schema coverage, clear annotations, and existence of output schema, the description is complete. It provides necessary context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and already includes the parameter's meaning, format, and example. The description does not add new parameter-level information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it decodes a 7-character FAA manufacturer/model/series code to a list of aircraft specifications. It distinguishes the tool from siblings by mentioning faa_search_aircraft_types for code discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use faa_search_aircraft_types first to discover a code by manufacturer or model name,' providing clear guidance on when to use this tool vs. alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
faa_get_registration_statusfaa-aircraft-registry-mcp-server: get registration statusARead-onlyIdempotentInspect
Resolve registration and airworthiness status for a US civil aircraft N-number across all three status files — active (MASTER), deregistered (DEREG), and reserved (RESERVED) — in priority order, returning a definitive recordType. Use this (rather than faa_lookup_registration) when a number may be inactive: it returns "deregistered" or "reserved" for a known-but-inactive number instead of a not-found. A number that was never issued returns recordType "unknown" — a valid, informative answer, not an error. Accepts "N12345" or "12345".
| Name | Required | Description | Default |
|---|---|---|---|
| nNumber | Yes | US registration N-number to resolve. Accepts "N12345" or "12345" (leading N optional). Shape: 1–5 characters — a leading digit 1–9, then digits, optionally ending in 1–2 letters (I and O are unused). |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | No | Registration/cancellation status as code + label (active and deregistered records). |
| nNumber | Yes | Normalized N-number without the leading "N". |
| purgeDate | No | Scheduled purge date, YYYY-MM-DD (reserved records). |
| cancelDate | No | Cancellation date, YYYY-MM-DD (deregistered records). |
| recordType | Yes | Which file the number resolved in: active (MASTER), deregistered (DEREG), reserved (RESERVED), or unknown (none). |
| reserveDate | No | Date the number was reserved, YYYY-MM-DD (reserved records). |
| modeSCodeHex | No | Mode S code in hex / ICAO 24-bit address (deregistered records). |
| serialNumber | No | Manufacturer serial number (deregistered records). |
| certIssueDate | No | Certificate issue date, YYYY-MM-DD (active records). |
| expirationDate | No | Registration expiration date, YYYY-MM-DD (active records). |
| nNumberDisplay | Yes | N-number with the leading "N" for display. |
| typeReservation | No | Type of reservation as code + label (reserved records). |
| nNumberForChange | No | The N-number this reservation changes to/from (reserved records). |
| airworthinessDate | No | Airworthiness certificate date, YYYY-MM-DD (active records). |
| airworthinessClass | No | Airworthiness classification as code + label (active records). |
| expirationNoticeDate | No | Date an expiration notice was sent, YYYY-MM-DD (reserved records). |
| manufacturerModelCode | No | 7-char manufacturer/model/series code (deregistered records). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent), the description adds value by detailing the priority order, the definitive recordType return, and that 'unknown' is a valid response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with core action, each sentence informative with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one simple parameter, presence of output schema, and comprehensive coverage of behavior and edge cases, the description is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds meaning by clarifying input formats ('N12345' or '12345') and shape constraints, going beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool resolves registration and airworthiness status across three status files in priority order, and distinguishes itself from sibling faa_lookup_registration by handling inactive numbers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use this tool (when a number may be inactive) versus faa_lookup_registration, and explains the behavior for never-issued numbers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
faa_lookup_registrationfaa-aircraft-registry-mcp-server: lookup registrationARead-onlyIdempotentInspect
Decode one US civil aircraft N-number to its full registration record — aircraft make/model, engine, year manufactured, airworthiness, registration status, Mode S (ICAO 24-bit) code, and registered owner (when owner-PII redaction is off). One call resolves the relational join and decodes every coded field. Accepts "N12345" or "12345" (the leading N is optional). Returns ownerRedacted: true when owner details were withheld. A number that is known but inactive (deregistered or reserved) is not found here — use faa_get_registration_status for the cross-file status answer.
| Name | Required | Description | Default |
|---|---|---|---|
| nNumber | Yes | US registration N-number to decode. Accepts "N12345" or "12345" (leading N optional). Shape: 1–5 characters — a leading digit 1–9, then digits, optionally ending in 1–2 letters (I and O are unused). |
Output Schema
| Name | Required | Description |
|---|---|---|
| make | No | Aircraft manufacturer name, resolved from the reference table. |
| model | No | Aircraft model name, resolved from the reference table. |
| owner | No | Registrant name/address; present only when redaction is off. |
| region | No | Registrant's FAA region as code + label. |
| status | No | Registration status (e.g. Valid registration) as code + label. |
| nNumber | Yes | Normalized N-number without the leading "N" (the registry storage form). |
| kitModel | No | Kit model (amateur-built aircraft); often blank. |
| uniqueId | No | FAA unique aircraft identifier. |
| engineMake | No | Engine manufacturer name, resolved from the reference table. |
| engineType | No | Engine type (e.g. Reciprocating, Turbo-fan) as code + label. |
| engineModel | No | Engine model name, resolved from the reference table. |
| aircraftType | No | Aircraft type (e.g. Fixed-wing single-engine) as code + label. |
| modeSCodeHex | No | Mode S code in hex — the ICAO 24-bit address used to key live flight-tracking data. |
| serialNumber | No | Manufacturer serial number. |
| certIssueDate | No | Certificate issue date (YYYY-MM-DD). |
| ownerRedacted | Yes | True when owner name/address were withheld from this payload by the redaction gate. |
| expirationDate | No | Registration expiration date (YYYY-MM-DD). |
| lastActionDate | No | Date of the last registration action (YYYY-MM-DD). |
| modeSCodeOctal | No | Mode S transponder code in octal. |
| nNumberDisplay | Yes | N-number in conventional display form, with the leading "N". |
| fractionalOwner | Yes | True when the aircraft is under fractional ownership. |
| kitManufacturer | No | Kit manufacturer (amateur-built aircraft); often blank. |
| yearManufactured | No | Year the aircraft was manufactured; often blank (permissible field). |
| airworthinessDate | No | Airworthiness certificate date (YYYY-MM-DD). |
| airworthinessClass | No | Airworthiness classification (Standard, Experimental, …) from CERTIFICATION char 1, as code + label. |
| approvedOperationsRaw | No | Raw FAA approved-operations sub-code string; interpretation varies by airworthiness class. |
| manufacturerModelCode | No | 7-char manufacturer/model/series code (join key into the aircraft reference table). |
| engineManufacturerModelCode | No | 5-char engine manufacturer/model code (join key into the engine reference table). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true; the description adds context about relational joins, decoded fields, and the ownerRedacted flag. No contradiction. Could mention error responses but not required given annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each adding essential information, front-loaded with the core function. No unnecessary words. Optimal length for a simple lookup tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter and an output schema, the description covers everything: what it does, input formats, when to use alternative tools, and notes a key output field (ownerRedacted). No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers the parameter with 100% description coverage; the description adds value by explaining the accepted formats (with/without leading N) and shape (1–5 chars, digits and optional letters).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool decodes a US civil aircraft N-number to a full registration record, listing specific fields (make/model, engine, etc.). It distinguishes itself from sibling tools like faa_get_registration_status by noting it does not handle inactive numbers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (decode one N-number) and when not to (inactive numbers → use faa_get_registration_status). Also clarifies input formats ('N12345' or '12345').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
faa_search_aircraft_typesfaa-aircraft-registry-mcp-server: search aircraft typesARead-onlyIdempotentInspect
Search the FAA aircraft reference table by manufacturer/model name (full-text), aircraft type code, or category code to discover 7-character manufacturer/model/series codes and browse specifications. Use this before faa_get_aircraft_type to find a code by name. At least one filter is required. Every response reports totalCount (all matches, not just this page); when more remain, it returns nextOffset — pass it back as offset to page forward.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (1–200, default 25). | |
| query | No | Manufacturer and/or model name to match (full-text). | |
| offset | No | Zero-based index of the first result to return — pass the nextOffset from a previous response, with identical filters, to page forward (default 0). | |
| category | No | Aircraft category code to match exactly (1 Land, 2 Sea, 3 Amphibian). | |
| aircraftType | No | Aircraft type code to match exactly (e.g. "6" for rotorcraft). |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit that was applied (present only when truncated is set). |
| shown | No | Number of results on this page (present only when truncated is set). |
| notice | No | Guidance when no aircraft types matched, or when more matches remain. |
| truncated | No | Present and true only when matches remain beyond this page. |
| nextOffset | No | Offset to request the next page; absent when this page reached the end of the matches. |
| totalCount | Yes | Total aircraft types matching the filters, across all pages. Always present. |
| aircraftTypes | Yes | Matching aircraft-reference summaries for this page (up to limit). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly and idempotent. Description adds that the response reports totalCount and provides nextOffset for pagination, and that at least one filter is required. This adds value beyond annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then usage guidance, then pagination details. Every sentence adds value; no wasted words. Excellent structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 parameters, output schema exists) and high schema coverage, the description covers key points: purpose, required-at-least-one filter, pagination mechanism, and relationship to sibling. Output schema handles return details, so description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for each parameter. The description adds the important constraint that at least one filter is required, which is not in the schema (no required fields). This provides critical usage context that the schema alone lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the FAA aircraft reference table by multiple criteria (manufacturer/model, type code, category code) and returns 7-character codes and specifications. It distinguishes itself from siblings like faa_get_aircraft_type by noting to use this tool first to find a code by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises using this before faa_get_aircraft_type and notes 'at least one filter is required.' It also explains pagination with nextOffset, providing clear guidance on usage. Could be slightly more explicit about when not to use, but overall good.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
faa_search_registrationsfaa-aircraft-registry-mcp-server: search registrationsARead-onlyIdempotentInspect
Search active US civil aircraft registrations by owner name, make/model, state, aircraft type, or Mode S (hex) code. Full-text search over the local registry index; returns decoded summaries with N-numbers to drill into via faa_lookup_registration. At least one filter is required. Owner-name search is unavailable when this deployment redacts owner PII — search by make/model, state, aircraft type, or Mode S code instead. Every response reports totalCount (all matches, not just this page); when more remain, it returns nextOffset — pass it back as offset to page forward.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (1–200, default 25). | |
| state | No | Two-letter state/territory abbreviation (exact match). | |
| offset | No | Zero-based index of the first result to return — pass the nextOffset from a previous response, with identical filters, to page forward (default 0). | |
| makeModel | No | Aircraft make and/or model to match (full-text). | |
| modeSCode | No | Mode S code in hex to match exactly (ICAO 24-bit address). | |
| ownerName | No | Registrant name to match (full-text). Rejected when owner-PII redaction is on. | |
| aircraftType | No | Aircraft type code to match exactly (e.g. "4" for fixed-wing single-engine). |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit that was applied (present only when truncated is set). |
| shown | No | Number of results on this page (present only when truncated is set). |
| notice | No | Guidance when no registrations matched, or when more matches remain. |
| truncated | No | Present and true only when matches remain beyond this page. |
| nextOffset | No | Offset to request the next page; absent when this page reached the end of the matches. |
| totalCount | Yes | Total registrations matching the filters, across all pages. Always present. |
| registrations | Yes | Matching registration summaries for this page (up to limit). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and idempotentHint annotations, the description discloses critical behaviors: at least one filter is required, owner-name search may be unavailable depending on deployment, and pagination behavior (totalCount and nextOffset). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: first sentence states purpose and key filters, then details search type, constraints (at least one filter), deployment-specific note, and pagination. No redundant information; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given seven parameters and an output schema, the description covers all essential aspects: filter options, required inputs, deployment variability, pagination mechanics, and linkage to a sibling tool for detailed lookups. The presence of an output schema reduces need to describe return fields, so this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by clarifying that searches for makeModel and ownerName are full-text, while state, aircraftType, and modeSCode are exact matches. It also flags the conditionality of ownerName parameter based on deployment config.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches active US civil aircraft registrations by multiple filter criteria (owner name, make/model, state, aircraft type, Mode S code). It distinguishes itself from sibling tools like faa_lookup_registration by noting it returns summaries for drilling into details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use alternative filters when owner-PII redaction is active, and explains pagination using nextOffset. It implicitly suggests using faa_lookup_registration for detailed lookups after search, but could be more explicit about when to use other sibling search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!