Skip to main content
Glama
emilpinski

mcp-polish-data

by emilpinski

mcp-polish-data

CI

Status

MCP Server with Polish public data — KRS, CEIDG, GUS BDL for Claude, Cursor, and Windsurf.

Landing page

What is it

A Model Context Protocol (MCP) server that gives AI assistants direct access to Polish government registries and GUS statistics without leaving the chat. Install once, and Claude or Cursor automatically knows how to look up companies in KRS, verify sole traders in CEIDG, and retrieve regional statistics from GUS BDL.

MIT licensed, no API key required.

Related MCP server: krs-verify

Features

  • KRS — look up a company by NIP (via VAT Whitelist — KRS API doesn't support name search), retrieve full extract by 9 or 10-digit KRS number

  • CEIDG — search sole trader businesses by name, NIP, REGON, or owner surname

  • GUS BDL — population by voivodeship, unemployment rate, average gross salary, statistical variable discovery

  • VAT Whitelist (Biala Lista MF) — verify taxpayer VAT status (active/exempt/deregistered), registered bank accounts, SHA-256 response hash for audit trail

  • NIP / REGON / PESEL validation — checksum verification with no API calls; PESEL also extracts date of birth and gender (flagged PII-sensitive)

  • SQLite caching — transparent response cache with per-tool TTL (KRS/CEIDG: 7 days, GUS: 30 days, VAT: 1 day); validation tools are never cached

  • Retry with exponential backoff — handles 429 (respects Retry-After header) and 5xx errors with up to 3 attempts and jitter

  • Graceful degradation — when CEIDG requires a JWT token, the server provides a helpful message instead of crashing

  • Zero configuration — single pip install, no API keys required for basic functions

  • Python 3.11+ — async/await, httpx, FastMCP 2.0

Stack

Layer

Technology

Protocol

Model Context Protocol (MCP)

Framework

FastMCP 2.0

HTTP

httpx (async)

Python

3.11+

Build

Hatchling

Tests

pytest, pytest-asyncio

License

MIT

Getting Started

pip install mcp-polish-data

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "polish-data": {
      "command": "mcp-polish-data"
    }
  }
}

Restart Claude Desktop — tools will appear automatically.

Cursor / Windsurf

git clone https://github.com/emilpinski/mcp-polish-data
cd mcp-polish-data
pip install -e ".[dev]"
pytest tests/ -v -m "not integration"

Available Tools

Tool

Description

krs_search_company(nip)

