Skip to main content
Glama

sk-eli-mcp

An MCP server for the Slovak Collection of Laws (Zbierka zákonov) via static.slov-lex.sk, the JavaScript-free static mirror of the Slov-lex portal. It fetches Slovak legislation and its consolidated versions, with verifiable citations.

Part of the MateMatic eu-legal-mcp production line - after PL, DE, AT, ES, FI, IE, NL, SE, FR, LU, DK, CZ, HR and LT. Same citation contract, Slov-lex source. Slovakia implements ELI (Pillar I).

Scope. This MVP lists an act's consolidated versions, returns metadata, and fetches the full text of a version. Acts are addressed by year + number; the portal is path-based, not keyword search. Coverage 1918-present. Language: Slovak. Every response carries a dataset_note.

ELI is national (Pillar I), not data.europa.eu. The static pages carry no machine-readable ELI metadata, so eli_uri is the canonical Slov-lex URL (slov-lex.sk/pravne-predpisy/SK/ZZ/{year}/{number}), the stable national identifier. Full text is served from the static.slov-lex.sk mirror (source_url). Every response carries an eli_note.

Text is extracted from the official HTML. Slov-lex serves the consolidated text as HTML; sk_get_text extracts the plain text from the act container.

The tools

Tool

What it does

sk_get_versions

List an act's consolidated versions (effective dates, amending act).

sk_get_act

Metadata for an act by year + number, plus the current in-force version.

sk_get_text

Full text of an act version (default: the current in-force version).

sk_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 Slov-lex URL, e.g. https://www.slov-lex.sk/pravne-predpisy/SK/ZZ/2018/18/), human_readable_citation (e.g. č. 18/2018 Z. z.), and source_url.

Related MCP server: Slov-Lex MCP Server

Install

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

uvx sk-eli-mcp

Or from source:

cd sk-eli-mcp
pip install -e .

Configure (Claude Code / any MCP client)

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

Windows 11 with Smart App Control

Smart App Control blocks unsigned executables, which covers uvx.exe, pip.exe and the sk-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 sk-eli-mcp
python -m sk_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 sk_eli_mcp.

{ "mcpServers": { "sk-eli-mcp": { "command": "python", "args": ["-m", "sk_eli_mcp"] } } }

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

Environment:

  • SK_ELI_BASE_URL - default https://static.slov-lex.sk

  • SK_ELI_CACHE_DIR - default ~/.matematic/cache/sk-eli

  • SK_ELI_AUDIT_DIR - default ~/.matematic/audit

No API key. The Slov-lex static mirror is keyless.

Governance

  • Public data only - read-only against Slov-lex; no client data leaves the machine.

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

  • Vendor-neutral - talks only to static.slov-lex.sk; 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 live Slov-lex

Licence

Apache-2.0. © Matematic Solutions / Wieslaw Mazur.

Available Tools

4 tools
sk_coverageA
Read-onlyIdempotent

Declare what this connector covers, how it is sourced, and what it does NOT cover.

Call this before telling a user that the law "does not contain" something, and whenever a search comes back empty: the absence may be a gap in this connector rather than in the law. Every gap carries a fallback saying where to look instead.

Returns: Coverage with families, an as-of note, and a non-empty list of known gaps.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo
familiesNo
as_of_noteYesStates what the dates mean, and what they do not promise.
known_gapsNoNever empty. An empty list would mean 'not checked', not 'no gaps'.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description adds critical behavioral context: empty search results may indicate a connector gap rather than absence in the law, and every gap includes a fallback for where to look instead. This directly helps an agent interpret results correctly and is valuable, non-obvious behavior.

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 well-structured and front-loaded: it states the core purpose first, then gives usage triggers, then summarizes the return value. Every sentence earns its place, with no redundant filler.

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?

For a zero-parameter tool with an output schema, the description is complete. It explains when to call, what behavior to expect around gaps, what the response contains, and how to interpret empty search results. Nothing essential is missing.

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 has zero parameters, so there are no parameter semantics to clarify. The schema coverage is complete and the description adds no unnecessary param information, matching the baseline for a no-parameter tool.

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 tool's purpose: declaring what the connector covers and, crucially, what it does not cover. It differentiates itself from siblings like sk_get_act and sk_get_text by focusing on coverage metadata rather than legal content retrieval.

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

Usage Guidelines4/5

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

The description gives explicit when-to-use instructions: call it before claiming the law 'does not contain' something and whenever a search returns empty. It does not explicitly mention when not to use it or compare with sibling tools, but the triggering conditions are unambiguous.

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

sk_get_actA
Read-onlyIdempotent

Fetch Slovak act metadata by year and number.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYese.g. ``2018``.
numberYese.g. ``18``.

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearNo
numberNo
eli_uriNo
citationNo
eli_noteNo
source_urlNo
dataset_noteNo
version_countNo
current_version_idNo
current_effective_fromNo
human_readable_citationNo

