Prg Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Prg Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Serwer MCP dla Panstwowego Rejestru Granic (PRG), oficjalnego rejestru Glownego Urzedu Geodezji i Kartografii. Udostepnia lokalne dane o granicach, wlasciwosci terytorialnej, punktach adresowych i ulicach jako narzedzia dla asystentow oraz automatyzacji.
Obslugiwane zbiory:
terytorialnej oraz A07 punkty adresowe i A08 ulice;
Pakiet npm: prg-mcp.
To sa najwazniejsze zastosowania serwera.
Prompt:
Znajdz gmine Wieliszew.Narzedzie: search_areas
Input:
{
"category": "administrative",
"query": "Wieliszew",
"limit": 5
}Odpowiedz ma postac:
{
"areas": [
{
"areaId": "opaque-id",
"category": "administrative",
"code": "1408032",
"layerId": "A03",
"layerTitle": "Granice gmin",
"name": "Gmina Wieliszew",
"objectId": "gmina-wieliszew",
"snapshotId": 1
}
],
"source": {
"system": "PRG",
"layerIds": ["A00", "A01", "A02", "A03", "A04", "A05", "A06"],
"channels": ["wfs"]
},
"datasetState": "installed",
"syncedAt": "2026-06-22T00:00:00.000Z",
"coverage": {
"complete": true,
"installedPairs": ["A03:country:PL"],
"installedScopes": ["country:PL"],
"missingScopes": []
}
}Prompt:
W jakiej gminie i powiecie lezy punkt EPSG:2180 637807, 486708?Narzedzie: locate_point
Input:
{
"category": "administrative",
"x": 637807,
"y": 486708,
"limit": 10
}Odpowiedz zawiera matches posortowane deterministycznie oraz metadane source, datasetState, syncedAt i coverage.
Prompt:
Jaki sad rejonowy jest wlasciwy dla tego punktu?Narzedzie: locate_point
Input:
{
"layerIds": ["S03"],
"x": 637807,
"y": 486708,
"limit": 5
}Dla prokuratur uzyj warstw P01-P03, dla policji K01-K13, a dla urzedow U01-U11.
Prompt:
Znajdz adres Warszawa Zurawia 12A.Narzedzie: search_addresses
Input:
{
"query": "Warszawa Zurawia 12A",
"voivodeshipCodes": ["14"],
"limit": 5
}Odpowiedz ma postac:
{
"addresses": [
{
"addressId": "opaque-id",
"buildingNumber": "12A",
"localityName": "Warszawa",
"point": [637807, 486708],
"postalCode": "00503",
"postalCodeNote": "postal_code_is_prg_attribute_not_postal_service_validation",
"sourceScope": "woj:14",
"streetName": "Zurawia",
"voivodeshipCode": "14"
}
],
"datasetState": "installed",
"coverage": {
"complete": true,
"installedPairs": ["A07:voivodeship:14"],
"installedScopes": ["voivodeship:14"],
"missingScopes": []
}
}Kod pocztowy jest atrybutem punktu adresowego PRG. To nie jest walidacja operatorska Poczty Polskiej.
Prompt:
Co jest najblizszym adresem dla punktu 637807, 486708?Narzedzie: reverse_address
Input:
{
"x": 637807,
"y": 486708,
"radiusMeters": 1000,
"voivodeshipCodes": ["14"],
"limit": 5
}Narzedzie ma twardy limit promienia i kandydatow. Nie udaje trafienia poza limitem.
Prompt:
Znajdz ulice Zurawia w danych PRG.Narzedzie: search_streets
Input:
{
"query": "Zurawia",
"voivodeshipCodes": ["14"],
"limit": 5
}Do pobrania szczegolow i geometrii ulicy sluzy get_street.
Prompt:
Pokaz geometrie gminy Wieliszew.Narzedzie: get_area_geometry
Input:
{
"areaId": "opaque-id",
"maxVertices": 10000,
"toleranceMeters": 0
}Odpowiedz jest w EPSG:2180. Dla duzych eksportow uzyj CLI prg-mcp export, zamiast zalewac kontekst modelu pelna geometria.
Gdy wymagany zakres nie jest zainstalowany, narzedzia danych nie zwracaja pustej listy. Zwracaja blad DATA_NOT_INSTALLED z informacja, ze ten build nie zawiera spakowanego runnera synchronizacji, np.:
PRG address data is not installed for the requested scope. Data synchronization is not packaged in this build; prepare PRG address data for voivodeship 14 with a configured import pipeline.Ten serwer celowo trzyma sie PRG. Dlatego obsluguje oficjalne granice, wlasciwosc terytorialna, punkty adresowe, ulice i relacje przestrzenne, ale nie udaje uniwersalnego rejestru publicznego.
W zakresie PRG:
ewidencyjnych i obrebow;
strazy granicznej, skarbowe, lesne, wodne i morskie;
A07 z lokalizacja w EPSG:2180;A08 i ich geometrie;Poza zakresem PRG:
atrybutami obecnymi w PRG;
Do tych danych potrzebne sa inne zrodla, np. teryt-mcp dla TERYT, PRNG dla nazw geograficznych, EGiB dla katastru albo osobny slownik PNA dla kodow pocztowych.
Wszystkie narzedzia zwracaja structuredContent. Publiczne narzedzia MCP sa obecnie read-only. Runner synchronizacji nie jest wystawiony jako sync_data, dopoki zrodla i publisher nie sa spiete produkcyjnie.
Narzedzia zwracajace dane PRG dolaczaja:
source
datasetState
syncedAt
coverage#### about
Zwraca informacje o pakiecie, autorze, repozytorium i wersji schematu.
Input:
{}#### health_status
Sprawdza, czy serwer odpowiada.
Input:
{}Odpowiedz:
{
"ok": true
}#### server_status
Zwraca status runtime, katalog danych, pliki SQLite oraz dostepnosc FTS5 i R-tree.
Input:
{}#### list_layers
Zwraca katalog 54 warstw PRG z lokalna dostepnoscia, zakresami i liczba rekordow.
Input:
{
"limit": 100
}#### source_status
Pokazuje zainstalowane pokrycie i opcjonalny status zrodel.
Input:
{
"checkRemote": false
}Planowane tryby synchronizacji:
missing pobierz tylko brakujace zakresy
stale pobierz nieaktualne zakresy
force przebuduj wskazane zakresyProfile planowania:
administrative podstawowe granice administracyjne
administrative-history archiwalne granice administracyjne; wymaga --archive-year
addresses punkty adresowe i ulice dla wskazanych zakresow
boundaries-full wszystkie warstwy graniczne PRG
poland-full pelna instalacja Polski, wymaga jawnego potwierdzenia w CLI#### search_areas
Szuka jednostki, sadu, urzedu albo obszaru po nazwie, kodzie, kategorii, warstwie, dacie waznosci i migawce.
Input:
{
"query": "Krakow",
"category": "administrative",
"limit": 20
}#### get_area
Pobiera jeden obiekt PRG po areaId, bez pelnej geometrii.
Input:
{
"areaId": "opaque-id"
}#### get_area_geometry
Pobiera kontrolowana geometrie GeoJSON w EPSG:2180.
Input:
{
"areaId": "opaque-id",
"maxVertices": 10000,
"toleranceMeters": 0
}#### locate_point
Znajduje obszary pokrywajace punkt w EPSG:2180.
Input:
{
"x": 566000,
"y": 244000,
"category": "administrative",
"limit": 20
}#### relate_areas
Znajduje ograniczone relacje przestrzenne miedzy jednym obiektem a wskazanymi warstwami lub kategoria.
Input:
{
"areaId": "opaque-id",
"layerIds": ["W01"],
"limit": 20
}#### search_addresses
Szuka punktow adresowych po tekscie naturalnym albo polach strukturalnych. query i structured sa wzajemnie wykluczajace sie.
Input:
{
"query": "Warszawa Zurawia 12A",
"voivodeshipCodes": ["14"],
"limit": 20
}#### get_address
Pobiera punkt adresowy po addressId.
Input:
{
"addressId": "opaque-id"
}#### reverse_address
Szuka najblizszych punktow adresowych wokol punktu EPSG:2180.
Input:
{
"x": 637807,
"y": 486708,
"radiusMeters": 500,
"voivodeshipCodes": ["14"],
"limit": 10
}#### search_streets
Szuka ulic A08.
Input:
{
"query": "Zurawia",
"voivodeshipCodes": ["14"],
"limit": 20
}#### get_street
Pobiera szczegoly i geometrie ulicy po streetId.
Input:
{
"streetId": "opaque-id"
}Uruchomienie bez instalacji globalnej:
npx -y prg-mcp serveInstalacja globalna:
npm install -g prg-mcp
prg-mcp serveWymagania:
>=22.0.0;server_status albo prg-mcp doctor.Dane PRG nie sa dolaczane do pakietu npm. Serwer moze odpowiedziec na status i katalog narzedzi bez lokalnych danych, ale wyszukiwanie wymaga jawnej synchronizacji.
Konfiguracja dla transportu stdio:
{
"mcpServers": {
"prg": {
"command": "npx",
"args": ["-y", "prg-mcp", "serve"],
"env": {
"MCP_DATA_DIR": "/absolute/path/to/prg-data"
}
}
}
}Przy instalacji globalnej:
{
"mcpServers": {
"prg": {
"command": "prg-mcp",
"args": ["serve"],
"env": {
"MCP_DATA_DIR": "/absolute/path/to/prg-data"
}
}
}
}Codex CLI i rozszerzenie Codex dla IDE wspoldziela konfiguracje ~/.codex/config.toml. Plik VS Code User/mcp.json nie rejestruje serwera w Codex.
Najprosciej dodac globalnie zainstalowany serwer poleceniem:
codex mcp add prg-mcp -- prg-mcp serveOdpowiednik w ~/.codex/config.toml:
[mcp_servers.prg-mcp]
command = "prg-mcp"
args = ["serve"]
[mcp_servers.prg-mcp.env]
MCP_DATA_DIR = "/absolute/path/to/prg-data"Po zmianie konfiguracji uruchom nowy proces lub nowa sesje Codex i sprawdz serwer przez codex mcp list albo /mcp w interfejsie terminalowym.
Claude Desktop oraz VS Code uzywaja konfiguracji mcpServers pokazanej wyzej. W srodowisku, ktore czysci cache miedzy uruchomieniami, ustaw staly MCP_DATA_DIR, inaczej serwer moze startowac bez lokalnych danych.
Serwer moze zwracac status bez lokalnych baz, ale wyszukiwanie i lookupy wymagaja lokalnych plikow SQLite. Publiczny runner synchronizacji nie jest jeszcze spakowany; setup zwraca estymacje i syncAvailable: false.
Podstawowe komendy CLI:
prg-mcp tools
prg-mcp status
prg-mcp coverage
prg-mcp source-status
prg-mcp doctorRekomendowany plan startowy:
prg-mcp setupPlan adresow dla jawnego zakresu:
prg-mcp setup --profile addresses --teryt 14Pelna instalacja Polski jest duza i wymaga jawnego potwierdzenia:
prg-mcp setup --profile poland-full --confirm-poland-fullCLI jest pomocnicze. Pelny zestaw funkcji jest dostepny przez MCP.
prg-mcp serve
prg-mcp tools
prg-mcp setup
prg-mcp status
prg-mcp coverage
prg-mcp source-status
prg-mcp doctor
prg-mcp call list_layers '{}'
prg-mcp call search_areas '{"query":"Warszawa","category":"administrative","limit":5}'
prg-mcp call source_status '{"checkRemote":false}'Eksport geometrii przez CLI:
prg-mcp export --layer A03 --id '<object-id>' --format geojson --crs EPSG:4326HTTP jest przydatne do lokalnego testowania albo wlasnych wrapperow:
MCP_TRANSPORT=http MCP_PORT=3000 prg-mcp serveEndpointy:
GET /health
POST /tools/:toolNamePrzyklad:
curl -s http://127.0.0.1:3000/tools/search_areas \
-H 'content-type: application/json' \
-d '{"query":"Krakow","category":"administrative","limit":3}'Odpowiedz HTTP zawiera wynik narzedzia MCP:
{
"structuredContent": {
"areas": [],
"datasetState": "installed",
"coverage": {
"complete": true,
"installedPairs": ["A03:country:PL"],
"installedScopes": ["country:PL"],
"missingScopes": []
}
}
}MCP_TRANSPORT=stdio|http # domyslnie stdio
MCP_PORT / PORT # domyslnie 3000 dla HTTP
MCP_DATA_DIR # katalog baz SQLite i metadanych synchronizacji
MCP_CONFIG_DIR # katalog konfiguracji runtime
MCP_LOG_LEVEL # debug|info|warn|error|silent
PRG_SOURCE_TIMEOUT_MS # timeout pojedynczego zadania zrodlowego
PRG_MAX_DOWNLOAD_BYTES # twardy limit rozmiaru pobrania
PRG_SYNC_CONCURRENCY # liczba rownoleglych pobran
PRG_FRESHNESS_CHECK_MS # minimalny odstep miedzy sprawdzeniami swiezosci zrodelPliki lokalne:
<data-dir>/catalog.sqlite
<data-dir>/boundaries.sqlite
<data-dir>/addresses-<woj>.sqlite
<data-dir>/*.lockNowe wydania moga zmieniac schemat SQLite. Serwer i narzedzia synchronizacji wykrywaja stan schematu przez metadane lokalnych baz.
Dla osob rozwijajacych repozytorium:
pnpm install
pnpm build
pnpm quality
pnpm test:pack-smokeBenchmark lokalny dla pelnej instalacji Polski:
PRG_DATA_DIR=/absolute/path/to/prg-data pnpm benchmark:full-polandSzczegoly architektury i kontraktow:
Kod projektu: Copyright 2026 Maciej Ciemborowicz. Udostepniany wylacznie na warunkach European Union Public Licence 1.2 (EUPL-1.2 only).
Dane PRG pochodza z Glownego Urzedu Geodezji i Kartografii oraz serwisu Geoportal.gov.pl. Informacje o ich pozyskiwaniu i przetwarzaniu znajduja sie w pliku NOTICE.md.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.