Search company by NIP (via VAT Whitelist — KRS API doesn't support name search)

krs_get_company_details(krs_number)

Full extract for a 9 or 10-digit KRS number

ceidg_search_business(name, nip, regon, surname)

Search sole traders in CEIDG

gus_get_population(unit_name, year)

Population by voivodeship

gus_get_unemployment_rate(year)

Unemployment rate by voivodeship

gus_get_average_salary(year)

Average gross salary by voivodeship

gus_search_variable(query)

Discover statistical variables in GUS BDL

vat_whitelist_check(nip, check_date)

Check VAT taxpayer status in MF Biala Lista — returns VAT status, registered bank accounts, response hash for audit

validate_nip_number(nip)

Validate NIP checksum — pure local computation, no API calls

validate_regon_number(regon)

Validate REGON checksum (9 or 14 digits) — pure local computation, no API calls

validate_pesel_number(pesel)

Validate PESEL checksum and extract date of birth and gender (PII-sensitive, GDPR applies)

batch_company_lookup(nips)

Look up up to 50 companies by NIP simultaneously — returns name, VAT status, KRS number, REGON per NIP. Results cached 7 days.

cache_stats_info()

Show SQLite cache statistics: total entries, per-tool breakdown, hits in last 24h

Environment Variables

Variable

Description

Required

CEIDG_TOKEN

JWT token for advanced CEIDG endpoints

optional

Example Prompts

  • "Look up NIP 5270103391 and tell me the company name and address"

  • "Compare the unemployment rate in 2023 across all voivodeships"

  • "What is the average salary in Pomerania vs Masovia?"

  • "Find all CEIDG sole traders with surname Kowalski in Kraków"

Status

Live — mcp-polish-data.vercel.app | PyPI: mcp-polish-data


Built by Emil Piński

Screenshots

Landing page and documentation API endpoints overview

Available Tools

7 tools
ceidg_search_businessA

Szukaj przedsiębiorcy (jednoosobowej działalności gospodarczej) w CEIDG.

Użyj gdy użytkownik pyta o JDG, freelancera, osobę fizyczną prowadzącą działalność gospodarczą. Dla spółek użyj krs_search_company.

Wymaga co najmniej jednego z: name, nip, regon, surname.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNonazwa firmy
nipNonumer NIP (10 cyfr)
regonNonumer REGON (9 lub 14 cyfr)
surnameNonazwisko przedsiębiorcy
max_itemsNomaksymalna liczba wyników

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries burden. It mentions requirements but does not disclose behavioral traits like auth, rate limits, or what happens with invalid input. However, it does specify the tool is for searching and expects at least one parameter, which is basic behavioral info.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise with three sections, but the first line is in Polish while sibling tools are in English. Could be shorter by removing repetition, but it's well-structured and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 params, simple search), no output schema needed since search results are standard. Description covers purpose, usage, requirements, and sibling distinction, making it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by stating that at least one of the four core parameters is required, which is not in schema. It also groups name, nip, regon, surname as the required ones, enhancing parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches for sole proprietorships in CEIDG, using specific verbs 'Szukaj' and specifying the resource 'przedsiębiorcy (jednoosobowej działalności gospodarczej)'. It also distinguishes from sibling tool krs_search_company, which is for companies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use this tool (JDG, freelancer) and when not (spółki, use krs_search_company). It also specifies required parameters: at least one of name, nip, regon, surname.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gus_get_average_salaryB

Pobierz przeciętne miesięczne wynagrodzenie brutto dla województw z GUS BDL.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNorok (domyślnie 2023)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must carry the entire burden. It correctly implies a read-only data retrieval operation, but does not disclose whether it requires authentication, rate limits, or data freshness (e.g., if only one year is available). It's adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that clearly communicates the purpose. It is front-loaded but uses a non-standard term 'Pobierz' which may or may not be universally understood; however, it's efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no nested objects, has output schema), the description is mostly adequate. However, it could mention that the output schema exists and note any regional coverage limitations (e.g., only for Polish voivodeships). The context signals show low complexity, so a moderate score is fair.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (one parameter 'year' with default and Polish description). The description adds 'domyślnie 2023' which is already in the schema default, and does not provide additional meaning beyond that. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Pobierz' (download/get) and clearly states the resource: 'przeciętne miesięczne wynagrodzenie brutto dla województw z GUS BDL'. This distinguishes it from sibling tools which retrieve population, unemployment, or search variables/companies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. It doesn't state any prerequisites, limitations, or when it would be inappropriate compared to other tools like 'gus_get_unemployment_rate' or 'gus_search_variable'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gus_get_populationA

Pobierz dane demograficzne (ludność) z GUS BDL.

Domyślnie zwraca ludność wszystkich 16 województw na 31 XII danego roku. Podaj unit_name (np. "Mazowieckie") aby zawęzić wyniki.

ParametersJSON Schema
NameRequiredDescriptionDefault
unit_nameNonazwa województwa (opcjonalnie)
yearNorok (domyślnie 2023)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the default return set (all voivodeships) and the year default, which gives agents a good behavioral understanding. However, it does not mention potential limitations or error cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise (three sentences) with the most important information front-loaded. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only 2 optional parameters, high schema coverage, and an output schema (not shown but present), the description is complete enough. It covers purpose, default behavior, and how to use the optional parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the effect of unit_name (to filter results) and the default for year. It also gives a concrete example for unit_name, which enhances understanding beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches demographic (population) data from GUS BDL, with a specific verb ("Pobierz") and resource (ludność z GUS BDL). It distinguishes from sibling tools like gus_get_average_salary and gus_get_unemployment_rate by explicitly mentioning population as the data type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the default behavior (all 16 voivodeships) and how to narrow results using the unit_name parameter. It does not explicitly mention when not to use it or contrast with siblings, but the context is clear enough for an agent to decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gus_get_unemployment_rateA

