loading…
Search for a command to run...
loading…
An MCP server providing access to Swiss direct democracy data, covering all federal popular votes since 1848 and elections since 1900.
An MCP server providing access to Swiss direct democracy data, covering all federal popular votes since 1848 and elections since 1900.
CI PyPI Python License: MIT Swiss Public Data MCP
Part of the Swiss Public Data MCP Portfolio — connecting AI models to Swiss institutional data sources.
An MCP server providing access to Swiss direct democracy data, covering all federal popular votes since 1848 and elections since 1900.
«Wie hat der Kanton Zürich bei der AHV 21 Initiative 2022 abgestimmt,
und welche Parteien unterstützten die Vorlage?»
→ democracy_search_votes(keyword="AHV 21", year_from=2022)
→ democracy_get_cantonal_results(vote_number="551")
→ democracy_get_party_positions(vote_number="551")
→ More use cases by audience →
| Source | Coverage | Auth |
|---|---|---|
| Swissvotes (Uni Bern) | All federal votes since 1848 · 874 columns · party positions · cantonal results | None ✓ |
| BFS / opendata.swiss | Real-time & archive (since 1981) · municipality level | None ✓ |
| SRGSSR Polis | Votes & elections since 1900 · municipality detail | OAuth2 key |
| Tool | Description |
|---|---|
democracy_search_votes |
Search all federal popular votes since 1848 by keyword, date range, legal form, outcome, policy domain |
democracy_get_vote_detail |
Full details for a specific vote: official title, parliamentary positions, national result, signatures |
democracy_get_party_positions |
Party recommendations (FDP, SP, SVP, Die Mitte, GPS, GLP, …) with campaign finance data |
democracy_get_cantonal_results |
Results for all 26 cantons: yes%, turnout, accepted flag |
democracy_list_vote_dates |
List all voting dates with number of proposals per date |
| Tool | Description |
|---|---|
democracy_bfs_list_vote_dates |
List all BFS voting dates (archive + current) |
democracy_bfs_get_vote_results |
Real-time or archived results at national, cantonal, or municipality level |
| Tool | Description |
|---|---|
democracy_polis_list_votations |
Historical votations since 1900 with municipality-level data |
democracy_polis_get_votation_detail |
Full Polis detail, optionally with all municipality results |
democracy_polis_list_elections |
National Council, Council of States, and cantonal elections since 1900 |
Add to claude_desktop_config.json:
{
"mcpServers": {
"swiss-democracy": {
"command": "uvx",
"args": ["swiss-democracy-mcp"],
"env": {
"SRGSSR_CONSUMER_KEY": "your_key_here",
"SRGSSR_CONSUMER_SECRET": "your_secret_here"
}
}
}
}
The
SRGSSR_*variables are optional. Without them, all Swissvotes and BFS tools remain fully functional. Only the Polis tools require credentials.
pip install swiss-democracy-mcp
MCP_TRANSPORT=streamable_http MCP_PORT=8000 python -m swiss_democracy_mcp.server
┌─────────────────────────────────────────────┐
│ Claude / LLM Host │
└──────────────┬──────────────────────────────┘
│ MCP (stdio / Streamable HTTP)
┌──────────────▼──────────────────────────────┐
│ swiss-democracy-mcp │
│ │
│ ┌─────────────────────────────────────┐ │
│ │ Swissvotes CSV Cache (24h TTL) │ │
│ │ All 874 columns, since 1848 │ │
│ └──────────────┬──────────────────────┘ │
│ │ │
│ ┌──────────────▼──────────────────────┐ │
│ │ BFS / opendata.swiss (no auth) │ │
│ │ Real-time & archive since 1981 │ │
│ └──────────────┬──────────────────────┘ │
│ │ │
│ ┌──────────────▼──────────────────────┐ │
│ │ SRGSSR Polis (OAuth2, optional) │ │
│ │ Votes & elections since 1900 │ │
│ └─────────────────────────────────────┘ │
└─────────────────────────────────────────────┘
Transport: stdio for Claude Desktop · Streamable HTTP for cloud/Render.com
Auth pattern: No-Auth-First — Swissvotes & BFS work without any credentials
Cache: Swissvotes CSV is loaded once at startup and cached for 24 hours
Combine with other servers in the Swiss Public Data MCP portfolio:
Example multi-server query:
«Vergleiche die Abstimmungsresultate zur AHV-Reform mit der Altersstruktur der Kantone»
→ swiss-democracy-mcp + swiss-statistics-mcp
limit and date ranges conservative. The server enforces a 30s timeout per request.# Unit tests (no network required)
PYTHONPATH=src pytest tests/ -m "not live" -v
# Live tests (require network access)
PYTHONPATH=src pytest tests/ -m "live" -v
See CONTRIBUTING.md.
MIT — see LICENSE.
Data licenses:
Выполни в терминале:
claude mcp add swiss-democracy-mcp -- npx Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development