Skip to main content
Glama
c-mongan
by c-mongan

Ireland MCP

CI Licence: MIT MCP Token budget

Ireland MCP is a free, read-only MCP server that lets AI assistants answer questions with live Irish public data and citations.

Short video overview

21 seconds. Recorded MCP Inspector example. Figures and forecasts are historical.

Watch the 21-second video overview

Watch on GitHub · Download MP4 · Transcript · Captions · Credits and source notes

The optional Irish legal and Citizens Information pilot corpus adds stored source versions, exact Act sections, cited research, CLI/stdio MCP and a citizen/lawyer chat page. Start with npm run legal:check, npm run legal:sync, then npm run legal:serve. Its seed coverage is annual leave and working time; Azure integration requires LEGAL_ENABLED=true and an ingested corpus. Revised Acts indexing requires explicit publisher reuse permission. Stored enacted text, guidance and consolidation cutoffs do not certify current law or comprehensive legal coverage.

Hosted endpoint: https://mcp.irishopendata.ie/mcp (origin fallback: https://func-ireland-mcp-aofsjpwgy4hva.azurewebsites.net/mcp) Transport: Streamable HTTP. Auth: none. Writes: none. Website: https://irishopendata.ie (canonical). https://irishopendata.com and https://mcp.irishopendata.com/mcp remain working aliases; see docs/domain-go-live.md. Registry: io.github.c-mongan/ireland-mcp on the official MCP Registry.

The generated counts below describe the default source profile with LEGAL_ENABLED unset. Enabled legal pilot modules appear separately in the live catalogue and source table.

Count

Value

Definition

Data sources

29

Upstream public-data sources, one module each. The cross combiner is not a source.

Working on the hosted endpoint

28 of 29

NTA realtime needs an operator key that the hosted service does not have.

Catalogue operations

74

71 source operations plus 3 cross-source ones (list_sources, nearby, ireland_snapshot), all callable through ireland_call.

Default tools

7

What tools/list returns: 4 meta tools plus search, fetch and nearby.

Tools with ?toolsets=all

80

Every operation as a typed tool, plus the 4 meta tools, search and fetch.

Prompts

3

area_profile, commute_check, compare_counties.

Related MCP server: gaff-check

Try it in 60 seconds

  1. Add the server to your client. For GitHub Copilot CLI: copilot mcp add --transport http ireland https://mcp.irishopendata.ie/mcp For VS Code, add .vscode/mcp.json: { "servers": { "ireland": { "type": "http", "url": "https://mcp.irishopendata.ie/mcp" } } }.

  2. Ask: "Using the ireland MCP tools, give me the Census 2022 profile of Ennis, Co Clare, and the Met Éireann forecast for Galway. Cite the sources."

  3. Check the answer cites https://data.cso.ie/table/F1015 and the Met Éireann location-forecast URL. The forecast URL is http://; Met Éireann's https:// host currently redirects to an origin that fails TLS.

Client (tested 7 Oct 2026 against the hosted endpoint)

Result

MCP Inspector (Playwright, scripts/demo-inspector.mjs)

4/4 calls (nearby, CSO, Met Éireann, PPR) returned data with citations. CSO Ennis, PPR Galway 2024.

VS Code Insiders, Copilot agent mode

Census 2022 Ennis (27,923 people) and Galway forecast, with CSO and Met Éireann citations. Screenshot.

GitHub Copilot CLI

3/3 questions answered with citations: Met Éireann Galway, PPR Cork, CSO Ennis. Evidence.

Every catalogue operation

docs/live-all-ops.md (2026-10-08): 72 of 74 pass, 0 fail; 2 need the NTA key.

How a call flows:

flowchart TD
  Q[Client question] --> T[ireland_call / nearby / search]
  T --> V[Schema validation]
  V --> C{Cache hit?}
  C -- yes --> E[Evidence envelope]
  C -- no --> B{Circuit breaker open?}
  B -- yes --> S{Stale cache available?}
  B -- no --> U[Upstream public API: CSO, Met Éireann, PPR, ...]
  U -- ok --> E
  U -- 5xx or timeout --> R[One jittered retry]
  R -- ok --> E
  R -- still failing --> S
  U -- other error --> S
  S -- yes --> F[Stale cached result: stale=true]
  F --> E
  S -- no --> X["MCP error: isError=true, UPSTREAM_DOWN with hint; no cited result"]
  E --> A[Answer with source URL, licence, attribution, retrieved_at]

