波兰学术数据库检索 MCP 服务

Polish Academic MCP 是一款本地运行的 MCP 服务器,为 Claude、Cursor 等 AI 助手提供 125 个工具,用于检索波兰的学术、公共、法律与文化数据库(如 Biblioteka Nauki、GUS、ISAP、Wolne Lektury),无需 API 密钥即可使用。

  • by asterixix
  • TypeScript
  • 混合部署
  • 4 星标
  • 更新于
在 GitHub 查看 asterixix/polish-academic-mcp

使用说明

Polish Academic MCP

Serwer MCP, dzięki któremu asystent AI (Claude, Copilot, Cursor, Gemini, model lokalny w LM Studio i inne) przeszukuje polskie bazy naukowe, publiczne i kulturowe: Bibliotekę Nauki, repozytoria uczelni, GUS, ISAP, orzeczenia sądów, Wolne Lektury, archiwa filmowe i fotograficzne. 125 narzędzi, 55 źródeł, bez kont i kluczy API (poza opcjonalnym 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 setup

Kreator 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ą wszystkie 125 narzędzi. Cursor pokazuje modelowi najwyżej ok. 40 narzędzi, więc tam lepiej wybrać jedną lub dwie grupy baz.

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 some of the 125 tools, and npx -y polish-academic-mcp doctor to diagnose problems.


Obsługiwane aplikacje

Aplikacja Jak dodać serwer Uwagi
Claude Desktop kreator setup po zapisie zamknij Claude całkowicie i otwórz ponownie
Claude Code kreator setup albo claude mcp add --scope user polish-academic -- npx -y polish-academic-mcp na Windows (poza WSL): -- cmd /c npx -y polish-academic-mcp
Cursor kreator setup lub przycisk powyżej limit ok. 40 narzędzi łącznie: wybierz 1–2 grupy
VS Code (GitHub Copilot) kreator setup lub przycisk powyżej limit 128 narzędzi łącznie ze wszystkich serwerów
Windsurf kreator setup limit 100 narzędzi łącznie ze wszystkich serwerów
Cline, Roo Code kreator setup
LM Studio kreator setup przy małych modelach włącz 1 grupę baz
AnythingLLM Desktop kreator setup narzędzia działają w trybie @agent
Gemini CLI, OpenAI Codex CLI, opencode, GitHub Copilot CLI kreator setup
Zed, Continue, Goose, Hermes Agent, OpenClaw, Jan, Perplexity (macOS), Msty, Cherry Studio npx -y polish-academic-mcp setup --print <id> wypisze gotową instrukcję id: zed, continue, goose, hermes, openclaw, jan, perplexity, generic
Open WebUI przez most mcpo: setup --print open-webui Open WebUI obsługuje natywnie tylko MCP po HTTP
ChatGPT, Claude.ai, Perplexity (konektory zdalne) wdrożenie Cloudflare w cloud/ — OAuth 2.1 pod /mcp limity: 100 wywołań MCP / miesiąc; AI Search w przeglądarce 2/tydz. (gość) lub 5/tydz. (konto) — 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,
  • limity: 100 zapytań narzędzi / miesiąc (MCP), 2 / tydzień AI Search bez logowania, 5 / tydzień po zalogowaniu,
  • wyszukiwanie językiem naturalnym w przeglądarce (AI Mode) z Cloudflare AI Gateway i modelem anthropic/claude-haiku-5.5,
  • strony /connectors, /privacy, /terms pod 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                         # diagnostyka

Kreator 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

Opisy wszystkich 125 narzędzi zajmują ok. 38 tys. tokenów kontekstu przy każdym zapytaniu. Dla Claude czy GPT to nie problem, ale małe modele lokalne gubią się przy tylu narzędziach, a część aplikacji ma limity (Cursor ok. 40, Windsurf 100, VS Code 128 narzędzi łącznie ze wszystkich serwerów). Włącz tylko to, czego potrzebujesz:

Grupa Zawartość Narzędzia
nauka Biblioteka Nauki, RCIN, repozytoria UJ, AGH, UAM, UAFM, ICM, RODBuK, RePOD, POL-on, PBN, Ludzie Nauki, BazTOL, katalog ŚUM 30
dane Bank Danych Lokalnych GUS, dane.gov.pl, IMGW, Otwarte Dane Miasta Krakowa, MSIP Kraków, Strategia Krakowa — Bank Informacji o Mieście i Metropolii 22
prawo ISAP (akty prawne), SAOS (orzeczenia), Biblioteka Sejmowa 11
normy PKN, katalog norm WIEDZA 3
kultura Wolne Lektury, Ninateka, Gapla, Fototeka, FilmPolski, Fototeka Śląska, Repozytorium FN, NAC, PAUart, Baza Legalnych Źródeł, Dokumenty Śląska 29

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
bn_search_publications Biblioteka Nauki Wyszukiwanie pełnotekstowe (API JSON portalu — frazy, tytuły, abstrakty)
bn_search_articles Biblioteka Nauki Listowanie rekordów OAI-PMH (ListRecords) po datach i/lub zbiorze czasopisma — bez zapytań słownych
bn_get_article Biblioteka Nauki Pobranie metadanych pojedynczego artykułu po ID (OAI-PMH GetRecord)
rcin_search RCIN — Repozytorium Cyfrowe Instytutów Naukowych OAI-PMH ListRecords (metadane obiektów; opcjonalnie zakres dat / zbiór OAI)
rcin_get_record RCIN OAI-PMH GetRecord po ID lub oai:rcin.org.pl:…
ruj_search RUJ — Repozytorium UJ Wyszukiwanie publikacji z Repozytorium Jagiellońskiego
ruj_get_item RUJ Pobranie metadanych pozycji po UUID
agh_search AGH — Repozytorium AGH Wyszukiwanie prac i publikacji AGH w Krakowie
agh_get_item AGH Pobranie metadanych pozycji po UUID
amu_search AMU — Repozytorium UAM Wyszukiwanie publikacji Uniwersytetu Adama Mickiewicza w Poznaniu
amu_get_item AMU Pobranie metadanych pozycji po UUID
uafm_search UAFM — Repozytorium UAFM Wyszukiwanie publikacji Uniwersytetu Andrzeja Frycza Modrzewskiego w Krakowie
uafm_get_item UAFM Pobranie metadanych pozycji po UUID
icm_search ICM — Otwarte Dane Badawcze UW Wyszukiwanie danych badawczych ICM UW
icm_get_item ICM Pobranie metadanych pozycji po UUID
rodbuk_search RODBuK Wyszukiwanie zbiorów danych badawczych uczelni krakowskich
repod_search RePOD Wyszukiwanie polskich otwartych danych badawczych
repod_get_dataset RePOD Pobranie metadanych zbioru danych po DOI
dane_search dane.gov.pl Wyszukiwanie danych otwartych z portalu rządowego
dane_get_dataset dane.gov.pl Pobranie szczegółów zbioru danych po ID
polon_search POL-on / RAD-on Zbiory otwarte: uczelnie, pracownicy, projekty, publikacje, kursy (JSON, token strony)
pbn_search_publications PBN — Polska Bibliografia Naukowa Wyszukiwanie publikacji (JSON; wymaga PBN_APP_ID + PBN_APP_TOKEN)
pbn_search_persons PBN Wyszukiwanie osób / ORCID (JSON; te same nagłówki co wyżej)
pbn_get_publication PBN Metadane publikacji po id obiektu (JSON)
bdl_search_subjects BDL — Bank Danych Lokalnych (GUS) Wyszukiwanie tematów (subjectów) po fragmencie nazwy (API v1)
bdl_search_variables BDL / GUS Wyszukiwanie zmiennych statystycznych (cech)
bdl_search_units BDL / GUS Wyszukiwanie jednostek terytorialnych (TERYT itd.)
bdl_get_variable BDL / GUS Metadane jednej zmiennej po id liczbowym
bdl_get_data_by_variable BDL / GUS Wartości dla jednej zmiennej po jednostkach (np. województwa)
bdl_get_data_by_unit BDL / GUS Wartości dla jednej jednostki i wskazanych zmiennych
imgw_synop IMGW-PIB Aktualne odczyty ze stacji synoptycznych (pogodowych)
imgw_hydro IMGW-PIB Aktualne odczyty z wodowskazów i stacji hydrologicznych
imgw_meteo IMGW-PIB Aktualne odczyty ze stacji meteorologicznych
imgw_warnings IMGW-PIB Aktywne ostrzeżenia meteorologiczne i hydrologiczne
krakow_od_search Otwarte Dane Miasta Krakowa Wyszukiwanie we wszystkich 45 zbiorach UMK (12 kategorii) — wyszukiwarka portalu i pełny katalog
krakow_od_get_dataset Otwarte Dane Miasta Krakowa Karta zbioru: metadane, tabele REST API api.um.krakow.pl, Swagger, przykładowe wiersze, linki ArcGIS Hub
krakow_od_fetch_api Otwarte Dane Miasta Krakowa (WSO2) Dane JSON {value:[...]} bezpośrednio z 42 API OD-* na api.um.krakow.pl (katalog devportal v3)
krakow_msip_search MSIP Kraków Katalog danych i usług (179 zbiorów) oraz Geoportal metadanych (863 rekordy, JSON/XML)
krakow_msip_get_dataset MSIP Kraków Karta zbioru przestrzennego: pliki SHP/DXF/JSON ZIP, usługi WMS/WFS, metadane ISO 19115
krakow_msip_list_services MSIP Kraków (ArcGIS REST) Foldery i usługi MapServer/FeatureServer: msip3.um.krakow.pl (12.1) i msip.um.krakow.pl (10.81)
krakow_msip_query_layer MSIP Kraków (ArcGIS REST) Zapytanie atrybutowe query do warstwy MapServer (EPSG:2178), np. dzielnice, demografia, transport ZTP
krakow_strategia_search Strategia Krakowa Wyszukiwarka portalu Rozwój Krakowa i indeks Banku Informacji o Mieście i Metropolii
krakow_strategia_get_article Strategia Krakowa — Bank Informacji Treść artykułu/raportu, załączniki PDF/XLS (plikimpi.krakow.pl), wersja PDF (getPdf)
krakow_strategia_list_bank Strategia Krakowa — Bank Informacji Spis raportów o stanie Gminy/Miasta, Kraków w liczbach, Barometr, prognozy demograficzne, 16 dziedzin zarządzania
pkn_search PKN — Polski Komitet Normalizacyjny Wyszukiwarka treści strony www.pkn.pl (Drupal / Solr, HTML)
wiedza_search_norms WIEDZA — PKN Wyszukiwarka norm (Liferay; sesja + POST, HTML)
wiedza_get_standard WIEDZA Karta pojedynczej normy po numerze katalogowym (HTML)
blz_search Baza Legalnych Źródeł (Legalna Kultura) WordPress REST /wp/v2/listings — źródła kultury cyfrowej (JSON)
blz_get_listing Baza Legalnych Źródeł Pojedyncze źródło po ID (JSON)
blz_listing_categories Baza Legalnych Źródeł Taksonomia listing_cat (Filmy, Muzyka, Biblioteki…) — ID do blz_search
baztol_search BazTOL — brama zasobów PUT Wyszukiwanie pełnotekstowe (HTML; katalog nieaktualizowany od 2022)
baztol_browse_domain BazTOL Przeglądanie po dziedzinie (id z menu)
baztol_get_resource BazTOL Szczegóły zasobu po ID (HTML)
nac_news_rss NAC — Narodowe Archiwum Cyfrowe Kanał RSS aktualności instytucji (XML)
nac_site_search NAC Wyszukiwarka WordPress REST (?rest_route=/wp/v2/search; posty/strony; JSON)
nac_get_post NAC Pojedynczy wpis blogowy po id (JSON)
nac_get_page NAC Pojedyncza strona statyczna po id (JSON)
sum_aleph_find Katalog Biblioteki ŚUM (Aleph) X-Services op=find — zapytanie WWW (wrd=, wti=…; XML; możliwy błąd SRU po stronie serwera)
sum_aleph_present Katalog ŚUM / Aleph X-Services op=present — rekord(y) MARC/XML (set_no, set_entry)
ludzie_search Ludzie Nauki Wyszukiwanie profili naukowców (nazwisko, dziedzina, paginacja)
ludzie_semantic_search Ludzie Nauki Wyszukiwanie semantyczne / pełnotekstowe po frazie
ludzie_get_scientist Ludzie Nauki ORCID, stopnie/tytuły, słowa kluczowe dla profilu po ID
pauart_search PAUart — PAU Wyszukiwanie katalogu dzieł (Collectio / PAU)
pauart_get_artwork PAUart Metadane pojedynczego dzieła po ID z katalogu
isap_search_acts ISAP — ELI API Sejmu Wyszukiwanie aktów prawnych (tytuł, słowa kluczowe ISAP, daty, DU/MP itd.)
isap_get_act ISAP / ELI Metadane pojedynczego aktu po ELI, np. DU/2026/370
bs_sejm_search Biblioteka Sejmowa — OPAC Wyszukiwanie słowne (func=find-b); zwraca HTML listy (np. bis01, pos01)
bs_sejm_get_item Biblioteka Sejmowa Karta bibliograficzna (func=item-global) po doc_library + doc_number — HTML
saos_search_judgments SAOS Wyszukiwanie orzeczeń (fraza all, daty, sygnatura, sąd, typ orzeczenia)
saos_get_judgment SAOS / API przeglądania Pełne orzeczenie po id liczbowym z wyszukiwarki
saos_dump_services SAOS / API pobierania Lista endpointów hurtowego pobierania (dump)
saos_dump_common_courts SAOS — dump Słownik sądów powszechnich (stronicowanie)
saos_dump_sc_chambers SAOS — dump Słownik izb SN (stronicowanie)
saos_dump_judgments SAOS — dump Hurtowe orzeczenia (filtry dat / synchronizacja; duże odpowiedzi)
saos_dump_enrichments SAOS — dump Etykiety modułu wzbogacania (stronicowanie)
wolnelektury_list_taxonomy Wolne Lektury Słowniki: autorzy, epoki, gatunki, rodzaje, motywy, kolekcje (slugi)
wolnelektury_filter_books Wolne Lektury Lista utworów po filtrach (autor/epoka/gatunek/rodzaj); nie woła /api/books/ w całości
wolnelektury_get_book Wolne Lektury Metadane i linki do plików po slugu utworu
wolnelektury_get_collection Wolne Lektury Kolekcja tematyczna + lista książek w kolekcji
ninateka_search Ninateka — FINA VOD Wyszukiwanie materiałów po słowie kluczowym (JSON API frontu; platform=BROWSER)
ninateka_get_vod Ninateka Metadane pojedynczego materiału po id liczbowym z wyszukiwarki (JSON)
gapla_search Gapla — galeria plakatu filmowego FINA Wyszukiwanie plakatów (szukaj.html — tytuł / autor / reżyseria; HTML)
gapla_get_poster Gapla Strona pojedynczego plakatu po id (plakat/{id}.html — HTML)
fototeka_search Fototeka — FN INA Wyszukiwanie fotosów i zdjęć (wyszukiwarka.html — tytuł / osoba / reżyseria / słowa kluczowe; HTML, paginacja pageNumber / howmany)
fototeka_get_photo Fototeka Strona pojedynczego zdjęcia po id (/pl/foto/view/{id}.html — HTML)
filmpolski_search FilmPolski.pl (PWSFTviT) Wyszukiwarka bazy filmu (index.php?szukaj=&rodzaj= — HTML parsowane do JSON: osoby, filmy; tryby fragment / początek / dokładnie)
filmpolski_get_item FilmPolski.pl Karta rekordu po id (index.php/{id}) — tekst z elementu <article> filmu lub osoby (obcięty)
fototekaslaska_search Fototeka Śląska (MWO Opole) Wyszukiwanie zdjęć (WordPress GET ?s=&t=&y=; HTML z .search-list → JSON: slug, URL, podpis, miniatura)
fototekaslaska_get_photo Fototeka Śląska Strona rekordu /galeria/{slug}/ — tytuł, nr katalogowy, URL zdjęcia, opis i tabela (tekst)
fn_repo_search Repozytorium FN Wyszukiwanie Solr (HTML — kafelki wyników; brak publicznego JSON API)
fn_repo_get_node Repozytorium FN Karta rekordu po id węzła Drupal (/?q=pl/node/{id} — HTML)
fn_repo_film_index Repozytorium FN Indeks tytułów po pierwszej literze (A–Ż / INNE — HTML)
fn_repo_browse_kind Repozytorium FN Przegląd: fabularne / dokumentalne / animacje / magazyn (HTML)
dokumenty_slaska_get_page Dokumenty Śląska Pobranie pojedynczej strony statycznej po ścieżce względnej (indeks …, dokument …, podkatalogi — HTML)
dokumenty_slaska_medieval_catalog Dokumenty Śląska Lista JSON ścieżek do głównej serii dokumentów średniowiecznych (okresy do 1333 r.) — pomoc nawigacyjna

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…) oraz https://msip.um.krakow.pl/arcgis/rest/services (10.81: Obserwatorium, Metropolia Krakowska, Hosted), z zapytaniami query do warstw (EPSG:2178; folder Pobieranie: 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ć
spawn npx ENOENT, „command not found”, serwer ma czerwony status 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 setup, który zapisze pełną ścieżkę do npx.
Windows: serwer nie startuje Użyj polecenia cmd z argumentami ["/c", "npx", "-y", "polish-academic-mcp"] (kreator robi to sam).
„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 fetch w Node.js domyślnie ignoruje proxy. W aktualnych Node.js 22/24 dodaj do env serwera "NODE_USE_ENV_PROXY": "1" oraz "HTTPS_PROXY": "http://proxy:port".
Po zmianie wersji Node.js serwer przestał działać Uruchom ponownie npx -y polish-academic-mcp setup (doctor pokaże nieaktualną ścieżkę).

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
POLISH_ACADEMIC_SOURCES włączone grupy lub bazy, np. nauka,prawo (zob. Wybór baz)
PBN_APP_ID, PBN_APP_TOKEN dostęp do API PBN (narzędzia pbn_*); przyznawany instytucjom przez PBN
PBN_USER_TOKEN token użytkownika PBN dla operacji wymagających kontekstu użytkownika
BDL_CLIENT_ID klucz API GUS BDL: wyższe limity zapytań
POLISH_ACADEMIC_DEBUG 1 = log każdego zapytania HTTP na stderr: adres bez wartości parametrów, status, czas (widoczny w logach aplikacji)

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 sieci

Jak 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).

  1. 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ń.
  2. 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.
  3. 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.
  4. 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.
  5. Dane kontaktowe (Contact Information):

Licencja

MIT