Provides tools to search and retrieve scientific preprints from arXiv, including support for fetching metadata, abstracts, and full-text document retrieval via Markdown conversion.
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., "@German Legal MCP Serversearch for § 823 BGB and explain the liability requirements"
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.
German Legal MCP Server
⚠️ WARNING: Work in Progress
This project is currently under active development and not production-ready. APIs may change without notice, and features may be incomplete or unstable. Use at your own risk.
A Model Context Protocol (MCP) server for German legal research, providing unified access to multiple legal databases.
Supported Sources
Source | Status | Prefix | Authentication |
Bundes- & Landesrecht | ✅ Available |
| None (public) |
✅ Available |
| None (public) | |
✅ Available |
| None (public) | |
✅ Available |
| None (public) | |
✅ Available |
| Public key included | |
✅ Available |
| None (public) |
Features
Bundes- & Landesrecht (legis:* tools)
Federal and state legislation — BUND (all federal laws) + 16 Länder (all states)
No authentication — free public access, no rate limits
Unified interface — one set of tools for all jurisdictions
Full text search — search across state legislation (Länder only)
Resilient input — BUND accepts "§ 823", "823", "Art. 1", "Paragraph 51"
Pandoc-compatible Markdown — clean conversion with Turndown
Save to file —
save_pathparameter to avoid context pollutionAvailable states: BUND, BB, BW, BY, BE, HB, HE, HH, MV, NI, NW, RP, SL, SN, ST, SH, TH
Rechtsprechung im Internet (rii:* tools)
Federal court decisions — BVerfG, BGH, BVerwG, BFH, BAG, BSG, BPatG (from 2010)
Bavarian state courts — AG, LG, OLG, VG, VGH, FG, ArbG, LAG, BayVerfGH via gesetze-bayern.de
No authentication — free public access
Full text search — search across all federal court decisions
Kurztext/Langtext — summary or full text via
partparameterRandnummern — formatted as
[Rn. 5]{.rn}(pandoc spans)Save to file —
save_pathparameter to avoid context pollution
InfoCuria — CJEU (icu:* tools)
EU Court of Justice case law — judgments, opinions, orders from CJEU and General Court
No authentication — free public access via InfoCuria API
Multilingual — documents available in all EU languages (default: DE)
Flexible case lookup — accepts case numbers (C-476/17), CELEX numbers, or internal IDs
Randnummern — formatted as
[Rn. 5]{.rn}Partial content —
sectionparameter for Rn ranges, headings, or line rangesSave to file —
save_pathparameter to avoid context pollution
EUR-Lex (eul:* tools)
EU legislation — directives, regulations, decisions, treaties (TFEU, TEU)
No authentication — free public access via Cellar REST API and SPARQL
Multilingual — documents available in all EU languages (default: DE)
CELEX lookup — retrieve by CELEX number (e.g., "32016R0679" for GDPR)
SPARQL search — search by title keywords, filter by resource type
Partial content —
sectionparameter for articles (Art. 5), headings, or line rangesSave to file —
save_pathparameter to avoid context pollution
DIP Bundestag (dip:* tools)
Parliamentary documents — Bundestagsdrucksachen (Gesetzentwürfe, Beschlussempfehlungen, Anfragen)
Legislative processes — Vorgänge with status tracking and linked documents
Debate transcripts — full text search across Plenarprotokolle (BT and BR)
Full text retrieval — extracted text including Gesetzesbegründungen, with section support
Public API key included — works out of the box (key expires 2026-06-01, override via env var)
Save to file —
save_pathparameter to avoid context pollution
arXiv (arxiv:* tools)
Preprint search — search by keywords, author, title, abstract, or category
Metadata + abstract — default response without full text fetch (token-efficient)
HTML full text — Markdown conversion for papers from ~2024+ (LaTeXML HTML)
PDF fallback — older papers without HTML return abstract + PDF link
No authentication — free public API, no rate limits beyond ~1 req/3s
Save to file —
save_pathparameter to avoid context pollution
Quick Start with npx
npx @metaneutrons/german-legal-mcpor add your MCP client config (e.g., claude_desktop_config.json):
{
"mcpServers": {
"german-legal": {
"command": "npx",
"args": ["-y", "@metaneutrons/german-legal-mcp"]
}
}
}Environment Variables
Provider Enablement
Variable | Default | Description |
|
| Bundes- & Landesrecht |
|
| Rechtsprechung im Internet |
|
| InfoCuria (CJEU) |
|
| EUR-Lex |
|
| DIP Bundestag (auto-disabled after 2026-06-01 without own key) |
| Public key | Override the bundled public API key |
|
| arXiv preprint search |
Tools
Bundes- & Landesrecht
Tool | Description |
| Search federal and state legislation. Parameter: |
| Retrieve a specific law/norm. BUND: |
| Compact table of contents for a law — section numbers and headings. Supports |
| List available jurisdictions with implementation status. |
Rechtsprechung im Internet
Tool | Description |
| Search for court decisions. Returns list with doc IDs, titles, and snippets. Use |
| Retrieve full text of a court decision by doc ID. |
InfoCuria — CJEU
Tool | Description |
| Search CJEU decisions and opinions. Returns case numbers, ECLI, dates, and document IDs. |
| Retrieve full text by case number (C-476/17) or CELEX number. Supports |
EUR-Lex
Tool | Description |
| Search EU legislation via SPARQL. Filter by type (directive, regulation, decision, treaty). |
| Retrieve EU legislation by CELEX number (e.g., "32016R0679" for GDPR). Supports |
DIP Bundestag
Tool | Description |
| Search Bundestagsdrucksachen by title. Filter by type (Gesetzentwurf, Anfrage, etc.), Wahlperiode, date range. |
| Retrieve full text of a Drucksache by Dokumentnummer (e.g., "19/27426"). Supports |
| Search legislative processes (Vorgänge) with status and linked Drucksachen. |
| Full text search across parliamentary debate transcripts (BT and BR). |
arXiv
Tool | Description |
| Search preprints by keywords, author, title, abstract, or category. Returns metadata + abstract. |
| Retrieve paper by arXiv ID. Default: metadata + abstract. With |
Two-Phase Document Retrieval
All document tools use a two-phase approach to avoid flooding the LLM context:
Outline — first call returns title, metadata, table of contents, and a preview
Section — request specific parts by Randnummer, heading, or line range (served from cache)
Save to file — write full document to disk, return metadata only
Section formats: "Rn 5", "Rn 5-12", "lines:100-200", or any heading text (fuzzy match).
Markdown Output
Documents are converted to pandoc-compatible Markdown:
Randnummern:
[Rn. 5]{.rn}(bracketed spans)Footnotes:
[^1]references with[^1]: textdefinitions
Development
npm test # Run tests
npm run test:watch # Watch mode
npm run test:coverage # Coverage reportMCP Inspector
npx @modelcontextprotocol/inspector node dist/index.jsCommit Convention
This repo uses Conventional Commits enforced via Husky + commitlint.
Types: feat, fix, docs, style, refactor, perf, test, chore, ci, build, revert
Scopes: legis, rii, icu, eul, dip, core, deps, config
Architecture
Dynamic provider loading — providers auto-discovered from
src/providers/*/Cheerio + Turndown for HTML → pandoc Markdown conversion
Zod for input validation
Axios for HTTP requests (Legis, RII, InfoCuria, EUR-Lex, DIP, arXiv)
Tools namespaced by source (
legis:,rii:,icu:,eul:,dip:,arxiv:)
License
GPL-3.0 - See LICENSE for details.