ie-eli-mcp
This MCP server provides read-only access to the Irish Statute Book, allowing you to retrieve metadata and full enacted text of Irish legislation by year and number coordinates. No API key is required.
ie_get_act— Retrieve Act/SI Metadata: Fetch metadata for an Irish Act or Statutory Instrument by providingyear,number, anddoc_type("act"or"si", default"act"). Returns:Title, ELI URI, human-readable citation (e.g.,
DATA PROTECTION ACT 2018 (No. 7 of 2018)), date enacted, source URL, and dataset note.
ie_get_text— Retrieve Full Enacted Text: Fetch the complete enacted text byyear,number,doc_type, andformat("html"or"xml", default"html"). Returns the content along with byte size, content type, ELI URI, source URL, and human-readable citation.
Limitations: Discovery is by coordinates only (year + number) — no keyword search. Only enacted text is available; revised or consolidated versions are not supported.
Click on "Install 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., "@ie-eli-mcpGet metadata for the Data Protection Act 2018"
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.
ie-eli-mcp
Install (one command)
Published on PyPI + MCP Registry (io.github.matematicsolutions/ie-eli-mcp). Run without cloning:
uvx ie-eli-mcpConfigure 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_mcppip.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 |
| Metadata for an act or SI by year + number + type. |
| Full enacted text ( |
| 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- defaulthttps://www.irishstatutebook.ieIE_ELI_CACHE_DIR- default~/.matematic/cache/ie-eliIE_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 BookLicence
Apache-2.0. © Matematic Solutions / Wieslaw Mazur.
Available Tools
3 toolsie_coverageARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| status | No | |
| families | No | |
| as_of_note | Yes | States what the dates mean, and what they do not promise. |
| known_gaps | No | Never empty. An empty list would mean 'not checked', not 'no gaps'. |
TDQS
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.
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.
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.
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.
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.
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_actARead-onlyIdempotent
Fetch Irish act / SI metadata by coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | e.g. ``2018``. | |
| number | Yes | e.g. ``7``. | |
| doc_type | No | ``"act"`` (default) or ``"si"`` (statutory instrument). | act |
Output Schema
| Name | Required | Description |
|---|---|---|
| year | Yes | |
| title | No | |
| number | Yes | |
| eli_uri | No | |
| doc_type | No | |
| source_url | No | |
| dataset_note | No | |
| date_enacted | No | |
| human_readable_citation | No |
TDQS
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.
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.
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.
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.
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.
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_textBRead-onlyIdempotent
Fetch the full enacted text of an Irish act / SI.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | e.g. ``2018``. | |
| format | No | ``"html"`` (default) or ``"xml"``. | html |
| number | Yes | e.g. ``7``. | |
| doc_type | No | ``"act"`` (default) or ``"si"``. | act |
Output Schema
| Name | Required | Description |
|---|---|---|
| year | Yes | |
| format | No | |
| number | Yes | |
| content | No | |
| eli_uri | No | |
| doc_type | No | |
| byte_size | No | |
| source_url | No | |
| content_type | No | |
| dataset_note | No | |
| human_readable_citation | No |
TDQS
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.
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.
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.
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.
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.
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 tool update
v0.3.3- Added
ie_coverage
2 tool updates
v0.1.0- First observed
ie_get_act - First observed
ie_get_text
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: fetching metadata, fetching full text, and declaring coverage/gaps. There is no overlap or ambiguity between them.
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.
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.
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
Related MCP Connectors
data.gov.ie MCP — Ireland's national open-data portal (CKAN API).
An MCP server that provides congressional transcripts
MCP for CanLII: Canadian case law and legislation metadata (federal, provincial, territorial).
Hosted MCP server for finding authoritative primary data sources and official portals.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for Polish legislation (ISAP / Sejm) — search acts (Dz.U., M.P.) and fetch full texts with ELI identifiers and verifiable citations.31081MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server for accessing the UK's official legislation database (legislation.gov.uk), enabling natural language queries via Pipeworx's AI gateway.7MIT
- AlicenseAqualityAmaintenanceAn MCP server for Singapore Statutes Online (SSO), the official portal for Singapore legislation. It browses, fetches, and cites Acts, with a verifiable citation on every response.43Apache 2.0
- AlicenseAqualityAmaintenanceMCP server for Australia's Federal Register of Legislation. Enables searching and fetching Commonwealth Acts with verifiable citations.3Apache 2.0