Back to Browse

Prawo Pl MCP Server

Developer ToolsUse Caution4.8MCP RegistryLocal
Free

Server data from the Official MCP Registry

One MCP server for Polish legal data - courts, legislation, KRS, tax, KIO, UODO via 4 unified tools

About

One MCP server for Polish legal data - courts, legislation, KRS, tax, KIO, UODO via 4 unified tools

Security Report

4.8
Use Caution4.8High Risk

prawo-pl-mcp is a well-architected MCP aggregator server with solid security practices. It implements proper error handling, structured error codes, and maintains a clean separation between the aggregator and external connectors spawned as subprocesses. No authentication is required for local stdio operation (appropriate for developer tools), though optional API key support is provided for remote/ASGI deployment. The server's permissions (subprocess spawning, network access, file I/O for audit logs) are appropriate for its purpose as a legal data aggregator. Supply chain analysis found 5 known vulnerabilities in dependencies (1 critical, 3 high severity). Package verification found 1 issue.

7 files analyzed · 11 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

env_vars

Check that this permission is expected for this type of plugin.

HTTP Network Access

Connects to external APIs or services over the internet.

File System Read

Reads files on your machine. Normal for tools that analyze or process local data.

File System Write

Writes or modifies files on your machine. Check that this is expected for the tool.

process_spawn

Check that this permission is expected for this type of plugin.

system_info

Check that this permission is expected for this type of plugin.

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-matematicsolutions-prawo-pl-mcp": {
      "args": [
        "prawo-pl-mcp"
      ],
      "command": "uvx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

prawo-pl-mcp

One MCP server for Polish legal data.

Ten independent connectors - case law, legislation, the company register, tax rulings, public procurement, data-protection decisions, plus EU extras - behind four tools. Each connector stays a separate package with its own repository; this server spawns them on demand and translates between their conventions.

"Prawo" is Polish for "law"; the name follows yargi-mcp's move of naming a country server in its own language.

Why an aggregator

