polish-mcp-servers 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Kamil Kaczmarek
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,244 @@
1
- # Temporary Holding Version
1
+ # Polish MCP servers
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ [![Glama](https://glama.ai/mcp/servers/kamilkaczmareksolutions/polish-mcp-servers/badge)](https://glama.ai/mcp/servers/kamilkaczmareksolutions/polish-mcp-servers)
4
+
5
+ Local [Model Context Protocol](https://modelcontextprotocol.io) server for Polish public data. It speaks stdio and exposes 12 tools, one for each public Apify Actor by [enterprising_hamster](https://apify.com/enterprising_hamster).
6
+
7
+ `tools/list` answers with no `APIFY_TOKEN` and no network. `tools/call` runs that Actor on your Apify account. Create a token at [console.apify.com/settings/integrations](https://console.apify.com/settings/integrations) and set `APIFY_TOKEN`. A call without a token returns an MCP tool error that points at that page.
8
+
9
+ Each call returns at most 100 dataset items and at most 256 KiB of JSON. Pass `maxItems` to ask for fewer. When the Actor schema already defaults `maxItems` to 100 or less, that default stands. The law tool defaults to 20, because that Actor's schema has no `maxItems`.
10
+
11
+ ## Tools
12
+
13
+ | Tool | Returns | Actor |
14
+ |---|---|---|
15
+ | `polish-law-mcp-server` | One Polish law result. Set `tool` to `search_legal_acts`, `get_legal_act`, `get_legal_act_text`, `list_changed_legal_acts`, `search_court_judgments`, or `get_court_judgment`, and pass `arguments`. | [Store](https://apify.com/enterprising_hamster/polish-law-mcp-server) |
16
+ | `polish-legal-acts-eli` | Dziennik Ustaw and Monitor Polski act metadata, with optional text. | [Store](https://apify.com/enterprising_hamster/polish-legal-acts-eli) |
17
+ | `polish-court-judgments-saos` | SAOS judgments with metadata and optional full text. | [Store](https://apify.com/enterprising_hamster/polish-court-judgments-saos) |
18
+ | `polish-eu-funds-tenders-baza-konkurencyjnosci` | EU-funds procurement notices from Baza Konkurencyjności. | [Store](https://apify.com/enterprising_hamster/polish-eu-funds-tenders-baza-konkurencyjnosci) |
19
+ | `cee-public-tenders` | Czech, Slovak, Hungarian, and Ukrainian public tenders. | [Store](https://apify.com/enterprising_hamster/cee-public-tenders) |
20
+ | `polish-ev-charging-stations-eipa` | EIPA charging stations with location, connectors, power, and live status. | [Store](https://apify.com/enterprising_hamster/polish-ev-charging-stations-eipa) |
21
+ | `polish-vehicle-registrations-cepik` | Aggregated CEPiK registration counts. No VINs or owners. | [Store](https://apify.com/enterprising_hamster/polish-vehicle-registrations-cepik) |
22
+ | `polish-building-permits-gunb` | GUNB building permits and notifications. Private investors are anonymised. | [Store](https://apify.com/enterprising_hamster/polish-building-permits-gunb) |
23
+ | `polish-land-parcels-uldk-zoning` | ULDK parcel location and area, plus MPZP and POG zoning. No owners. | [Store](https://apify.com/enterprising_hamster/polish-land-parcels-uldk-zoning) |
24
+ | `polish-healthcare-facilities-rpwdl` | RPWDL facilities with address, contact, specialties, and beds. | [Store](https://apify.com/enterprising_hamster/polish-healthcare-facilities-rpwdl) |
25
+ | `polish-developer-apartment-prices` | Developer apartment and house offers, with price per m², from dane.gov.pl. | [Store](https://apify.com/enterprising_hamster/polish-developer-apartment-prices) |
26
+ | `polish-electricity-market-pse` | PSE electricity prices and grid rows (RCE, day-ahead, imbalance, load, generation). | [Store](https://apify.com/enterprising_hamster/polish-electricity-market-pse) |
27
+
28
+ `polish-mcp-servers` and `polish-mcp` list all 12. `polish-law-mcp` lists only `polish-law-mcp-server`. `polish-public-registers` lists the other 11, including `cee-public-tenders`.
29
+
30
+ ## Install
31
+
32
+ From GitHub, without an npm publish:
33
+
34
+ ```bash
35
+ npx -y github:kamilkaczmareksolutions/polish-mcp-servers
36
+ ```
37
+
38
+ Law only, or registers only:
39
+
40
+ ```bash
41
+ npx -y --package github:kamilkaczmareksolutions/polish-mcp-servers polish-law-mcp
42
+ npx -y --package github:kamilkaczmareksolutions/polish-mcp-servers polish-public-registers
43
+ ```
44
+
45
+ From a checkout, `npm install` compiles the server:
46
+
47
+ ```bash
48
+ git clone https://github.com/kamilkaczmareksolutions/polish-mcp-servers.git
49
+ cd polish-mcp-servers
50
+ npm install
51
+ node dist/main.js
52
+ ```
53
+
54
+ `node dist/law.js` and `node dist/registers.js` start the other two profiles.
55
+
56
+ Docker image. `tools/list` needs no secrets.
57
+
58
+ ```bash
59
+ docker build -t polish-mcp-servers .
60
+ docker run --rm -i polish-mcp-servers
61
+ ```
62
+
63
+ Pass the token only when you want `tools/call` to run an Actor.
64
+
65
+ ```bash
66
+ docker run --rm -i -e APIFY_TOKEN=<YOUR_APIFY_TOKEN> polish-mcp-servers
67
+ ```
68
+
69
+ ## Configure Claude Desktop and Cursor
70
+
71
+ Claude Desktop reads `claude_desktop_config.json`. Cursor reads `~/.cursor/mcp.json` or `.cursor/mcp.json` in a project.
72
+
73
+ ```json
74
+ {
75
+ "mcpServers": {
76
+ "polish-mcp": {
77
+ "command": "npx",
78
+ "args": ["-y", "github:kamilkaczmareksolutions/polish-mcp-servers"],
79
+ "env": {
80
+ "APIFY_TOKEN": "<YOUR_APIFY_TOKEN>"
81
+ }
82
+ },
83
+ "polish-law": {
84
+ "command": "npx",
85
+ "args": ["-y", "--package", "github:kamilkaczmareksolutions/polish-mcp-servers", "polish-law-mcp"],
86
+ "env": {
87
+ "APIFY_TOKEN": "<YOUR_APIFY_TOKEN>"
88
+ }
89
+ },
90
+ "polish-public-registers": {
91
+ "command": "npx",
92
+ "args": ["-y", "--package", "github:kamilkaczmareksolutions/polish-mcp-servers", "polish-public-registers"],
93
+ "env": {
94
+ "APIFY_TOKEN": "<YOUR_APIFY_TOKEN>"
95
+ }
96
+ }
97
+ }
98
+ }
99
+ ```
100
+
101
+ Omit `APIFY_TOKEN` if you only want `tools/list`.
102
+
103
+ ## Hosted servers
104
+
105
+ The same data is also available as hosted MCP servers on [Apify](https://apify.com/enterprising_hamster). Point your client at a URL and authenticate with your Apify account. Those servers still run as Apify Actors.
106
+
107
+ - **Polish Law MCP**: Polish statutes from the Sejm ELI API (Dziennik Ustaw, Monitor Polski) and court judgments from SAOS.
108
+ - **Polish Public Registers**: 10 official Polish registers (EU-funded tenders, EV charging stations, vehicle registrations, building permits, land parcels and zoning, healthcare facilities, developer apartment prices, electricity market, legal acts, court judgments).
109
+
110
+ | Server | MCP Registry name | MCP URL (Streamable HTTP) |
111
+ |---|---|---|
112
+ | Polish Law MCP | `io.github.kamilkaczmareksolutions/polish-law-mcp` | `https://mcp.apify.com/?tools=enterprising_hamster/polish-law-mcp-server` |
113
+ | Polish Law MCP (direct, Apify Standby) | same entry, second remote | `https://enterprising-hamster--polish-law-mcp-server.apify.actor/mcp` |
114
+ | Polish Public Registers | `io.github.kamilkaczmareksolutions/polish-public-registers` | see [full URL](#polish-public-registers-url) below |
115
+
116
+ ### Polish Public Registers URL
117
+
118
+ ```
119
+ https://mcp.apify.com/?tools=enterprising_hamster/polish-eu-funds-tenders-baza-konkurencyjnosci,enterprising_hamster/polish-ev-charging-stations-eipa,enterprising_hamster/polish-vehicle-registrations-cepik,enterprising_hamster/polish-building-permits-gunb,enterprising_hamster/polish-land-parcels-uldk-zoning,enterprising_hamster/polish-healthcare-facilities-rpwdl,enterprising_hamster/polish-developer-apartment-prices,enterprising_hamster/polish-electricity-market-pse,enterprising_hamster/polish-legal-acts-eli,enterprising_hamster/polish-court-judgments-saos
120
+ ```
121
+
122
+ You can drop Actors from the `tools=` list to expose only the registers you need.
123
+
124
+ ### Polish Law MCP tools
125
+
126
+ Apify Actor: [enterprising_hamster/polish-law-mcp-server](https://apify.com/enterprising_hamster/polish-law-mcp-server)
127
+
128
+ The hosted law server exposes six tools. The local server keeps them behind the single tool `polish-law-mcp-server`.
129
+
130
+ | Tool | What it does |
131
+ |---|---|
132
+ | `search_legal_acts` | Search acts in Dziennik Ustaw and Monitor Polski (Sejm ELI). Returns act summaries with ELI ids. |
133
+ | `get_legal_act` | Metadata of one act: status, in-force flag, key dates, issuing body, implemented EU acts, newest consolidated text, references. |
134
+ | `get_legal_act_text` | Plain text of an act or a single article, current wording from the newest consolidated text, in bounded windows. |
135
+ | `list_changed_legal_acts` | Acts whose ELI record changed since a given time (new publications, amendments, status or reference updates). |
136
+ | `search_court_judgments` | Search judgments in SAOS (System Analizy Orzeczeń Sądowych). |
137
+ | `get_court_judgment` | Full judgment: metadata, legal bases, cited regulations (with ELI ids), cited cases, summary, text in bounded windows. |
138
+
139
+ Through `mcp.apify.com` the same six tools are exposed with an Apify prefix (`enterpri--polish-law-mcp-server--…`). The Standby URL exposes them under the names above.
140
+
141
+ Pricing (pay per event, FREE/BRONZE Apify plan tier):
142
+
143
+ | Event | Price |
144
+ |---|---|
145
+ | Tool call returning search results or metadata | $0.005 |
146
+ | Tool call returning the full text of a legal act or court judgment | $0.015 |
147
+
148
+ ### Polish Public Registers tools
149
+
150
+ Each Actor is exposed as one MCP tool that runs the Actor. The Apify MCP server also adds four helper tools: `get-actor-run`, `get-dataset-items`, `get-key-value-store-record`, `abort-actor-run` (14 tools in total).
151
+
152
+ Prices are per delivered result, FREE/BRONZE Apify plan tier. Higher plan tiers pay less; see each Actor page.
153
+
154
+ | Register (source) | Apify Actor | Price per result |
155
+ |---|---|---|
156
+ | EU-funds tenders (Baza Konkurencyjności) | [polish-eu-funds-tenders-baza-konkurencyjnosci](https://apify.com/enterprising_hamster/polish-eu-funds-tenders-baza-konkurencyjnosci) | $0.003 announcement; $0.008 announcement with details |
157
+ | EV charging stations (EIPA / UDT) | [polish-ev-charging-stations-eipa](https://apify.com/enterprising_hamster/polish-ev-charging-stations-eipa) | $0.003 station; $0.001 station with anonymised private operator |
158
+ | Vehicle registrations (CEPiK open data, aggregates only) | [polish-vehicle-registrations-cepik](https://apify.com/enterprising_hamster/polish-vehicle-registrations-cepik) | $0.003 statistics row |
159
+ | Building permits (GUNB RWDZ) | [polish-building-permits-gunb](https://apify.com/enterprising_hamster/polish-building-permits-gunb) | $0.002 project; $0.006 project with organisation investor |
160
+ | Land parcels and zoning (GUGiK ULDK, MPZP, POG) | [polish-land-parcels-uldk-zoning](https://apify.com/enterprising_hamster/polish-land-parcels-uldk-zoning) | $0.004 parcel; $0.02 parcel with zoning |
161
+ | Healthcare facilities (RPWDL) | [polish-healthcare-facilities-rpwdl](https://apify.com/enterprising_hamster/polish-healthcare-facilities-rpwdl) | $0.004 facility |
162
+ | Developer apartment prices (dane.gov.pl) | [polish-developer-apartment-prices](https://apify.com/enterprising_hamster/polish-developer-apartment-prices) | $0.002 offer; $0.004 price change |
163
+ | Electricity market (PSE API) | [polish-electricity-market-pse](https://apify.com/enterprising_hamster/polish-electricity-market-pse) | $0.0003 market data row |
164
+ | Legal acts (Sejm ELI) | [polish-legal-acts-eli](https://apify.com/enterprising_hamster/polish-legal-acts-eli) | $0.002 act metadata; $0.008 act with text |
165
+ | Court judgments (SAOS) | [polish-court-judgments-saos](https://apify.com/enterprising_hamster/polish-court-judgments-saos) | $0.003 judgment metadata; $0.01 judgment with full text |
166
+
167
+ Apify platform usage may be billed on top, depending on your Apify plan.
168
+
169
+ ### Authentication and billing
170
+
171
+ Both hosted servers run under your own Apify account, and you pay for the results you request.
172
+
173
+ - **OAuth** via `mcp.apify.com`. Clients that support MCP OAuth sign you in to Apify. No token in the config.
174
+ - **Bearer token**. Send `Authorization: Bearer <YOUR_APIFY_TOKEN>`. Get the token at [console.apify.com/settings/integrations](https://console.apify.com/settings/integrations). Required for the Standby URL.
175
+
176
+ Requests without credentials get HTTP 401.
177
+
178
+ ### Hosted client configuration
179
+
180
+ Replace `<YOUR_APIFY_TOKEN>` with your token, or omit `headers` if your client supports OAuth.
181
+
182
+ Claude.ai and Claude Desktop. Settings → Connectors → Add custom connector, then paste the MCP URL (for example `https://mcp.apify.com/?tools=enterprising_hamster/polish-law-mcp-server`). Sign in to Apify when prompted.
183
+
184
+ Cursor, `~/.cursor/mcp.json` or `.cursor/mcp.json` in a project:
185
+
186
+ ```json
187
+ {
188
+ "mcpServers": {
189
+ "polish-law": {
190
+ "url": "https://mcp.apify.com/?tools=enterprising_hamster/polish-law-mcp-server",
191
+ "headers": {
192
+ "Authorization": "Bearer <YOUR_APIFY_TOKEN>"
193
+ }
194
+ },
195
+ "polish-public-registers": {
196
+ "url": "https://mcp.apify.com/?tools=enterprising_hamster/polish-eu-funds-tenders-baza-konkurencyjnosci,enterprising_hamster/polish-ev-charging-stations-eipa,enterprising_hamster/polish-vehicle-registrations-cepik,enterprising_hamster/polish-building-permits-gunb,enterprising_hamster/polish-land-parcels-uldk-zoning,enterprising_hamster/polish-healthcare-facilities-rpwdl,enterprising_hamster/polish-developer-apartment-prices,enterprising_hamster/polish-electricity-market-pse,enterprising_hamster/polish-legal-acts-eli,enterprising_hamster/polish-court-judgments-saos",
197
+ "headers": {
198
+ "Authorization": "Bearer <YOUR_APIFY_TOKEN>"
199
+ }
200
+ }
201
+ }
202
+ }
203
+ ```
204
+
205
+ VS Code, `.vscode/mcp.json`:
206
+
207
+ ```json
208
+ {
209
+ "inputs": [
210
+ {
211
+ "type": "promptString",
212
+ "id": "apify-token",
213
+ "description": "Apify API token",
214
+ "password": true
215
+ }
216
+ ],
217
+ "servers": {
218
+ "polish-law": {
219
+ "type": "http",
220
+ "url": "https://mcp.apify.com/?tools=enterprising_hamster/polish-law-mcp-server",
221
+ "headers": {
222
+ "Authorization": "Bearer ${input:apify-token}"
223
+ }
224
+ }
225
+ }
226
+ }
227
+ ```
228
+
229
+ Add `polish-public-registers` the same way with its URL.
230
+
231
+ ## Official MCP Registry
232
+
233
+ - `io.github.kamilkaczmareksolutions/polish-law-mcp`
234
+ - `io.github.kamilkaczmareksolutions/polish-public-registers`
235
+
236
+ Look them up at `https://registry.modelcontextprotocol.io/v0.1/servers?search=kamilkaczmareksolutions`.
237
+
238
+ ## Data sources
239
+
240
+ All data comes from official Polish public registers and open-data APIs: Sejm ELI, SAOS, Baza Konkurencyjności, EIPA (UDT), CEPiK, GUNB, GUGiK ULDK, RPWDL, dane.gov.pl, PSE. Personal data is limited. Building-permit investors who are private persons are anonymised, private EV station operators are anonymised, CEPiK data is aggregated (no VINs or owners), and ULDK parcels come without owners.
241
+
242
+ ## License
243
+
244
+ This repository is released under the [MIT License](LICENSE).