Try asking

  • “What is the latest population profile for Galway city or County Cork?”

  • “Are there Met Éireann weather warnings near Dublin today?”

  • “What did houses sell for in Ennis last year?”

  • “When is the next train from Heuston, and are there disruptions?”

  • “Who are the current TDs for my constituency, and what bills are active?”

  • “What protected habitats, monuments, planning applications or census areas are near this point?”

See it work

Proof

Screenshot

Live landing page, desktop

Live landing page, mobile

Install section with one-click client setup

Playground populated from a real live MCP call

MCP Inspector connected to the live endpoint

Real model transcript: question → tool calls → answer

Install

Client

Current setup

Claude custom connector

Settings → Connectors → Add custom connector → URL https://mcp.irishopendata.ie/mcp → no auth.

ChatGPT plugin

In ChatGPT on the web, open Plugins → + → Add custom MCP server. Name it Ireland Open Data, enter https://mcp.irishopendata.ie/mcp, select No authentication, review the warning and select Create as a plugin. Install it, open a new Work chat and select @Ireland Open Data. Reuse the installed plugin if it is already present. See the OpenAI plugin quickstart and tested connection route.

VS Code

Install link (paste into a browser or run open on it): vscode:mcp/install?%7B%22name%22%3A%22ireland%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.irishopendata.ie%2Fmcp%22%7D. Or add .vscode/mcp.json: { "servers": { "ireland": { "type": "http", "url": "https://mcp.irishopendata.ie/mcp" } } }.

VS Code Insiders

Install link: vscode-insiders:mcp/install?%7B%22name%22%3A%22ireland%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.irishopendata.ie%2Fmcp%22%7D.

Cursor

Deeplink: cursor://anysphere.cursor-deeplink/mcp/install?name=ireland&config=.... Decoded config: { "type": "http", "url": "https://mcp.irishopendata.ie/mcp" }.

GitHub Copilot CLI

copilot mcp add --transport http ireland https://mcp.irishopendata.ie/mcp or put the JSON below in ~/.copilot/mcp-config.json.

Claude Code

claude mcp add --transport http ireland https://mcp.irishopendata.ie/mcp

Local stdio

npm package target: npx -y ireland-mcp after npm publication. Today, run from source: npm ci && npm run build && node dist/src/cli.js. To list typed tools locally, run node dist/src/cli.js --toolsets=cso,irish-rail or IRELAND_MCP_TOOLSETS=all node dist/src/cli.js after building.

Portable Copilot / MCP JSON:

{
  "mcpServers": {
    "ireland": {
      "type": "http",
      "url": "https://mcp.irishopendata.ie/mcp",
      "tools": ["*"]
    }
  }
}

Why it is lean

Most data MCPs expose every typed tool up front. Ireland MCP keeps the default tools/list to 7 tools, 8,407 characters, about 2,102 tokens (toolsets=all is 80 tools, about 22k tokens) (npm run measure:tools). CI fails if that list grows past 16,000 characters.

Need typed tools anyway?

Surface

Use

Default HTTP

/mcp lists only ireland_catalogue, ireland_describe, ireland_call, ireland_about, search, fetch, nearby.

Source toolsets

/mcp?toolsets=cso,irish-rail lists selected typed tools too.

One source path

/mcp/x/{source} lists that source's typed tools, for example /mcp/x/met-eireann.

Everything

/mcp?toolsets=all lists all available tools and is useful for debugging, not routine chat.

Local stdio

From source: node dist/src/cli.js --toolsets=cso or IRELAND_MCP_TOOLSETS=all node dist/src/cli.js (npm package not yet published).

max_tokens defaults to about 2,000 output tokens and can be set from 100 to 8,000. Large results return truncated, counts and narrowing hints instead of flooding the context.

