MCP server for German federal legislation (NeuRIS): ELI identifiers and verifiable citations.
Connect De to Claude, Cursor or any other MCP client and it stops being a tab you switch to. MCP server for German federal legislation (NeuRIS): ELI identifiers and verifiable citations. The de mcp server is what makes that connection.
Published on PyPI + MCP Registry (io.github.matematicsolutions/de-eli-mcp). Run without cloning:
de-eli-mcp on PyPI is all you need. Most clients run it directly, so configuration is a few lines and a restart.
The toolset is worth reading before you wire it up, because it tells you what the integration is really for:
de_search — Search legislation by term, ELI and date (GET /v1/legislation)de_get_act — Fetch act metadata by ELIde_get_text — Fetch the full text (html or xml / LegalDocML.de)de_list_publishers — List the publication organs (BGBl I/II, Bundesanzeiger)de_recent_changes — Acts published since a date, newest-firstde_rii_case_search — Search BVerfG/BGH/BAG/BFH/BVerwG/BSG/BPatG decisions via RII's master TOC (court, Aktenzeichen substring, date range)de_rii_get_case_text — Full text of one RII decision by doc_id - real ecli when the court publishes one, plus titelzeile/leitsatz/tenor/full contentde_oldp_case_search — Search Open Legal Data - 423 944 decisions from 1 119 courts at all levels (verified live 2026-07-08), the only tool here covering **statede_oldp_get_case — Full decision text (HTML) by OLDP id or slug, with ECLI when the source carries onede_dip_search — Search the Bundestag DIP - Drucksachen (287 327), Plenarprotokolle (5 789), Vorgaenge (334 524); filters titel, dokumentnummer, zuordnungde_dip_get_document — One DIP entity by id; the -text resource variants return the full document text. Citations like BT-Drs. 20/1 with the official PDF as source_urlConfiguration is passed through the environment: DE_DIP_API_KEY, DE_ELI_BASE_URL, DE_RII_BASE_URL, DE_OLDP_BASE_URL, DE_DIP_BASE_URL. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.
Among the developer tooling options, the useful question is rarely "what can it do" but "what does it cost you to run" — permissions, credentials, and how much of your context its toolset consumes. De's toolset — de_search, de_get_act, de_get_text and 8 more — is a fair guide to whether it matches your workflow. It is maintained by matematicsolutions; worth a glance at recent repository activity before you build anything load-bearing on it.
SyncDev reviews every entry in this directory against the project's own documentation before publishing, and revisits them as servers change.
| Tool | What it does |
|---|---|
| de_search | Search legislation by term, ELI and date (GET /v1/legislation). |
| de_get_act | Fetch act metadata by ELI. |
| de_get_text | Fetch the full text (html or xml / LegalDocML.de). |
| de_list_publishers | List the publication organs (BGBl I/II, Bundesanzeiger). |
| de_recent_changes | Acts published since a date, newest-first. |
| de_rii_case_search | Search **BVerfG/BGH/BAG/BFH/BVerwG/BSG/BPatG** decisions via RII's master TOC (court, Aktenzeichen substring, date range). |
| de_rii_get_case_text | Full text of one RII decision by doc_id - real ecli when the court publishes one, plus titelzeile/leitsatz/tenor/full content. |
| de_oldp_case_search | Search **Open Legal Data** - 423 944 decisions from 1 119 courts at all levels (verified live 2026-07-08), the only tool here covering **state courts** and offering **full-text search** (text). Metadata filters: court_sl |
| de_oldp_get_case | Full decision text (HTML) by OLDP id or slug, with ECLI when the source carries one. |
| de_dip_search | Search the Bundestag **DIP** - Drucksachen (287 327), Plenarprotokolle (5 789), Vorgaenge (334 524); filters titel, dokumentnummer, zuordnung (BT/BR), wahlperiode, dates; cursor pagination. |
| de_dip_get_document | One DIP entity by id; the -text resource variants return the full document text. Citations like BT-Drs. 20/1 with the official PDF as source_url. |
Configure your MCP client (stdio):
```json
{ "mcpServers": { "de-eli-mcp": { "command": "uvx", "args": ["de-eli-mcp"] } } }Configuration as documented by the project. Restart the client after saving.
| Variable | Description | Required |
|---|---|---|
| DE_DIP_API_KEY | Credential the server authenticates with. | Yes |
| DE_ELI_BASE_URL | Endpoint or connection string the server talks to. | Yes |
| DE_RII_BASE_URL | Endpoint or connection string the server talks to. | Yes |
| DE_OLDP_BASE_URL | Endpoint or connection string the server talks to. | Yes |
| DE_DIP_BASE_URL | Endpoint or connection string the server talks to. | Yes |
Kill hallucinated APIs — version-accurate, up-to-date library documentation injected straight into context.
Microsoft's official browser automation server — drive a real browser through the accessibility tree, no screenshots needed.
GitHub's official server — repos, issues, pull requests, Actions and code security, straight from your assistant.
Issue tracking at the speed of conversation — Linear's official hosted server with OAuth and zero install.
Local repository surgery — status, diffs, commits, branches and history for any repo on disk.
Timezone sanity for AI — current time anywhere and correct conversions, without the model doing date math.