{
  "markdown": "# mcp-isap\n\n## Installation (one command)\n\nPublished on npm + MCP Registry (`io.github.matematicsolutions/mcp-isap`). Run without cloning:\n\n```bash\nnpx -y @matematicsolutions/mcp-isap\n```\n\nMCP client configuration (stdio):\n\n```json\n{ \"mcpServers\": { \"mcp-isap\": { \"command\": \"npx\", \"args\": [\"-y\", \"@matematicsolutions/mcp-isap\"] } } }\n```\n\n(Building from source - below.)\n\n[![MCP](https://img.shields.io/badge/MCP-Server-blue)](https://modelcontextprotocol.io) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE) [![Node](https://img.shields.io/badge/Node-18%2B-brightgreen)](https://nodejs.org)\n\nMCP server for **Polish legislation** - Dziennik Ustaw (Journal of Laws, DU) + Monitor Polski (MP)\nvia the official **Sejm ELI API** (`api.sejm.gov.pl/eli`).\n\n## Why\n\n`mcp-saos` (general courts) + `mcp-nsa` (administrative) + `mcp-eu-sparql` (EU)\ncover the case-law side. **`mcp-isap` adds legislation** - statutes, regulations,\nofficial announcements, international agreements. This closes the triad:\n\n```\nSTATUTE + CASE LAW + EU LAW\n   ↓         ↓          ↓\n  ISAP    SAOS+NSA   EUR-Lex\n   ↓         ↓          ↓\n        law firm asks about GDPR\n        → 4 connectors in parallel\n        → 4 citation sections in the panel\n```\n\nCoverage: **96,000+ acts** from 1918 to today. Full ELI support\n(European Legislation Identifier).\n\n## Tools\n\n- **`search_acts(title?, year?, publisher?, type?, in_force?, limit?)`** -\n  search by title fragment / year / publisher / act type /\n  in-force status. `publisher`: `DU` (Dziennik Ustaw) or `MP`\n  (Monitor Polski).\n- **`get_act(eli)`** - act details by ELI (`DU/2018/1000`).\n  Returns title, type, status, entry into force, keywords,\n  links to HTML/PDF text and the ISAP page.\n- **`get_act_text(eli, page?, search_text?)`** - the act's plain text (no HTML\n  tags), paginated at 5000 characters per page. Iterate `page` while\n  `structuredContent.pagination.has_more` is true, or pass `search_text`\n  (e.g. `\"Art. 118.\"`) to get the fragment around the first hit in one call.\n  `structuredContent.text_version` says whether this is a consolidated text or\n  the wording **as promulgated** - Sejm ELI serves the original wording for base\n  acts, so for the law in force fetch the newest consolidated-text announcement\n  listed in `consolidated_text_eli`. Acts published only as PDF return the\n  `text_unavailable_use_pdf` error with links, never prose standing in for the\n  provision.\n\nEvery response includes `structuredContent.citations` with fields:\n`title`, `url` (ISAP UI), `eli`, `display_address` (`Dz.U. 2018 poz. 1000`),\n`publisher`, `year`, `document_type`, `status`, `in_force`, `promulgation`.\n\nPatron reads this field automatically and renders it in the UI panel as the section\n**\"Polish legal acts (Dz.U. / M.P. - Sejm ELI)\"**.\n\n## Stack\n\n- Node 18+ (built-in `fetch`)\n- `@modelcontextprotocol/sdk`\n- Stdio transport\n- 500 ms throttle between requests (2 req/s)\n- No scraping - pure REST JSON API\n\n## Build + run\n\n```bash\nnpm install\nnpm run build\nnode dist/index.js\n```\n\n## Wiring into Patron\n\nIn `patron/backend/mcp-servers.json`:\n\n```json\n{\n  \"name\": \"isap\",\n  \"transport\": \"stdio\",\n  \"command\": \"node\",\n  \"args\": [\"C:/Users/<YOUR-USER>/mcp-isap/dist/index.js\"],\n  \"enabled\": true\n}\n```\n\n## Smoke test\n\n```bash\necho '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"s\",\"version\":\"0\"}}}\n{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}\n{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/call\",\"params\":{\"name\":\"get_act\",\"arguments\":{\"eli\":\"DU/2018/1000\"}}}' \\\n  | node dist/index.js\n```\n\nShould return the Personal Data Protection Act of 10 May 2018,\nstatus `IN_FORCE`, a link to ISAP and a structured citation.\n\n## Lineage\n\nAPI contract derived from [`legal-data-hunter/sources/PL/DziennikUrzedowy`](https://github.com/worldwidelaw/legal-sources)\n(Python + REST, MIT). TS implementation from scratch - no source code imported.\n\n## License\n\nMIT.\n\n## Part of the MateMatic legal stack\n\nThis server is one of five MCP connectors covering Polish jurisdiction +\nEU law, used by [Patron](https://github.com/matematicsolutions/patron)\n(AGPL-3.0) and any other MCP-aware legal AI agent.\n\n- **mcp-isap** (this repo) - Polish legislation (Dz.U. + M.P. via Sejm ELI)\n- [mcp-saos](https://github.com/matematicsolutions/mcp-saos) - common courts, SN, TK, KIO\n- [mcp-nsa](https://github.com/matematicsolutions/mcp-nsa) - NSA + 16 WSA administrative courts\n- [mcp-krs](https://github.com/matematicsolutions/mcp-krs) - Polish company registry (KRS)\n- [mcp-eu-sparql](https://github.com/matematicsolutions/mcp-eu-sparql) - EU law + CJEU (EUR-Lex)\n\n\nAll five MCP servers share the same `structuredContent.citations`\ncontract: each tool returns an array of `{title, url, snippet?, ...metadata}`\nthat legal agents can render directly in their citation panel.\n\nSee [matematicsolutions/.github](https://github.com/matematicsolutions)\nfor the full org profile.\n",
  "bytes": 4996,
  "sha": "1b5a3acd24e1be7ca680bb33b3f86d3e75986b151efb0ffd7c3cd13d53ed70f3",
  "repo_slug": "matematicsolutions/mcp-isap",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_matematicsolutions_mcp_isap_5f3836c4/readme"
}