AENA Flights MCP
Server Quality Checklist
Latest release: v0.1.3
- Disambiguation5/5
Each tool has a distinct purpose: search_flights returns a list, get_flight returns a single flight, and list_airports provides airport data. While get_flight is a convenience wrapper over search_flights, the intent is clear and the usage patterns are unambiguous.
Naming Consistency5/5All tool names use verb_noun snake_case: search_flights, get_flight, list_airports. The verbs vary (search, get, list) but the pattern is consistent and the naming is predictable.
Tool Count5/5With only 3 tools, the server is tightly focused on flight and airport information. This is a well-scoped count for the domain—neither too sparse nor overloaded, and each tool serves a clear function.
Completeness5/5The domain is read-only flight lookup and airport listing. The set covers listing all airports, searching flights with flexible filters, and retrieving a specific flight. There are no obvious dead ends or missing core operations for this purpose.
Average 4.1/5 across 3 of 3 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 15 commits in the last 12 weeks
- Last stable release on
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
This repository includes a glama.json configuration file.
This server has been verified by its author.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool returns a single best match and acts as a wrapper, but it omits details on error behavior, what happens when no match is found, or how 'best match' is determined, leaving some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and followed by a useful context statement about being a wrapper. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with three parameters and no output schema, the description covers the essential elements: what it does, how it relates to search_flights, and its single-match behavior. Missing error-case details, but overall sufficient for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents airport and flightNumber, and direction has an enum but no description. The description adds little to parameter understanding—it only mentions 'by number at an airport' and doesn't clarify the role of direction or the requirement for all three parameters. With 67% schema coverage, it doesn't compensate for the missing direction explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Find one flight by number at an airport' with a specific verb and resource. It distinguishes itself as a convenience wrapper over search_flights that returns a single best match, making its unique purpose evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly identifies itself as a wrapper over search_flights and notes that it returns 'the single best match', implying it should be used when a specific flight is needed rather than a broad search. However, it doesn't provide explicit when-not-to-use guidance or compare with list_airports.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses live fetching ('Fetched live, so always current'), which is useful behavioral context. For a simple read-only list tool, this is adequate, though it doesn't detail return formats or potential limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first sentence front-loads the essential purpose, and the second adds a relevant behavioral note. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity, zero parameters, and no output schema, the description is complete. It provides the core purpose and the live-fetch detail, which is sufficient for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty. As per baseline, with no parameters the description does not need to add parameter information. It correctly notes that the tool lists airports, which aligns with no input requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'all Spanish airports in the AENA network', and includes specific attributes (IATA/ICAO codes and city). This makes it distinct from sibling tools like search_flights and get_flight, which deal with flights.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is for retrieving airport lists, and given context signals, siblings are flight-related. However, it does not explicitly state when to use this tool over alternatives or mention exclusions. The usage context is clear but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses several useful behaviors: codeshares are collapsed by default, output times are in local Madrid time, and filtering supports flight number and local-time windows. These go beyond the schema and help the agent anticipate output quirks. Minor omissions like pagination or error behavior exist, but the description is still above average.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the primary action, and every sentence adds distinct information (scope, codeshare behavior, filters, timezone). No padding or repetition. Ideal conciseness for a tool of this complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 10 parameters and no output schema, the description covers the core use case but omits some important context. It does not explain the two filtering modes (local-time window vs. REST window with hoursBack/hoursForward), nor the 'source' parameter (auto/website/rest). The date fallback behavior is also missing. These gaps may lead to under-utilization or misuse, so completeness is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (80%), so baseline is 3. The description adds semantic value by clarifying how fromLocal/toLocal work together ('afternoon = 12:00 to 20:00'), explicitly mentioning the flightNumber filter, and restating the default codeshare collapse behavior. This supplements the schema descriptions without being redundant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List flights') and the specific resource ('AENA airport' with arrivals/departures). It also differentiates from siblings: get_flight (likely a single flight lookup) and list_airports (airport list), by explicitly scoping to flights with direction and filters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (listing flights for an AENA airport with direction and optional filters). It does not explicitly mention alternatives or exclusion criteria, but the context is strong enough to guide selection among siblings. No misleading usage guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MrGo2/aena-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server