Architecture

The server is a stateless Azure Functions Flex app with a lean gateway in front of the source modules. The gateway owns the operation index, response budgets, cache, upstream budgets, circuit breakers, one jittered retry for transient 5xx/timeout failures and evidence envelope; every normal result includes source URL, licence, attribution and retrieval metadata.

Sources

The default profile registers 29 source modules in src/registry.ts. The default nearby, search and fetch shortcuts sit above these sources. The optional pilot rows require LEGAL_ENABLED=true and an ingested corpus; check ireland_catalogue for the modules available on an endpoint.

Domain

Source id

Publisher / source

Operations

Licence

stats

ncse

NCSE school allocations (operations)

3

Creative Commons Attribution; check dataset terms

stats

cso

Central Statistics Office (CSO) PxStat

4

CC BY 4.0

economy

world-bank

World Bank Open Data

2

CC BY 4.0

stats

eurostat

Eurostat Statistics API

3

Eurostat reuse policy (CC BY 4.0 equivalent)

stats

ecb

ECB Data Portal

3

ECB terms, free reuse with attribution

stats

pobal

Pobal HP Deprivation Index 2022

1

CC BY 4.0

stats

data-gov-ie

data.gov.ie

3

Per dataset, mostly CC BY 4.0

economy

cro

Companies Registration Office open data

3

CC BY 4.0

economy

kohesio

European Commission Kohesio — packaged, dated Irish CSV exports; not live data (refresh guide)

2

EU reuse policy / CC BY 4.0 compatible

stats

smart-dublin

Smart Dublin open data

3

Per dataset, mostly CC BY 4.0

stats

census-areas

CSO Census 2022 small areas / Tailte Éireann

1

CC BY 4.0

law/politics

oireachtas

Houses of the Oireachtas Open Data API

5

Oireachtas Open Data PSI Licence

law/politics

legislation

Irish Statute Book

3

PSI General Licence / CC BY 4.0

law/politics

irish-legal (optional pilot)

Irish legal evidence corpus — indexed source versions and Act sections; annual-leave/working-time seeds; current law unverified

6

Per-document publisher licence; Revised Acts storage and redistribution permission gated

law/politics

citizens-info (optional pilot)

Citizens Information Board — indexed explanatory guidance from the limited pilot corpus

2

CC BY 4.0; third-party material excluded

places/property

geohive

Tailte Éireann GeoHive boundaries

4

CC BY 4.0

places/property

wikidata

Wikidata

2

CC0 1.0

places/property

ppr

Residential Property Price Register

2

PSI General Licence / CC BY 4.0

places/property

planning

National Planning Application Database

2

CC BY 4.0

places/property

heritage

National Monuments Service SMR

1

CC BY 4.0

environment

met-eireann

Met Éireann

3

CC BY 4.0

environment

marine

Marine Institute weather buoys

1

CC BY 4.0

environment

opw-water

OPW waterlevel.ie

2

CC BY 4.0

environment

environment-sites

NPWS designated protected sites

2

CC BY 4.0

environment

epa

EPA WFD and bathing-water open data (operations)

5

CC BY 4.0

transport

nta

National Transport Authority GTFS-Realtime

2

CC BY 4.0

transport

irish-rail

Iarnród Éireann realtime API

2

Public open data; attribution required

transport

luas

Luas Forecasting API / TII

2

CC BY 4.0

transport

bikes

CityBikes / GBFS

2

CityBikes attribution/link; underlying operator terms

energy

eirgrid

EirGrid Smart Grid Dashboard

1

Public information; attribution required

economy

ted

EU TED

2

EU reuse policy / CC BY 4.0

Licence and attribution

Layer

Licence / attribution

Code

MIT, copyright Conor Mongan.

Source metadata and returned data

Stays under each publisher licence. Every normal tool response includes source, url, licence, attribution, retrieved_at, cache and truncation metadata.

CSO / Eurostat / ECB / Wikidata / World Bank

Cite CSO, Eurostat, ECB Data Portal, Wikidata contributors and World Bank Open Data respectively; Wikidata is CC0.

Oireachtas / legislation / PSI sources

