fedlex-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@fedlex-mcpShow me all valid federal laws on vocational training"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
: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.
Related MCP server: Bay Street MCP
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-mcpQuickstart
# stdio (for Claude Desktop)
python -m fedlex_mcp.server
# Streamable HTTP (port 8000)
python -m fedlex_mcp.server --http --port 8000Try 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.jsonWindows:
%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 8000In 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 |
| Search the Systematic Compilation (SR) by keyword in title |
| Get a law by its SR number (e.g. |
| Latest publications from the Official Compilation (AS) |
| Laws entering into force soon (legal monitoring) |
| Search the Federal Gazette (BBl) |
| All versions of a law (version history) |
| International treaties (SR numbers starting with |
Example Use Cases
Query | Tool |
"Show me all valid federal laws on vocational training" |
|
"What does the Data Protection Act say?" |
|
"Which laws enter into force in the next 3 months?" |
|
"What did the Federal Council publish this week?" |
|
"Show me the version history of the DSG" |
|
"Which education treaties does Switzerland have with the EU?" |
|
→ 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 forceSPARQL Endpoint: https://fedlex.data.admin.ch/sparqlendpoint
Licence: Free reuse (commercial and other purposes) per fedlex.admin.ch
Languages
Code | Language |
| German (default, most complete coverage) |
| French |
| Italian |
| 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 # Contributing guide (English)
+-- CONTRIBUTING.de.md # Contributing guide (German)
+-- SECURITY.md # Security policy (English)
+-- SECURITY.de.md # Security policy (German)
+-- LICENSE
+-- README.md # This file (English)
+-- README.de.md # German versionKnown 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
Security
See SECURITY.md for the security posture, hardening controls, and how to report a vulnerability.
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
Installation
Run via uv's uvx — no clone or manual install needed. Add to your MCP client config (mcpServers for Claude Desktop, Cursor and Windsurf; use a top-level servers key for VS Code in .vscode/mcp.json):
{
"mcpServers": {
"fedlex-mcp": {
"command": "uvx",
"args": [
"fedlex-mcp"
]
}
}
}This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/malkreide/fedlex-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server