Skip to main content
Glama
Germany Legal Research MCP Server

Germany Legal Research MCP Server

by jurisatlas

Germany Legal Research MCP Server (de-legal-mcp)

Model Context Protocol (MCP) server providing direct, read-only access to Germany (DE) legislation, multi-tier judicial decisions (First Instance, Regional/Cantonal/Appellate, and Supreme/Constitutional courts), and statutory citation verification for Claude Desktop, Cursor, and Antigravity.


Quick Desktop Setup (No Command Line Required)

This package includes a graphical installer for legal practitioners who prefer not to use terminal commands or edit JSON configuration files manually.

  1. Download: Click <> Code at the top right of this repository, select Download ZIP, and extract the folder to your computer.

  2. Run the Setup Utility:

    • Windows: Double-click Click_Here_To_Install_Windows.bat

    • macOS: Double-click Click_Here_To_Install_Mac.command

  3. Connect: Click Install & Connect Automatically in the setup window and restart Claude Desktop.

System Integrity Note: The setup utility operates strictly in read-only mode with respect to your personal files and documents. It installs an isolated Python environment inside the extracted folder and registers the server entry in your AI client configuration.


Related MCP server: German Law MCP Server

Multi-Tier Judicial Hierarchy & Official Sources

This server indexes and queries decisions across the full judicial hierarchy of Germany, allowing practitioners to filter research by procedural stage:

Judicial Tier

Covered Courts & Tribunals

Tier 1 — First Instance

Amtsgerichte (AG), Landgerichte (LG), Verwaltungsgerichte (VG), Arbeitsgerichte (ArbG), Sozialgerichte (SG) & Finanzgerichte (FG)

Tier 2 — Regional / Cantonal / Appellate

24 Oberlandesgerichte (OLG / KG Berlin), Oberverwaltungsgerichte (OVG / VGH), Landesarbeitsgerichte (LAG) & Landessozialgerichte (LSG) across 16 Bundesländer

Tier 3 — Supreme & Constitutional

Bundesverfassungsgericht (BVerfG), Bundesgerichtshof (BGH), Bundesverwaltungsgericht (BVerwG), Bundesfinanzhof (BFH), Bundesarbeitsgericht (BAG) & Bundessozialgericht (BSG)

  • National Legislation Registry: Gesetze im Internet (gesetze-im-internet.de) & Rechtsinformationen des Bundes (https://www.gesetze-im-internet.de)

  • Multi-Tier Case Law Database: OpenLegalData.io (AG/LG/OLG/Federal) & Rechtsprechung im Internet + 16 Landesrechtsprechungsdatenbanken (https://de.openlegaldata.io/api/cases/)

  • Supported Citation Format Example: ECLI:DE:BGH:2024:100124UVIII_ZR_12.23.0 or BGB § 433

Indexed Court & Regional Sub-Portals

Sub-Portal Identifier (sub_court)

Official Endpoint / Registry

openlegaldata_all_tiers

https://de.openlegaldata.io/api/cases/

rechtsprechung_bund

https://www.rechtsprechung-im-internet.de


Available MCP Tools

Tool

Description

search_legislation

Searches enacted statutes, codes, decrees, and official gazette publications in Germany.

search_case_law

Searches national jurisprudence and European/ECLI-linked judgments for Germany.

search_tiered_court_decisions

Filters case law specifically by judicial instance (first_instance, appellate_regional, supreme_constitutional) or regional/cantonal court key (sub_court).

list_court_hierarchy

Returns the complete 3-tier court structure and registered sub-portal endpoints for Germany.

get_legal_document_markdown

Retrieves full statutory or judicial texts and converts them into clean Markdown.

verify_citation

Validates statutory and case law citations against official registries.


{
  "mcpServers": {
    "de-legal-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/jurisatlas/de-legal-mcp",
        "de-legal-mcp"
      ]
    }
  }
}

Available Tools

6 tools
list_court_hierarchyList Court HierarchyA

Return the complete step-by-step multi-tier judicial hierarchy for Germany (DE): Tier 1 (First Instance / Trial / Municipal / District Courts), Tier 2 (Regional / Cantonal / County / Appellate Courts), Tier 3 (Supreme / Cassation / Constitutional Courts), and all official court sub-portals.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full disclosure burden. "Return … hierarchy" makes the read-only nature implicit and the scope limitation (Germany/DE only, static structural reference rather than case data) is stated, which is useful. It does not state whether this data is static/cached, whether any permissions are needed, or that results are a fixed taxonomy rather than query-dependent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that opens with the verb and resource before the detail. The long parenthetical synonym chains ("First Instance / Trial / Municipal / District Courts") are dense but earn their place by letting the agent map local court terminology onto tiers; the sentence is long but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and with zero parameters the call surface is trivially complete. What remains useful and is covered: jurisdiction scope (DE only) and hierarchical contents including sub-portals. What is missing is a note on whether other jurisdictions are supported by a sibling or variant, which matters given the German-only restriction.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-param tool applies. The description correctly resolves the one ambiguity a parameterless call creates — that the scope is fixed to Germany (DE) — which adds value beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb ("Return") and a precise resource ("complete step-by-step multi-tier judicial hierarchy for Germany (DE)"), and enumerates the three tiers plus sub-portals so the agent knows exactly what content comes back. It does not distinguish itself from the close sibling search_tiered_court_decisions, which also deals with court tiers, so the agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the description makes clear this is a reference/discovery listing (a hierarchy map) rather than a search, which hints it is a precursor to search_tiered_court_decisions. There is no explicit "use this when…" statement, no statement that it takes no filters, and no routing advice among the five siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_case_lawSearch Case LawC

