Skip to main content
Glama

krs-mcp

npm npm downloads MCP Registry CI License: MIT Built by Soba Labs

An MCP server for the Polish KRS (Krajowy Rejestr Sądowy — National Court Register). It lets any MCP-capable AI client search Polish companies by name, KRS, NIP or REGON, and fetch official current and full registry extracts.

All four tools are read-only and require no API key, account, or configuration. KRS data is public record. Node.js 22.12 or later is required.

Tools

Tool

Inputs

Returns

search_companies

query (name or partial name) and/or krs, nip, regon; optional registries (array of registry types: P = entrepreneurs, S = associations; defaults to ["P", "S"], both searched), page, pageSize

Matching entities with their zero-padded 10-digit KRS numbers, city, registry, bankruptcy flag; paginated. Use this first to resolve a company name to a KRS number.

get_company

krs (1–10 digits, padding applied automatically), rejestr (P/S, default P)

Current official extract (odpis aktualny): identity, address, board, capital, PKD — as markdown

get_company_full

same as get_company

Full official extract (odpis pełny) as semantic JSON, preserving all historical entries. Much larger; prefer get_company unless you need history

get_board

same as get_company

Slim view of just the board, supervisory bodies and proxies (prokurenci)

Related MCP server: Rejestr.io MCP Server

How it works

  • Search uses an undocumented endpoint behind the Ministry of Justice's public search website, wyszukiwarka-krs.ms.gov.pl. The endpoint is not part of the documented KRS Open API and may change or reject programmatic access without notice.

  • Extracts (odpisy) come from the Ministry of Justice's official, keyless API at api-krs.ms.gov.pl.

  • Search results and current extracts are formatted as compact, LLM-friendly markdown. Full extracts remain semantic JSON so no historical entries are discarded.

  • Every successful result includes a second text block containing JSON provenance: the source URL, retrieval time, source-production time when supplied, and a description of krs-mcp's processing. The source services do not currently provide a separate production timestamp, so sourceProducedAt is null rather than inferred. The full extract remains parseable JSON in the first text block.

Reliability

Requests time out after 15 seconds. Network errors, HTTP 429 responses, and server errors are retried twice with short delays. Authentication or permission failures are returned immediately.

A daily GitHub Actions check verifies company-name search and the official extract API against a known public Soba Labs record. A contract change or access failure opens or updates one incident issue. Temporary upstream outages fail the check without creating an issue. Maintainers can also run npm run check:live manually.

GitHub may disable scheduled workflows in a public repository after 60 days without repository activity. If this repository becomes inactive, a maintainer must re-enable the workflow or run it manually.

The live check detects breakage; it does not make the undocumented search endpoint official or supported. A 403 requires human review. Maintainers and repair agents must not bypass new access controls automatically. The official extract tools remain usable if only name search breaks.

Setup

Claude Code / Codex / opencode-style clients

Add to your MCP configuration:

{
  "mcpServers": {
    "krs-mcp": {
      "command": "npx",
      "args": ["-y", "krs-mcp"]
    }
  }
}

From source

git clone https://github.com/soba-labs/krs-mcp.git
cd krs-mcp
npm install && npm run build

npm test is fully self-contained (synthetic fixtures, no network). Optionally, node scripts/fetch-test-fixtures.mjs refreshes ignored live captures for manual comparison with KRS 0001245101.

{
  "mcpServers": {
    "krs-mcp": {
      "command": "node",
      "args": ["<path-to-repo>/dist/index.js"]
    }
  }
}

Example workflow

  1. search_companies with "query": "allegro" → get the padded KRS number

  2. get_company with "krs": "0000245961" → current extract

  3. get_board with the same KRS → just the people

Need an MCP server for your own registry, CRM or internal data? Talk to Soba Labs.

Data reuse and privacy

The Ministry of Justice's public-sector information reuse conditions require users to identify the source, the time the information was produced and obtained, and any processing applied to it. krs-mcp adds those disclosure fields to every successful tool result and explicitly marks an unavailable source-production time as null. Downstream users remain responsible for preserving the required attribution and complying with applicable privacy and reuse rules.

krs-mcp sends requests only to the Ministry's KRS services. It has no telemetry and does not persist registry responses. Your MCP client may send tool output to its configured model provider; review that provider's privacy terms before processing personal data. The Ministry controls masking in the source responses, and krs-mcp does not independently redact fields in full extracts.

Disclaimer

This project is not affiliated with, endorsed by, or connected to the Polish Ministry of Justice (Ministerstwo Sprawiedliwości). Registry data is fetched from public government sources. Formatted tools transform or select fields as described above; full extracts are passed through as JSON. Provided without warranty of any kind.

License

MIT

Read more

Built by Soba Labs

krs-mcp is free and open source under the MIT license, built and maintained by Soba Labs, an AI-native software development agency that builds and operates production agentic systems. If you need an MCP server or an agent built on your own data, talk to Soba Labs or write to contact@sobalabs.ai.

Available Tools

4 tools
get_boardGet KRS board membersA
Read-only

List the board, supervisory bodies and proxies of a Polish company from its current KRS extract. Resolve the KRS number first with search_companies.

Inputs: krs (required), rejestr.

get_companyGet current KRS extractA
Read-only

Fetch the CURRENT (aktualny) official extract of a Polish company from the KRS registry by its 1-10 digit KRS number. Returns identity, address, board, capital and PKD as markdown.

Inputs: krs (required), rejestr.

get_company_fullGet full KRS extractA
Read-only

Fetch the FULL (pelny) official semantic JSON extract of a Polish company from the KRS registry by its 1-10 digit KRS number. Preserves all historical entries. Much larger than the current extract; use get_company unless history is needed.

Inputs: krs (required), rejestr.

search_companiesSearch the KRS registryA
Read-only

Search Polish companies in the KRS (National Court Register) by name or partial name ("query"), KRS, NIP or REGON. Returns matching entities with their padded 10-digit KRS numbers — use this FIRST to resolve a company name to a KRS number before calling get_company / get_company_full / get_board.

Inputs: krs, nip, name, page, +5 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.1/5.0

    Scored across 4 tools

    Disambiguation4/5

    search_companies is clearly a resolver, and get_company vs get_company_full are distinguished by current vs historical and markdown vs JSON output. get_board overlaps noticeably with get_company, which already returns the board, though the description hints at extra supervisory-body/proxy detail.

    Naming Consistency5/5

    All four names are lowercase snake_case following a verb_noun pattern (search_companies, get_company, get_board). The _full suffix on get_company_full is a readable, predictable variant rather than a convention break.

    Tool Count5/5

    Four tools is a tight, well-scoped surface for a registry lookup server: one resolver plus three targeted retrieval variants. Nothing feels redundant or padded.

    Completeness4/5

    Core lifecycle is covered: search by name/KRS/NIP/REGON, current extract, full historical extract, and board data. Minor gaps remain—no shareholder/beneficial-owner or financial-statement retrieval, and search lacks PKD/address filtering—but agents can work around these.

    Maintenance

    ActivityActive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      MCP server providing AI assistants access to Polish public registries (KRS, CEIDG) and statistical data (GUS BDL) for querying companies, sole proprietorships, and regional statistics.
      7
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Provides access to Poland's largest business registry database, enabling company search, beneficiary checks, and financial document retrieval via natural language.
      1
      -
    • A
      license
      Not graded
      quality
      C
      maintenance
      MCP server for verifying Polish business entities from the National Court Register (KRS) and VAT White List. Allows querying by KRS, NIP, or REGON to retrieve official company data including name, address, board, and capital.
      Apache 2.0