Swiss Federal Parliament Curia Vista OData API
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 โ connecting AI models to Swiss public data sources.
Note: This server covers the federal level (Curia Vista). This repo additionally hosts a self-contained subproject under
openparldata-mcp/โ the subnational counterpart for the 26 cantons and ~70 municipal parliaments (OpenParlData.ch). The two are independent servers.
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 the verbatim
debate transcripts of the Amtliches Bulletin โ with no API key required
(Phase 1 โ No-Auth-First).
Metadata layer:
"Welche Vorstรถsse zu KI in der Schule sind hรคngig?" โ
parlament_search_business(keyword="KI", keyword2="Schule", status="Eingereicht")
Verbatim transcripts (Amtliches Bulletin):
"What did National Councillor Munz say in the 2024 spring session about the Volksschule? Give me the exact wording with a correct AB citation." โ
parlament_search_transcripts(speaker_name="Munz", session_id=5202, keyword="Volksschule")โ thenparlament_get_transcript(transcript_id=โฆ)for the full wording.Returns short, citable excerpts (
AB 2024 N, 2024-03-13, Munz Martina) with a stable source URL; the verbatim text is fetched on demand, never in bulk.
Perfect for the KI-Fachgruppe Stadtverwaltung Zรผrich: find pending motions on AI in education, or quote what was actually said in the chamber โ instantly.
| 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_search_transcripts | Search debate transcripts โ citable excerpts with AB citation + source URL (speaker / session / business / date filters) |
parlament_get_transcript | Fetch the verbatim full text of a single speech by ID (capped, paginated, is_excerpt flagged) |
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
By default the server binds to 127.0.0.1 (localhost only). Set
MCP_HOST=0.0.0.0 only inside a container/cloud context (Docker, Railway,
Render, Kubernetes). Never bind to 0.0.0.0 on a local dev machine โ it exposes
the server to your local network (NeighborJack risk); the server logs a warning
if you do so outside a detected container.
Transport is selected via MCP_TRANSPORT (stdio default, or sse /
streamable-http); --http is kept as an alias for streamable-http.
The HTTP transport is open by default (public read-only data). To require a
bearer token, serve via the CORS/auth app factory and set MCP_BEARER_TOKENS:
Each request then needs Authorization: Bearer <token>; identity comes from the
validated token, not a session header (see docs/security.md).
Kubernetes manifests (hardened securityContext, resource limits, egress
NetworkPolicy, Mcp-Session-Id sticky routing) live in deploy/k8s/;
an HAProxy stick-table example is in deploy/haproxy.cfg.
| Partner Server | Combination |
|---|---|
openparldata-mcp | Federal โ subnational โ same question across cantons & municipalities |
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:
Official proceedings of Swiss authorities are excluded from copyright under Art. 5 para. 1 lit. a URG (Swiss Copyright Act). The verbatim wording of parliamentary debates in the Amtliches Bulletin may therefore be reproduced and quoted freely โ which is exactly what the transcript tools return: the wording itself, never a summary standing in for it.
| Source | License | Attribution |
|---|---|---|
| Curia Vista (ws.parlament.ch) | CC BY 4.0 | ยฉ Schweizer Parlament, CC BY 4.0 |
Every tool returns a typed structured response (FastMCP exposes the output
schema) carrying source, license, provenance, match_type and count
alongside typed results. Data is passed through unmodified.
This server is in Phase 1 โ Read-only Wrapper (all tools readOnlyHint: true,
no writes). The full phase model and transition criteria are in
docs/roadmap.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. This server builds no ASGI app to send an initialize through, so
the gate asserts the SDK constants rather than a measured response โ the
weaker form, named rather than left unsaid.
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.
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/parlament-mcp)<a href="https://allmcps.com/mcp/parlament-mcp"><img src="https://allmcps.com/api/badge/parlament-mcp?style=directory" alt="Parlament MCP on AllMCPs" /></a>