Skip to main content
Glama

ie-eli-mcp

Install (one command)

Published on PyPI + MCP Registry (io.github.matematicsolutions/ie-eli-mcp). Run without cloning:

uvx ie-eli-mcp

Configure your MCP client (stdio):

{ "mcpServers": { "ie-eli-mcp": { "command": "uvx", "args": ["ie-eli-mcp"] } } }

Windows 11 with Smart App Control

Smart App Control blocks unsigned executables, which covers uvx.exe, pip.exe and the ie-eli-mcp.exe launcher that pip writes at install time. The python.exe and py.exe from the python.org installer are signed by the Python Software Foundation, so running the module through the interpreter works:

python -m pip install ie-eli-mcp
python -m ie_eli_mcp

pip.exe is blocked for the same reason, so install with python -m pip, not pip install. If python is not on PATH, use the Windows launcher: py -3 -m ie_eli_mcp.

{ "mcpServers": { "ie-eli-mcp": { "command": "python", "args": ["-m", "ie_eli_mcp"] } } }

Do not turn Smart App Control off to work around this - it cannot be re-enabled without reinstalling Windows.

Building from source: see Install.

An MCP server for the Irish Statute Book (irishstatutebook.ie), the official source of Irish legislation. It grounds Irish acts and statutory instruments (SIs) by year + number, returning metadata and the full enacted text, with verifiable ELI identifiers and Irish citations.

Part of the MateMatic eu-legal-mcp production line - after PL, DE, AT, ES and FI. Same citation contract, Irish Statute Book source.

Scope. This MVP grounds the ENACTED text of acts and SIs by coordinates (year + number + type). The Irish Statute Book has no keyword-search API here, so discovery is by citation (Irish citations give the coordinates, e.g. "No. 7 of 2018"). Revised/consolidated versions are separate and not covered. Every response carries a dataset_note.

Licence. Irish Statute Book content is official public information. This connector relays it with attribution and a source_url.

Related MCP server: mcp-legislation-uk

The tools

Tool

What it does

ie_get_act

Metadata for an act or SI by year + number + type.

ie_get_text

Full enacted text (html or xml).

ie_coverage

Declare what this connector covers, when each family was captured, and - explicitly - what it does NOT cover. Every gap carries a fallback.