Cite Oireachtas Open Data, eISB / Office of the Attorney General, PSRA, OPW and other named PSI publishers as shown in responses.

Optional legal pilot

Preserve per-document citations and Citizens Information Board attribution. Law Reform Commission Revised Acts reuse requires explicit permission; see source policies.

Weather, transport, environment, business and maps

Cite Met Éireann, NTA, Iarnród Éireann, TII/Luas, EirGrid, Marine Institute, Tailte Éireann, NMS, NPWS, EPA, Pobal, CRO, Kohesio/TED and JCDecaux/CityBikes/GBFS as applicable.

Full notice

See NOTICE. Not affiliated with any government body, data publisher or transport operator.

Observability and privacy

  • GET /healthz is fast liveness; GET /healthz?deep=1 performs one cheap check per source.

  • A status workflow publishes status/status.json and 7-day history.

  • OpenTelemetry can export MCP semantic-convention spans and operation-duration metrics to Azure Monitor.

  • Tool logs and telemetry avoid argument values and IP addresses. See PRIVACY.md.

  • Optional PostHog usage metrics and Chromatic visual checks are described in observability and the quality loop.

  • Browser CORS is restricted by MCP_ALLOWED_ORIGINS; non-browser MCP clients are unaffected.

Limits

  • Read-only public data only. No login-gated, paid or key-required user data.

  • NTA realtime tools need a server-side NTA operator key; other tools work without keys.

  • Upstream data can be delayed, provisional, incomplete or temporarily down. Stale cache is labelled stale: true and is used only for retryable failures. Permanent request, access and missing-resource errors remain visible.

  • Property Price Register values are declared sale prices, not valuations.

  • Legislation text is for retrieval and analysis, not legal advice. The optional legal pilot covers only ingested pages. Enacted text, Citizens Information guidance and any permitted consolidation require verification of amendments, commencement and source currency; they do not certify current law.

  • Large tables are paginated or truncated. Use fields, limit, cursor and source filters.

Run from source

Needs Node 22.12 or later.

git clone https://github.com/c-mongan/ireland-mcp
cd ireland-mcp
npm ci
npm run build
node dist/src/cli.js
npm run dev:http     # local HTTP dev server, MCP at /mcp

Development

Command

What it does

npm test

Unit tests against recorded fixtures; no network.

npm run typecheck && npm run lint

TypeScript and ESLint.

npm run build

Compile production JS and copy runtime assets.

npm run inspector:check

MCP Inspector conformance.

npm run check

Lint, types, unit tests, package/deployment contracts and a real stdio MCP client check.

npm run check:ui

Storybook MCP, visual fixtures, accessibility and production website browser checks. Install Chromium first with npx playwright install chromium.

npm run check:mcp -- --url https://mcp.irishopendata.ie/mcp

Hosted MCP protocol and catalogue checks. It makes no upstream data requests.

npm run measure:tools [-- all]

Measure default or all-tool tools/list.

npm run live:sanity

Real source calls through ireland_call; includes the stored legal pilot when LEGAL_ENABLED=true or the root catalogue advertises it. Prints a Markdown receipt. See docs/live-sanity.md.

