MCP server for I14Y β Switzerland's national open-data metadata catalogue (DCAT-AP-CH)
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Part of the Swiss Public Data MCP Portfolio β a collection of open-source MCP servers connecting AI agents to Swiss public and open data. This is a private project. It is not affiliated with, endorsed by, or operated on behalf of any employer or public authority.
MCP server for the I14Y interoperability platform β Switzerland's national metadata catalogue.
π©πͺ Deutsche Version
The other servers in this portfolio answer Β«what does the data say?Β». This one answers the question that comes first: Β«who publishes data on this topic, through which interface, under which licence?Β»
I14Y is the national data catalogue maintained by the Federal Statistical Office. It describes datasets, registered APIs, public services and harmonised concepts from the Confederation, cantons and communes, using the DCAT-AP-CH profile (eCH-0200).
Mnemonic: Β«Catalogue before shelf.Β» Without a catalogue, an agent has to already know a data source exists. With one, it can find it.
Β«Which authority publishes data on special needs education, through which interface is it available, and under which licence?Β»
Two tool calls turn a vague topic into a named authority, a download URL and a
licence you can act on β get_dataset aggregates the distributions, licences
and contact point into one record.
This server uses Architecture A (live API only).
Rationale (verified live on 2026-07-21):
Consequences:
search_catalog caps results client-side because the upstream ignores paging.api_status always returns an evaluable state instead of empty records.Full probe report: docs/probe-i14y.md.
This server is in Phase 1 (read-only) of the portfolio's Β«Read-only FirstΒ»
phase architecture: all tools are read-only, there is no authentication and no
personal data. See docs/roadmap.md for the phase model and
the prerequisites for any future write capability.
| Tool | Purpose |
|---|---|
search_catalog | Free-text search across the catalogue. Entry point. |
list_datasets | Paginated dataset register (complete, unlike search). |
get_dataset | Full metadata record for one dataset. |
get_dataset_distributions | Download URLs, formats and licences. |
list_data_services | Register of official Swiss APIs with endpoint URLs. |
get_data_service | Full record for one registered interface. |
list_public_services | Administrative services for citizens. |
list_concepts | Harmonised concepts and code lists. |
get_concept | One concept definition. |
search_codelist_entries | Individual codes of a code list. |
list_publishers | Publishing bodies, with Swiss UID. |
list_catalogs | Contributing catalogues. |
api_status | Reachability check with graceful degradation. |
All tools are annotated readOnlyHint: true. Write operations exist in the
upstream API but are deliberately not exposed.
This server exposes Tools only β no Resources, no Prompts. That is a deliberate choice, not an omission: I14Y is queried by free-text search and by opaque UUIDs, so there is no small, stable set of addressable URIs that would map cleanly onto MCP Resources, and the server ships no opinionated prompt templates. Every tool is read-only and idempotent; if a future stable entry point emerges (e.g. a fixed theme list) it is a candidate for a Resource.
Built against the MCP Python SDK (mcp >= 1.28.1), which negotiates the protocol
version with the client at initialize time. The tested SDK floor is pinned in
pyproject.toml; Dependabot opens monthly SDK-update
PRs, and any change that bumps the negotiated spec version is called out in
CHANGELOG.md.
This server speaks two protocol eras over the same endpoint. The client's first request on a connection decides which one applies; a later claim from the other era is refused.
| Era | Revision | Who reaches it |
|---|---|---|
initialize handshake | 2024-11-05 β¦ 2025-11-25 | What today's clients speak. The server answers with the revision asked for, or with the 2025-11-25 ceiling when the request asks for something newer. |
| Per-request envelope | 2026-07-28 | A request carrying the 2026-07-28 _meta envelope opens a modern connection. |
Both revisions are pinned in
tests/test_protocol_version.py and asserted
against the installed SDK, so a Dependabot bump of mcp cannot move either one
silently. The handshake ceiling is measured against a live initialize through
the assembled ASGI stack, not read off a constant name.
Note that the SDK's LATEST_PROTOCOL_VERSION is an alias for the modern
era, not for the handshake era β pinning against it alone would leave the era
that current clients actually negotiate free to drift.
Update policy. When the gate fails, do not edit the constant blindly: read
the spec changelog between the two revisions, verify the server still behaves,
then move the constant, this section, README.de.md and
CHANGELOG.md together.
Or from source:
I14Y_MCP_TRANSPORT accepts stdio (default), sse or streamable-http. The
HTTP transports bind to HOST, which defaults to 127.0.0.1 (loopback); set
HOST=0.0.0.0 to expose the port on a PaaS (the Docker image already does).
CORS exposes the Mcp-Session-Id header so browser MCP clients keep their session.
Which browser origins may call the server comes from I14Y_MCP_CORS_ORIGINS, a
comma-separated list β unset means no browser client is permitted at all,
which is the default. * is still accepted and logs a warning. stdio and other
non-browser clients are unaffected either way.
The image is a hardened multi-stage build: it runs as a non-root user, ships no
build tools, and needs no secrets (the API is unauthenticated). See
Dockerfile and compose.yaml.
I14Y is a connector layer. Two identifiers make it composable with the rest of the portfolio:
| Key | Field | Joins to |
|---|---|---|
| Swiss UID | Publisher.uid | register-mcp (Zefix) |
| Endpoint URL | DataServiceSummary.endpoint_urls | any portfolio server wrapping that API |
Verified live on 2026-07-21.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/i14y-mcp)<a href="https://allmcps.com/mcp/i14y-mcp"><img src="https://allmcps.com/api/badge/i14y-mcp?style=directory" alt="I14y MCP on AllMCPs" /></a>