mcp-polish-data
mcp-polish-data
适用于 Claude、Cursor 和 Windsurf 的波兰公共数据 MCP 服务器 — 包含 KRS、CEIDG、GUS BDL。

简介
这是一个模型上下文协议 (MCP) 服务器,让 AI 助手无需离开聊天界面即可直接访问波兰政府注册机构和 GUS 统计数据。安装一次后,Claude 或 Cursor 就能自动学会如何在 KRS 中查找公司、在 CEIDG 中验证个体经营者,以及从 GUS BDL 获取区域统计数据。
采用 MIT 许可协议,无需 API 密钥。
Related MCP server: krs-verify
功能特性
KRS — 通过 NIP 查找公司(通过增值税白名单 — KRS API 不支持名称搜索),通过 9 位或 10 位 KRS 编号获取完整摘要
CEIDG — 按名称、NIP、REGON 或所有者姓氏搜索个体经营企业
GUS BDL — 按省份划分的人口、失业率、平均总工资、统计变量发现
优雅降级 — 当 CEIDG 需要 JWT 令牌时,服务器会提供有用的提示信息,而不是直接崩溃
零配置 — 单次 pip 安装,基本功能无需 API 密钥
Python 3.11+ — 使用 async/await、httpx、FastMCP 2.0
技术栈
层级 | 技术 |
协议 | 模型上下文协议 (MCP) |
框架 | FastMCP 2.0 |
HTTP | httpx (异步) |
Python | 3.11+ |
构建 | Hatchling |
测试 | pytest, pytest-asyncio |
许可 | MIT |
入门指南
pip install mcp-polish-dataClaude Desktop
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) 或 %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"polish-data": {
"command": "mcp-polish-data"
}
}
}重启 Claude Desktop — 工具将自动出现。
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"可用工具
工具 | 描述 |
| 通过 NIP 搜索公司(通过增值税白名单 — KRS API 不支持名称搜索) |
| 获取 9 位或 10 位 KRS 编号的完整摘要 |
| 在 CEIDG 中搜索个体经营者 |
| 按省份划分的人口 |
| 按省份划分的失业率 |
| 按省份划分的平均总工资 |
| 在 GUS BDL 中发现统计变量 |
环境变量
变量 | 描述 | 必需 |
| 用于高级 CEIDG 端点的 JWT 令牌 | 可选 |
示例提示词
“查询 NIP 5270103391 并告诉我公司名称和地址”
“比较 2023 年所有省份的失业率”
“波美拉尼亚省与马佐夫舍省的平均工资是多少?”
“在克拉科夫查找所有姓氏为 Kowalski 的 CEIDG 个体经营者”
状态
在线 — mcp-polish-data.vercel.app | PyPI: mcp-polish-data
由 Emil Piński 构建
截图

Available Tools
7 toolsceidg_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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | nazwa firmy | |
| nip | No | numer NIP (10 cyfr) | |
| regon | No | numer REGON (9 lub 14 cyfr) | |
| surname | No | nazwisko przedsiębiorcy | |
| max_items | No | maksymalna liczba wyników |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | rok (domyślnie 2023) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_name | No | nazwa województwa (opcjonalnie) | |
| year | No | rok (domyślnie 2023) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | rok (domyślnie 2023) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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").
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | fragment nazwy zmiennej | |
| page_size | No | liczba wyników |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| krs_number | Yes | 9- lub 10-cyfrowy numer KRS (np. "0000127815" dla Orlen) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| nip | No | numer NIP (10 cyfr) — preferowane | |
| name | No | nazwa firmy (zwraca instrukcje, bo API nie wspiera search-by-name) | |
| max_items | No | maksymalna liczba wyników |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.1.0- First observed
ceidg_search_business - First observed
gus_get_average_salary - First observed
gus_get_population - First observed
gus_get_unemployment_rate - First observed
gus_search_variable - First observed
krs_get_company_details - First observed
krs_search_company
TDQS
Scored across 7 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for 3M+ Polish companies — KRS & CEIDG financials, ownership, and industry search.
MCP server for structured Dutch vehicle data and license plate intelligence. Access RDW-based vehicle specifications, registration details, APK information, fuel and emissions data, weights, dimensions, ownership-related signals and other vehicle knowledge through KentekenKompas.nl. Built for AI assistants, agents and applications that need reliable, machine-readable information about vehicles registered in the Netherlands.
Polish company registry: 4.4M firms, KRS/REGON data, VAT white list checks, financial statements
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for the Polish company register (KRS) via the official Ministry of Justice API — entities, boards and shareholders with verifiable citations.328 npm1MIT
- AlicenseNot gradedqualityDmaintenanceMCP 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
- AlicenseAqualityCmaintenanceMCP 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.57 npmMIT
- AlicenseAqualityBmaintenanceMCP server for Polish company registries that enables looking up companies by NIP or KRS using public government APIs with no authentication required.2MIT