Search Germany (DE) court decisions and binding precedents via Rechtsprechung im Internet & OpenLegalData API (de.openlegaldata.io) (Supported courts: BVerfG, BGH (Federal Court of Justice), BVerwG, BFH, BAG, BSG, OLG / LG).

NameRequiredDescriptionDefault
courtNoOptional court filter (BVerfG, BGH (Federal Court of Justice), BVerwG, BFH, BAG, BSG, OLG / LG).
limitNoMaximum number of judgments to return.
queryYesLegal issue, keywords, party name, or ECLI/case number.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden, yet it discloses nothing about authentication, rate limits, ranking/relevance behavior, pagination, or result completeness beyond the source API name. The supported-court list is useful scope information but not behavioral disclosure; for a search tool with zero annotation coverage this is a notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, opening with the verb and jurisdiction. The nested parenthetical court list makes it dense and slightly harder to scan, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the parameters are fully described in the schema. What remains missing for a multi-source legal search tool is any indication of when to prefer it over its near-identical siblings, leaving the definition minimally viable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents query, court, and limit including the limit bounds and court enumerations. The description merely repeats the court list already present in the court parameter, adding no new semantics such as query syntax or ECLI format guidance beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (search German court decisions and precedents), names the underlying data sources (Rechtsprechung im Internet, OpenLegalData API), and enumerates the covered courts. It does not distinguish itself from the close sibling search_tiered_court_decisions, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance, and no routing to alternatives such as search_tiered_court_decisions or verify_citation. The only implied guidance is the jurisdiction restriction to Germany, which an agent could infer from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_legislationSearch LegislationA

Search Germany (DE) national legislation (statutes, acts, codes, regulations) via Gesetze im Internet (gesetze-im-internet.de) & Rechtsinformationen des Bundes and European/International legal registries.

NameRequiredDescriptionDefault
yearNoOptional enactment year filter.
limitNoMaximum number of results to return.
queryYesKeywords or statute title/number to search in Germany legislation.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden. It usefully discloses the underlying sources (gesetze-im-internet.de, Rechtsinformationen des Bundes, European/International registries), which signals coverage and reliability characteristics, but it does not state read-only nature, result ranking, pagination behavior, or any rate/latency constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that identifies the verb, geography, document classes, and sources with no filler. It is dense with named registries that partly duplicate the schema's query description, but nothing is truly wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter search tool with an output schema present and no annotations, the description covers what is searchable and where results come from, which is the essential context. The main gap is the mild tension between "Germany (DE) national legislation" and the mention of European/International registries without clarifying when each source applies.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so query, year, and limit are all documented in the schema itself (keywords or statute title/number, optional enactment year filter, max results). The description adds nothing beyond that baseline, which is acceptable given the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description pairs a clear verb ("Search") with a well-scoped resource ("Germany (DE) national legislation"), and enumerates the document types (statutes, acts, codes, regulations) plus the sources queried. It implicitly separates itself from search_case_law by focusing on legislation rather than court decisions, though it never names the sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is the tool for statutes and regulations rather than case law, and that it covers DE plus European/international registries. There is no explicit when-to-use/when-not-to-use statement and no pointer to search_case_law or verify_citation as alternatives for adjacent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_tiered_court_decisionsSearch Tiered Court DecisionsB

Search court decisions in Germany (DE) filtered by specific judicial tier or regional/cantonal/appellate court. Supports Tier 1 (first_instance), Tier 2 (appellate_regional — including Cantonal/Regional/County/Circuit courts), and Tier 3 (supreme_constitutional), or a specific sub-portal key from list_court_hierarchy.