npm run live:all [-- --url https://mcp.irishopendata.ie/mcp]

Real MCP client proof for every catalogue operation; writes docs/live-all-ops.md.

npm run eval

Promptfoo evaluation; default surface unless EVAL_TOOLSETS=all.

The quality loop explains local, hosted, semantic and visual proof. The playground access guide distinguishes the public query playground from ChatGPT sign-in and subscription use.

Eval results

69 routing questions, run through a multi-round agent loop that sends the server instructions as the system prompt (2026-10-05, Azure OpenAI):

Model

Default surface (7 tools)

all surface (74 tools at the time)

gpt-5.6-luna

100%

100%

gpt-5.4-mini

91%

97%

gpt-4.1-nano (worst-case floor)

84%

90%

A 2026-10-07 rerun of the expanded 79-question set with 29 sources scored gpt-4.1-nano at 85% on the default surface.

gpt-5.x models reject temperature: 0. For them, set EVAL_TEMPERATURE=default, for example: AZURE_DEPLOYMENT=gpt-56-luna EVAL_TEMPERATURE=default npm run eval.

Contributing: add a source

  1. Create src/sources/<id>/index.ts exporting a SourceModule with info, summary, domain, coverage, tools, optional search() and fetchById().

  2. Keep every tool name source-prefixed, validate args with zod and return the evidence envelope with source URL, licence and attribution.

  3. Use ctx.cachedJson / ctx.cachedText so upstream budgets, caching, circuit breakers and stale fallback apply.

  4. Add fixtures and tests at the module seam, then add a server-level ireland_call test when useful.

  5. Register the module in src/registry.ts, update scripts/live-sanity.mjs, eval cases and docs.

  6. Run lint, typecheck, tests, build, inspector and live sanity before opening a PR.

See CONTRIBUTING.md for the full checklist.

Registry and publishing

Ireland MCP is listed on the official MCP Registry as a remote-only Streamable HTTP server named io.github.c-mongan/ireland-mcp (v1.1.3). Clients that browse the registry can install it by name. The future domain name is planned as ie.irishopendata/ireland after DNS verification. Publishing notes and directory checklists are in docs/publishing.md. Do not publish from a fork without changing the name and endpoint.

Credits and prior art

Thank you to the maintainers of Irish-data and public-data MCP projects that helped shape the direction:

Project

What to look at

keithd1998/irlcli

Irish open-data CLI for LLM use.

sumitsimplex/irish-mcps and irishmcp.ie

Irish MCP platform and public-data UX.

faulknco/archaic-stats-mcp

CSO/PxStat MCP focused on Irish statistics.

datagouv/datagouv-mcp

National open-data catalogue MCP pattern.

brockwebb/open-census-mcp-server

Census-data MCP interface and interpretation pattern.

ondata/ckan-mcp-server

CKAN search/query server design.

cyanheads/eurostat-mcp-server

Eurostat MCP implementation.

isakskogstad/OECD-MCP

OECD statistical-data MCP.

Data comes from the publishers listed above, including CSO, data.gov.ie, Met Éireann, OPW, Irish Rail, Oireachtas, GeoHive/Tailte Éireann, National Monuments Service, NPWS, EPA, Pobal, CRO, World Bank, Eurostat, ECB, Wikidata, Kohesio, TED, JCDecaux/CityBikes and others. Please cite the publisher shown in each response.

Security

Security reports: SECURITY.md. This project is read-only, but MCP servers can still retrieve untrusted web content; clients should follow their normal MCP trust and approval model.

Available Tools

7 tools
fetchFetch a document by idA
Read-onlyIdempotent
Inspect

Fetch the full text of a search result by its id, e.g. 'cso:F1001', 'oireachtas:bill/2024/12', 'legislation:2018/7/s2' or 'data-gov-ie:moby-bikes'.

NameRequiredDescriptionDefault
idYesId from search, '<source>:<key>'.
max_tokensNoResult budget in tokens (default 2000).

Output Schema

NameRequiredDescription

No output 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, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds the behavioral fact that this returns 'full text' from heterogeneous source namespaces, but says nothing about truncation when max_tokens is hit, rate limits, or other runtime 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?

A single front-loaded sentence with the verb and resource stated first, followed by a compact enumeration of id examples. Every element earns its place; there is no boilerplate or filler.

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 an output schema present, return-value explanation is unnecessary, and annotations plus 100% schema coverage handle safety and parameters. The description supplies purpose and id format, leaving only minor gaps (truncation behavior for max_tokens, explicit routing versus 'search').

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?

Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema's generic '<source>:<key>' by giving four concrete id examples spanning different namespaces ('cso:', 'oireachtas:', 'legislation:', 'data-gov-ie:'), which materially helps the agent construct a valid id.

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?

Names a specific verb ('fetch') and resource ('the full text of a search result') and specifies the selector ('by its id'), so the agent knows this retrieves document content rather than finding documents. It implicitly distinguishes itself from the 'search' sibling by referencing 'a search result', but never names or contrasts that alternative explicitly.

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?

Usage is implied rather than stated: the phrase 'by its id' plus 'of a search result' signals the id must come from a prior search call. There is no explicit when-to-use, when-not-to-use, or named alternative among the siblings (search, ireland_describe, nearby).

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

ireland_aboutAbout this serverB
Read-onlyIdempotent
Inspect

Licence, attribution, status URL and how to enable typed toolsets.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered without the description. The description adds only a content inventory, disclosing nothing about the response shape or any side effects beyond what the annotations and output schema carry.

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?

A single short fragment with no filler, and the most decision-relevant item (licence, attribution) leads. It loses a point only for being an unanchored phrase rather than a complete sentence, which slightly weakens front-loading of intent.

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 zero parameters and an output schema present, there is little the agent needs beyond knowing this is a static informational endpoint. The description is sufficient for that, though it never explicitly states that no arguments are needed or that the output is documentation-style prose.

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 per the rubric the baseline is 4. There is no parameter syntax for the description to clarify, and it correctly says nothing about inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is a noun phrase listing the payload's contents (licence, attribution, status URL, how to enable typed toolsets) rather than a verb+resource statement of what the tool does. It is distinguishable from siblings like ireland_describe or ireland_catalogue, but an agent must infer that this is a server-metadata/introspection tool from the title alone.

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?

No explicit when-to-use or when-not-to-use guidance is given, and no sibling alternative is named. The enumerated content does imply the triggering conditions (need licence/attribution/status info or help enabling typed toolsets), which is enough for implied but not stated usage guidance.

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

ireland_callCall an operationA
Read-onlyIdempotent
Inspect

Run a source operation with args. Bad args return the expected schema and an example. Operations by source: cso: cso_search_tables, cso_get_table_metadata, cso_get_data, cso_area_profile; ncse: ncse_search_datasets, ncse_get_dataset, ncse_query_datastore; world-bank: worldbank_get_indicator, worldbank_ireland_profile; eurostat: eurostat_search_datasets, eurostat_get_data, eurostat_compare_ie_eu; ecb: ecb_get_series, ecb_interest_rates, ecb_exchange_rate; pobal: pobal_deprivation_search; oireachtas: oireachtas_search_members, oireachtas_search_bills, oireachtas_get_debates, oireachtas_search_questions, oireachtas_get_votes; geohive: geohive_boundaries_at_point, geohive_locate, geohive_list_layers, geohive_query_layer; wikidata: wikidata_place, wikidata_entity; data-gov-ie: datagov_search_datasets, datagov_get_dataset, datagov_query_datastore; cro: cro_search_datasets, cro_get_dataset, cro_query_datastore; kohesio: kohesio_search_projects, kohesio_get_project; smart-dublin: smartdublin_search_datasets, smartdublin_get_dataset, smartdublin_query_datastore; met-eireann: met_get_forecast, met_get_observations, met_get_warnings; nta: nta_get_realtime_summary, nta_get_trip_updates; legislation: legislation_list_acts, legislation_get_act, legislation_get_section; ppr: ppr_search_sales, ppr_price_stats; irish-rail: rail_find_station, rail_get_departures; luas: luas_get_forecast, luas_list_stops; eirgrid: grid_get_status; marine: marine_get_buoys; opw-water: water_find_stations, water_get_level; planning: planning_search, planning_get; census-areas: census_small_area_at; epa: epa_wfd_search, epa_wfd_waterbody, epa_bathing_locations, epa_bathing_alerts, epa_bathing_measurements; heritage: heritage_monuments_near; environment-sites: protected_sites_at, protected_sites_near; ted: ted_search_tenders, ted_get_notice; bikes: bikes_networks, bikes_stations_near; cross: list_sources, ireland_snapshot, nearby.

NameRequiredDescriptionDefault
argsNoOperation arguments.
sourceYesSource id.
argumentsNoAlias of args.
operationYesOperation name.
max_tokensNoResult budget in tokens (default 2000).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), lowering the bar. The description adds one genuine behavioral trait beyond the annotations: bad arguments return the expected schema plus an example, which tells the agent errors are self-documenting. It still says nothing about rate limits, external-service latency, or how operations map to side effects.

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 first two sentences are tight and front-loaded (action + error behavior) before the reference material. The long operation catalogue is heavy but arguably earns its place, since the schema declares zero enums and provides no other enumeration of valid operation values.

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?