The connectors cover Polish legal data well, but as separate MCP servers, one per database - ten installs and ten config entries before the first question. yargi-mcp showed the fix for Turkish law: 16 institutions, one server. prawo-pl-mcp does the same for Poland:

  • Four tools instead of 42. pl_list_sources, pl_search, pl_get_document, pl_call - fewer tool schemas means less context spent before the LLM starts working.
  • One convention. The connectors grew organically: dateFrom here, date_from there, pages counted from 0 or from 1 depending on the repo. Here page is always 1-based and dates are always date_from/date_to (YYYY-MM-DD); the translation happens inside.
  • Nothing preinstalled. Connectors run as subprocesses via npx -y / uvx, downloaded on the first call to a given source and kept alive afterwards. A source that cannot start reports a readable error while the rest keep working.
  • Paginated documents. Full judgment and act texts are chunked at ~5000 characters per page (yargi-mcp's pattern), so a 200-page ruling does not flood the context window.

Coverage

Source idWhatInstitution / databaseConnectorRuntime
saosCase law: common courts, Supreme Court, Constitutional Tribunal + citatorSAOSmcp-saosnpx
nsaCase law: administrative courts (NSA + 16 WSA)CBOSAmcp-nsanpx
isapLegislation: Dziennik Ustaw + Monitor Polski, 96k+ actsSejm ELI APImcp-isapnpx
krsCompany register: extracts, history, board compositionKRS API (Ministry of Justice)mcp-krsnpx
eurekaTax rulings: 550k+ individual interpretationsEUREKA (Ministry of Finance)mcp-eurekanpx
kioPublic procurement: National Appeal Chamber rulingsorzeczenia.uzp.gov.plkio-orzeczenia-mcpuvx
uodoGDPR enforcement: Polish DPA decisions, fines, statsorzeczenia.uodo.gov.pluodo-orzeczenia-mcpuvx
eu-sparqlEU law: EUR-Lex by CELEX, CJEU by ECLI, GDPRhubCellar SPARQLmcp-eu-sparqlnpx
eu-compliance14 EU regulations offline (GDPR, AI Act, DORA, NIS2...)Local SQLite corpusmcp-eu-compliancenpx
legalizeLaw-as-git: 32 jurisdictions, versioned by commitlegalize-devlegalize-mcpuvx

Polish sources are tagged group: pl, EU extras group: eu - filter with pl_list_sources(group="pl").

Tools

ToolWhat it does
pl_list_sourcesCatalog of sources (no subprocess spawned). With source_id: live tool schemas of one connector.
pl_searchSearch any source with normalized parameters; source-specific filters via extra.
pl_get_documentFull document by identifier (judgment id, ELI, KRS number, signature...), paginated.
pl_callAny native tool of any connector: citator, DPA statistics, board composition, regulation comparison...

The typical flow an LLM follows (spelled out in the server's instructions): pl_list_sourcespl_searchpl_get_document, with pl_call for the specialized tools each connector brings.

Install

Requires Python ≥ 3.11 plus the runtimes of the sources you use: Node.js ≥ 18 for npx sources, uv for uvx sources. If a runtime is missing, its sources report source_unavailable and the rest work.

Claude Code

claude mcp add pl-legal -- uvx prawo-pl-mcp

Claude Desktop / any MCP client (stdio)

{
  "mcpServers": {
    "pl-legal": {
      "command": "uvx",
      "args": ["prawo-pl-mcp"]
    }
  }
}

Remote (Streamable HTTP)

uvicorn prawo_pl_mcp.asgi:app --host 0.0.0.0 --port 8000

Open by default (public, read-only data). Set PRAWO_PL_MCP_API_KEY to require X-API-Key: <key> or Authorization: Bearer <key> on every request.

Configuration

EnvDefaultMeaning
PRAWO_PL_MCP_CMD_<ID>-Override the spawn command for a source, e.g. PRAWO_PL_MCP_CMD_SAOS="node C:/dev/mcp-saos/dist/index.js" for a local checkout. <ID> = source id, uppercase, -_.
PRAWO_PL_MCP_INIT_TIMEOUT180Seconds allowed for a connector's first start (includes package download).
PRAWO_PL_MCP_TIMEOUT90Seconds per tool call after startup.
PRAWO_PL_MCP_AUDIT_DIR~/.matematic/auditWhere the JSONL audit log goes.
PRAWO_PL_MCP_API_KEY-ASGI mode only: require this API key (dual-channel).

Architecture

The aggregator is a thin proxy (ADR 0001). Connectors are not imported, vendored or forked; the aggregator speaks MCP to them over stdio the same way any client would. The whole layer is a source registry (one dataclass entry per connector), a lazy subprocess pool, a parameter translator and a paginator. Adding a source means adding a registry entry.

LLM client ──MCP──▶ prawo-pl-mcp ──MCP/stdio──▶ npx @matematicsolutions/mcp-saos
                        │         ──MCP/stdio──▶ uvx kio-orzeczenia-mcp
                        │         ──MCP/stdio──▶ ... (spawned on first use)
                        └─ registry + param mapping + 5000-char pagination

Every call lands in a JSONL audit log (timestamp, tool, source, parameter hash, latency - never document content).

Known issues

The kio connector (public procurement) currently returns zero results for every query - the upstream site changed and its scraper needs a fix. Tracked in kio-orzeczenia-mcp; the aggregator passes through whatever that connector returns.

Development

git clone https://github.com/matematicsolutions/prawo-pl-mcp && cd prawo-pl-mcp
uv sync --extra dev
uv run pytest          # offline tests: registry, dispatch mapping, pagination, drift
uv run prawo-pl-mcp    # stdio server

License

Apache-2.0. Individual connectors carry their own licenses (MIT or Apache-2.0), their own rate limits and their own terms toward upstream databases - the aggregator adds no caching and no transformation beyond pagination, so each connector's constraints apply unchanged.

Reviews

No reviews yet

Be the first to review this server!

Prawo Pl MCP Server - One MCP server for Polish legal data - courts, legislation, | MCP Marketplace