Skip to main content

oai-pmh-mcp

CI PyPI License: MIT Python 3.11+

Install in Claude Desktop Install in Cursor Install in VS Code

Nothing to configure — the repository address is passed at tool-call time, so a single installation handles any number of repositories.

A universal MCP server for the OAI-PMH protocol (Open Archives Initiative – Protocol for Metadata Harvesting).

It lets any MCP client (Claude, ChatGPT, Cursor…) query any public OAI-PMH repository — digital libraries built on dLibra (e.g. the Wielkopolska Digital Library), as well as DSpace, EPrints, PubMed Central and others — with no per-host configuration. The repository address (base_url) is supplied on every call.

Features

A faithful wrapper around the six OAI-PMH verbs plus a convenient layer for bulk harvesting:

Tool Role
identify repository identity (name, protocol version, granularity, deleted-record policy)
list_metadata_formats available metadata formats (oai_dc, mods, marc…)
list_sets collections / sets
list_identifiers record headers only (cheap overview)
list_records a page of full records + pagination token
get_record a single record by identifier
harvest_records auto-pagination: fetches multiple pages up to a limit, resumable

Output in three formats (format): text (default, token-efficient), json (machine-readable), xml (raw original).

Installation

uvx oai-pmh-mcp        # run without installing (stdio)
# or
uv tool install oai-pmh-mcp

MCP client configuration

Claude Code

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

mcp.json (Cursor / others)

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

Transport

Defaults to stdio. Remote mode uses streamable-HTTP:

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

Example

"Check what collections https://www.wbc.poznan.pl/dlibra/oai-pmh-repository.xml has and show the 5 most recent records."

The model will call identifylist_setslist_records and assemble the answer.

Claude exploring the Wielkopolska Digital Library over OAI-PMH: it confirms the endpoint with Identify, walks the 116 sets, and surfaces 18th-century Masonic prints from the Masonica collection

One prompt, pointed at the Wielkopolska Digital Library. identify confirms the endpoint — OAI-PMH 2.0, records back to 2003-12-01, deletedRecord: persistent. list_sets returns all 116 sets and finds the interesting ones under rootCollection:wbc:Mirabilium. list_records then reads out Masonica (267 records): the Grand Lodge of Hamburg library, confiscated during the war and now held in Poznań — including a 1782 exposé of Masonic ritual and the by-laws of a London lodge that met in the Half-Moon Tavern on Cheapside.

Nothing about that repository is hardcoded — the same tools answer the same way for any OAI-PMH endpoint you name.

Development

uv sync
uv run pytest            # unit tests (offline, fixtures)
uv run pytest -m integration   # network tests (optional)
uv run ruff check .

Scope

OAI-PMH is a metadata protocol — the server does not fetch object content (scans, PDFs). It is read-only, without authentication, without caching.

Security

  • XML parsing is hardened — the parser does not expand entities or reach out to the network/DTD (protection against XXE and "billion laughs" from untrusted repositories).
  • harvest_records has hard limits (max records, max pages, abort on lack of progress) — a malicious server cannot trap the client in a loop.
  • SSRF by design: the server fetches any base_url supplied by the client (that is the point). Only the http/https schemes are allowed. If you deploy the remote (HTTP) variant on a network with internal resources, run it in an environment with restricted outbound networking — the model could point at an internal address (e.g. a cloud metadata endpoint).

License

MIT

Release files for oai-pmh-mcp 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for oai-pmh-mcp 0.1.2
File Size Uploaded
oai_pmh_mcp-0.1.2.tar.gz 301.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for oai-pmh-mcp 0.1.2
File Interpreter ABI Platform
oai_pmh_mcp-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 318.1 kB

Release files / oai_pmh_mcp-0.1.2.tar.gz

Download URL oai_pmh_mcp-0.1.2.tar.gz
Size 301.5 kB
Tags Source
SHA-256 checksum
How to use checksums
055862157aaec2ecd146b1c4cecf38ebdaff84df9202a99257cff62abbcd939b
BLAKE2b-256 checksum
How to use checksums
f4eba41c4a441c88f8351fe5dac2556992da8d1c76d7f7498c09ff3f15730fef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 24, 2026.

Transparency log

Release files / oai_pmh_mcp-0.1.2-py3-none-any.whl

Download URL oai_pmh_mcp-0.1.2-py3-none-any.whl
Size 16.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
65c07eeda87816b00e079dff365e5015de1f5587229f68bee7e93dd176c35116
BLAKE2b-256 checksum
How to use checksums
fb73835303867df94d9d8a7bdc23b1c4687b06d58c704900fccc8881554ec174
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 24, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page