An output schema exists, so return values need no explanation, and the operation catalogue supplies the missing enum-like values for operation/source. The bad-args contract is stated. It is largely complete for a dispatcher, with only cross-tool routing left implicit.

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%, so the schema already documents source, operation, args, arguments, and max_tokens. The description reinforces the source+operation+args pattern but adds no syntax or format detail beyond what is already structured. Baseline 3 is appropriate.

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 ("Run a source operation with args") and enumerates the valid source/operation pairs, so an agent knows exactly what this dispatcher does. It does not, however, differentiate itself from siblings like fetch, search, or ireland_describe, which are also generic entry points.

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?

Usage is implied by the operation catalogue (each operation name signals its purpose), and "Bad args return the expected schema and an example" hints at the calling workflow. But there is no explicit guidance on when to use ireland_call versus fetch, search, or the catalogue/describe tools.

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

ireland_catalogueCatalogue of Irish data sourcesA
Read-onlyIdempotent
Inspect

List sources and their operations, grouped by domain: stats, transport, environment, energy, economy, law/politics, places/property. Start here.

NameRequiredDescriptionDefault
domainNoOnly this domain.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds that results are grouped by domain and include operations, but says nothing about result size, pagination, or freshness — useful but modest added context.

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 short sentences, zero filler, with the resource and grouping stated first and the call-to-action last. Every clause 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?

