Skip to main content
Glama

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

AIRCREW

Part-FCL, Part-MED, Part-CC, Part-ARA, Part-ORA, Part-DTO

AIROPS

Part-ORO, CAT, NCO, NCC, SPO, SPA, IAM, CS-FTL

SERA

Standardised European Rules of the Air

SAILPLANES

Sailplane Rule Book (Part-SFCL, Part-SAO, ...)

BALLOONS

Part-BFCL, Part-BOP, ...

CONTAIR

Continuing airworthiness: Part-M, Part-ML, Part-145, Part-CAMO, Part-CAO

BASIC

Basic Regulation (EU) 2018/1139

UAS

Drones (Regulations (EU) 2019/947 and 2019/945)

AERODROMES

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

search_easa_rules(query, book?, content_type?, limit?)

Ranked search. Understands rule refs (FCL.740), plain English, common abbreviations (SEP, TMG, PIC, SVFR...) and common German terms. When an AMC/GM matches, its parent IR is shown first.

get_easa_rule(ref, book?, include_related?, max_chars?)

Full text, citation, metadata, parent IR and all AMC/GM. Accepts FCL.740.A, AMC1 FCL.740(b), sera.5010 or an ERulesId.

browse_easa_toc(book, section_contains?)

Book structure with IR/AMC/GM counts; lists all rules of a subpart (e.g. "SUBPART H").

list_easa_sources()

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 https://easa-regs-mcp.vercel.app/mcp. Works on the Free plan too.

Claude Desktop, local

Download easa-regs.mcpb, double-click, Install. No Python needed.

Claude Code

claude mcp add easa-regs -- uvx --from git+https://github.com/muchsneaks/easa-regs-mcp easa-regs-mcp

Any MCP client

{"command": "uvx", "args": ["--from", "git+https://github.com/muchsneaks/easa-regs-mcp", "easa-regs-mcp"]}

The first start downloads the prebuilt index (~33 MB) from the latest release and refreshes it weekly.

Host the remote connector yourself

Deploy with Vercel Deploy to Render

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 registration

or 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 host

If 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 tools
browse_easa_tocBrowse EASA table of contentsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookYesAIRCREW (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_rulesNoList the rules of the matching sections (max 150)
section_containsNoFilter sections by text, e.g. 'SUBPART H', 'class and type ratings', 'NCO'

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 ruleA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesRule reference or title, e.g. 'FCL.740', 'AMC1 FCL.740(b)(1)', 'SERA.5005', 'NCO.OP.110', or an ERulesId like 'ERULES-1963177438-9910'
bookNoDisambiguate when the same reference exists in several books (e.g. 'Article 2')
max_charsNo
include_relatedNoAlso list the parent IR and linked AMC/GM

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 booksA
Read-onlyIdempotent

List the indexed Easy Access Rules books with their publication date, so answers can state which revision they are based on.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 rulesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookNoRestrict 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
limitNo
queryYesNatural-language question, keywords or a rule reference, e.g. 'SEP class rating revalidation', 'FCL.740', 'VFR minima class G'
content_typeNoRestrict to IR, AMC, GM or CS

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 4 tool updatesv0.1.0
    • First observedbrowse_easa_toc
    • First observedget_easa_rule
    • First observedlist_easa_sources
    • First observedsearch_easa_rules

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

Four tools are well-scoped for a read-only regulatory lookup server, covering discovery, retrieval, navigation, and source provenance without bloat.

Completeness5/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP 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.
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Search 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 npm
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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