mcp-isap
This server lets you search and retrieve Polish legislation (Dziennik Ustaw and Monitor Polski) via the official Sejm ELI API.
search_acts – search 96,000+ Polish legal acts from 1918 to today by title fragment, year, publisher (DU/MP), act type, in-force status, and result limit.
get_act – fetch full metadata for a specific act using its ELI identifier (e.g.
DU/2018/1000): title, type, status, entry into force, keywords, links to HTML/PDF and ISAP page.get_act_text – retrieve the act's plain text (paginated in 5000-character chunks), with optional search_text to jump to a fragment; consolidated vs promulgated wording is indicated, and PDF-only acts return a helpful error with links.
Every response includes structured citation metadata (
title,url,eli,display_address, publisher, year, document type, status, in-force, promulgation) suitable for legal-agent citation panels.
mcp-isap
Installation (one command)
Published on npm + MCP Registry (io.github.matematicsolutions/mcp-isap). Run without cloning:
npx -y @matematicsolutions/mcp-isapMCP client configuration (stdio):
{ "mcpServers": { "mcp-isap": { "command": "npx", "args": ["-y", "@matematicsolutions/mcp-isap"] } } }(Building from source - below.)
MCP server for Polish legislation - Dziennik Ustaw (Journal of Laws, DU) + Monitor Polski (MP)
via the official Sejm ELI API (api.sejm.gov.pl/eli).
Related MCP server: mcp-nsa
Why
mcp-saos (general courts) + mcp-nsa (administrative) + mcp-eu-sparql (EU)
cover the case-law side. mcp-isap adds legislation - statutes, regulations,
official announcements, international agreements. This closes the triad:
STATUTE + CASE LAW + EU LAW
↓ ↓ ↓
ISAP SAOS+NSA EUR-Lex
↓ ↓ ↓
law firm asks about GDPR
→ 4 connectors in parallel
→ 4 citation sections in the panelCoverage: 96,000+ acts from 1918 to today. Full ELI support (European Legislation Identifier).
Tools
search_acts(title?, year?, publisher?, type?, in_force?, limit?)- search by title fragment / year / publisher / act type / in-force status.publisher:DU(Dziennik Ustaw) orMP(Monitor Polski).get_act(eli)- act details by ELI (DU/2018/1000). Returns title, type, status, entry into force, keywords, links to HTML/PDF text and the ISAP page.get_act_text(eli, page?, search_text?)- the act's plain text (no HTML tags), paginated at 5000 characters per page. IteratepagewhilestructuredContent.pagination.has_moreis true, or passsearch_text(e.g."Art. 118.") to get the fragment around the first hit in one call.structuredContent.text_versionsays whether this is a consolidated text or the wording as promulgated - Sejm ELI serves the original wording for base acts, so for the law in force fetch the newest consolidated-text announcement listed inconsolidated_text_eli. Acts published only as PDF return thetext_unavailable_use_pdferror with links, never prose standing in for the provision.
Every response includes structuredContent.citations with fields:
title, url (ISAP UI), eli, display_address (Dz.U. 2018 poz. 1000),
publisher, year, document_type, status, in_force, promulgation.
Patron reads this field automatically and renders it in the UI panel as the section "Polish legal acts (Dz.U. / M.P. - Sejm ELI)".
Stack
Node 18+ (built-in
fetch)@modelcontextprotocol/sdkStdio transport
500 ms throttle between requests (2 req/s)
No scraping - pure REST JSON API
Build + run
npm install
npm run build
node dist/index.jsWiring into Patron
In patron/backend/mcp-servers.json:
{
"name": "isap",
"transport": "stdio",
"command": "node",
"args": ["C:/Users/<YOUR-USER>/mcp-isap/dist/index.js"],
"enabled": true
}Smoke test
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"s","version":"0"}}}
{"jsonrpc":"2.0","method":"notifications/initialized"}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_act","arguments":{"eli":"DU/2018/1000"}}}' \
| node dist/index.jsShould return the Personal Data Protection Act of 10 May 2018,
status IN_FORCE, a link to ISAP and a structured citation.
Lineage
API contract derived from legal-data-hunter/sources/PL/DziennikUrzedowy
(Python + REST, MIT). TS implementation from scratch - no source code imported.
License
MIT.
Part of MateMatic
This connector queries its source live. It is one of the Polish and EU source connectors bundled in PATRON and works with any MCP client.
Poland, one server for all sources: prawo-pl-mcp · each source on its own: mcp-saos · mcp-nsa · mcp-isap (this repo) · mcp-krs · mcp-eureka · kio-orzeczenia-mcp
European Union: mcp-eu-sparql (live) · mcp-eu-compliance (offline corpus)
A prepared corpus of Polish and EU law with a citation graph: Repertorium
mcp-saos, mcp-nsa, mcp-isap, mcp-krs and mcp-eu-sparql share one structuredContent.citations
contract: each tool returns an array of {title, url, snippet?, ...metadata}
that legal agents can render directly in their citation panel.
See matematicsolutions/.github for the full org profile.
Available Tools
3 toolsget_actARead-onlyIdempotent
Pobiera szczegoly aktu po identyfikatorze ELI (np. 'DU/2018/1000' dla Ustawy o ochronie danych osobowych z 2018 r.). Zwraca pelne metadane: tytul, typ, status obowiazywania, wejscie w zycie, slowa kluczowe, linki do tekstu HTML/PDF i strony ISAP.
Inputs: eli (required).
get_act_textARead-onlyIdempotent
Pobiera tekst aktu w formacie HTML (jesli dostepny). Zwraca pierwsze 5000 znakow czystego tekstu (bez tagow) plus link do pelnego HTML/PDF. Uzywaj po get_act zeby ocenic czy akt jest tym, czego szuka uzytkownik.
Inputs: eli (required).
search_actsARead-onlyIdempotent
Wyszukiwanie aktow prawa polskiego (Dziennik Ustaw + Monitor Polski) przez oficjalne Sejm ELI API. Pokrycie: 96 000+ aktow od 1918. Filtry: fragment tytulu, rok, publisher (DU/MP), typ aktu, status obowiazywania. Bledy: upstream_error.
Inputs: type, year, limit, title, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 3 tools
Each tool has a distinct purpose: get_act retrieves metadata by ID, get_act_text gets content, and search_acts performs filtered search. No overlap or ambiguity.
All tools follow a consistent verb_noun pattern in snake_case (get_act, get_act_text, search_acts), making it predictable.
Three tools is minimal but appropriate for a focused read-only legal lookup service. Could potentially include more, but the count is reasonable.
Covers the core workflow: search, get metadata, get text. Minor gaps like batch operations or version history, but sufficient for the stated purpose.
Maintenance
Related MCP Connectors
Polish statutes (Dziennik Ustaw, ELI) and court rulings (SAOS) for AI agents. Runs on Apify.
Japan Law MCP — Japanese national laws & ordinances via the e-Gov Law API.
EUR-Lex MCP — official EU law, article-level.
Polish and EU law: statutes, rulings, UODO/UOKiK/KNF, EU regulations, citation checks. Free tier.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables 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.1323MIT
- AlicenseAqualityCmaintenanceMCP server for Polish administrative case-law (NSA + regional administrative courts, CBOSA) with ECLI and verifiable citations.3111 npmMIT
- AlicenseAqualityBmaintenanceMCP server for EU law via the EUR-Lex / Cellar SPARQL endpoint — legislation (ELI/CELEX) and CJEU case-law (ECLI) with verifiable citations.3123 npm1MIT
- AlicenseAqualityDmaintenanceMCP server for querying live Polish court case law (orzecznictwo) via the SAOS API, offering tools to search judgments, fetch full cases, find judgments citing specific statutory provisions, and check Constitutional Tribunal citations.7Apache 2.0