An output schema exists, so return-value explanation is not required, and the description covers purpose plus entry-point role. The only gap is guidance on what to do with the catalogue once retrieved (i.e., which siblings to call next), which would make it fully self-sufficient.

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% and the single domain parameter has a fully enumerated schema description. The description's domain list mirrors the enum rather than adding new semantics such as interaction with grouping or whether omitting it returns everything, so baseline 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?

States a concrete verb and resource (lists sources and their operations) plus the grouping dimension (domain), so the agent knows exactly what comes back. It does not explicitly distinguish itself from siblings like ireland_about or ireland_describe, but the catalogue framing 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?

"Start here" is an explicit entry-point directive, which is the most important usage signal for a discovery tool. It gives no explicit when-not or named alternative, so it falls short of a 5.

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

ireland_describeDescribe an operationC
Read-onlyIdempotent
Inspect

Argument JSON schema, description and an example for one source operation.

NameRequiredDescriptionDefault
sourceYesSource id, e.g. 'cso'.
operationYesOperation, e.g. 'cso_get_data'.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description's only added content is the return payload (schema, description, example), which overlaps with the existing output schema, and it says nothing about auth, rate limits, or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single short sentence with no waste, but it is an incomplete fragment whose key information (the action) must be inferred, so brevity here shades into under-specification rather than concision.

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

Completeness2/5

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

An output schema exists so return values need not be explained, and annotations cover safety, leaving purpose and routing as the description's job — both are underdeveloped for a tool that must be chosen over three other ireland_* siblings.

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% and both parameters are documented in-schema with concrete examples ('cso', 'cso_get_data'). The phrase 'one source operation' is consistent with source+operation but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (one source operation) and what it yields (argument JSON schema, description, example), so the intent is inferable, but it is a noun-phrase fragment with no verb for the action. It does not distinguish itself from near siblings like ireland_catalogue or ireland_call, which also deal with source operations.

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?

There is no statement of when to use this tool versus ireland_call, ireland_catalogue, or ireland_about. The agent must infer that this is the introspection step preceding a call, with no explicit guidance or exclusions.

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

nearbyWhat is at this locationA
Read-onlyIdempotent
Inspect

For a WGS84 point in Ireland: county, local authority, constituency, electoral division, small area and settlement (GeoHive), the nearest Met Éireann station and forecast, recorded monuments within 500 m (SMR) and NPWS protected sites at the point. Not live observations, river levels, buoys, bikes or populations: use ireland_call for those.

