easa-regs-mcp
Provides tools to search, read, and cite EASA Easy Access Rules covering European Union aviation regulations (e.g., Part-FCL, Part-MED, SERA, UAS), including rule metadata, linked AMC/GM, and exact references.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@easa-regs-mcpWhat do I need to revalidate my SEP class rating by experience?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
easa-regs-mcp
Give Claude (or any MCP client) the EASA rulebook. Search, read and cite the EASA Easy Access Rules with exact references instead of half-remembered answers.
"What do I need to revalidate my SEP class rating by experience?" Claude calls
search_easa_rules, reads FCL.740.A, and answers quoting (b)(1)(ii): 12 hours in class within 12 months incl. 6 h PIC, 12 take-offs and landings and 1 h refresher training with an FI/CRI, plus the linked AMC/GM.
Built by a CPL(A)/IR flight instructor who got tired of scrolling 1,500-page PDFs.
Coverage
Book | Contents |
| Part-FCL, Part-MED, Part-CC, Part-ARA, Part-ORA, Part-DTO |
| Part-ORO, CAT, NCO, NCC, SPO, SPA, IAM, CS-FTL |
| Standardised European Rules of the Air |
| Sailplane Rule Book (Part-SFCL, Part-SAO, ...) |
| Part-BFCL, Part-BOP, ... |
| Continuing airworthiness: Part-M, Part-ML, Part-145, Part-CAMO, Part-CAO |
| Basic Regulation (EU) 2018/1139 |
| Drones (Regulations (EU) 2019/947 and 2019/945) |
| Regulation (EU) No 139/2014 |
Every rule keeps its stable EASA ERulesId, type (IR binding / AMC / GM / CS), location in the
regulation, amending regulation, applicability date and its linked AMC/GM. Tables and list structure are preserved.
The index is rebuilt weekly from EASA's official XML by a GitHub Action and published as a release.
Related MCP server: mcp-eu-compliance
Tools
Tool | Purpose |
| Ranked search. Understands rule refs ( |
| Full text, citation, metadata, parent IR and all AMC/GM. Accepts |
| Book structure with IR/AMC/GM counts; lists all rules of a subpart (e.g. |
| Indexed books, publication dates, disclaimer. |
Install
Website with one-click setup: https://easa-regs-site.vercel.app/
Where | How |
Claude (web, desktop, iOS, Android) | Customize › Connectors › + › Add custom connector, paste |
Claude Desktop, local | Download |
Claude Code |
|
Any MCP client |
|
The first start downloads the prebuilt index (~33 MB) from the latest release and refreshes it weekly.
Host the remote connector yourself
Vercel / serverless: app.py exposes a lifespan-free ASGI app (easa_regs.asgi:app). It downloads the
prebuilt index to /tmp on first use and refreshes it daily, so no build step or redeploy is needed.
Locally: uvicorn app:app --port 8000.
Docker host: docker build -t easa-regs-mcp . && docker run -p 8000:8000 easa-regs-mcp.
The MCP endpoint is https://<your-host>/mcp (stateless streamable HTTP), health check at /health.
Optional ALLOWED_HOSTS=your.domain enables DNS-rebinding protection.
Develop / build the index yourself
git clone https://github.com/muchsneaks/easa-regs-mcp && cd easa-regs-mcp
./setup.sh # venv, install, download EASA XML, build index, run tests, optional Claude Desktop registrationor step by step: pip install -e ".[dev]" && easa-regs-fetch && easa-regs-build && pytest -q.
python tests/eval_questions.py prints the retrieval hit rate on 30 real pilot/instructor questions.
src/easa_regs/
sources.py books, EASA download IDs, disclaimer
fetch.py download EASA XML zips / the prebuilt index (stdlib only)
parse.py EASA eRules XML (Flat OPC + er: metadata) -> rule records
db.py SQLite FTS5 index, search + rerank, lookup, AMC/GM links
build.py parse + index + manifest.json
server.py FastMCP server (stdio or streamable HTTP)
asgi.py serverless ASGI app for the hosted connector
mcpb/ Claude Desktop extension (built by scripts/build_mcpb.py, attached to every release)
app.py, vercel.json hosted connector on Vercel (serverless)
Dockerfile, render.yaml hosted connector on any Docker hostIf EASA changes a download link, update the ID in sources.py (the number in
https://www.easa.europa.eu/en/downloads/<id>/en on the book's page).
Limitations
Unofficial and not legally binding. Only the texts in the Official Journal of the EU are authentic. Always verify before operational or compliance decisions.
National rules (e.g. LBA, NfL, AIP), ICAO documents and operator manuals are not included.
The smallest unit is an EASA "topic" (one rule with all its paragraphs).
Future-applicable versions are not yet separated from current ones.
Licence
Code: MIT. Content: EASA Easy Access Rules, (c) European Union Aviation Safety Agency - "Reproduction is authorised, provided the source is acknowledged" (EASA copyright notice). The server includes the attribution and disclaimer in its responses.
Available Tools
4 toolsbrowse_easa_tocBrowse EASA table of contentsARead-onlyIdempotent
Show the structure of a book (sections with IR/AMC/GM counts). Use it to orient yourself or to list every rule in one subpart, e.g. all of Part-FCL Subpart H.
| Name | Required | Description | Default |
|---|---|---|---|
| book | Yes | AIRCREW (Part-FCL/MED/CC/ARA/ORA/DTO), AIROPS (ORO/CAT/NCO/NCC/SPO/SPA/IAM), SERA (rules of the air), SAILPLANES (Part-SFCL/SAO), BALLOONS (Part-BFCL/BOP), CONTAIR (Part-M/ML/145/CAMO/CAO), BASIC (Basic Regulation 2018/1139), UAS (drones), AERODROMES | |
| list_rules | No | List the rules of the matching sections (max 150) | |
| section_contains | No | Filter sections by text, e.g. 'SUBPART H', 'class and type ratings', 'NCO' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered structurally. The description usefully discloses the return shape (section structure with IR/AMC/GM counts) and hints at rule enumeration, but says nothing about result limits (the max-150 cap lives only in the schema) or pagination. It adds some value without contradicting 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?
Two compact sentences, leading with the action and following with usage. The 'Part-FCL Subpart H' example earns its place by concretizing the subpart-listing use case, though the parenthetical about counts could be trimmed.
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?
There is no output schema, so the description carries the burden of describing returns, and it does so adequately (structure plus IR/AMC/GM counts, listable rules). The only real gap is the undisclosed 150-rule listing cap, which an agent would only discover from the parameter schema.
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%, with the book enum values and the section_contains filter fully documented in the schema. The description only reinforces this with an example ('SUBPART H'-style scoping), adding minimal meaning beyond the structured fields, so the baseline of 3 applies.
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 gives a specific verb and resource ('Show the structure of a book'), plus what the output contains (sections with IR/AMC/GM counts). It does not explicitly name or contrast itself with the sibling tools (search_easa_rules, get_easa_rule, list_easa_sources), so the agent must infer the boundary, but the purpose itself is unambiguous.
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?
'Use it to orient yourself or to list every rule in one subpart' states two concrete uses with a worked example (Part-FCL Subpart H). No exclusions or explicit alternatives are given, so it falls short of a full when/when-not routing statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_easa_ruleGet EASA ruleARead-onlyIdempotent
Return the full text of one EASA rule (IR, AMC, GM or CS) with metadata, a citation string and its related AMC/GM. If the reference is ambiguous, returns the candidates instead.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Rule reference or title, e.g. 'FCL.740', 'AMC1 FCL.740(b)(1)', 'SERA.5005', 'NCO.OP.110', or an ERulesId like 'ERULES-1963177438-9910' | |
| book | No | Disambiguate when the same reference exists in several books (e.g. 'Article 2') | |
| max_chars | No | ||
| include_related | No | Also list the parent IR and linked AMC/GM |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld=false, so safety is covered. The description adds real context: it returns metadata, a citation string, and related AMC/GM, and discloses the ambiguous-reference behavior (returns candidates instead of erroring) – a trait not in the 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?
Two tightly packed sentences, front-loaded with the core outcome and followed by the edge-case behavior. No waste.
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 no output schema, the description covers what is returned (full text, metadata, citation, related items) and the ambiguity fallback. Minor gap: it doesn't mention max_chars truncation of the returned text, which is relevant given the 60k cap.
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 75%, so the schema already documents ref, book, and include_related. The description adds no parameter-level detail (e.g., ref format or max_chars truncation behavior) beyond what the schema provides, matching the baseline for high coverage.
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?
States a specific verb (Return) and resource (full text of one EASA rule) with exact scope, and names the content types (IR, AMC, GM, CS). Clearly differentiable from siblings search_easa_rules (search) and browse_easa_toc (navigate).
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?
Implies the single-rule retrieval use case versus search tools, and notes the ambiguous-reference fallback that returns candidates. However, it doesn't explicitly name the alternative (search_easa_rules) for when the exact reference is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_easa_sourcesList indexed EASA booksARead-onlyIdempotent
List the indexed Easy Access Rules books with their publication date, so answers can state which revision they are based on.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety and determinism profile is covered. The description adds that results carry publication dates, but says nothing about pagination, ordering, or how many books are indexed, so it adds only modest context beyond the 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?
A single sentence with no waste: the action and the returned data are front-loaded, and the trailing purpose clause earns its place by explaining why the date matters.
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?
For a zero-parameter list tool with no output schema, the description adequately conveys what comes back (indexed books plus publication dates). It would be stronger if it stated the ordering or approximate result size, but what an agent needs to call it correctly is present.
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?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-parameter tool is 4. The description correctly avoids inventing arguments that do not exist.
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?
States a specific verb and resource ('List the indexed Easy Access Rules books') plus the returned field (publication date), which is more than a restatement of the name. It does not explicitly distinguish itself from the siblings search_easa_rules, get_easa_rule, and browse_easa_toc, though the 'list indexed books' framing is naturally distinct from search/get/browse.
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 rationale 'so answers can state which revision they are based on' implies when to call it (to identify the revision behind an answer), which is useful implied usage. However, it names no alternatives and gives no explicit when-not guidance, so the agent must infer routing relative to the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_easa_rulesSearch EASA rulesARead-onlyIdempotent
Full-text search across EASA Easy Access Rules. Returns ranked rules with reference, type, location in the regulation and a matching snippet. Use get_easa_rule to read the full text.
| Name | Required | Description | Default |
|---|---|---|---|
| book | No | Restrict to one book: AIRCREW (Part-FCL/MED/CC/ARA/ORA/DTO), AIROPS (ORO/CAT/NCO/NCC/SPO/SPA/IAM), SERA (rules of the air), SAILPLANES (Part-SFCL/SAO), BALLOONS (Part-BFCL/BOP), CONTAIR (Part-M/ML/145/CAMO/CAO), BASIC (Basic Regulation 2018/1139), UAS (drones), AERODROMES | |
| limit | No | ||
| query | Yes | Natural-language question, keywords or a rule reference, e.g. 'SEP class rating revalidation', 'FCL.740', 'VFR minima class G' | |
| content_type | No | Restrict to IR, AMC, GM or CS |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and closed-world behavior, so safety is covered. The description adds genuine value beyond them by disclosing the result shape ('ranked rules with reference, type, location and a matching snippet'), though it omits ranking behavior and the effect of the limit parameter.
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 short sentences: purpose, return content, then the routing hint, front-loaded with no wasted words. 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?
With no output schema, the description usefully summarizes the return fields, and the sibling routing covers the main follow-up action. Minor gaps remain: no mention of the default/limit on result count or how ranking works, which an agent might need to size queries correctly.
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 high (75%) and the schema itself documents book, content_type and gives concrete query examples, so parameter meaning largely comes from structured data. The description adds no parameter-level guidance (nothing on book scoping or the limit cap), so baseline 3 applies.
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?
States a specific verb and resource ('Full-text search across EASA Easy Access Rules') and enumerates the returned fields (reference, type, location, matching snippet). It also names the sibling get_easa_rule as the different tool for full text, so an agent can distinguish it immediately.
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 routes the agent to get_easa_rule when full text is needed, which is clear usage context. It does not state when *not* to search (e.g. when a known exact reference should go straight to the getter, or how it relates to browse_easa_toc), so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.1.0- First observed
browse_easa_toc - First observed
get_easa_rule - First observed
list_easa_sources - First observed
search_easa_rules
TDQS
Scored across 4 tools
Each tool serves a distinct retrieval mode: search returns ranked snippets, get returns full rule text, browse exposes hierarchy, and list shows available source books. No overlapping purposes.
All names use lowercase snake_case with a consistent verb_easa_noun pattern (search/get/browse/list). The convention is predictable across all four tools.
Four tools are well-scoped for a read-only regulatory lookup server, covering discovery, retrieval, navigation, and source provenance without bloat.
The set covers the full read-only lifecycle: find rules via search, read full rules with citations, explore TOC structure, and list indexed sources with revision dates. No obvious gaps for EASA Easy Access Rules research.
Maintenance
Related MCP Connectors
Free no-key search over CASA, FAA, EASA & ICAO aviation regulations. By Deepsky (deepskyai.com).
EUR-Lex MCP — official EU law, article-level.
Political Comms documentation MCP server: search docs, query the docs filesystem. No auth.
Search and read US federal regulations with legal and inline citations linking to ecfr.io.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server that enables searching and reading binary document files (PDF, DOCX, PPTX, XLSX, ODT, ODS, ODP, RTF, EPUB) using regex patterns and retrieving content by sections.2MIT
- AlicenseAqualityBmaintenanceMCP server for EU compliance grounding (GDPR, AI Act, DORA, NIS2, eIDAS 2.0, CRA) — verbatim retrieval from a local SQLite FTS5 index.557 npm1MIT
- AlicenseNot gradedqualityAmaintenanceSearch and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP.352 npm1Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to search and retrieve cited passages from the EU AI Act in English or Italian, including full articles and cross-references, so agents can ground answers in verified regulatory text.MIT