TDQS

A3.9/5.0
Behavior3/5

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

The description's 'Fetch' aligns with annotations (readOnlyHint=true, destructiveHint=false), and it adds no extra behavioral context beyond the purpose. Since annotations already cover the safety profile, the description earns the baseline score for not contradicting them.

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 a single concise sentence that front-loads the verb and resource. There is no wasted wording, making it easy to parse and appropriately sized.

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?

For a simple lookup tool with two parameters, full schema coverage, and an output schema, the description is sufficient. It clearly identifies what the tool does and how to target an act; return details are 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 for parameters is 100%, with each parameter having example descriptions. The description merely restates 'by year and number' without adding semantic detail beyond what the schema already provides, so it gets the baseline of 3.

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 uses a specific verb 'Fetch' with a clear resource 'Slovak act metadata' and specifies the lookup keys 'by year and number'. This clearly states what the tool does and distinguishes it from siblings like sk_get_text (text) and sk_get_versions (versions), even though alternatives are not named.

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 need metadata for a Slovak act and know the year and number. It does not explicitly mention when not to use it or point to alternatives, so the guidance is implied rather than stated.

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

sk_get_textB
Read-onlyIdempotent

Fetch the full text of a Slovak act (a consolidated version).

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYese.g. ``2018``.
numberYese.g. ``18``.
version_idNooptional - a date like ``"20240701"`` or ``"vyhlasene_znenie"`` (as-promulgated). Default: the current in-force version.

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearNo
formatNo
numberNo
contentNo
eli_uriNo
citationNo
eli_noteNo
byte_sizeNo
source_urlNo
version_idNo
dataset_noteNo
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, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the specific 'consolidated version' context, which is useful, but otherwise provides no additional behavioral details such as return format or pagination.

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, concise sentence that is front-loaded and contains no filler. Every word contributes meaning.

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 simple read-only fetch tool with a robust schema and output schema present, the description is adequate. It clearly states the tool's purpose, though it could have explicitly connected to sibling tools for fuller selection context.

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%, with all three parameters (year, number, version_id) documented. The description's reference to 'full text' and 'consolidated version' indirectly supports the version_id parameter, but the schema already carries the explanatory burden, so the description adds little beyond the baseline.

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 states the tool fetches the full text of a Slovak act, specifically a consolidated version. This is a clear verb+resource+scope pairing that distinguishes it from likely sibling operations, though it does not explicitly name alternatives.

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 given on when to use this tool versus alternatives like sk_get_versions or sk_get_act. The implied use case is present but there are no explicit context, exclusions, or alternative recommendations.

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

sk_get_versionsA
Read-onlyIdempotent

List the consolidated versions of a Slovak act.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYese.g. ``2018``.
numberYese.g. ``18``.

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYes
itemsNo
totalNo
numberYes
eli_uriNo
citationNo
dataset_noteNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, and the description's 'List' is consistent. The qualifier 'consolidated versions' adds some scope context, but the description does not reveal behavioral details like ordering, pagination, or empty-result handling. No contradiction with annotations.

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 a single, front-loaded sentence with no redundant wording. Every word contributes meaning, making it highly concise and easy to parse.

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 simple read-only list tool, the description combined with full parameter schema coverage, rich annotations, and an output schema provides sufficient information for correct invocation. The only notable gap is usage guidance relative to siblings, which is already captured under usage guidelines.

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?

The input schema provides 100% coverage for both parameters (year and number) with examples, so the description adds no additional parameter information. Baseline 3 is appropriate since the schema fully documents the parameters.

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 tool lists consolidated versions of a Slovak act, using a specific verb ('List') and a distinct resource ('consolidated versions'). This differentiates it from sibling tools sk_get_act and sk_get_text, which focus on act details or text.

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 sk_get_act or sk_get_text. There are no explicit alternatives, exclusions, or contextual conditions, leaving the agent to infer usage from sibling names alone.

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. 1 tool updatev0.3.3
    • Addedsk_coverage
  2. 3 tool updatesv0.2.1
    • First observedsk_get_act
    • First observedsk_get_text
    • First observedsk_get_versions

TDQS

A4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: listing versions, fetching metadata, retrieving text, and declaring coverage gaps. There is no meaningful overlap or ambiguity between the four tools.

Naming Consistency4/5

Three tools follow a consistent sk_get_* verb pattern, and all share the sk_ prefix. sk_coverage breaks the pattern by using a noun instead of a verb, making the set slightly less uniform.

Tool Count5/5

Four tools is well-scoped for a focused Slovak legal act retrieval connector. Each tool serves a distinct need without redundancy or unnecessary bloat.

Completeness5/5

The tool set covers the core lifecycle of accessing Slovak acts: retrieve act metadata, list consolidated versions, fetch full text, and know exactly what the connector does not cover. The explicit coverage tool fills potential gaps rather than leaving agents stranded.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

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

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/sk-eli-mcp'

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