Skip to main content

Uniwersalny serwer MCP dla protokołu OAI-PMH — odpytuj dowolne repozytorium (dLibra, DSpace, EPrints, PMC…) przez Model Context Protocol

Project description

oai-pmh-mcp

CI License: MIT Python 3.11+

Zainstaluj w Claude Desktop Zainstaluj w Cursor Zainstaluj w VS Code

Nic nie trzeba konfigurować — adres repozytorium podaje się przy wywołaniu narzędzia, więc jedna instalacja obsługuje dowolną liczbę repozytoriów. Ten pakiet nie jest jeszcze na PyPI, dlatego linki do Cursora i VS Code instalują go prosto z gita (uvx --from git+https://…).

Uniwersalny serwer MCP dla protokołu OAI-PMH (Open Archives Initiative – Protocol for Metadata Harvesting).

Pozwala dowolnemu klientowi MCP (Claude, ChatGPT, Cursor…) odpytywać dowolne publiczne repozytorium OAI-PMH — biblioteki cyfrowe oparte o dLibrę (np. Wielkopolska Biblioteka Cyfrowa), a także DSpace, EPrints, PubMed Central i inne — bez konfiguracji per-host. Adres repozytorium (base_url) podaje się w każdym wywołaniu.

Możliwości

Wierny wrapper sześciu czasowników OAI-PMH + wygodna nakładka do masowego pobierania:

Narzędzie Rola
identify tożsamość repozytorium (nazwa, wersja protokołu, granularność, polityka usuniętych)
list_metadata_formats dostępne formaty metadanych (oai_dc, mods, marc…)
list_sets kolekcje / zestawy
list_identifiers same nagłówki rekordów (tani przegląd)
list_records strona pełnych rekordów + token paginacji
get_record pojedynczy rekord po identyfikatorze
harvest_records auto-paginacja: pobiera wiele stron do limitu, z możliwością wznowienia

Wyjście w trzech formatach (format): text (domyślny, oszczędny tokenowo), json (maszynowy), xml (surowy oryginał).

Instalacja

uvx oai-pmh-mcp        # uruchomienie bez instalacji (stdio)
# lub
uv tool install oai-pmh-mcp

Konfiguracja klienta MCP

Claude Code

claude mcp add oai-pmh -- uvx oai-pmh-mcp

mcp.json (Cursor / inne)

{
  "mcpServers": {
    "oai-pmh": { "command": "uvx", "args": ["oai-pmh-mcp"] }
  }
}

Transport

Domyślnie stdio. Tryb zdalny streamable-HTTP:

oai-pmh-mcp --transport http --host 0.0.0.0 --port 8000

Przykład

„Sprawdź, jakie kolekcje ma https://www.wbc.poznan.pl/dlibra/oai-pmh-repository.xml i pokaż 5 najnowszych rekordów."

Model wywoła identifylist_setslist_records i złoży odpowiedź.

Rozwój

uv sync
uv run pytest            # testy jednostkowe (offline, fixture'y)
uv run pytest -m integration   # testy sieciowe (opcjonalne)
uv run ruff check .

Zakres

OAI-PMH to protokół metadanych — serwer nie pobiera treści obiektów (skanów, PDF-ów). To read-only, bez autoryzacji, bez cache.

Bezpieczeństwo

  • Parsowanie XML jest hartowane — parser nie rozwija encji ani nie sięga do sieci/DTD (ochrona przed XXE i „billion laughs" z niezaufanych repozytoriów).
  • harvest_records ma twarde limity (max rekordów, max stron, przerwanie przy braku postępu) — złośliwy serwer nie zapętli klienta.
  • SSRF z natury narzędzia: serwer pobiera dowolny base_url podany przez klienta (taki jest cel). Dozwolone są tylko schematy http/https. Jeśli wdrażasz wariant zdalny (HTTP) w sieci z zasobami wewnętrznymi, uruchom go w środowisku z ograniczeniem sieci wychodzącej — model mógłby wskazać adres wewnętrzny (np. endpoint metadanych chmury).

Licencja

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

oai_pmh_mcp-0.1.0.tar.gz (89.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

oai_pmh_mcp-0.1.0-py3-none-any.whl (16.4 kB view details)

Uploaded Python 3

File details

Details for the file oai_pmh_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: oai_pmh_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 89.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for oai_pmh_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7923e733b047f70df992b2a115aea9b8060796a317838d421c5689f34229d46b
MD5 bcbd42f8cb87e0175ed813f6afae0a16
BLAKE2b-256 69d9eb7e3f8cfcb1ffca05095696bc7d1eff789ebc0d811fd98ce4d3436b893d

See more details on using hashes here.

Provenance

The following attestation bundles were made for oai_pmh_mcp-0.1.0.tar.gz:

Publisher: publish.yml on mpasternak/oai-pmh-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oai_pmh_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: oai_pmh_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 16.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for oai_pmh_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8d877f4deed4252f164915e6e77f07dc2b6e8909e2ba661f5227eccd70c4f1dc
MD5 f2281cdf0c6b07e660806b5df8cbda5a
BLAKE2b-256 539021c628f88fb0adf175210bebe0019269eb4c75532c9b4a2648f109a3b807

See more details on using hashes here.

Provenance

The following attestation bundles were made for oai_pmh_mcp-0.1.0-py3-none-any.whl:

Publisher: publish.yml on mpasternak/oai-pmh-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page