nu:legal Deutsches Recht MCP server
online · 100% uptimeeu.nulegal/recht·v1.0.4·1 starsGerman federal and Land statutes plus court decisions for agents. Keyless, read-only.
1 stars
Reviews
Write oneNobody has reviewed nu:legal Deutsches Recht yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
nu:legal Deutsches Recht tools (9)
write = sends, deletes, buys or postsgetChangesFreeWhat changed here, as JSON. Two ways to read it. The cursor feed (send `kinds`, or `cursor`): everything that changed, oldest first, readable to the end without gaps: decisions added or changed, provisions with a new text (new Fassung, new provision, new law), and new citation links (decision X now cites Y, or decision Y gained a citer). Start with `kinds` (and `since`, default 7 days ago), then pass `next_cursor` back unchanged, with the same filters, until `has_more` is false; keep the cursor and poll with it later. Without those arguments: the provisions that got a new text recently, newest first. Poll it with `since` set to the newest `observed` you have processed. `observed` / `observed_at` is when the change reached this service, not when a court decided or a law came into force. Say so if you report a date. The window is the last 120 days; a provision's own history is listNormVersions.
getCoverageFreeWhat the corpus holds and what it does not: laws, decisions, courts, the version archive and the Länder covered. Call it before you report that something does not exist. The answer's `coverage` block is /v1/coverage: statutes per Land (`statutes`: full_text, partial or none), decisions per court level, the citation graph and what every version date is, all from one daily table. Example: {}
getNormFreeThe text of one provision (§ or Article) as Markdown. `law` is the abbreviation ('BGB', 'StGB', 'DSGVO'; Hessen: 'HBO'), `ref` the number ('573', '3a'). For the text on a past date add `as_of` (YYYY-MM-DD; versions are held from 2019-06-10; for EU acts, the EMRK and some Landesrecht from the day their held text applies). The answer says how many versions are held (`versions_held`) and how many decisions cite the provision (`cited_by`). A version date is not always its Inkrafttreten: `date_basis` says what it is. For most federal law it is the day the text was first seen here; for an EU act it is the day its text applies (`applies_from`). With `compare_to` (YYYY-MM-DD) the answer adds `diff`, the word diff to the version stored for that date. DATES: each version carries `date_basis`, `in_force_from` (a date the source states) and `observed_from` (first seen here), each with its `*_basis`; the one we do not hold is null. Example: {"law": "BGB", "ref": "573"}
listCasePassagesFreeRead a decision: its paragraphs, each with the court's Randnummer (`rn`) and a link. `case` takes an ECLI, our decision URL or an Aktenzeichen. Jump to a Randnummer with `around`, page with `offset` and `limit`. The first page also says how often the decision is cited and by whom. The answer carries `card`: typed `headnotes` (Leitsatz apart from Orientierungssatz), the `tenor` where the source marks it, `cited_norms`, `fundstellen`, `cite_as`; never generated text. Example: {"case": "bgh/2017-03-29/viii-zr-45-16", "around": 15, "limit": 5}
listCitedAuthoritiesFreeWhat one decision cites: the provisions (with how often) and the decisions it relies on. Example: {"case": "bgh/2017-03-29/viii-zr-45-16"}
listCitingDecisionsFreeWho cites this: the decisions citing a provision (`law` + `ref`) or a decision (`case`). Ranked by weight; `sort: "recent"` gives the newest first. Each citer links to the Randnummer where it cites. The graph is built over every decision held, federal, Land and EU courts alike, and links federal, EU and Land provisions; it does not link Hessen provisions, which answer `total: 0` with `coverage.complete_for_this_norm: false`: then fall back to `search` on the provision's wording. `coverage` carries the counts for the provision's jurisdiction. Example: {"law": "BGB", "ref": "573", "sort": "recent", "limit": 5} or {"case": "bgh/2017-03-29/viii-zr-45-16"}
listNormVersionsFreeEvery stored version of one provision with its dates, newest first. Use it to see when a provision changed, then read a version with getNorm `as_of`. `at_archive_floor` marks a text that was already in force when the archive began. To compare two versions, call `getNorm(compare_to=…)`: the answer's `diff` is the word diff, and each side says what its date is (`date_basis`: `in_force`, `eurlex_consolidation`, `source_stated`, `observed` or `archive_floor`), so a floor date stays visible. DATES: each version carries `date_basis`, `in_force_from` (a date the source states) and `observed_from` (first seen here), each with its `*_basis`; the one we do not hold is null. Example: {"law": "BGB", "ref": "288"}
resolveIdentifiersFreeLook up German legal citations, up to 100 at once: a § or Article, an Aktenzeichen, an ECLI or a Fundstelle. Use it to find a decision by its docket and to check a citation before you state it. Pass each citation as you hold it, with court and date: they pick the right decision where a docket repeats. It never guesses. A miss is `not_in_corpus`; `attested` / `known_missing` means the decision exists but its text is not held; `date_mismatch` / `court_mismatch` mean your citation is wrong there. A found decision carries `cited_by`: how many decisions cite it, and the top citers with a link to the Randnummer where they do. Example: {"citations": ["BGH, Urteil vom 29.03.2017 - VIII ZR 45/16", "§ 573 Abs. 2 BGB"]}
searchFreeFind statutes and decisions on a topic or a question, in one call. Use it when you hold no citation yet. German keywords or a full question both work; decisions are matched by meaning. A decision hit carries `url` (pass it as `case` to the decision tools), `ecli` and `cited_by`; a statute hit carries `slug` and `ref_norm` (pass them as `law` and `ref` to getNorm). Full text is held for Bayern, Brandenburg, Hessen, Nordrhein-Westfalen and Sachsen (see `getCoverage`). Hessen rows (`jurisdiction` 'HE'): pass `law_key` as `law` and `ref_norm` as `ref` to getNorm. Decisions can be filtered by `court`, `court_level`, `state`, `panel`, `from`/`to` and `decision_type`, and sorted with `sort` (relevance, weight: most cited first, newest); the answer counts them in `cases_total`. Example: {"q": "Eigenbedarf Kündigung Härtefall"}
Public scan report
scanner v0.1.10 · 2026-11-03 · same rubric, same numbers if you re-run it
- –Code scanremote-only server, no package to scann/a
- Live reliabilityremote reachable in 1131ms20/20
- Tool poisoning9 tool descriptions checked15/15
- Auth qualityopen endpoint, read-only tools10/15
- Maintenancelast push 3 days ago15/15
- Maintainer identitynamespace and repository owner differ; GitHub account older than a year; website matches verified namespace8/10
How nu:legal Deutsches Recht compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 91/100
- higher than 85% of 48,255 servers
- Tools
- 9
- the typical server has 7
- Tools that change things
- 0%
- typical: 0%. Fewer write tools means less an agent can break
- Uptime
- 100%
- of our recent checks; the typical remote server answers 100%
- Response time
- 82 ms
- faster than 87% of 30,031 servers
- GitHub stars
- 1
- more than 65% of 28,688 servers
What its tools let an agent do: 9 read
Release history: 5 versions in the registry since 2026-09-23, latest 2026-11-01, typically one every 9 days.
Install nu:legal Deutsches Recht in Claude Code, Cursor or VS Code
claude mcp add --transport http recht https://recht.nulegal.eu/v1/mcp
What the publisher says
From the nu:legal Deutsches Recht repository's README, as published. We do not edit it. Read it on GitHub
recht-mcp
An MCP server for German law: federal statutes and regulations, the Landesrecht of Bayern, Brandenburg, Nordrhein-Westfalen and Sachsen, and court decisions — for AI agents that need to ground a citation, read a provision, or follow the citation graph, and need to know when an answer is not complete.
On 23 October 2026 the corpus held 12,016 statutes and regulations (254,598 provisions, 312,122 stored versions) and 640,401 court decisions from 946 courts, with 7,797,118 citation links from decisions to provisions and to other decisions. getCoverage returns the current figures.
This repository is the tool layer of the hosted server at https://recht.nulegal.eu/v1/mcp. The hosted endpoint runs this code, vendored at a pinned commit, over a private backend that reads the corpus directly; recht-mcp runs the same code locally over the public REST API. The corpus and the database stay on the service side — see docs/DESIGN.md for exactly where the line runs.
The nine tools
Every tool is read-only. Each answer says what it is and what it is not: version dates are first-observed dates, not Inkrafttreten; the norm-version archive has a floor that every norm answer states; a zero from the citation graph on a Land provision is labelled as "not indexed", not "never cited"; and three kinds of miss — notincorpus, outsidecoverage, knownmissing — are never collapsed into one. The full contract of each tool is in its description (tools/list).
Use the hosted server (recommended)
No key, no signup. Point any MCP client that speaks Streamable HTTP at:
https://recht.nulegal.eu/v1/mcp
Claude Code:
claude mcp add --transport http nulegal-recht https://recht.nulegal.eu/v1/mcp
A client configured with JSON:
{
"mcpServers": {
"nulegal-recht": { "type": "http", "url": "https://recht.nulegal.eu/v1/mcp" }
}
}Developer documentation for the service and its REST API: .
Run it locally
Requires Python 3.12+ and uv. The package has no third-party runtime dependencies.
git clone https://github.com/nulegal-startup/recht-mcp cd recht-mcp uv run recht-mcp # stdio uv run recht-mcp --http # Streamable HTTP on http://127.0.0.1:8765/mcp
Or without a checkout:
uvx --from git+https://github.com/nulegal-startup/recht-mcp recht-mcp
A client that launches stdio servers:
{
"mcpServers": {
"nulegal-recht": {
"command": "uvx",
"args": ["--from", "git+https://github.com/nulegal-startup/recht-mcp", "recht-mcp"]
}
}
}Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Grade history
- 2026-11-03restoreC → Ascore 91
nu:legal Deutsches Recht: common questions
- Is nu:legal Deutsches Recht MCP server safe?
- Yes, by our scan: it is graded A (91/100). Read the nu:legal Deutsches Recht safety report
- How do I install nu:legal Deutsches Recht?
- It runs remotely at recht.nulegal.eu. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
- Does nu:legal Deutsches Recht need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is nu:legal Deutsches Recht maintained?
- The last commit was 3 days ago (2026-11-01). The latest release is v1.0.4.
- Is nu:legal Deutsches Recht up?
- 100% of our last 28 checks got an answer. We check remote servers about four times a day.
- How does nu:legal Deutsches Recht compare with other MCP servers?
- safety score 91/100 (higher than 85% of 48,255 servers); tools 9 (the typical server has 7); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.