Pobierz stopy bezrobocia rejestrowanego dla 16 województw z GUS BDL.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNorok (domyślnie 2023)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavioral traits. Description implies this is a read operation retrieving data. It does not mention any destructive actions, authentication, or rate limits. However, it's a simple retrieval with one parameter, so the risk is low. A 3 is adequate given no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence that conveys essential information. No wasted words. Front-loaded with key verb 'Pobierz' (retrieve) and object.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is simple (one optional parameter, output schema present), the description covers the main purpose. It could mention that data is for Poland and specifies the granularity (16 voivodeships). Output schema likely describes return structure, so description need not detail return values. High completeness for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (one parameter 'year' with description and default). The description adds no extra meaning to the parameter beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states Polish and English: retrieves registered unemployment rates for 16 voivodeships from GUS BDL. It's specific about resource (unemployment rate), scope (16 voivodeships), and source (GUS BDL), distinguishing it from siblings like average salary or population.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool vs siblings. Context implies it's for unemployment rate data. No guidance on when not to use it or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gus_search_variableA

Szukaj zmiennej statystycznej w GUS BDL po fragmencie nazwy.

Użyj gdy potrzebujesz wskaźnika którego nie ma w dedykowanych narzędziach (np. "emisja CO2", "liczba lekarzy", "turystyka").

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesfragment nazwy zmiennej
page_sizeNoliczba wyników

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so description bears full burden. It indicates the tool searches by name fragment (query param) and returns results (page_size), but does not clarify behavioral aspects like pagination behavior, sorting, or error handling (e.g., what if no results?). It does not mention authentication needs or rate limits. Acceptable for a search tool but could be more transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is extremely concise: two short sentences. The first sentence defines the tool's purpose, and the second provides usage context with examples. No extraneous information. Perfectly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has a simple search interface with 2 parameters and an output schema, the description adequately covers the main use case. It does not explain the output schema or return format, but since an output schema exists, that is not required. It could mention the language (Polish) of the database and results, but overall sufficient for a straightforward search.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already describes both parameters ('query' as name fragment, 'page_size' as number of results). The description confirms that query is a fragment of the variable name and page_size controls result count, but adds no additional meaning beyond the schema. Baseline score 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool action: 'Search for a statistical variable in GUS BDL by name fragment.' It specifies the verb (search), resource (statistical variable in GUS BDL), and scope (by name fragment). It differentiates from sibling tools by mentioning its use when a desired indicator is not available in dedicated tools (e.g. specific indicators like CO2 emissions, number of doctors, tourism), which are not covered by siblings like gus_get_population or gus_get_average_salary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description provides explicit use case: 'Use when you need an indicator not available in dedicated tools' and gives examples of queries. This implies when not to use it (when dedicated tools exist), but does not explicitly state alternative tools or when to use siblings. The context is clear for distinguishing from specialized tools, but lacks direct references to sibling methods.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

krs_get_company_detailsA

Pobierz pełne dane spółki z KRS na podstawie numeru KRS.

Zwraca pełen odpis aktualny: dane rejestrowe, siedzibę, zarząd, kapitał zakładowy, PKD, prokurentów, sprawozdania finansowe.

