fedlex-mcp
MCP Server for Swiss federal law — search the SR, monitor legal changes, and query BBl/treaties via Claude Desktop or Claude.ai.
README
:switzerland: Part of the Swiss Public Data MCP Portfolio
:balance_scale: fedlex-mcp
MCP Server for Swiss federal law — search the SR, monitor legal changes, and query BBl/treaties via Claude Desktop or Claude.ai
Overview
fedlex-mcp connects AI assistants (Claude) with the Fedlex SPARQL endpoint of the Swiss Federal Chancellery. This enables AI agents to look up Swiss federal law, monitor legal changes, and analyse legislation directly in conversation — without manual research on fedlex.admin.ch.
Metaphor: USB-C for federal law. Once connected, Claude can reach into the Systematic Compilation at any time.
Features
- :balance_scale: 7 tools, 2 resources covering the full breadth of Swiss federal law
- :mag: SPARQL-powered — direct access to the Fedlex linked data endpoint
- :globe_with_meridians: 4 languages — German, French, Italian, Romansh
- :unlock: No API key required — all data under open reuse licence
- :cloud: Dual transport — stdio (Claude Desktop) + Streamable HTTP (cloud)
Prerequisites
- Python 3.11+
- uv (recommended) or pip
Installation
# Clone the repository
git clone https://github.com/malkreide/fedlex-mcp.git
cd fedlex-mcp
# Install
pip install -e .
# or with uv:
uv pip install -e .
Or with uvx (no permanent installation):
uvx fedlex-mcp
Quickstart
# stdio (for Claude Desktop)
python -m fedlex_mcp.server
# Streamable HTTP (port 8000)
python -m fedlex_mcp.server --http --port 8000
Try it immediately in Claude Desktop:
"Show me all valid federal laws on vocational training" "What does the Data Protection Act say? Is it still in force?" "Which federal laws enter into force in the next 3 months?"
Configuration
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"fedlex": {
"command": "python",
"args": ["-m", "fedlex_mcp.server"]
}
}
}
Or with uvx:
{
"mcpServers": {
"fedlex": {
"command": "uvx",
"args": ["fedlex-mcp"]
}
}
}
Config file locations:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Cloud Deployment (SSE for browser access)
For use via claude.ai in the browser (e.g. on managed workstations without local software):
Render.com (recommended):
- Push/fork the repository to GitHub
- On render.com: New Web Service -> connect GitHub repo
- Set start command:
python -m fedlex_mcp.server --http --port 8000 - In claude.ai under Settings -> MCP Servers, add:
https://your-app.onrender.com/sse
"stdio for the developer laptop, SSE for the browser."
Demo
Available Tools
| Tool | Description |
|---|---|
fedlex_search_laws |
Search the Systematic Compilation (SR) by keyword in title |
fedlex_get_law_by_sr |
Get a law by its SR number (e.g. 235.1 = Data Protection Act) |
fedlex_get_recent_publications |
Latest publications from the Official Compilation (AS) |
fedlex_get_upcoming_changes |
Laws entering into force soon (legal monitoring) |
fedlex_search_gazette |
Search the Federal Gazette (BBl) |
fedlex_get_law_history |
All versions of a law (version history) |
fedlex_search_treaties |
International treaties (SR numbers starting with 0.) |
Example Use Cases
| Query | Tool |
|---|---|
| "Show me all valid federal laws on vocational training" | fedlex_search_laws |
| "What does the Data Protection Act say?" | fedlex_get_law_by_sr |
| "Which laws enter into force in the next 3 months?" | fedlex_get_upcoming_changes |
| "What did the Federal Council publish this week?" | fedlex_get_recent_publications |
| "Show me the version history of the DSG" | fedlex_get_law_history |
| "Which education treaties does Switzerland have with the EU?" | fedlex_search_treaties |
→ More use cases by audience →
Architecture
+-------------------+ +------------------------------+ +--------------------------+
| Claude / AI |---->| Fedlex MCP |---->| Fedlex SPARQL Endpoint |
| (MCP Host) |<----| (MCP Server) |<----| (Swiss Federal |
+-------------------+ | | | Chancellery) |
| 7 Tools . 2 Resources | +--------------------------+
| Stdio | SSE |
| |
| No authentication required |
+------------------------------+
Data Model (JOLux Ontology)
jolux:ConsolidationAbstract <- SR entry
+-- jolux:isRealizedBy -> jolux:Expression (URI ends in /de, /fr, /it, /rm)
+-- jolux:title "Federal Act of 19 June 1992 on Data Protection"
+-- jolux:titleShort "DSG"
+-- jolux:historicalLegalId "235.1"
jolux:inForceStatus:
.../0 In force
.../1 No longer published in the SR
.../3 No longer in force
SPARQL Endpoint: https://fedlex.data.admin.ch/sparqlendpoint
Licence: Free reuse (commercial and other purposes) per fedlex.admin.ch
Languages
| Code | Language |
|---|---|
de |
German (default, most complete coverage) |
fr |
French |
it |
Italian |
rm |
Romansh |
Project Structure
fedlex-mcp/
+-- src/fedlex_mcp/
| +-- __init__.py # Package
| +-- server.py # 7 tools, 2 resources
+-- tests/
| +-- test_server.py # Unit tests (mocked)
+-- .github/workflows/ci.yml # GitHub Actions (Python 3.11/3.12/3.13)
+-- pyproject.toml
+-- CHANGELOG.md
+-- CONTRIBUTING.md
+-- LICENSE
+-- README.md # This file (English)
+-- README.de.md # German version
Known Limitations
- SPARQL complexity: Very broad keyword searches may time out (45s timeout)
- Language coverage: German has the most complete data; other languages may have gaps
- Historical data: Not all historical versions of laws have machine-readable metadata
- Rate limiting: The Fedlex endpoint may throttle high-frequency requests
Project Phase
This server is in Phase 1 (read-only). All tools are annotated
readOnlyHint: true / destructiveHint: false and only ever query the public
Fedlex SPARQL endpoint — there are no write, send, or filesystem capabilities.
| Phase | Scope | Status |
|---|---|---|
| 1 — Read-only | Query SR/AS/BBl/treaties | ✅ current |
| 2 — Write-capable | (none planned) | — |
| 3 — Multi-agent | (none planned) | — |
A transition to a later phase would require an audit re-run and the human-in-the-loop controls described in the audit catalog before any write-capable tool is added.
MCP Protocol Version
The protocol version is negotiated at the initialize handshake by the
mcp Python SDK (pinned to >=1.3.0 in
pyproject.toml). The SDK is kept current via monthly Dependabot PRs
(.github/dependabot.yml); protocol-relevant bumps are noted in
CHANGELOG.md.
Testing
# Unit tests (no API key required)
PYTHONPATH=src pytest tests/ -m "not live"
# Integration tests (live API calls)
pytest tests/ -m "live"
Safety & Limits
- Read-only: All tools perform SPARQL SELECT queries only — no data is written, modified, or deleted on the Fedlex endpoint.
- No personal data: Fedlex contains public law texts and official gazettes. No personally identifiable information (PII) is processed or stored by this server.
- Rate limits: The Fedlex SPARQL endpoint is a public service without a documented rate limit; use
limitparameters conservatively. The server enforces a 45s timeout per request. - Data freshness: Results reflect the Fedlex endpoint at query time. No caching is performed by this server.
- Terms of service: Data is subject to the reuse conditions of fedlex.admin.ch — free reuse for commercial and other purposes.
- No guarantees: This server is a community project, not affiliated with the Swiss Federal Chancellery. Availability depends on the upstream SPARQL endpoint.
Changelog
See CHANGELOG.md
Contributing
See CONTRIBUTING.md
License
MIT License — see LICENSE
Author
Hayal Oezkan . malkreide
Credits & Related Projects
- Fedlex: fedlex.admin.ch — Swiss Federal Chancellery
- Protocol: Model Context Protocol — Anthropic / Linux Foundation
- Related: swiss-cultural-heritage-mcp — Swiss cultural heritage data
- Related: zurich-opendata-mcp — City of Zurich open data
- Related: swiss-transport-mcp — Swiss public transport
- Portfolio: Swiss Public Data MCP Portfolio
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。