NameRequiredDescriptionDefault
tierNoJudicial stage: 'first_instance', 'appellate_regional' (Cantonal/Regional/Circuit/Appellate), 'supreme_constitutional', or 'all'.appellate_regional
limitNoMaximum number of decisions to return.
queryYesLegal issue, statute article, case number, or keywords.
sub_courtNoOptional specific court/canton/region key (e.g. 'kanton_sarajevo', 'kanton_tuzla', 'kanton_mostar', 'okruzni_banja_luka', etc.).

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden. It discloses the tier taxonomy and the relationship to the court hierarchy tool, and 'search' clearly implies a read-only operation. It says nothing about result ordering, coverage of the corpus, or whether the tier filter is strict, which is thin for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence, front-loaded with the action and resource, then the tier taxonomy, then the pointer to list_court_hierarchy. It is dense but every clause carries information, with only the parenthetical court-type list ('Cantonal/Regional/County/Circuit') adding noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and all four parameters are documented. What is missing for a multi-jurisdiction search tool is resolution of the Germany-versus-Balkan conflict, the 'all' tier behavior, and precedence between tier and sub_court, which an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does add some meaning beyond the schema by mapping 'Tier 1/2/3' labels onto the enum values and by explaining that sub_court keys come from list_court_hierarchy. However, it omits the schema's 'all' tier value and does not clarify how tier and sub_court interact when both are supplied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Search court decisions in Germany (DE)") plus a scoping dimension (judicial tier), which distinguishes it from a generic case-law search. It also names a sibling, list_court_hierarchy, as the source of sub-portal keys. Clarity is docked slightly because the geography is internally inconsistent: it claims Germany (DE) while the schema's examples ('kanton_sarajevo', 'okruzni_banja_luka') are Bosnian, leaving the agent unsure of the actual jurisdiction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the description of what can be filtered (tier, or a sub-portal key drawn from list_court_hierarchy), which gives a usable workflow hint. There is no explicit statement of when to choose this over the sibling search_case_law or search_legislation, nor any when-not guidance, so the agent must infer the routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_citationVerify CitationA

No-Hallucination Citation Verifier for Germany (DE). Validates format and live existence of legal citations (e.g., 'ECLI:DE:BGH:2024:100124UVIII_ZR_12.23.0 or BGB § 433') against official Germany and ECLI/ELI registries to prevent AI-hallucinated citations.

NameRequiredDescriptionDefault
citationYesCase citation, ECLI, or statute reference to verify (e.g., 'ECLI:DE:BGH:2024:100124UVIII_ZR_12.23.0 or BGB § 433').

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description carries the full behavioral burden, and it does disclose something valuable beyond the schema: verification is performed against live external registries, which implies network latency and possible registry unavailability. It does not say whether an unverifiable or malformed citation raises an error or returns a negative result, nor anything about rate limits or authority of the check.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single front-loaded sentence that leads with the verifier framing and then states scope and targets. Minor waste in the redundant 'No-Hallucination' label and the repeated example, but nothing that obscures the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with an output schema (so return values need not be described), the definition covers jurisdiction scope and verification targets adequately. The remaining gap is failure-mode behavior — what a non-verified citation looks like — which is partly absorbed by the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single 'citation' parameter is already fully documented, and the description only repeats the same example formats ('ECLI:DE:BGH:...' or 'BGB § 433') that the schema already shows. This is the expected baseline when the schema does the heavy lifting, with no additional parsing or normalization guidance added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('validates') on a specific resource ('legal citations ... against official Germany and ECLI/ELI registries'), and the name plus wording make clear this is a verification tool rather than one of the sibling search_* tools. The 'No-Hallucination Citation Verifier for Germany (DE)' preamble is marketing framing, but the operational sentence behind it is precise.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The scope ('Germany (DE)', 'format and live existence') implies you come here with a citation already in hand, whereas the siblings discover documents. However, it never states the when-to-use boundary explicitly — no 'use search_case_law to find a citation, use this to confirm one' routing, and no statement of what to do when verification fails.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.1.0
    • First observedget_legal_document_markdown
    • First observedlist_court_hierarchy
    • First observedsearch_case_law
    • First observedsearch_legislation
    • First observedsearch_tiered_court_decisions
    • First observedverify_citation

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation4/5

Most tools target distinct actions/resources, but search_case_law and search_tiered_court_decisions overlap in purpose since both search court decisions. The tiered variant is clearly a filtered specialization, so descriptions help, but an agent may still hesitate between them.

Naming Consistency5/5

All tool names use consistent snake_case with a verb_noun pattern (search_*, get_*, list_*, verify_*). Minor additions like 'markdown' or 'tiered' do not break the convention.

Tool Count5/5

Six tools is well-scoped for a legal research server, covering search, retrieval, hierarchy, and verification without bloat. Each tool has a clear role in the workflow.

Completeness4/5

The surface covers core legal research workflows: legislation search, case law search, full-text retrieval, court hierarchy, tiered decisions, and citation verification. Minor gaps exist, such as no explicit date-range filtering or direct citation-to-document retrieval, but agents can work around these.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Provides access to the official German Federal Legal Information Portal (rechtsinformationen.bund.de) enabling AI agents to search German federal laws, court decisions, and legal documentation with authoritative citations from official sources.
    5
    24
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Verifiable German, Austrian, Swiss and EU law: resolve citations to the wording in force, verify the citations a model produced against the official source, and walk the citation graph.
    -