You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ask Claude, Gemini, or GitHub Copilot to explore Swiss government datasets, APIs, codelists, and public services in natural language — powered by the Model Context Protocol.
Inspired by the French datagouv-mcp project, adapted for the Swiss I14Y platform.
What is I14Y?
The I14Y Interoperability Platform (operated by the Swiss Federal Statistical Office) is Switzerland's national catalog for government data. It standardises and publishes metadata for:
Datasets — data published by federal and cantonal bodies
Data Services — APIs exposing government data
Concepts — reusable data definitions, codelists, and data dictionaries
Public Services — administrative services offered to citizens and businesses
Features
Tool
Description
list_datasets
List datasets with filters (publisher, status, level)
get_dataset
Get full metadata for a dataset
get_dataset_structure
Export dataset schema (JSON-LD, Turtle, RDF)
list_dataservices
List data services (APIs) with filters
get_dataservice
Get full metadata for a data service
list_concepts
List concepts (codelists, dictionaries) with filters
get_concept
Get concept details, optionally with codelist entries
get_concept_codelist
Export all codelist entries (JSON or CSV)
list_publicservices
List public services with filters
get_publicservice
Get full metadata for a public service
get_catalog
Export a catalog in DCAT-AP format (Turtle or RDF/XML)
list_mappingtables
List mapping tables (source → target codelist correspondences)
get_mappingtable
Get full metadata for a mapping table
get_mappingtable_relations
Export all mapping relations (value correspondences) as JSON or CSV
catalog_search
Full-text search across all resource types (server-side, via CORE API)
get_dataset_by_identifier
Get a dataset by its short identifier (not UUID)
check_dataset_has_structure
Check whether a dataset has a structural model defined
get_dataset_model_graph
Get the dataset schema as a schema graph (nodes/edges)
get_dataservice_by_identifier
Get a data service by its short identifier
get_publicservice_by_identifier
Get a public service by its short identifier
get_publicservice_relations
Get related public services
get_concept_by_identifier
Get concept(s) by short identifier (e.g. "HGDE_KT")
get_codelist_entries
Paginated codelist entries with full annotations
get_codelist_entry_by_code
Look up a single codelist entry by code value
get_codelist_entries_children
Navigate hierarchical codelists (children of a code)
search_codelist_entries
Search entries within a specific codelist
list_catalogs
List all DCAT catalogs
get_catalog_records
Get records (resources) from a catalog
get_catalog_themes
Get themes used in a catalog (DCAT-AP alignment)
list_agents
List all publishing organisations (with identifiers for filtering)
get_agent
Get full metadata for a publishing organisation
list_vocabularies
List all controlled vocabularies (themes, licenses, formats…)
get_vocabulary
Get all entries of a controlled vocabulary for RDF/DCAT-AP use
get_distribution_content
Fetch the actual content of a distribution file (CSV, JSON, XML…)
Quick Start
Option 1: Docker Compose (recommended)
git clone https://github.com/fgouzi/mcp-i14y.git
cd mcp-i14y
cp .env.example .env
docker compose up -d
The server will be available at http://localhost:8400/mcp.
Option 2: Local setup with uv
git clone https://github.com/fgouzi/mcp-i14y.git
cd mcp-i14y
uv sync
uv run python main.py
Same filter parameters as list_datasets (with dataservice_identifier instead of dataset_identifier).
get_dataservice
Parameter
Type
Description
dataservice_id
string
Data service unique identifier
Concepts
list_concepts
Parameter
Type
Default
Description
publisher_identifier
string
—
Filter by publisher
concept_identifier
string
—
Filter by concept identifier
version
string
—
Filter by version
registration_status
string
—
Registration status filter
publication_level
string
—
Internal or Public
page
integer
1
Page number
page_size
integer
25
Results per page
get_concept
Parameter
Type
Default
Description
concept_id
string
—
Concept unique identifier
include_codelist_entries
boolean
false
Embed codelist entries in response
get_concept_codelist
Parameter
Type
Default
Description
concept_id
string
—
Concept unique identifier
format
string
json
json or csv
Public Services
list_publicservices
Same filter parameters as list_datasets (with publicservice_identifier).
get_publicservice
Parameter
Type
Description
publicservice_id
string
Public service unique identifier
Catalogs
get_catalog
Parameter
Type
Default
Description
catalog_id
string
—
Catalog unique identifier
format
string
ttl
ttl (Turtle) or rdf (RDF/XML)
Mapping Tables
A mapping table defines a correspondence between two codelists (source → target), enabling semantic alignment across classification systems (e.g. old canton codes → new codes, Swiss codes → European standards).
Since the I14Y API has no full-text search endpoint, these tools fetch pages progressively and rank results client-side.
catalog_search
Full-text search across all I14Y resource types (server-side, via CORE API).
Parameter
Type
Default
Description
query
string
—
Free-text search query (any language)
types
list
—
Filter by type(s): Dataset, DataService, PublicService, Concept, MappingTable
publishers
list
—
Filter by publisher identifier(s), e.g. ["CH1"]
statuses
list
—
Filter by registration status(es)
page
integer
1
Page number
page_size
integer
25
Results per page
Concepts (CORE)
get_concept_by_identifier
Parameter
Type
Description
identifier
string
Short identifier string (e.g. "HGDE_KT", "CL_NOGA")
get_codelist_entries
Parameter
Type
Default
Description
concept_id
string
—
Concept UUID
page
integer
1
Page number
page_size
integer
100
Results per page
get_codelist_entry_by_code
Parameter
Type
Description
concept_id
string
Concept UUID
code
string
Code value to look up (e.g. "1", "CH")
get_codelist_entries_children
Parameter
Type
Default
Description
concept_id
string
—
Concept UUID
parent_code
string
—
Parent code whose children to retrieve
page
integer
1
Page number
page_size
integer
100
Results per page
search_codelist_entries
Parameter
Type
Default
Description
concept_id
string
—
Concept UUID
query
string
—
Search term
language
string
fr
Language for label matching: fr, de, it, en
page
integer
1
Page number
page_size
integer
25
Results per page
Datasets (CORE)
get_dataset_by_identifier
Parameter
Type
Description
identifier
string
Dataset short identifier (e.g. "px-x-0602010000_109")
check_dataset_has_structure
Parameter
Type
Description
dataset_id
string
Dataset UUID
Returns true if a structural model exists, false otherwise. Use this before calling get_dataset_structure() to filter datasets that have a documented schema.
get_dataset_model_graph
Parameter
Type
Description
dataset_id
string
Dataset UUID
Returns the dataset schema as a graph (nodes/edges) — suited for programmatic processing. Complements get_dataset_structure() which returns RDF/JSON-LD.
Data Services (CORE)
get_dataservice_by_identifier
Parameter
Type
Description
identifier
string
Data service short identifier
Public Services (CORE)
get_publicservice_by_identifier
Parameter
Type
Description
identifier
string
Public service short identifier
get_publicservice_relations
Parameter
Type
Description
publicservice_id
string
Public service UUID
Catalogs (CORE)
list_catalogs
Parameter
Type
Default
Description
page
integer
1
Page number
page_size
integer
25
Results per page
get_catalog_records
Parameter
Type
Default
Description
catalog_id
string
—
Catalog UUID
page
integer
1
Page number
page_size
integer
25
Results per page
get_catalog_themes
Parameter
Type
Default
Description
catalog_id
string
—
Catalog UUID
page
integer
1
Page number
page_size
integer
100
Results per page
Agents
list_agents
Parameter
Type
Default
Description
page
integer
1
Page number
page_size
integer
25
Results per page
get_agent
Parameter
Type
Description
agent_id
string
Agent UUID
Vocabularies
Controlled vocabularies define valid values for DCAT-AP metadata fields (themes, access rights, licenses, media types, etc.).
list_vocabularies
No parameters. Returns all available vocabulary configurations with their identifiers.