Polish Academic MCP
Polish Academic MCP is an MCP server that lets AI assistants search and retrieve data from 143 Polish academic, public, legal, statistical, and cultural databases across 66 sources.
Search scholarly publications, articles, books, theses, datasets, and repository records, then fetch details by ID, DOI, or UUID.
Query official statistics, open government data, research registry data, and live weather/hydrological warnings.
Search legal acts, court judgments, Sejm Library catalog records, and selected public registers.
Explore cultural heritage collections: literature, film/VOD, posters, photos, archives, art catalogues, and digital repositories.
Search Polish standards, legal digital culture sources, and archival/static collections.
Set up the server for many AI clients, filter by source groups, use router mode, run diagnostics, and optionally deploy a Cloudflare-hosted OAuth connector.
Allows retrieving scientific dataset metadata from the RePOD repository using Digital Object Identifiers (DOI).
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Polish Academic MCP find recent research articles about renewable energy in Poland"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Polish Academic MCP
Serwer MCP pozwala asystentom AI przeszukiwać polskie bazy naukowe, publiczne i kulturowe, m.in. Bibliotekę Nauki, Katalog Biblioteki Narodowej, repozytoria uczelni, GUS, ISAP i archiwa. W repozytorium dostępnych jest 143 narzędzia z 66 źródeł. Kluczy API wymagają tylko trzy narzędzia PBN.
Serwer działa na Twoim komputerze: aplikacja AI uruchamia go sama w tle, a serwer łączy się bezpośrednio z bazami, bez pośredniczących usług.
MCP (Model Context Protocol) to otwarty standard, dzięki któremu asystenci AI mogą korzystać z zewnętrznych narzędzi i baz danych.
Szybki start (bez programowania)
1. Zainstaluj Node.js. Wejdź na nodejs.org, pobierz wersję LTS i zainstaluj ją jak zwykły program (wszystkie opcje domyślne).
2. Uruchom kreator. Otwórz terminal:
Windows: menu Start → wpisz „PowerShell” → Enter,
macOS: Cmd+Spacja → wpisz „Terminal” → Enter,
Linux: Ctrl+Alt+T,
a potem wklej i zatwierdź Enterem:
npx -y polish-academic-mcp setupKreator sam znajdzie zainstalowane aplikacje AI, zapyta, które bazy włączyć, i dopisze serwer do ich ustawień (z kopią zapasową poprzednich). Przed zapisem zamknij te aplikacje.
3. Uruchom aplikację AI ponownie (całkowicie: zamknij ją też z zasobnika systemowego lub paska menu) i zapytaj na przykład:
Wyszukaj w Bibliotece Nauki artykuły o odnawialnych źródłach energii z 2024 roku.
Coś nie działa? Uruchom npx -y polish-academic-mcp doctor, a potem zajrzyj do rozwiązywania problemów.
Instalacja jednym kliknięciem
Jeśli masz już Node.js:
Przyciski dodają serwer z pełną listą narzędzi. W aplikacjach z limitem narzędzi można wybrać grupy baz lub tryb routera.
Quick start (English)
Install Node.js LTS, then run npx -y polish-academic-mcp setup. The wizard detects your AI apps and adds the server to their MCP config (with a backup). Restart the app. Use --sources=nauka,prawo (or the POLISH_ACADEMIC_SOURCES env var) to expose only tools from selected sources, and npx -y polish-academic-mcp doctor to diagnose problems.
Related MCP server: Academic MCP Server
Obsługiwane aplikacje
Aplikacja | Jak dodać serwer | Uwagi |
Claude Desktop | kreator | po zapisie zamknij Claude całkowicie i otwórz ponownie |
Claude Code | kreator | na Windows (poza WSL): |
Cursor | kreator | limit ok. 40 narzędzi łącznie: wybierz 1–2 grupy |
VS Code (GitHub Copilot) | kreator | limit 128 narzędzi łącznie ze wszystkich serwerów |
Windsurf | kreator | limit 100 narzędzi łącznie ze wszystkich serwerów |
Cline, Roo Code | kreator | |
LM Studio | kreator | przy małych modelach włącz 1 grupę baz |
AnythingLLM Desktop | kreator | narzędzia działają w trybie |
Gemini CLI, OpenAI Codex CLI, opencode, GitHub Copilot CLI | kreator | |
Zed, Continue, Goose, Hermes Agent, OpenClaw, Jan, Perplexity (macOS), Msty, Cherry Studio |
| id: |
Open WebUI | przez most mcpo: | Open WebUI obsługuje natywnie tylko MCP po HTTP |
ChatGPT, Claude.ai, Perplexity (konektory zdalne) | wdrożenie Cloudflare w | limit: 100 wywołań MCP / miesiąc — szczegóły: docs/CLOUDFLARE.md |
Szczegółowe instrukcje dla każdej aplikacji (pliki konfiguracyjne, ręczna konfiguracja, weryfikacja): docs/CLIENTS.md. Jeśli konfigurację ma wykonać agent AI, daj mu docs/AGENT-GUIDE.md.
Wersja chmurowa (Cloudflare Workers + Pages)
Oprócz lokalnego npx możesz wdrożyć zdalne środowisko z katalogu cloud/:
serwer MCP HTTP z OAuth 2.1 (ORCID, email+hasło, passkey) pod
/mcp,limit: 100 zapytań narzędzi / miesiąc (MCP),
strony
/connectors,/privacy,/termspod oficjalne konektory Claude, ChatGPT i Perplexity.
Instrukcja wdrożenia i sekrety: docs/CLOUDFLARE.md.
Opcje kreatora
npx -y polish-academic-mcp setup # interaktywnie
npx -y polish-academic-mcp setup --list # obsługiwane aplikacje i ścieżki plików
npx -y polish-academic-mcp setup --client cursor --sources nauka --yes # bez pytań
npx -y polish-academic-mcp setup --dry-run # pokaż zmiany, nic nie zapisuj
npx -y polish-academic-mcp setup --pin # przypnij bieżącą wersję (zob. Aktualizacje)
npx -y polish-academic-mcp setup --print zed # konfiguracja do wklejenia ręcznie
npx -y polish-academic-mcp uninstall # usuń serwer z aplikacji
npx -y polish-academic-mcp doctor # diagnostykaKreator zachowuje inne serwery i ustawienia w plikach (także Twoje zmienne we wpisie serwera, np. klucze PBN, przy ponownym uruchomieniu), przed każdą zmianą robi kopię (*.bak-<data>) i nie rusza plików z komentarzami (JSONC); dla nich wypisuje wpis do wklejenia. Na Windows zapisuje polecenie cmd /c npx …, a przy Node.js zainstalowanym przez nvm, fnm lub volta pełną ścieżkę do npx. Dzięki temu aplikacje okienkowe znajdą Node.js.
Wybór baz
Domyślny tryb lokalny wystawia narzędzia każdej bazy osobno. Jeśli klient ma ograniczoną pojemność, dodaj --mode=router do argumentów serwera lub ustaw POLISH_ACADEMIC_MODE=router. Klient zobaczy trzy narzędzia (list_sources, search, get_record). W obu trybach można ograniczyć źródła.
Grupa | Zawartość | Narzędzia |
| Biblioteka Nauki, Katalog Biblioteki Narodowej, RCIN, repozytoria uczelni, RODBuK, RePOD, POL-on, PBN, Ludzie Nauki, BazTOL, katalog ŚUM, PPM, arXiv, CORE, Open Research Europe, F1000Research | 42 |
| Bank Danych Lokalnych GUS, dane.gov.pl, NIW, IMGW, Otwarte Dane Miasta Krakowa, MSIP Kraków, Strategia Krakowa — Bank Informacji o Mieście i Metropolii | 23 |
| ISAP (akty prawne), SAOS (orzeczenia), Biblioteka Sejmowa, KRS | 12 |
| PKN, katalog norm WIEDZA | 3 |
| Wolne Lektury, zbiory filmowe i fotograficzne, biblioteki cyfrowe, Archiwa Państwowe, archiwa społeczne i bazy genealogiczne | 63 |
Kreator setup pyta o grupy. Ręcznie ustawisz je zmienną POLISH_ACADEMIC_SOURCES w sekcji env serwera:
{
"mcpServers": {
"polish-academic": {
"command": "npx",
"args": ["-y", "polish-academic-mcp"],
"env": { "POLISH_ACADEMIC_SOURCES": "nauka,prawo" }
}
}
}albo argumentem: "args": ["-y", "polish-academic-mcp", "--sources=nauka,prawo"]. Możesz łączyć grupy z pojedynczymi bazami (nauka,isap) i wykluczać (nauka,-pbn). Pełna lista identyfikatorów: npx -y polish-academic-mcp --list-sources. Nieznane nazwy są pomijane z ostrzeżeniem w logu, a pusty wybór włącza wszystko, więc literówka nie wyłączy serwera.
Wszystkie bazy i narzędzia
Narzędzie | Baza danych | Opis |
| Wyszukiwanie pełnotekstowe (API JSON portalu — frazy, tytuły, abstrakty) | |
| Biblioteka Nauki | Listowanie rekordów OAI-PMH ( |
| Biblioteka Nauki | Pobranie metadanych pojedynczego artykułu po ID (OAI-PMH |
| Wyszukiwanie opisów bibliograficznych książek, czasopism, map i innych materiałów | |
| Katalog Biblioteki Narodowej | Pobranie rekordu bibliograficznego z polami MARC 21 po identyfikatorze zwróconym przez wyszukiwanie |
| Wyszukiwanie w spisie Zbiory online po nazwie lub numerze zespołu | |
| Archiwum Narodowe w Krakowie | Pozycje zespołu i odsyłacze do kopii cyfrowych |
| Wyszukiwanie starodruków, rękopisów, map i regionaliów | |
| Biblioteka Cyfrowa UWr | Metadane Dublin Core po identyfikatorze wydania |
| Przegląd metadanych OAI-PMH według kolekcji i daty aktualizacji | |
| Ośrodek KARTA | Odczyt metadanych rekordu po identyfikatorze OAI |
| Wyszukiwanie po nazwie w aktualnym wykazie OPP uprawnionych do otrzymania 1,5% podatku | |
| Dane organizacji z rejestru S po numerze KRS | |
| OAI-PMH | |
| RCIN | OAI-PMH |
| Wyszukiwanie publikacji z Repozytorium Jagiellońskiego | |
| RUJ | Pobranie metadanych pozycji po UUID |
| Wyszukiwanie prac i publikacji AGH w Krakowie | |
| AGH | Pobranie metadanych pozycji po UUID |
| Wyszukiwanie publikacji Uniwersytetu Adama Mickiewicza w Poznaniu | |
| AMU | Pobranie metadanych pozycji po UUID |
| Wyszukiwanie publikacji Uniwersytetu Andrzeja Frycza Modrzewskiego w Krakowie | |
| UAFM | Pobranie metadanych pozycji po UUID |
| Wyszukiwanie danych badawczych ICM UW | |
| ICM | Pobranie metadanych pozycji po UUID |
| Wyszukiwanie zbiorów danych badawczych uczelni krakowskich | |
| Wyszukiwanie polskich otwartych danych badawczych | |
| RePOD | Pobranie metadanych zbioru danych po DOI |
| Wyszukiwanie preprintów (składnia arXiv: | |
| arXiv | Pobranie metadanych i streszczenia preprintu po identyfikatorze arXiv |
| Wyszukiwanie publikacji open access z repozytoriów na świecie (opcjonalny | |
| CORE | Pobranie metadanych i pełnego tekstu pracy po identyfikatorze CORE |
| Wyszukiwanie artykułów na platformie Komisji Europejskiej (strona wyszukiwania, bez API JSON) | |
| Open Research Europe | Pobranie metadanych i streszczenia artykułu po numerze ORE |
| Wyszukiwanie artykułów open access z otwartym recenzowaniem (strona wyszukiwania, bez API JSON) | |
| F1000Research | Pobranie metadanych i streszczenia artykułu po numerze, np. |
| Wyszukiwanie danych otwartych z portalu rządowego | |
| dane.gov.pl | Pobranie szczegółów zbioru danych po ID |
| Zbiory otwarte: uczelnie, pracownicy, projekty, publikacje, kursy (JSON, token strony) | |
| Wyszukiwanie publikacji (JSON; wymaga | |
| PBN | Wyszukiwanie osób / ORCID (JSON; te same nagłówki co wyżej) |
| PBN | Metadane publikacji po id obiektu (JSON) |
| Wyszukiwanie tematów (subjectów) po fragmencie nazwy (API v1) | |
| BDL / GUS | Wyszukiwanie zmiennych statystycznych (cech) |
| BDL / GUS | Wyszukiwanie jednostek terytorialnych (TERYT itd.) |
| BDL / GUS | Metadane jednej zmiennej po id liczbowym |
| BDL / GUS | Wartości dla jednej zmiennej po jednostkach (np. województwa) |
| BDL / GUS | Wartości dla jednej jednostki i wskazanych zmiennych |
| Aktualne odczyty ze stacji synoptycznych (pogodowych) | |
| IMGW-PIB | Aktualne odczyty z wodowskazów i stacji hydrologicznych |
| IMGW-PIB | Aktualne odczyty ze stacji meteorologicznych |
| IMGW-PIB | Aktywne ostrzeżenia meteorologiczne i hydrologiczne |
| Wyszukiwanie we wszystkich 45 zbiorach UMK (12 kategorii) — wyszukiwarka portalu i pełny katalog | |
| Otwarte Dane Miasta Krakowa | Karta zbioru: metadane, tabele REST API api.um.krakow.pl, Swagger, przykładowe wiersze, linki ArcGIS Hub |
| Otwarte Dane Miasta Krakowa (WSO2) | Dane JSON {value:[...]} bezpośrednio z 42 API OD-* na api.um.krakow.pl (katalog devportal v3) |
| Katalog danych i usług (179 zbiorów) oraz Geoportal metadanych (863 rekordy, JSON/XML) | |
| MSIP Kraków | Karta zbioru przestrzennego: pliki SHP/DXF/JSON ZIP, usługi WMS/WFS, metadane ISO 19115 |
| MSIP Kraków (ArcGIS REST) | Foldery i usługi MapServer/FeatureServer: msip3.um.krakow.pl (12.1) i msip.um.krakow.pl (10.81) |
| MSIP Kraków (ArcGIS REST) | Zapytanie atrybutowe query do warstwy MapServer (EPSG:2178), np. dzielnice, demografia, transport ZTP |
| Wyszukiwarka portalu Rozwój Krakowa i indeks Banku Informacji o Mieście i Metropolii | |
| Strategia Krakowa — Bank Informacji | Treść artykułu/raportu, załączniki PDF/XLS (plikimpi.krakow.pl), wersja PDF (getPdf) |
| Strategia Krakowa — Bank Informacji | Spis raportów o stanie Gminy/Miasta, Kraków w liczbach, Barometr, prognozy demograficzne, 16 dziedzin zarządzania |
| Wyszukiwarka treści strony www.pkn.pl (Drupal / Solr, HTML) | |
| Wyszukiwarka norm (Liferay; sesja + POST, HTML) | |
| WIEDZA | Karta pojedynczej normy po numerze katalogowym (HTML) |
| Baza Legalnych Źródeł (Legalna Kultura) | WordPress REST |
| Baza Legalnych Źródeł | Pojedyncze źródło po ID (JSON) |
| Baza Legalnych Źródeł | Taksonomia |
| Wyszukiwanie pełnotekstowe (HTML; katalog nieaktualizowany od 2022) | |
| BazTOL | Przeglądanie po dziedzinie (id z menu) |
| BazTOL | Szczegóły zasobu po ID (HTML) |
| Kanał RSS aktualności instytucji (XML) | |
| NAC | Wyszukiwarka WordPress REST ( |
| NAC | Pojedynczy wpis blogowy po id (JSON) |
| NAC | Pojedyncza strona statyczna po id (JSON) |
| Katalog Biblioteki ŚUM (Aleph) | X-Services |
| Katalog ŚUM / Aleph | X-Services |
| Wyszukiwanie profili naukowców (nazwisko, dziedzina, paginacja) | |
| Ludzie Nauki | Wyszukiwanie semantyczne / pełnotekstowe po frazie |
| Ludzie Nauki | ORCID, stopnie/tytuły, słowa kluczowe dla profilu po ID |
| Wyszukiwanie katalogu dzieł (Collectio / PAU) | |
| PAUart | Metadane pojedynczego dzieła po ID z katalogu |
| Wyszukiwanie aktów prawnych (tytuł, słowa kluczowe ISAP, daty, DU/MP itd.) | |
| ISAP / ELI | Metadane pojedynczego aktu po ELI, np. |
| Wyszukiwanie słowne ( | |
| Biblioteka Sejmowa | Karta bibliograficzna ( |
| Wyszukiwanie orzeczeń (fraza | |
| SAOS / API przeglądania | Pełne orzeczenie po id liczbowym z wyszukiwarki |
| SAOS / API pobierania | Lista endpointów hurtowego pobierania (dump) |
| SAOS — dump | Słownik sądów powszechnich (stronicowanie) |
| SAOS — dump | Słownik izb SN (stronicowanie) |
| SAOS — dump | Hurtowe orzeczenia (filtry dat / synchronizacja; duże odpowiedzi) |
| SAOS — dump | Etykiety modułu wzbogacania (stronicowanie) |
| Słowniki: autorzy, epoki, gatunki, rodzaje, motywy, kolekcje (slugi) | |
| Wolne Lektury | Lista utworów po filtrach (autor/epoka/gatunek/rodzaj); nie woła |
| Wolne Lektury | Metadane i linki do plików po slugu utworu |
| Wolne Lektury | Kolekcja tematyczna + lista książek w kolekcji |
| Wyszukiwanie materiałów po słowie kluczowym (JSON API frontu; | |
| Ninateka | Metadane pojedynczego materiału po id liczbowym z wyszukiwarki (JSON) |
| Wyszukiwanie plakatów ( | |
| Gapla | Strona pojedynczego plakatu po id ( |
| Wyszukiwanie fotosów i zdjęć ( | |
| Fototeka | Strona pojedynczego zdjęcia po id ( |
| FilmPolski.pl (PWSFTviT) | Wyszukiwarka bazy filmu ( |
| FilmPolski.pl | Karta rekordu po id ( |
| Fototeka Śląska (MWO Opole) | Wyszukiwanie zdjęć (WordPress GET |
| Fototeka Śląska | Strona rekordu |
| Wyszukiwanie Solr (HTML — kafelki wyników; brak publicznego JSON API) | |
| Repozytorium FN | Karta rekordu po id węzła Drupal ( |
| Repozytorium FN | Indeks tytułów po pierwszej literze (A–Ż / INNE — HTML) |
| Repozytorium FN | Przegląd: fabularne / dokumentalne / animacje / magazyn (HTML) |
| Pobranie pojedynczej strony statycznej po ścieżce względnej ( | |
| Dokumenty Śląska | Lista JSON ścieżek do głównej serii dokumentów średniowiecznych (okresy do 1333 r.) — pomoc nawigacyjna |
Zbiory archiwalne i organizacje
Archiwum Narodowe w Krakowie prowadzi spis zespołów z odsyłaczami do kopii cyfrowych. W routerze podaj
sources: ["ank"]i np.query: "29/33". Użyjget_recordzid: "ank:29/33", aby zebrać odsyłacze zespołu.W KARCIE przeglądaj kolekcje przez
searchzoperation: "karta_list_records"ifilters: {set: "KARTADigitalLibrary:BCOK:AOP"}dla Archiwów Społecznych.karta_get_recordprzyjmuje identyfikator OAI lub jego końcowy numer.Wykaz NIW obejmuje OPP uprawnione do 1,5% podatku, czyli część sektora NGO. Numer z
niw_opp_searchmożna przekazać dokrs_get_organizationlub użyć w routerze, np.get_recordzid: "krs:0000030897".
Kraków — Otwarte Dane, MSIP i Bank Informacji o Mieście i Metropolii
Trzy źródła grupy dane pokrywają wszystkie publicznie dostępne dane Miasta Krakowa:
Otwarte Dane Miasta Krakowa (
krakow_od_*): 45 zbiorów w 12 kategoriach (m.in. bezrobocie i oferty pracy GUP, cudzoziemcy i zameldowani w 18 dzielnicach, statystyki demograficzne od 1995 r., żłobki/przedszkola/szkoły, parki miejskie i kieszonkowe, zarejestrowane pojazdy, ruch turystyczny od 2015 r., Komunikacja Miejska KMK, działalność Biblioteki Kraków, muzeów, teatrów i ośrodków kultury, biegi miejskie). Każdy zbiór z tabelami danych udostępnia REST API na api.um.krakow.pl (WSO2 API Manager, format OData JSON{value:[...]}, eksport JSON/CSV/XLSX, dokumentacja Swagger per tabela); katalog wszystkich 42 API OD-*:https://api.um.krakow.pl/api/am/devportal/v3/apis?limit=100, portal deweloperski: https://api.um.krakow.pl/devportal. Zbiory bez tabel API (np. KMK) linkują warstwy ArcGIS Hub ZTP.MSIP — Miejski System Informacji Przestrzennej (
krakow_msip_*): Katalog danych i usług ze 179 zbiorami przestrzennymi (budynki/działki ewidencyjne, adresy i ulice EMUiA, dzielnice, MPZP i decyzje WZ, mapy hałasu, ortofotomapy, zameldowania) z plikami SHP/DXF/JSON (ZIP), usługami WMS/WFS i metadanymi ISO 19115; katalog metadanych Geoportal (863 rekordy,https://msip.um.krakow.pl/geoportal/rest/metadata/search); usługi ArcGIS REST na dwóch serwerach:https://msip3.um.krakow.pl/server/rest/services(ArcGIS Server 12.1, 36 folderów: Demografia, Geodezja, Planowanie, Pobieranie, Transport, Zdrowie, Zabytki…) orazhttps://msip.um.krakow.pl/arcgis/rest/services(10.81: Obserwatorium, Metropolia Krakowska, Hosted), z zapytaniamiquerydo warstw (EPSG:2178; folderPobieranie: Adresy, Budynki, Decyzje_Pnb, Decyzje_Wz, Dzialki, Dzielnice, Ulice, Wybory).Strategia Krakowa — Bank Informacji o Mieście i Metropolii (
krakow_strategia_*): Raport o stanie Gminy (od 2018 r., załączniki PDF na plikimpi.krakow.pl), Raport o stanie Miasta, Kraków w liczbach / Krakow in numbers, Biuletyn Statystyczny (BIP), prognozy demograficzne dla Krakowa i MOF do 2050 roku, statystyka eksperymentalna (dojazdy do pracy, sytuacja demograficzna/dochodowa Krakowa, KOM i OSI), badania społeczne (Barometr Krakowski od 2015 r., Badanie Jakości Życia i Jakości Usług Publicznych) oraz 16 dziedzin zarządzania; wyszukiwarka portalu Rozwój Krakowa (POST,sp_port_id=128) i wersja PDF każdego artykułu (getPdf/?dok_id=).
Biblioteka Sejmowa — katalog OPAC
Katalog Biblioteki Sejmowej działa w systemie Aleph (interfejs jak w przeglądarce). Nie udostępnia publicznego API JSON ani dokumentacji SRU dla maszynowego dostępu w stylu REST — narzędzia bs_sejm_search i bs_sejm_get_item wołają te same adresy co formularz WWW (func=find-b — lista wyników, func=item-global — pełna karta rekordu) i zwracają surowe HTML.
Typowy przepływ: bs_sejm_search z parametrem local_base (np. bis01 — katalog główny, bis05 — artykuły z czasopism, pos01 — nagrania z posiedzeń, tek01 — teksty konstytucji) → z HTML listy wyników odczytaj z linków item-global wartości doc_library i doc_number → bs_sejm_get_item. Pełna lista baz jest na stronie startowej katalogu.
Uwaga: to nie jest to samo co api.sejm.gov.pl — akty prawne i metadane ISAP obsługują osobne narzędzia isap_* (ELI API).
Fototeka, FilmPolski, Fototeka Śląska i Dokumenty Śląska
Fototeka (Filmoteka Narodowa — INA) nie publikuje osobnego REST/OpenAPI. Wyniki wyszukiwania są serwowane jako HTML (/pl/strona/wyszukiwarka.html z parametrami key, search_type, pageNumber, howmany). fototeka_get_photo zwraca stronę rekordu (/pl/foto/view/{id}.html). Wewnętrzny endpoint ajax.html (JSON z fragmentami HTML) wymaga pełnego formularza sesji i nie jest używany w narzędziu.
FilmPolski.pl — Internetowa Baza Filmu Polskiego; brak publicznego API JSON. Wyszukiwanie to GET na index.php (szukaj, rodzaj: fragment / początek / dokładnie). Osoby w bazie są jako „nazwisko, imię” (w trybie dokładnie wymagany jest przecinek). Narzędzia parsują HTML do zwartego JSON (filmpolski_search) i zwracają tekst z głównego artykułu rekordu (filmpolski_get_item). Regulamin serwisu ogranicza kopiowanie całej bazy — używaj krótkich fragmentów i podawaj źródło.
Fototeka Śląska (Muzeum Wsi Opolskiego) działa na WordPressie — istnieje ogólne /wp-json/, ale typ wpisów galerii nie ma publicznego endpointu wp/v2/... dla pojedynczych rekordów. Wyszukiwanie jak na stronie głównej: GET z s (fraza), t (tytuł / miejscowość / powiat / opis / nr katalogowy), opcjonalnie y (okres historyczny), paged (strona). fototekaslaska_search bierze tylko blok .search-list, żeby nie mieszać wyników z sekcją „Ostatnio dodane”. fototekaslaska_get_photo pobiera /galeria/{slug}/. Prawa do zdjęć pozostają po stronie muzeum — bez masowego pobierania plików.
Dokumenty Śląska to statyczna witryna (pliki indeks … / dokument … i podkatalogi) — brak API i centralnej wyszukiwarki. dokumenty_slaska_get_page pobiera jeden zasób po bezpiecznej ścieżce względnej; dokumenty_slaska_medieval_catalog to stała lista JSON ścieżek głównej serii średniowiecznej (nawigacja, nie zapytanie full-text).
NAC i katalog ŚUM (Aleph)
Narodowe Archiwum Cyfrowe — strona instytucji na WordPressie: narzędzia nac_* używają kanału RSS (/feed/) oraz WordPress REST przez fallback ?rest_route=/wp/v2/... (często stabilniejszy niż /wp-json/... przy ochronach WAF). Zdigitalizowane materiały archiwalne są w serwisie Szukaj w Archiwach (informacje NAC) — brak tam publicznego, udokumentowanego API do przeszukiwania katalogu; często działa też ochrona przed botami (Incapsula).
Katalog Biblioteki Śląskiego Uniwersytetu Medycznego to OPAC Aleph (Ex Libris). Interfejs maszynowy: Aleph X-Services pod https://katalog.sum.edu.pl/X (odpowiedzi XML), zgodnie z dokumentacją Ex Libris. sum_aleph_find woła op=find (np. request=wrd=…); na instalacji może pojawić się komunikat o braku konfiguracji bramki SRU — wtedy wyszukiwanie przez X-Server wymaga naprawy po stronie biblioteki. sum_aleph_present (op=present, format marc itd.) służy do pobrania rekordów z numeru zestawu i pozycji.
Większość baz oferuje otwarty dostęp do odczytu bez obowiązkowych kluczy API. Wyjątki: narzędzia WIEDZA (wiedza_*) nie buforują odpowiedzi (sesja Liferay); PKN www (pkn_search) ma krótszy TTL cache niż repozytoria akademickie. BDL (GUS) działa anonimowo, ale możesz ustawić zmienną środowiskową BDL_CLIENT_ID (nagłówek X-ClientId), jeśli masz klucz z Portalu API GUS — wtedy wyższe limity wywołań po stronie GUS. Dokumentacja REST: https://bdl.stat.gov.pl/api/v1/ (OpenAPI: …/swagger/doc/swagger.json).
PBN (wymagane dostępy): aby włączyć narzędzia pbn_search_publications, pbn_search_persons i pbn_get_publication, musisz mieć aktywny dostęp do API PBN i ustawić co najmniej PBN_APP_ID + PBN_APP_TOKEN (opcjonalnie PBN_USER_TOKEN). Dostęp i rejestracja aplikacji: OpenAPI PBN oraz Centrum pomocy PBN.
Rozwiązywanie problemów
Najpierw uruchom npx -y polish-academic-mcp doctor. Sprawdza wersję Node.js, połączenie z bazami i to, które aplikacje mają skonfigurowany serwer.
Objaw | Co zrobić |
| Node.js nie jest zainstalowany albo aplikacja okienkowa go nie widzi (częste przy nvm/fnm/volta na macOS). Zainstaluj LTS z nodejs.org i uruchom ponownie |
Windows: serwer nie startuje | Użyj polecenia |
„Server disconnected” / „transport closed” przy pierwszym uruchomieniu | Pierwsze uruchomienie pobiera pakiet (kilka–kilkadziesiąt sekund). Poczekaj i uruchom aplikację ponownie. |
Narzędzia nie pojawiają się | Zamknij aplikację całkowicie (także z zasobnika / paska menu) i otwórz ponownie. Sprawdź limit narzędzi aplikacji i ogranicz bazy. |
Model nie używa narzędzi | W LM Studio, AnythingLLM i Jan włącz narzędzia w czacie lub tryb agenta i wybierz model obsługujący wywołania narzędzi (tool calling). |
Błąd tylko jednej bazy | Serwis mógł być chwilowo niedostępny (np. repozytorium UAFM, wyszukiwarka SAOS). Pozostałe bazy działają niezależnie. |
Sieć firmowa z proxy | Wbudowany |
Po zmianie wersji Node.js serwer przestał działać | Uruchom ponownie |
Logi. Komunikaty serwera trafiają do logów aplikacji, np. Claude Desktop: ~/Library/Logs/Claude/mcp-server-polish-academic.log (macOS) lub %APPDATA%\Claude\logs\ (Windows). Aby zobaczyć każde zapytanie HTTP do baz (adres bez wartości parametrów, status, czas), dodaj do env serwera "POLISH_ACADEMIC_DEBUG": "1".
Aktualizacje. Przy wpisie npx -y polish-academic-mcp (bez numeru wersji) npx przy starcie aplikacji sprawdza, czy jest nowsza wersja, i ją pobiera. Jeśli wolisz aktualizować świadomie (np. w pracowni lub firmie), przypnij wersję: npx -y polish-academic-mcp setup --pin zapisze polish-academic-mcp@<wersja>. Aktualizacja to wtedy npx -y polish-academic-mcp@<nowa-wersja> setup --pin po sprawdzeniu nowej wersji.
Odinstalowanie. npx -y polish-academic-mcp uninstall usuwa wpis z aplikacji (z kopią zapasową pliku).
Zmienne środowiskowe
Wszystkie są opcjonalne. Ustawia się je w sekcji env wpisu serwera w konfiguracji aplikacji.
Zmienna | Działanie |
| włączone grupy lub bazy, np. |
| dostęp do API PBN (narzędzia |
| token użytkownika PBN dla operacji wymagających kontekstu użytkownika |
| klucz API GUS BDL: wyższe limity zapytań |
| klucz API CORE: wyższe limity zapytań ( |
|
|
Dla programistów
git clone https://github.com/asterixix/polish-academic-mcp.git
cd polish-academic-mcp
npm install
npm run build
npm test # testy kontraktowe, konfiguracji klientów i polityki sieciowej
npm run dev # serwer stdio z src/index.ts
npm run smoke:tools # test na żywo wszystkich narzędzi (wymaga internetu)Lokalny build podłączysz do aplikacji poleceniem node i ścieżką bezwzględną do dist/index.js. Do ręcznych testów przyda się MCP Inspector: npx @modelcontextprotocol/inspector node dist/index.js.
Aplikacja AI (Claude, Cursor, VS Code…)
│ stdio JSON-RPC
▼
src/index.ts CLI (setup, doctor, --sources) + StdioServerTransport
src/server.ts createServer(): rejestruje wybrane źródła z src/sources.ts
src/tools/* jeden plik na bazę; odpowiedzi to surowe dane ze źródła
src/cache.ts cache w pamięci, limit 30 s, jedna ponowna próba przy błędach sieciJak dodać nową bazę: AGENTS.md. Zasady współpracy: CONTRIBUTING.md.
Polityka prywatności (Privacy Policy)
Niniejsza sekcja określa zasady prywatności dla lokalnego serwera MCP (polish-academic-mcp, repozytorium: https://github.com/asterixix/polish-academic-mcp) oraz zdalnego konektora chmurowego dostępnego pod adresem https://pamcp.pl (wymóg katalogów Anthropic Claude, OpenAI ChatGPT oraz Perplexity). Pełna wersja online jest dostępna pod adresem https://pamcp.pl/privacy (oraz regulamin pod https://pamcp.pl/terms, dokumentacja konektora pod https://pamcp.pl/connectors).
Praktyki zbierania danych (Data Collection Practices):
Serwer lokalny (
npx polish-academic-mcp): działa w całości na komputerze użytkownika i nie zbiera, nie przechowuje ani nie przesyła żadnych danych osobowych, telemetrii ani identyfikatorów sesji do autora pakietu.Zdalny konektor chmurowy (
https://pamcp.pl/mcp): stosuje minimalizację danych (Privacy by Design). Narzędzia przyjmują wyłącznie parametry wyszukiwania (frazy, identyfikatory rekordów, sygnatury aktów). Serwer nie pobiera historii czatu klienta, nie zbiera lokalizacji GPS ani danych wrażliwych (PHI, PCI DSS, numerów PESEL/SSN, haseł). Dla potrzeb autoryzacji OAuth 2.1 przetwarzany jest wyłącznie adres e-mail (lub ORCID iD / klucz publiczny passkey WebAuthn), kryptograficzny skrót SHA-256 tokenu OAuth oraz licznik przydziału zapytań.
Wykorzystanie i przechowywanie (Usage and Storage):
Dane konta i autoryzacji w wersji chmurowej służą wyłącznie do uwierzytelniania OAuth 2.1 (PKCE S256), realizacji zapytań w trybie tylko do odczytu (
readOnlyHint: true,destructiveHint: false) oraz egzekwowania limitów zapytań w bazie Cloudflare D1.Odpowiedzi z publicznych API są tymczasowo buforowane (cache) w pamięci RAM (lokalnie) lub Cloudflare KV (w chmurze) bez powiązania z tożsamością użytkownika.
Udostępnianie podmiotom trzecim (Third-Party Sharing):
Nie sprzedajemy ani nie udostępniamy danych osobowych podmiotom trzecim ani sieciom reklamowym.
Zapytania wyszukiwawcze (bez danych konta użytkownika) są wysyłane bezpośrednio do publicznych interfejsów API 51 polskich instytucji naukowych, statystycznych, prawnych i archiwalnych (m.in. Biblioteka Nauki, GUS BDL, Sejm ELI / ISAP, SAOS, Wolne Lektury, Archiwa Państwowe).
W wersji chmurowej podmiotem przetwarzającym infrastrukturę jest Cloudflare, Inc., a przy logowaniu przez ORCID — ORCID, Inc.
Okres przechowywania (Data Retention):
Dane konta: do momentu usunięcia konta na żądanie użytkownika.
Kody autoryzacyjne OAuth: 10 minut; tokeny dostępowe: 1 godzina; tokeny odświeżające: 30 dni lub do odwołania.
Cache publicznych odpowiedzi API: od 1 do 24 godzin.
Dane kontaktowe (Contact Information):
Administrator danych i wsparcie techniczne: Artur Sendyka
E-mail: artur@sendyka.dev
Serwis chmurowy i konektor MCP: https://pamcp.pl (
https://pamcp.pl/mcp)Strona autora: https://sendyka.dev
Kod źródłowy oraz zgłoszenia błędów i bezpieczeństwa: https://github.com/asterixix/polish-academic-mcp / Issues
Licencja
MIT
Available Tools
85 toolsagh_get_itemA
Retrieve full metadata for a single item in the AGH University of Krakow Repository by its UUID. The UUID is found in the 'uuid' field of agh_search results. Returns Dublin Core metadata including title, authors, abstract, type, date, DOI, and handle URL.
Inputs: uuid (required).
agh_searchA
Search publications in the AGH University of Krakow Repository (repo.agh.edu.pl) via DSpace 7 discovery. Covers theses, dissertations, articles, technical reports, and monographs from AGH. Supports full-text search with filter fields, sort options, and 0-based pagination. Results are HAL+JSON with full Dublin Core metadata, compacted into a readable summary. Each filter value may include an explicit operator suffix separated by a comma (e.g. 'Kowalski,equals'); if omitted the documented default operator is applied. Supported operators: equals, notequals, contains, notcontains, authority, notauthority, query.
Inputs: query (required), page, size, sort, +7 more.
amu_get_itemA
Retrieve full metadata for a single item in the Adam Mickiewicz University Repository by its UUID. The UUID is found in the 'uuid' field of amu_search results.
Inputs: uuid (required).
amu_searchA
Search publications in the Adam Mickiewicz University Repository (repozytorium.amu.edu.pl) via DSpace 7 discovery. Supports full-text search with filters for author, subject, date, entity type, and full-text availability. Results are HAL+JSON with Dublin Core metadata. Each filter value may include an explicit operator suffix (e.g. 'Smith,equals'); if omitted the documented default operator is applied. Supported operators: equals, notequals, contains, notcontains, authority, notauthority, query.
Inputs: query (required), page, size, sort, +6 more.
baztol_browse_domainB
Browse BazTOL by subject domain (same categories as the portal sidebar). Domain ids: 24 Architektura, 25 Automatyka, 26 Biotechnologia, 27 Budownictwo, 28 Chemia, 29 Elektronika i Telekomunikacja, 30 Elektrotechnika i Energetyka, 31 Fizyka i Astronomia, 32 Geodezja i Kartografia, 33 Górnictwo i Geologia, 34 Informatyka, 35 Inżynieria i Ochrona Środowiska, 36 Inżynieria Materiałowa, 37 Matematyka, 38 Mechanika, 39 Oceanologia i Oceanotechnika, 40 Transport, 41 Zarządzanie, 42 Źródła ogólne. Returns HTML.
Inputs: domain_id (required), page.
baztol_get_resourceA
Fetch one BazTOL resource description page (HTML) by numeric id. Ids appear in result lists as links /baztol_czytelnik/baztol?id=….
Inputs: resource_id (required).
baztol_searchA
Search BazTOL (Polish technical-science gateway, PUT library). Returns HTML result list (titles, links, short descriptions, “Więcej” ids). Pagination: 20 hits per page; use page (1-based). No official JSON API — this tool POSTs the same form as the website.
Inputs: query (required), page.
bdl_get_data_by_unitB
Fetch values for one territorial unit for one or more variables (numeric variable ids). Requires at least one variable id. Optional year list and paging. API: GET /data/by-unit/{unit-id} with repeated var-id query params.
Inputs: unit_id (required), variable_ids (required), years, aggregate_id, +3 more.
bdl_get_data_by_variableA
Fetch statistical values for one variable across territorial units (e.g. all voivodeships). Set unit_level (BDL level id) and optionally unit_parent_id to scope results; year filters which periods are returned. Pagination is 0-based. API: GET /data/by-variable/{var-id}.
Inputs: variable_id (required), years, unit_level, unit_parent_id, +4 more.
bdl_get_variableA
Fetch metadata for one BDL variable by numeric id (from bdl_search_variables results). API: GET /variables/{id}.
Inputs: variable_id (required), lang.
bdl_search_subjectsA
Search BDL (GUS) thematic subjects by name fragment. Use to discover subject IDs before listing variables or drilling into the tree. API: GET /subjects/search. Pagination is 0-based. Returns JSON (subject id, name, children ids, levels).
Inputs: name (required), page, page_size, sort, +1 more.
bdl_search_unitsA
Search BDL territorial units (voivodeships, counties, powiat, gmina, etc.) by name fragment. Optional level and year filters. Use returned unit id with bdl_get_data_by_unit. API: GET /units/search. Pagination is 0-based.
Inputs: name, levels, years, page, +3 more.
bdl_search_variablesA
Search BDL statistical variables (characteristics). Filter by name text (N1…N5), subject-id, level, and years. Use results' numeric id with bdl_get_data_by_variable or bdl_get_data_by_unit. API: GET /variables/search. Pagination is 0-based.
Inputs: name, subject_id, level, years, +4 more.
blz_get_listingC
Fetch one source (listing) by numeric WordPress post ID from Baza Legalnych Źródeł. Returns raw JSON.
Inputs: listing_id (required).
blz_listing_categoriesB
List taxonomy terms for listing_cat (categories like Filmy, Muzyka, Biblioteki, Muzea). Use term id as listing_cat in blz_search. Raw JSON from WordPress REST.
Inputs: page, per_page, parent.
blz_searchB
Search legal digital culture sources in Baza Legalnych Źródeł (Fundacja Legalna Kultura). WordPress REST: listings CPT. Optional full-text search and/or listing_cat term ID (use blz_listing_categories for IDs). Returns raw JSON array of listing objects.
Inputs: query, listing_cat, page, per_page, +2 more.
bn_get_articleA
Fetch the full metadata record for a single article from Biblioteka Nauki by its numeric ID. Defaults to jats format which includes abstract, keywords, affiliations, and references.
Inputs: article_id (required), metadata_format.
bn_search_articlesA
OAI-PMH ListRecords harvest for Biblioteka Nauki — NOT full-text keyword search. Use this to list records by optional date range (from_date/until_date) and/or OAI set (journal id from ListSets), or to page with resumption_token. There is no query string in OAI-PMH; for keyword/topic search use bn_search_publications. Returns raw XML. metadata_format=oai_dc (Dublin Core) or jats (abstracts, keywords, references).
Inputs: from_date, until_date, set, metadata_format, +2 more.
bn_search_publicationsA
Full-text search in Biblioteka Nauki (Polish open-access articles, books, chapters). Uses the public JSON search API (same as the website). Prefer this tool when the user gives keywords, topics, author names, or titles. For harvesting by date range or OAI journal set without keywords, use bn_search_articles (OAI-PMH XML) instead. Returns JSON with hits, snippets (mainTitleSnippets, fullTextSnippets), and totalResults.
Inputs: query (required), page, page_size, sort_field, +5 more.
bs_sejm_get_itemA
Fetch one Sejm Library OPAC bibliographic record as HTML (func=item-global). Pass doc_library and doc_number exactly as in item-global links from bs_sejm_search results (e.g. doc_library=BIS01, doc_number=000179010). sub_library is usually BS for main stacks — copy from the link if different. Stable per record (unlike session-bound full-set-set links); suitable for caching.
Inputs: doc_library (required), doc_number (required), sub_library, year, +1 more.
bs_sejm_searchA
Search the Sejm Library (Biblioteka Sejmowa) Aleph OPAC at bs.sejm.gov.pl — books, serials, parliamentary materials, etc. There is no public JSON API; this calls the same word-search form as the website (func=find-b). Returns raw HTML: the short hit list includes author, title, year, and links with doc_library + doc_number — use bs_sejm_get_item for the full bibliographic card. local_base examples: bis01 (main catalog), bis02, bis03, bis05 (articles), pos01 (Sejm recordings), tek01 (constitutional texts), sta01 (old prints), ars01 — see the library's base list on the OPAC home page. find_code: WRD = all fields (default), WST = title, WHF = author, WNW = publisher, WHP = subject, SYS = record number, etc. Only the first page of hits is returned; narrow the query or use get_item after picking doc_number from the HTML.
Inputs: request (required), local_base (required), find_code, adjacent.
dane_get_datasetA
Get full details for a specific dataset on dane.gov.pl by its numeric ID, including all downloadable resources (CSV, XLSX, JSON, API links, etc.). The dataset_id is the integer id field returned by dane_search.
Inputs: dataset_id (required).
dane_searchA
Search the Polish government open data portal (dane.gov.pl). Contains 43,000+ datasets from ministries, municipalities, and public institutions. Datasets flagged has_research_data=true are specifically academic. Returns JSON with title, category, license (mostly CC0), institution, and download stats.
Inputs: query (required), category, per_page, page, +1 more.
dokumenty_slaska_get_pageA
Fetch a single page from the Dokumenty Śląska static site (medieval Silesian documents, regesta, seals, iconography). There is no public search API — content is static HTML; use indeks*.html for tables of contents and dokument*.html for full compilations where the menu provides them. Pass a relative path such as "indeks 1200.html", "kamenz/index.html", or "bibliografia.html". Spaces in filenames are OK. Returns raw HTML (iso-8859-2 on most pages). Follow links from the response to load further pages.
Inputs: path (required).
dokumenty_slaska_medieval_catalogA
Returns a fixed JSON list of relative paths for the main medieval document series on dokumentyslaska.pl (menu „Dokumenty”: periods up to 1333). Use dokumenty_slaska_get_page with indeks* paths for a table of contents and dokument* for the full running text for that period. This is not a database query — only a navigation aid; other collections (monasteries, chronicles, etc.) use different folders — discover paths from the homepage HTML.
Inputs: no named parameters.
filmpolski_get_itemA
Fetch one FilmPolski.pl record by numeric id (from filmpolski_search links index.php/{id}). Returns plain text extracted from the main (film or person), truncated for LLM context. Full page is HTML; this tool strips markup. Obey copyright/database notices on the site.
Inputs: item_id (required).
filmpolski_searchA
Search FilmPolski.pl (Polish Film Database): films, TV, theatre, and people/institutions. No official JSON API — HTML is parsed into compact JSON (ids for filmpolski_get_item). match_mode: fragment (substring), start (title/name prefix), exact (exact title; for persons use 'Surname, Firstname' with comma). Respect site terms: short excerpts; cite filmpolski.pl as source.
Inputs: query (required), match_mode.
fn_repo_browse_kindB
Browse by production kind: fiction (fabularne), documentary, animation/experimental, or magazine — same entries as the top menu. Returns HTML (not JSON).
Inputs: kind (required), lang.
fn_repo_film_indexA
Browse the film catalog by first letter of title (A–Z, Polish letters, or INNE). Returns HTML list linking to /?q=pl/node/… — same as the site “katalog filmów”.
Inputs: letter (required), lang.
fn_repo_get_nodeA
Fetch one repository page by Drupal node id (numeric), as in /?q=pl/node/8937. Returns HTML (metadata, description, video embeds, person links).
Inputs: node_id (required), lang.
fn_repo_searchA
Search the Filmoteka Narodowa digital repository (repozytorium.fn.org.pl) via Apache Solr. No JSON API — returns the same HTML result page as the website (tiles with links to /?q=pl/node/…). Optional facets are Solr filter values, e.g. bundle:doc (documentary), bundle:feature (fiction), bundle:article, bundle:person. Optional page is 0-based pager index (omit or 0 for first page).
Inputs: query (required), lang, facets, page.
fototeka_get_photoA
Fetch the Fototeka HTML page for a single photo by numeric id (path /pl/foto/view/{id}.html). Ids appear in search results and collection links on fototeka.fn.org.pl. Returns raw HTML (metadata, description, related links) — not the full-resolution image file.
Inputs: photo_id (required).
fototeka_searchA
Search the Fototeka photo database (Polish cinema stills and production photos, Filmoteka Narodowa). There is no public JSON API; this tool returns the raw HTML search results page. search_type: tytul (film title), osoba (person), rezyseria (director), slowo_kluczowe (keywords). Use fototeka_get_photo with a numeric id from links pl/foto/view/{id}.html for one record.
Inputs: query (required), search_type, page, per_page.
fototekaslaska_get_photoA
Fetch one Fototeka Śląska photo page by URL slug (path /galeria/{slug}/). Returns title, optional catalog line, main image URL, and plain text from the description/table. Respect museum copyright and terms; do not bulk-download image files without permission.
Inputs: slug (required).
fototekaslaska_searchA
Search Fototeka Śląska (rural Silesia / Opole region historical photos, Muzeum Wsi Opolskiej). WordPress site: no JSON API for gallery CPT; parses HTML from the site search form. field: title, place, district, description, or catalog_n (matches form select t). year_period (optional): do1900, 1900-1918, 1918-1939, 1939-1945 — form y; omit to search all periods. Use fototekaslaska_get_photo with slug from result URLs (/galeria/{slug}/).
Inputs: query (required), field, year_period, page.
gapla_get_posterA
Fetch one Gapla poster detail page as HTML by numeric id (from gapla_search links plakat/ID/…). URL pattern: /plakat/{id}.html — slug in the public URL is optional for retrieval. Returns raw HTML (metadata, credits, image links); no separate JSON API.
Inputs: poster_id (required).
gapla_searchA
Search the Gapla film poster gallery (Filmoteka Narodowa) — Polish and international film posters and festival materials. No JSON API; uses the same GET form as the website (szukaj.html). Returns raw HTML with poster thumbnails and links to plakat/{id}/….html. typ: tytul (title), autor (artist), rezyseria (director). sort: alfabetycznie (default), chronologicznie_asc, chronologicznie_desc. Use gapla_get_poster with numeric id parsed from result links.
Inputs: q (required), typ, page, sort.
icm_get_itemA
Retrieve full metadata for a single item in the ICM Open Research Data Repository (open.icm.edu.pl) by its UUID. The UUID is found in the 'uuid' field of icm_search results.
Inputs: uuid (required).
icm_searchB
Search research data and publications in the ICM Open Research Data Repository (open.icm.edu.pl) at the University of Warsaw via DSpace 7 discovery. Supports full-text search with filters for author, title, subject, publisher, affiliation, license, date, and full-text availability. Results are HAL+JSON with Dublin Core metadata. Each filter value may include an explicit operator suffix (e.g. 'Smith,equals'); if omitted the documented default operator is applied. Supported operators: equals, notequals, contains, notcontains, authority, notauthority, query.
Inputs: query (required), page, size, sort, +8 more.
imgw_hydroA
Retrieve current hydrological (river gauge) station readings from IMGW-PIB (danepubliczne.imgw.pl). Returns JSON with water level, flow rate, ice phenomena, and alarm level status for all active hydrological stations in Poland. Data is refreshed roughly every hour.
Inputs: no named parameters.
imgw_meteoA
Retrieve current meteorological station readings from IMGW-PIB (danepubliczne.imgw.pl). Returns JSON with temperature, precipitation, snow cover, wind, and related measurements for all active meteorological stations in Poland. Data is refreshed roughly every hour.
Inputs: no named parameters.
imgw_synopA
Retrieve current synoptic (weather) station readings from IMGW-PIB (danepubliczne.imgw.pl). Returns JSON with temperature, wind speed, humidity, pressure, precipitation, and more for all active synoptic stations in Poland, or for a single station when station_id or station_name is provided. Data is refreshed roughly every hour. station_id: numeric SYNOP station identifier (e.g. 12500 for Jelenia Góra). station_name: station name without Polish diacritic characters (e.g. 'jeleniagora'). Providing both station_id and station_name — station_id takes precedence.
Inputs: station_id, station_name.
imgw_warningsA
Retrieve active meteorological and/or hydrological warnings issued by IMGW-PIB (danepubliczne.imgw.pl). Returns JSON with current alert levels, affected regions, hazard descriptions, and validity periods. type: 'meteo' for weather warnings (storms, frost, heat, wind, etc.), 'hydro' for flood and hydrological warnings, or 'all' for both (default).
Inputs: type.
isap_get_actA
Fetch one legal act from ISAP by ELI identifier (same numbering as in search results). Example ELI: DU/2026/370 — Dziennik Ustaw, year 2026, position 370. Returns JSON with title, texts (PDF file names), references.
Inputs: eli (required).
isap_search_actsA
Search Polish legal acts indexed in ISAP via the Sejm ELI JSON API (European Legislation Identifier). Use title for full-text-in-title search; keywords match ISAP keyword tags (not arbitrary prose). Filter by publisher (e.g. DU = Dziennik Ustaw), year, type (e.g. Ustawa, Rozporządzenie), in_force, dates. Returns raw JSON with items[].ELI, title, displayAddress, texts, references. See https://api.sejm.gov.pl/eli/openapi/
Inputs: title, keyword, year, publisher, +14 more.
ludzie_get_scientistA
Fetch public detail for one Ludzie Nauki profile: ORCID, academic degrees/titles (POLON), and top keywords. profile_id is the profileId field from ludzie_search or ludzie_semantic_search. Returns a compact JSON object; see profileUrl for the human-readable page.
Inputs: profile_id (required).
ludzie_searchA
Search scientist profiles in Ludzie Nauki (ludzie.nauka.gov.pl), Poland's public researcher registry. Structured search with pagination (0-based page). Filter by surname, optional first name, optional scientific domain code (e.g. DZ0106N). Omit name filters to browse ordered results (large totalHits). Response includes profileId for ludzie_get_scientist and public profile URLs under /ln/profile/{id}.
Inputs: surname, first_name, domain_code, page, +2 more.
ludzie_semantic_searchA
Semantic / full-text-style search of Ludzie Nauki profiles (ludzie.nauka.gov.pl). Use for research topics, keywords, or natural-language queries (not only surnames). Returns a ranked list of profiles with profileId (for ludzie_get_scientist) and profile URLs. Large responses are truncated in the summary — narrow full_query if you need exhaustive lists.
Inputs: full_query (required), include_deceased, max_profiles.
nac_get_pageB
Fetch a single static page from nac.gov.pl as WordPress REST JSON (/wp/v2/pages/{id}).
Inputs: page_id (required).
nac_get_postA
Fetch a single blog post from nac.gov.pl as WordPress REST JSON (/wp/v2/posts/{id}).
Inputs: post_id (required).
nac_news_rssA
Fetch the NAC institutional news RSS 2.0 feed (aktualności, WordPress). Returns raw XML. This is not the digitized archival catalogue — that lives on szukajwarchiwach.gov.pl (no stable public REST API for programmatic search).
Inputs: no named parameters.
nac_site_searchA
Search the nac.gov.pl WordPress site (posts and pages) via REST API. Returns JSON hits with title, URL, id, subtype — use nac_get_post / nac_get_page with that id. If the response is HTTP 403, the origin WAF may block automated clients from your egress; retry from another network or use the website.
Inputs: query (required), per_page, subtypes.
ninateka_get_vodA
Get full JSON metadata for one Ninateka item by numeric id (from ninateka_search items[].id). Includes description, categories, images, type (VOD, EPISODE, SERIAL, …) when present. Does not return streaming URLs or DRM — metadata only.
Inputs: vod_id (required), platform.
ninateka_searchA
Search Ninateka (Filmoteka Narodowa — free VOD: films, docs, theatre, audio, etc.). Uses the site's JSON API — pass keyword (required). Results are paginated with first_result and limit. Returns raw JSON with meta.totalCount and items[] (id, title, lead, type, categories, images, …). platform must stay BROWSER for web-style access (default).
Inputs: keyword (required), limit, first_result, platform.
pauart_get_artworkA
Fetch one artwork record from PAUart by its catalogue id (e.g. AN_KIII_150_16476). Returns compact metadata (title, inventory, tags, preview path). Use ids returned by pauart_search.
Inputs: artwork_id (required).
pauart_searchA
Search the PAU (Polish Academy of Arts and Sciences) art collection catalogue (PAUart, pauart.pl). Uses the public Collectio/Elasticsearch search API (POST /api/search). Returns titles, inventory numbers, tags, and object types. When artworks_only is true, only rows with _type artwork are kept (the index also returns dictionary matches). The UI is at http://www.pauart.pl/app — API is served over HTTP on the same host.
Inputs: query (required), page, size, artworks_only.
pbn_get_publicationB
Fetch extended publication metadata by PBN Mongo object id (GET /v1/publications/id/{id}). Requires PBN_APP_ID and PBN_APP_TOKEN.
Inputs: publication_id (required).
pbn_search_personsC
Search persons in PBN via POST /v1/search/persons (researchers, ORCID). Requires PBN_APP_ID and PBN_APP_TOKEN. Returns JSON (MetadataDTO).
Inputs: first_name, last_name, orcid, object_id, +2 more.
pbn_search_publicationsB
Search publications in Polska Bibliografia Naukowa (PBN) via POST /v1/search/publications. Requires PBN_APP_ID and PBN_APP_TOKEN. Returns JSON (MetadataDTO). Filter by title, DOI, ISBN, ISSN, year range, type (BOOK, ARTICLE, …), authors, pagination (page/size).
Inputs: title, doi, isbn, issn, +8 more.
pkn_searchA
Full-text search on Polski Komitet Normalizacyjny main website (pkn.pl) via the public Solr-backed view. Returns raw HTML (result list with titles, excerpts, update dates). Pagination is 0-based. Not the WIEDZA norms DB: for PN search/details use wiedza_search_norms / wiedza_get_standard; for purchases see sklep.pkn.pl.
Inputs: query (required), language, sort_by, page.
polon_searchA
Query Polish POL-on registry data exposed by RAD-on Open Data API (same data as polon.nauka.gov.pl / radon.nauka.gov.pl/dane). No API key. Returns raw JSON: results[], pagination.maxCount, pagination.token (pass token as page_token for next page). Resources: institutions (higher-ed & science units), branches, employees (academic staff; supports first_name, last_name, discipline_name), projects (project_title_pl/en, project_number, keywords), publications PBN (publication_title, last_name as author surname), courses (course_name). Optional city/voivodeship apply to institutions and branches. Use accurate Polish strings; API matching is server-side.
Inputs: resource (required), result_numbers, page_token, city, +11 more.
rcin_get_recordA
Fetch a single RCIN object via OAI-PMH GetRecord. Pass record_id as the numeric id from browse/search URLs, or full OAI id oai:rcin.org.pl:NNNNN.
Inputs: record_id (required), metadata_format.
rcin_searchA
Search (harvest) RCIN metadata via OAI-PMH ListRecords. Filter by optional from_date/until_date (YYYY-MM-DD) and/or OAI setSpec (e.g. rcin.org.pl:literature). Returns raw XML. Use resumption_token from the previous response for the next page. For interactive keyword search on the website, use https://rcin.org.pl/dlibra/ — this tool exposes the OAI API only.
Inputs: from_date, until_date, set, metadata_format, +1 more.
repod_get_datasetA
Get metadata for a specific dataset in RePOD by its DOI. Choose datacite for standard metadata, schema.org for JSON-LD, dcterms for Dublin Core XML, or dataverse_json for the full native record.
Inputs: doi (required), format.
repod_searchB
Search open research datasets in RePOD (ICM University of Warsaw). Contains ~3,737 datasets with DOIs under the 10.18150/ prefix. Returns JSON with relevance scores, authors, descriptions, and publication dates.
Inputs: query (required), type, per_page, start.
rodbuk_searchA
Search research datasets in RODBuK — the Krakow inter-university open research data repository (AGH, UEK, UP, UR, UJ, PK). Powered by Harvard Dataverse. Returns JSON with total_count and a list of items including DOI, description, authors, and citation. Use query='*' to browse all available datasets.
Inputs: query (required), type, per_page, start.
ruj_get_itemA
Retrieve full metadata for a single item in the Jagiellonian University Repository by its UUID. The UUID is found in the 'uuid' field of ruj_search results.
Inputs: uuid (required).
ruj_searchA
Search publications in the Jagiellonian University Repository (RUJ) via DSpace 7 discovery. Supports full-text search with 14 filter fields, 7 sort options, and 0-based pagination. Results are HAL+JSON with hit highlights and full Dublin Core metadata. Each filter value may include an explicit operator suffix separated by a comma (e.g. 'Smith,equals'); if omitted the documented default operator is applied. Supported operators: equals, notequals, contains, notcontains, authority, notauthority, query.
Inputs: query (required), page, size, sort, +15 more.
saos_dump_common_courtsA
SAOS dump: paginated list of common courts (names, codes, divisions). Use small page_size; responses are large. Cache TTL 24h.
Inputs: page_size, page_number.
saos_dump_enrichmentsB
SAOS dump: paginated list of enrichment tags from the SAOS enrichment module (labels for judgments).
Inputs: page_size, page_number.
saos_dump_judgmentsA
SAOS bulk dump of judgments (full records per row — can be very large). Prefer narrow judgment_start_date/judgment_end_date and page_size 10–20. since_modification_date: incremental sync (ISO local: yyyy-MM-dd'T'HH:mm:ss.SSS). with_generated: include SAOS enrichment module fields. Not a replacement for saos_search_judgments (different use case: mirror/sync).
Inputs: page_size, page_number, judgment_start_date, judgment_end_date, +2 more.
saos_dump_sc_chambersB
SAOS dump: paginated list of Supreme Court chambers and divisions.
Inputs: page_size, page_number.
saos_dump_servicesA
SAOS bulk dump API entry: lists hypermedia links to dump sub-services (commonCourts, judgments, scChambers, enrichments, deletedJudgments). For searching judgments without mirroring the full database prefer saos_search_judgments. Docs: https://www.saos.org.pl/help/index.php/dokumentacja-api/api-pobierania-danych
Inputs: no named parameters.
saos_get_judgmentA
Fetch one SAOS judgment by numeric id (from search results items[].id or /api/search/judgments). Returns full JSON including textContent, judges, courtCases, legalBases, referencedRegulations.
Inputs: judgment_id (required).
saos_search_judgmentsA
Search Polish court judgments in SAOS (System Analizy Orzeczeń Sądowych). Use all for full-text / metadata phrase (SAOS query language: https://www.saos.org.pl/help/index.php/search-query-language). Filter by dates, case number (exact full signature), court ids/codes, judge name, legal base text, judgment types (DECISION, SENTENCE, …). Returns JSON with items[].id, href, textContent snippets, court metadata. For full text use saos_get_judgment with id.
Inputs: all, page_size, page_number, sorting_field, +24 more.
sum_aleph_findA
Search the SUM (ŚUM Katowice) Aleph catalogue via X-Server op=find (returns XML). Parameter request uses Aleph WWW query prefixes, e.g. wrd=kardiologia, wti=title words, wau=author (see Ex Libris X-Services introduction). If the response contains SRU gate configuration file is missing, the server is broken for find until the library configures the SRU gate — sum_aleph_present may still work for sets.
Inputs: request (required), local_base.
sum_aleph_presentA
Fetch catalogue records from the SUM Aleph X-Server op=present (XML, typically MARC in <oai_marc>). Use set_no and set_entry from a prior find result set in the same session when search works; or indices as returned by the OPAC (8-digit zero-padded entry numbers are common). Format: marc (default) or other Aleph-supported format string for this installation.
Inputs: set_no (required), set_entry (required), format.
uafm_get_itemA
Retrieve full metadata for a single item in the University of Applied Sciences in Nowy Sącz Repository by its UUID. The UUID is found in the 'uuid' field of uafm_search results.
Inputs: uuid (required).
uafm_searchA
Search publications in the University of Applied Sciences in Nowy Sącz Repository (repozytorium.uafm.edu.pl) via DSpace 7 discovery. Supports full-text search with filters for author, title, subject, keyword, item type, date, license, and full-text availability. Results are HAL+JSON with Dublin Core metadata. Each filter value may include an explicit operator suffix (e.g. 'Smith,equals'); if omitted the documented default operator is applied. Supported operators: equals, notequals, contains, notcontains, authority, notauthority, query.
Inputs: query (required), page, size, sort, +9 more.
wiedza_get_standardA
Pobiera stronę szczegółów pojedynczej normy na WIEDZA po dokładnym numerze katalogowym (jak w linku z wyników wyszukiwania). Zwraca surowy HTML. Wymaga sesji; nie używa KV cache.
Inputs: standard_number (required), locale.
wiedza_search_normsB
Wyszukiwarka norm na portalu WIEDZA (wiedza.pkn.pl) — Liferay, odpowiedź to surowy HTML z listą wyników. Wymaga dwóch żądań (sesja + POST); nie używa KV cache. Użyj dokładnego numeru normy z wyniku w wiedza_get_standard.
Inputs: locale, standard_number, title, title_english, +14 more.
wolnelektury_filter_booksA
List books matching combined filters (AND). API does not expose full-text search; this is the supported way to narrow the catalog. Paths are built as /api/authors/.../epochs/.../genres/.../kinds/.../books/ (see https://wolnelektury.pl/api/). Set parent_only=true to use parent_books/ (top-level works only, no sub-volumes). Requires at least one filter. Filtering only by kind_slug can return a large JSON (~1MB+); prefer adding author or epoch when possible.
Inputs: author_slug, epoch_slug, genre_slug, kind_slug, +1 more.
wolnelektury_get_bookA
Fetch one book from Wolne Lektury by URL slug (e.g. lalka, pan-tadeusz). Returns JSON: title, authors, epochs, genres, download links (epub, pdf, …), children volumes, optional fragment preview. Discover slugs via wolnelektury_list_taxonomy and wolnelektury_filter_books or from wolnelektury.pl catalog URLs.
Inputs: slug (required).
wolnelektury_get_collectionA
Fetch one thematic collection by slug (metadata + embedded books list). Use wolnelektury_list_taxonomy with kind=collections to list collection slugs and titles.
Inputs: slug (required).
wolnelektury_list_taxonomyA
List reference data for discovery: authors, epochs, genres, kinds, themes, or collections (names, slugs, hrefs). Use slugs with wolnelektury_filter_books or wolnelektury_get_book / wolnelektury_get_collection. Responses are cached 24h; themes/collections are ~100KB.
Inputs: kind (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 85 tools
The tool set covers many distinct Polish academic resources, but there is significant overlap in functionality across different repositories (e.g., multiple '*_search' and '*_get_item' tools for different universities). While each tool is tied to a specific source, an agent could easily confuse similar tools like 'agh_search' and 'amu_search' since they perform identical operations on different repositories. The descriptions help differentiate them, but the sheer number of similar tools creates ambiguity.
Most tools follow a consistent 'prefix_verb_noun' naming pattern (e.g., 'agh_search', 'bdl_get_variable', 'saos_dump_judgments'), which is predictable and readable. There are minor deviations, such as 'polon_search' lacking a prefix and 'wolnelektury_filter_books' using a longer prefix, but overall the naming is coherent and follows a clear convention across the set.
With 85 tools, the count is excessive for a single server, making it overwhelming and difficult to navigate. While the server aims to cover many Polish academic resources, the tools could be consolidated (e.g., generic repository search/get tools with parameters) rather than having separate tools for each institution. This bloated count reduces usability and coherence.
The tool set provides broad coverage of Polish academic domains, including repositories, legal sources, statistical data, and cultural archives. Most areas offer search and retrieval capabilities, with few obvious gaps. However, some tools lack update or delete operations (e.g., no tools to modify data), but this is reasonable given the read-only nature of many public APIs. Overall, the surface is comprehensive for its intended purpose.
Maintenance
Related MCP Connectors
Verified Polish open data for AI agents: debt, budget, 460 MPs, votings, judiciary search, RAG.
Search arXiv/Semantic Scholar/OpenAlex + medical evidence (PubMed/Europe PMC) + LaTeX/PDF tools.
Polish statutes (Dziennik Ustaw, ELI) and court rulings (SAOS) for AI agents. Runs on Apify.
30+ web-access and AI APIs behind one key: search, scraping, browsers, voice, OCR and LLMs.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI-powered legal research and analysis of Polish legal acts from the Sejm API. Provides comprehensive search, document retrieval, metadata analysis, and content access for legal documents from Dziennik Ustaw and Monitor Polski.1323MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to search across multiple academic databases (PubMed, arXiv, bioRxiv, medRxiv, Semantic Scholar) through a unified interface. Supports advanced filtering, metadata retrieval, PDF downloads, and comprehensive research workflows with citation analysis.5-
- FlicenseNot gradedqualityBmaintenanceEnables searching for academic papers and preprints across multiple platforms including Semantic Scholar, arXiv, PubMed, and CrossRef. It provides access to research records, DOI lookups, and journal metadata through a unified interface deployed on Cloudflare Workers.2-
- AlicenseNot gradedqualityBmaintenanceProvides access to Poland's national open data portal (Otwarte Dane) through natural language queries, enabling users to search and retrieve datasets from dane.gov.pl.308 npmMIT