MCP server for the Swiss Parliament (Curia Vista OData API)
Project description
๐๏ธ parlament-mcp
Part of the Swiss Public Data MCP Portfolio โ connecting AI models to Swiss public data sources.
An MCP server that connects AI models to the Swiss Federal Parliament via the
Curia Vista OData API (ws.parlament.ch).
Access motions, interpellations, votes, members, sessions, and debate transcripts โ
with no API key required (Phase 1 โ No-Auth-First).
๐ฏ Anchor Demo Query
"Welche Vorstรถsse zu KI in der Schule sind hรคngig?" โ
parlament_search_business(keyword="KI", keyword2="Schule", status="Eingereicht")
Perfect for the KI-Fachgruppe Stadtverwaltung Zรผrich: find pending motions on AI in education, digitisation initiatives, or any policy topic โ instantly.
๐ง Tools
| Tool | Description |
|---|---|
parlament_search_business |
Search Vorstรถsse by keyword, type, status, council, date |
parlament_get_business |
Full details of a single business (texts, FC response) |
parlament_search_members |
Find councillors by canton (e.g. ZH), party, council |
parlament_get_votes |
Parliamentary votes with Ja/Nein meaning |
parlament_get_sessions |
List recent sessions with IDs for follow-up queries |
parlament_get_transcripts |
Debate excerpts by keyword or speaker (Amtliches Bulletin) |
๐๏ธ Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MCP Host (Claude Desktop / โ
โ Claude API / IDE) โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโ
โ MCP Protocol (JSON-RPC 2.0)
โ Transport: stdio (local) / SSE (cloud)
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโ
โ parlament-mcp โ
โ FastMCP ยท Python ยท Pydantic v2 โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโ
โ HTTPS / OData v3
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโ
โ ws.parlament.ch / odata.svc โ
โ Curia Vista โ No Auth Required โ
โ โ
โ Business ยท Vote ยท MemberCouncil โ
โ Session ยท Transcript ยท ParlGroupโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Installation
Claude Desktop (stdio)
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"parlament": {
"command": "uvx",
"args": ["parlament-mcp"]
}
}
}
Local development
git clone https://github.com/malkreide/parlament-mcp
cd parlament-mcp
pip install -e .
python -m parlament_mcp.server
Cloud / Railway (SSE)
MCP_TRANSPORT=sse PORT=8080 python -m parlament_mcp.server
# SSE endpoint: http://your-host:8080/sse
๐ Synergies
| Partner Server | Combination |
|---|---|
fedlex-mcp |
Law text โ parliamentary debate that created it |
zurich-opendata-mcp |
City policy โ cantonal/federal motions |
swiss-statistics-mcp |
Data backing โ motions citing statistics |
Power query example:
"Zeige mir alle Zรผrcher Motionen zu KI in der Bildung
und verlinke die relevanten Bundesgesetze aus fedlex-mcp."
๐ Data Source
- API: ws.parlament.ch/odata.svc
- Authentication: None (Phase 1 โ No-Auth-First)
- Protocol: OData v3 / JSON
- Coverage: All parliamentary businesses since 1978; votes and transcripts
- Update cycle: Real-time (official government data)
Known Limitations
- OData
substringof()filter is case-sensitive for some fields - Transcript text search can be slow for very broad queries (use
limitto control) - Session names may be
nullin the API for very recent sessions โ use session ID - Language filter is mandatory; currently only
DEis fully tested (FR,ITavailable)
Contributing
See CONTRIBUTING.md.
License
MIT malkreide
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file parlament_mcp-0.1.0.tar.gz.
File metadata
- Download URL: parlament_mcp-0.1.0.tar.gz
- Upload date:
- Size: 15.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a670637cfc1b9ba07950f57149276cf4148cc87b29d37bc6826cf48ee5defec
|
|
| MD5 |
5dea4df307ad56b38f488d44b9240a4d
|
|
| BLAKE2b-256 |
fa375998599fba160806863105538f2ecaebde88d205331c9b8ac8f406dc8441
|
Provenance
The following attestation bundles were made for parlament_mcp-0.1.0.tar.gz:
Publisher:
publish.yml on malkreide/parlament-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
parlament_mcp-0.1.0.tar.gz -
Subject digest:
1a670637cfc1b9ba07950f57149276cf4148cc87b29d37bc6826cf48ee5defec - Sigstore transparency entry: 1206046971
- Sigstore integration time:
-
Permalink:
malkreide/parlament-mcp@6cba3b61a74b714ba0ed2bca03b71350b286eac6 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/malkreide
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6cba3b61a74b714ba0ed2bca03b71350b286eac6 -
Trigger Event:
release
-
Statement type:
File details
Details for the file parlament_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: parlament_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
303ba7aa154c499b5985e27874dcdb710168d2983e17ed049bbc621790fc1629
|
|
| MD5 |
e9829b782c98f9acaf4f956039d96655
|
|
| BLAKE2b-256 |
baecf05ef0069cf6e690b9520756c7e16b931d2b978b6b7d62709a1002e4a103
|
Provenance
The following attestation bundles were made for parlament_mcp-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on malkreide/parlament-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
parlament_mcp-0.1.0-py3-none-any.whl -
Subject digest:
303ba7aa154c499b5985e27874dcdb710168d2983e17ed049bbc621790fc1629 - Sigstore transparency entry: 1206046972
- Sigstore integration time:
-
Permalink:
malkreide/parlament-mcp@6cba3b61a74b714ba0ed2bca03b71350b286eac6 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/malkreide
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6cba3b61a74b714ba0ed2bca03b71350b286eac6 -
Trigger Event:
release
-
Statement type: