Skip to main content
Glama

cz-eli-mcp

An MCP server for the Czech e-Sbirka legal database (e-sbirka.gov.cz), the official Collection of Laws (Sbirka zakonu), via its open-data SPARQL endpoint. It searches acts and fetches their full consolidated text, with verifiable citations.

Part of the MateMatic eu-legal-mcp production line - after PL, DE, AT, ES, FI, IE, NL, SE, FR, LU and DK. Same citation contract, e-Sbirka source. This is the first connector in the line that talks SPARQL/RDF rather than a REST/XML API.

Scope. This MVP searches acts (by year and/or a citation substring), returns metadata, and assembles the full consolidated text of the latest version. ~92,000 acts, updated daily, licensed CC BY 4.0. Language: Czech. Every response carries a dataset_note.

ELI is national, not data.europa.eu. The act IRI follows the ELI URI template (eli/cz/sb/{year}/{number}) but is minted by the e-Sbirka open-data graph (opendata.eselpoint.gov.cz), not resolvable on data.europa.eu. The readable page is on e-sbirka.gov.cz. Every response carries an eli_note saying so.

Text is assembled, not a single file. e-Sbirka exposes the consolidated text as ordered HTML fragments over SPARQL; cz_get_text reconstructs the plain text from them. There is no single official XML/PDF manifestation.

The tools

Tool

What it does

cz_search

Find acts by year and/or a citation substring (discovery).

cz_get_act

Metadata for an act by year + number, plus the latest consolidated version date.

cz_get_text

Full consolidated text of an act, assembled from the latest version's fragments.

cz_coverage

Declare what this connector covers, when each family was captured, and - explicitly - what it does NOT cover. Every gap carries a fallback.

Every response carries the contract: eli_uri (the national ELI IRI, e.g. https://opendata.eselpoint.gov.cz/esel-esb/eli/cz/sb/2019/110), human_readable_citation (e.g. 110/2019 Sb.), and source_url (the e-sbirka.gov.cz page).

Related MCP server: Slovak Law MCP Server

Install

Run it with no install step (once published to PyPI):

uvx cz-eli-mcp

Or from source:

cd cz-eli-mcp
pip install -e .

Configure (Claude Code / any MCP client)

{
  "mcpServers": {
    "cz-eli-mcp": { "command": "cz-eli-mcp" }
  }
}

Windows 11 with Smart App Control

Smart App Control blocks unsigned executables, which covers uvx.exe, pip.exe and the cz-eli-mcp.exe launcher that pip writes at install time. The python.exe and py.exe from the python.org installer are signed by the Python Software Foundation, so running the module through the interpreter works:

python -m pip install cz-eli-mcp
python -m cz_eli_mcp

pip.exe is blocked for the same reason, so install with python -m pip, not pip install. If python is not on PATH, use the Windows launcher: py -3 -m cz_eli_mcp.

{ "mcpServers": { "cz-eli-mcp": { "command": "python", "args": ["-m", "cz_eli_mcp"] } } }

Do not turn Smart App Control off to work around this - it cannot be re-enabled without reinstalling Windows.

Environment:

  • CZ_ELI_ENDPOINT - default https://opendata.eselpoint.gov.cz/sparql

  • CZ_ELI_CACHE_DIR - default ~/.matematic/cache/cz-eli

  • CZ_ELI_AUDIT_DIR - default ~/.matematic/audit

No API key. The e-Sbirka open-data SPARQL endpoint is keyless.

Governance

  • Public data only - read-only SPARQL against e-Sbirka; no client data leaves the machine.

  • Audit log - every tool call appends one JSON line to ~/.matematic/audit/cz-eli-mcp.jsonl.

  • Vendor-neutral - talks only to opendata.eselpoint.gov.cz; no LLM provider, no telemetry.

  • Verifiable citations - every response is independently checkable via source_url.

See CONSTITUTION.md and DISCOVERY.md.

Tests

pip install -e ".[dev]"
pytest tests/test_instructions_drift.py tests/test_parse.py -v   # offline
pytest tests/test_smoke.py -v                                    # hits the live SPARQL endpoint

Licence

Apache-2.0. © Matematic Solutions / Wieslaw Mazur. e-Sbirka data is CC BY 4.0 (Czech Ministry of the Interior); relayed with attribution and a source_url.

Available Tools

3 tools
cz_get_actA
Read-onlyIdempotent

Fetch Czech act metadata by year and number.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYese.g. ``2019``.
numberYese.g. ``110``.

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearNo
numberNo
eli_uriNo
citationNo
eli_noteNo
source_urlNo
dataset_noteNo
version_dateNo
latest_version_uriNo
human_readable_citationNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds no behavioral traits beyond what is in annotations or schema. It is adequate but does not enhance transparency.

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

Conciseness5/5

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

A single, clear sentence that immediately conveys the tool's purpose. No wasted words.

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

Completeness5/5

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

Given the simple input schema, output schema existence, and annotations covering behavioral safety, the description is complete enough for an agent to understand and invoke the tool 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 coverage is 100%, so baseline is 3. The description restates 'by year and number' but adds no additional meaning or constraints beyond the schema.

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

Purpose5/5

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

The description clearly states the action (Fetch), resource (Czech act metadata), and identifiers (year and number). It distinguishes from siblings like cz_get_text and cz_search by specifying 'metadata'.

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 description implies usage when you have year and number, but does not explicitly state when to prefer this over siblings or provide exclusions. The sibling names hint at alternatives, but the description itself lacks guidance.

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

cz_get_textB
Read-onlyIdempotent

Fetch the full consolidated text of a Czech act by year and number.

The text is assembled from the latest consolidated version's ordered HTML fragments.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYese.g. ``2019``.
numberYese.g. ``110``.

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearNo
formatNo
numberNo
contentNo
eli_uriNo
citationNo
eli_noteNo
byte_sizeNo
source_urlNo
dataset_noteNo
version_dateNo
fragment_countNo
human_readable_citationNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds that the text is assembled from ordered HTML fragments of the latest consolidated version, which provides useful context beyond annotations but does not fully explain behavior like output format or permissions.

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

Conciseness5/5

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

The description is concise with two sentences: the first clearly states the purpose, and the second adds a key detail about the assembly. Every sentence earns its place with no fluff.

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?

Given the tool's simplicity (2 params, output schema present, rich annotations), the description adequately covers what it does and how it works. The presence of an output schema reduces the need to detail return values. It could mention how the text is returned (e.g., plain text or HTML) but that is likely covered 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 coverage is 100% (both year and number are described in the input schema). The description does not add any additional meaning or constraints beyond the schema, so it meets the baseline of 3.

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 clearly states it fetches the full consolidated text of a Czech act by year and number, using a specific verb and resource. However, it does not explicitly differentiate from sibling tools like cz_get_act or cz_search, which could cause confusion.

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?

No guidance is provided on when to use this tool versus the siblings. The description does not include any when-to-use or when-not-to-use advice, leaving the agent to guess.

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. Dates show when Glama detected each change.

  1. 3 tool updatesv0.1.1
    • First observedcz_get_act
    • First observedcz_get_text
    • First observedcz_search

TDQS

A4/5.0
Disambiguation5/5

Each tool has a clear, distinct purpose: metadata retrieval, full text retrieval, and search. No overlap or ambiguity.

Naming Consistency5/5

All tools follow a consistent `cz_verb_noun` pattern in snake_case, making them predictable and easy to understand.

Tool Count5/5

Three tools is well-scoped for a legal acts server, covering the core operations without unnecessary bloat.

Completeness4/5

The set covers search, metadata, and full text retrieval. A list-all-act function is missing but search can approximate it; otherwise complete for read-only access.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables AI-powered legal research and analysis of Polish legal acts from the Sejm API. Provides comprehensive search, document retrieval, metadata analysis, and content access for legal documents from Dziennik Ustaw and Monitor Polski.
    13
    19
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables querying and analyzing Slovak legislation via natural language, including full-text search, provision retrieval, and EU law integration.
    99
    2
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    Enables searching and retrieving EU legal documents (regulations, directives, court decisions) via the EUR-Lex Cellar API, supporting full-text search, metadata, citations, and consolidated versions without requiring an API key.
    11
    59
    6
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/matematicsolutions/cz-eli-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server