ParametersJSON Schema
NameRequiredDescriptionDefault
krs_numberYes9- lub 10-cyfrowy numer KRS (np. "0000127815" dla Orlen)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It explicitly lists the data returned (rejestrowe, siedzibę, zarząd, kapitał zakładowy, PKD, prokurentów, sprawozdania finansowe) and implies it provides the full current extract, revealing scope beyond simple retrieval.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is 3 lines, front-loads the main action, and lists key data elements efficiently. It is concise but covers essential aspects without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with full schema coverage and an output schema present, the description adequately covers what the tool returns. It does not explain error cases or prerequisites, but for this simple tool, completeness is high.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes the parameter (krs_number with format example). The description adds no additional meaning beyond what the schema provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Pobierz pełne dane spółki z KRS' (download full company data from KRS) and specifies the resource (based on KRS number), distinguishing it from sibling tools like 'krs_search_company' which likely searches, not retrieves detailed data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives, but the context signals indicate siblings: 'krs_search_company' likely for searching vs this for details. Usage is implied by the verb 'Pobierz' (download) but no exclusions or selection criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

krs_search_companyA

Szukaj podmiotu gospodarczego — preferowana metoda po NIP.

Używa Białej Listy VAT Ministerstwa Finansów — zwraca dane dowolnego podatnika (spółki, JDG, instytucji) po numerze NIP: nazwa, REGON, numer KRS, adres, zarząd, wspólnicy, rachunki bankowe.

Publiczne API KRS nie obsługuje wyszukiwania po nazwie — dlatego najlepszą metodą identyfikacji podmiotu jest NIP.

ParametersJSON Schema
NameRequiredDescriptionDefault
nipNonumer NIP (10 cyfr) — preferowane
nameNonazwa firmy (zwraca instrukcje, bo API nie wspiera search-by-name)
max_itemsNomaksymalna liczba wyników

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses critical behavioral traits: it uses a specific government database (Biała Lista VAT MF), what data fields are returned (name, REGON, KRS, address, management, shareholders, bank accounts), and the limitation that name search returns instructions rather than results. Since no annotations are provided, the description compensates well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the main purpose. It uses three clear sentences. The only minor issue is that it could be slightly more structured with a brief summary upfront.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists, the description does not need to explain return values. It covers the tool's data source, returned fields, and key limitation well. It could be slightly more complete by noting pagination or max_items effect, but overall sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema already describes all three parameters with 100% coverage, so baseline is 3. The description reiterates the NIP preference and name limitation but does not add significant new meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches for business entities (Szukaj podmiotu gospodarczego) and specifies it uses the White List of VAT taxpayers returning detailed data by NIP number. It distinguishes itself from siblings by noting that the public KRS API does not support search by name, so NIP is preferred.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly recommends using NIP as the preferred method and explains why name search is not supported. However, it does not provide explicit when-not-to-use scenarios or mention alternatives for name-based search (e.g., ceidg_search_business).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4/5.0
Disambiguation4/5

Tools are mostly distinct: CEIDG vs KRS for different entity types, GUS tools for different statistics. However, ceidg_search_business and krs_search_company could be confused when searching for a company that might be in both, but descriptions clarify which to use.

Naming Consistency5/5

All tools follow a consistent 'datasource_action_entity' pattern (e.g., ceidg_search_business, gus_get_average_salary, krs_search_company). No mixing of conventions.

Tool Count5/5

7 tools is appropriate for a Polish business data server covering CEIDG, KRS, and GUS statistical data. Each tool serves a distinct purpose without being too few or too many.

Completeness4/5

Covers key business lookup (CEIDG, KRS) and major GUS indicators (salary, population, unemployment) with a generic search. Missing some Polish databases (e.g., REGON) but core workflows are well-supported.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    MCP server for the Polish company register (KRS) via the official Ministry of Justice API — entities, boards and shareholders with verifiable citations.
    3
    61
    1
    MIT
  • 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
  • A
    license
    A
    quality
    C
    maintenance
    MCP server that provides AI agents with Polish business data tools: identifier validation (NIP, PESEL, REGON, KRS, IBAN), VAT whitelist checks, EU VIES lookups, and NBP exchange rates.
    5
    21
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for Polish company registries that enables looking up companies by NIP or KRS using public government APIs with no authentication required.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/emilpinski/mcp-polish-data'

If you have feedback or need assistance with the MCP directory API, please join our Discord server