瑞士民主mcp
    
部分 瑞士公共数据MCP投资组合 --将人工智能模型与瑞士机构数据源连接起来。
MCP服务器提供对瑞士直接民主数据的访问,涵盖自1848年以来的所有联邦普选和自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") → 按受众划分的更多用例→
______________________________________________________________________
数据源
| 来源 | 覆盖范围 | 授权 |
|---|---|---|
| 瑞士酒店 (伯尔尼联盟) | 1848年以来的所有联邦选票·874列·党派立场·州结果 | 无✓ |
| BFS/opendata.swiss | 实时和档案(自1981年以来)·市级 | 无✓ |
| SRGSSR政治 | 1900年以来的投票和选举·市政详细信息 | OAuth2 key |
______________________________________________________________________
工具
第一阶段——Swissvotes(无需授权)
| 工具 | 说明 |
|---|---|
democracy_search_votes | 按关键字、日期范围、法律形式、结果、政策领域搜索自1848年以来的所有联邦普选票 |
democracy_get_vote_detail | 具体投票的全部细节:官方头衔、议会职位、国家结果、签名 |
democracy_get_party_positions | 政党建议(FDP、SP、SVP、Die Mitte、GPS、GLP等)和竞选财务数据 |
democracy_get_cantonal_results | 所有26个州的结果:是%、投票率、接受旗帜 |
democracy_list_vote_dates | 列出所有投票日期,并注明每个日期的提案数量 |
第2阶段——BFS实时(无需授权)
| 工具 | 说明 |
|---|---|
democracy_bfs_list_vote_dates | 列出所有BFS投票日期(存档+当前) |
democracy_bfs_get_vote_results | 国家、州或市一级的实时或存档结果 |
第3阶段-SRGSSR抛光(需要API密钥)
| 工具 | 说明 |
|---|---|
democracy_polis_list_votations | 1900年以来市政数据的历史投票 |
democracy_polis_get_votation_detail | 完整的Polis详细信息,可选所有市政结果 |
democracy_polis_list_elections | 1900年以来的国民议会、州议会和州选举 |
______________________________________________________________________
安装
克劳德桌面(stdio)
添加 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"
}
}
}
}这 SRGSSR_* 变量是可选的。没有它们,所有Swissvotes和BFS工具都能完全正常工作。只有Polis工具需要证书。Cloud/Render.com(流式HTTP)
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 │ │
│ └─────────────────────────────────────┘ │
└─────────────────────────────────────────────┘运输: 克劳德桌面的stdio·云/Render.com的流式HTTP\ 身份验证模式: 无需先授权--Swissvotes和BFS在没有任何凭据的情况下工作\ 隐藏物: Swissvotes CSV在启动时加载一次,并缓存24小时
______________________________________________________________________
投资组合协同
与瑞士公共数据MCP产品组合中的其他服务器结合使用:
- 苏黎世开放数据mcp --将苏黎世市级统计数据添加到投票分析中
- 瑞士统计局 --按州丰富BFS人口统计数据
- srgssr-mcp --将SRF新闻档案内容链接到特定投票日期
多服务器查询示例:\ *“将AHV改革投票结果与各州的年龄结构进行比较”*\ → swiss-democracy-mcp + swiss-statistics-mcp
______________________________________________________________________
安全与限制
- 只读: 所有工具都只执行HTTP GET请求,不会在上游写入、修改或删除数据。
- 无个人数据: Swissvotes、BFS和SRGSSR Polis公开了总体民主数据(投票结果、政党立场、州/市统计)。此服务器不会处理或存储任何个人身份信息(PII)。
- 费率限制: Swissvotes是每24小时下载一次并缓存在内存中的单个CSV。BFS/opendata.swiss和SRGSSR Polis是没有记录速率限制的公共API——保留
limit日期范围保守。服务器强制每个请求超时30秒。 - 数据新鲜度: 实时BFS结果反映了查询时的上游提要(无本地缓存)。Swissvotes每24小时从Uni-Bern镜子刷新一次。
- 服务条款: 数据受制于每个来源的ToS-- swissvotes.ch (CC BY 4.0,伯尔尼大学), opendata.swiss (主要是CC-BY/默认打开), SRGSSR政治 (免费版,仅限非商业用途)。在下游产品中始终引用上游来源。
- 不保证: 此服务器是一个社区项目,不隶属于伯尔尼大学、联邦统计局或SRG SSR。可用性取决于上游API。
______________________________________________________________________
已知限制
- 瑞士酒店保险范围: 自1848年以来,县一级的结果已经公布;市级结果仅通过SRGSSR Polis(自20世纪90年代以来,取决于投票)。
- BFS档案: 实时服务仅涵盖自1981年以来的联邦投票。
- Polis工具: 需要免费注册 developer.srgssr.ch仅供非商业用途。
- CSV缓存: Swissvotes数据集大约有几MB,在内存中缓存24小时。相应地,内存占用空间高于仅使用API的服务器。
______________________________________________________________________
测试
# 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______________________________________________________________________
贡献
看 贡献.md.
______________________________________________________________________
许可证
麻省理工学院——见 许可证.
数据许可证:
- 瑞士酒店: 知识共享BY 4.0
- BFS/opendata.swiss: 开放使用
- SRGSSR Polis:仅供非商业用途——见 developer.srgssr.ch