NameRequiredDescriptionDefault
latYesLatitude, e.g. 53.3498.
lonYesLongitude, e.g. -6.2603.
hoursNoForecast hours to include.
max_tokensNoResult budget in tokens (default 2000).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely non-derivable context: the geographic constraint (Ireland-only, WGS84), the data provenance (GeoHive, SMR, NPWS), the 500 m search radius for monuments, and the warning that results are not live observations. It does not mention caching, freshness windows, or behavior for points outside Ireland, which keeps this at 4.

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 sentences, front-loaded with the result scope, then the exclusion/routing clause. The long enumeration is dense but each item is decision-relevant, so little is wasted; the only minor cost is that it reads as a catalogue rather than a terse directive.

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?

An output schema exists, so return formatting need not be described, and the description covers the dataset union, coordinate frame and scope well. The residual gap is what happens for coordinates outside Ireland and whether output is truncated by the token budget — relevant given the max_tokens parameter, though hinted at.

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?

Schema description coverage is 100%, so the baseline is 3. The description lifts it by specifying the coordinate reference frame (WGS84) and the Irish coverage area, which the schema's bare lat/lon numbers and bounds do not convey. Forecast hours and token budget are already fully documented in the schema.

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 enumerates exactly what is returned for a WGS84 point in Ireland: administrative units (county, local authority, constituency, electoral division, small area, settlement via GeoHive), the nearest Met Éireann station and forecast, SMR monuments within 500 m, and NPWS protected sites. An agent can tell precisely what this tool produces without opening the schema, and the sibling ireland_call is explicitly named for other data types.

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?

It gives both sides of the routing decision: what is in scope, and an explicit exclusion list ("Not live observations, river levels, buoys, bikes or populations") paired with the alternative to use instead (ireland_call). This is exactly the when/when-not/alternative structure that lets an agent pick the right sibling.

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. 7 tool updatesv1.1.1
    • First observedfetch
    • First observedireland_about
    • First observedireland_call
    • First observedireland_catalogue
    • First observedireland_describe
    • First observednearby
    • First observedsearch

TDQS

A3.5/5.0

Scored across 7 tools

Disambiguation4/5

The discovery/dispatch trio (ireland_catalogue, ireland_describe, ireland_call) has clearly distinct roles—list, schema-lookup, execute—and search vs fetch is a clean list-vs-fulltext split. The only mild overlap is nearby, which duplicates some GeoHive/Met Éireann functionality reachable via ireland_call, though its description explicitly draws the boundary.

Naming Consistency3/5

Four tools use an 'ireland_' namespaced snake_case prefix (catalogue, describe, call, about), while search, fetch, and nearby are bare single-word names with no prefix, mixing two conventions. Both groups are internally readable, but the set as a whole does not follow one predictable pattern.

Tool Count5/5

Seven tools is well within the ideal range, and the gateway pattern (catalogue/describe/call) keeps an enormous multi-source domain compressed into a small, purposeful surface. Each tool—discovery, schema, execution, about, cross-search, fetch, geo-lookup—earns its place.

Completeness5/5

The surface covers the full lifecycle for a read-only data aggregator: discovery (ireland_catalogue, list_sources), schema inspection (ireland_describe), execution (ireland_call), cross-source search and full-text fetch, plus a convenience geo aggregator. Domain coverage spans stats, transport, environment, energy, economy, law, and place data with no obvious dead ends.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables AI assistants to search, explore, and query any CKAN open data portal through natural language, making public datasets accessible without requiring knowledge of the portal's API.
    20
    1,037 npm
    59
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to perform due diligence on Irish properties by querying public datasets for planning applications, sold prices, flood risk, radon risk, and zoning.
    1
    31 npm
    8
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Irish and UK official statistics by county and local authority: CSO, Central Bank, government and council data joined on one geography, with caveats on every figure and a comparability check. Built for AI agents.
    5
    97 PyPI
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to search, inspect, and retrieve Irish Central Statistics Office PxStat datasets through MCP tools. Supports catalog search, metadata discovery, full-table reads, and filtered JSON-stat queries.
    12 npm
    MIT