Every response carries the contract: eli_uri (e.g. https://www.irishstatutebook.ie/eli/2018/act/7/enacted/en), human_readable_citation (e.g. DATA PROTECTION ACT 2018 (No. 7 of 2018)), and source_url.

Install

cd ie-eli-mcp
pip install -e .

Configure (Claude Code / any MCP client)

{
  "mcpServers": {
    "ie-eli-mcp": { "command": "ie-eli-mcp" }
  }
}

Environment:

  • IE_ELI_BASE_URL - default https://www.irishstatutebook.ie

  • IE_ELI_CACHE_DIR - default ~/.matematic/cache/ie-eli

  • IE_ELI_AUDIT_DIR - default ~/.matematic/audit

No API key.

Governance

  • Public data only - read-only against the Irish Statute Book; no client data leaves the machine.

  • Audit log - every tool call appends one JSON line to ~/.matematic/audit/ie-eli-mcp.jsonl.

  • Vendor-neutral - talks only to irishstatutebook.ie; no LLM provider, no telemetry.

  • Verifiable citations - every response is independently checkable via source_url.

See CONSTITUTION.md and DISCOVERY.md.

Tests

pip install -e ".[dev]"
pytest tests/test_instructions_drift.py -v   # offline
pytest tests/test_smoke.py -v                # hits live Irish Statute Book

Licence

Apache-2.0. © Matematic Solutions / Wieslaw Mazur.

Available Tools

3 tools
ie_coverageA
Read-onlyIdempotent

Declare what this connector covers, how it is sourced, and what it does NOT cover.

Call this before telling a user that the law "does not contain" something, and whenever a search comes back empty: the absence may be a gap in this connector rather than in the law. Every gap carries a fallback saying where to look instead.

Returns: Coverage with families, an as-of note, and a non-empty list of known gaps.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo
familiesNo
as_of_noteYesStates what the dates mean, and what they do not promise.
known_gapsNoNever empty. An empty list would mean 'not checked', not 'no gaps'.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds practical meaning beyond the annotations: empty results may indicate a connector gap rather than an actual absence in the law, and every gap includes a fallback. This transforms the abstract openWorldHint into concrete agent behavior.

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?

The description is tight, front-loaded, and every sentence adds operational value. The return note is brief and supplements the output schema without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, rich annotations, and an output schema, the description fully covers why, when, and how to use the tool. It also communicates the critical fallback behavior an agent needs to correctly handle empty search results.

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 has zero parameters, so parameter documentation is not a burden. The schema already covers everything needed, and the description provides no parameter details because none exist.

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?

The description clearly states the tool's job: declare coverage, sourcing, and exclusions for the connector. It also differentiates itself from sibling content-retrieval tools by positioning itself as the metadata/coverage check rather than a source of legal text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit triggers are provided: call before telling a user the law 'does not contain' something, and whenever a search returns empty. This gives the agent unambiguous conditions for when to invoke the tool and explains why it matters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ie_get_actA
Read-onlyIdempotent

Fetch Irish act / SI metadata by coordinates.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYese.g. ``2018``.
numberYese.g. ``7``.
doc_typeNo``"act"`` (default) or ``"si"`` (statutory instrument).act

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYes
titleNo
numberYes
eli_uriNo
doc_typeNo
source_urlNo
dataset_noteNo
date_enactedNo
human_readable_citationNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already provide readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, which cover safety and idempotency. The description does not add any behavioral traits beyond these, but it does not contradict them either. No extra context on rate limits, errors, or authentication is given.

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?

The description is a single concise sentence, front-loaded with the verb and resource. Every word serves a purpose, with no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the comprehensive annotations (readOnly, idempotent, openWorld), full schema coverage, and presence of an output schema, the description provides sufficient context to understand the tool's purpose and usage. No additional details are necessary for this simple metadata retrieval tool.

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?

The input schema has 100% parameter description coverage, with clear explanations for year, number, and doc_type. The description's phrase 'by coordinates' adds minimal additional meaning beyond the schema. Baseline 3 is appropriate as the schema carries the burden.

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?

The description clearly states the verb 'Fetch', the resource 'Irish act / SI metadata', and the method 'by coordinates'. This distinguishes it from the sibling tool 'ie_get_text', which likely retrieves the full text, making the purpose specific and unambiguous.

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 description implies usage for metadata retrieval by coordinates, and the sibling tool name suggests an alternative for text. However, there is no explicit guidance on when to use this tool vs the sibling, nor any conditions or prerequisites (e.g., valid year/number range).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ie_get_textB
Read-onlyIdempotent

Fetch the full enacted text of an Irish act / SI.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYese.g. ``2018``.
formatNo``"html"`` (default) or ``"xml"``.html
numberYese.g. ``7``.
doc_typeNo``"act"`` (default) or ``"si"``.act

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYes
formatNo
numberYes
contentNo
eli_uriNo
doc_typeNo
byte_sizeNo
source_urlNo
content_typeNo
dataset_noteNo
human_readable_citationNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds that it fetches the 'full enacted text', which confirms the scope but doesn't elaborate on behavior beyond what annotations provide.

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?

The description is concise at one sentence, with no wasted words. It front-loads the action and resource. Could be slightly expanded to include use case hints without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of annotations and a complete input schema, the description is adequate but not comprehensive. It does not mention output details (handled by output schema) or error conditions, but overall is sufficient for a simple data retrieval tool.

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?

The input schema has 100% coverage with descriptions for all parameters. The description adds no extra semantic information beyond the schema, so it meets the baseline expectation.

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?

Description clearly states the action ('Fetch') and resource ('full enacted text of an Irish act / SI'), making the purpose immediately understandable. However, it does not differentiate from the sibling tool 'ie_get_act', which could cause confusion about when to use which.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus the sibling 'ie_get_act' or other alternatives. The description lacks any context about prerequisites or recommended usage scenarios.

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. 1 tool updatev0.3.3
    • Addedie_coverage
  2. 2 tool updatesv0.1.0
    • First observedie_get_act
    • First observedie_get_text

TDQS

A4.1/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: fetching metadata, fetching full text, and declaring coverage/gaps. There is no overlap or ambiguity between them.

Naming Consistency5/5

All tools share the 'ie_' prefix and follow a consistent verb_noun pattern: ie_get_act, ie_get_text, ie_coverage. Naming is predictable and uniform.

Tool Count5/5

Three tools is an ideal scope for a focused read-only Irish legal metadata and text retrieval server. Each tool earns its place without bloat or thinness.

Completeness5/5

The server covers the full read-only workflow: fetch metadata, fetch full text, and a dedicated coverage tool to handle known gaps. No obvious missing operations for its stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers