normkompass-mcp
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
normkompass-mcp
A small MCP server in Python that lets an AI agent search German federal law and ask cited questions through normkompass, a TypeScript RAG service that answers only with verifiable citations and refuses when the corpus does not support an answer.
Status: reference implementation, version 0.1.0. It is a thin client: it adds no retrieval, no model and no storage. Not legal advice.
Tools
Tool | Input | Result |
|
| Ranked passages in the API's order: source law, citation label (for example "§ 1b Abs. 3 UStG"), title, URL, Stand, text. |
|
|
|
Refusal is a normal result, not an error. When normkompass finds no answer that its citation check supports, the agent gets
refused: true. The quote checking (every quote a verbatim part of a retrieved passage) happens in normkompass; this server passes the citations through exactly as returned and discards an answer that comes without one.Errors are short tool errors: invalid input (nothing is sent to the API), API not reachable (names the configured address), timeout (30 s for search, 120 s for ask, no silent retry), a response in an unexpected shape, and an API without an answer model (
ask_lawfails,search_lawstill works).The server starts and lists its tools even when the API is down; the failure shows when a tool is called.
Related MCP server: Legal MCP
Requirements
A running normkompass API (see its README; default address
http://localhost:3000).ask_lawadditionally needs an answer model configured there.Python 3.12 or newer and uv.
Set NORMKOMPASS_API_URL if the API is elsewhere (see .env.example). No secrets are read or stored. The server
sends requests only to that address; what normkompass does with a question (for example sending it to a hosted
answer model) is described in its README.
Connect it to an MCP client
The server speaks MCP over stdio. The command is the same for every client:
uv run --directory /path/to/normkompass-mcp normkompass-mcpClaude Code:
claude mcp add normkompass -e NORMKOMPASS_API_URL=http://localhost:3000 -- \
uv run --directory /path/to/normkompass-mcp normkompass-mcpA client configured through JSON (for example Claude Desktop) takes the same command in its mcpServers entry:
{
"mcpServers": {
"normkompass": {
"command": "uv",
"args": ["run", "--directory", "/path/to/normkompass-mcp", "normkompass-mcp"],
"env": { "NORMKOMPASS_API_URL": "http://localhost:3000" }
}
}
}What has been run
On 2026-11-05 the server was started with that command (uv run normkompass-mcp) by the MCP Python SDK's
client over stdio against a live normkompass API with the default search and the answer model
gemini-3.5-flash-lite (free hosted tier, a third party). The client listed the two tools; search_law returned
§ 18 Abs. 10 UStG and § 1b Abs. 3 UStG for "Wann gilt ein Landfahrzeug als neu?"; ask_law answered that
question with the citation § 1b Abs. 3 and refused "Wie hoch ist der gesetzliche Mindestlohn pro Stunde?".
Not run: the two snippets above were not run in Claude Code or Claude Desktop themselves. They use the documented configuration shape with the command that was run. If a client rejects them, that is a bug in this page; please open an issue.
Development
uv sync
uv run ruff format --check . && uv run ruff check . && uv run mypy && uv run pytestTests run against a stub of the normkompass API (33 tests, no corpus, database or model needed), including a test
that starts the server as a subprocess over stdio. CI runs the same checks plus openspec validate --strict.
Work follows OpenSpec: the specification in openspec/ was merged as a
separate pull request before any code.
Limits
Answer quality is that of normkompass and its model; nothing about quality is measured here. See the normkompass README ("Honest limits") for what is known, in particular that Claude has not been measured there.
stdio only: no remote hosting, no authentication, no caching.
One corpus (five German federal laws, a snapshot with the Stand shown per result). No promise that the law shown is current or complete.
License
MIT, see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Verified, citable German & EU law for any LLM. Daily updates from official sources, hosted in DE.
Verified, citable German & EU law for any LLM. Daily updates from official sources, hosted in DE.
Search German and EU law from official sources with your AI assistant. PRIMAMCP provides citable legal texts via MCP, with daily updates and hosting in Germany.
Cited answers from your organisation's documents. GDPR-compliant, hosted in Germany.
Related MCP Servers
- AlicenseAqualityCmaintenanceProvides 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.524MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search and analyze German legal texts using vector embeddings and semantic search.91MIT
- AlicenseNot gradedqualityCmaintenanceEnables querying 6,870 German federal statutes, case law, and legislative preparatory works directly from AI assistants and MCP-compatible clients.160 npm4Apache 2.0
- AlicenseNot gradedqualityFmaintenanceProvides LLM-friendly access to German federal legislation via the NeuRIS API, enabling tool-based retrieval of laws, norms, and statutory text.27 npmMIT