mcp-krs
Instalacja (jedna komenda)
Opublikowany na npm + MCP Registry (io.github.matematicsolutions/mcp-krs). Uruchomienie bez klonowania:
npx -y @matematicsolutions/mcp-krs
Konfiguracja klienta MCP (stdio):
{ "mcpServers": { "mcp-krs": { "command": "npx", "args": ["-y", "@matematicsolutions/mcp-krs"] } } }
(Budowanie ze źródeł — niżej.)
MCP server dla Krajowego Rejestru Sądowego przez oficjalne, darmowe
API Ministerstwa Sprawiedliwości (api-krs.ms.gov.pl/api/krs).
Po co
Kancelaria pyta o kontrahenta → Patron zwraca pełne dane rejestrowe: nazwa, forma prawna, NIP, REGON, adres, kapitał, skład zarządu, sposób reprezentacji, prokurenci, główny PKD, status (aktywny / likwidacja / upadłość). Plus URL do wyszukiwarki MS.
Krytyczne dla pracy nad umowami: pytanie „czy ta osoba może sama
podpisać tę umowę za spółkę X" sprowadza się do dwóch ruchów —
krs__get_board z numerem KRS, potem porównanie sposobu reprezentacji
ze stroną podpisującą.
Tooly
get_entity(krs, rejestr?)— odpis aktualny (pełne dane podmiotu).get_entity_full(krs, rejestr?)— odpis pełny (z historią wpisów).get_board(krs, rejestr?)— skrócona: tylko reprezentacja (sposób + skład) + prokurenci.
Parametry:
krs— 1-10 cyfr, zera wiodące dopełniane automatycznie (28860→0000028860).rejestr—P(przedsiębiorców, default) lubS(stowarzyszeń).
Każda zwrotka zawiera structuredContent.citations z polami:
title, url (MS wyszukiwarka), krs, nazwa, nip, regon,
forma_prawna, status, miejscowosc, sad_rejestrowy, rejestr.
Patron czyta pole automatycznie i wystawia w panelu UI jako sekcję „Krajowy Rejestr Sądowy (KRS — MS)".
Stack
- Node 18+ (wbudowany
fetch) @modelcontextprotocol/sdk- Stdio transport
- Throttle 500 ms (2 req/s) — MS API tolerancyjne ale grzecznie
Build + uruchomienie
npm install
npm run build
node dist/index.js
Wpięcie do Patrona
W patron/backend/mcp-servers.json:
{
"name": "krs",
"transport": "stdio",
"command": "node",
"args": ["C:/Users/<TWOJ-UZYTKOWNIK>/mcp-krs/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_board","arguments":{"krs":"28860"}}}' \
| node dist/index.js
Powinno zwrócić ORLEN SA, sposób reprezentacji „dwaj członkowie zarządu działający łącznie", skład zarządu, prokurenci + URL.
Uwagi RODO
API MS w odpowiedziach zwraca zamaskowane dane osobowe członków zarządu (gwiazdki w nazwiskach po nowelizacji 2023). Patron przepuszcza to surowo, nie demaskuje. Dla pełnych nazwisk: użytkownik kancelarii otwiera link MS w przeglądarce po zalogowaniu.
Lineage
Kontrakt API z oficjalnej dokumentacji MS api-krs.ms.gov.pl. Implementacja TS od zera.
Licencja
MIT.
Part of the MateMatic legal stack
This server is one of five MCP connectors covering Polish jurisdiction + EU law, used by Patron (AGPL-3.0) and any other MCP-aware legal AI agent.
- mcp-krs (this repo) — Polish company registry (official MS API)
- mcp-saos — common courts, SN, TK, KIO
- mcp-nsa — NSA + 16 WSA administrative courts
- mcp-isap — Polish legislation (Dz.U. + M.P.)
- mcp-eu-sparql — EU law + CJEU (EUR-Lex)
All five MCP servers share the same 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.