Skip to content

Releases: emilkrebs/med-research-mcp

v0.6.1

Choose a tag to compare

@emilkrebs emilkrebs released this 22 Oct 15:15
03ef326

Bug-fix release: plain-text abstracts, a working date sort, paged full text and retried requests. Fixes the nine bugs confirmed in the review of the hosted server (2026-10-22).

Install: npx -y med-research-mcp, or download med-research-mcp.mcpb below and open it in Claude Desktop (per-client setup).

Fixed

  • Abstracts are plain text. PubMed abstracts lost the text of inline markup (<i>p</i> = 0.03 became (= 0.03)) and left character references undecoded (31 &#xb1; 8). Europe PMC titles and abstracts carried raw HTML. Both now go through one normalizer: inline elements keep their text, references are decoded, and a superscript of digits and signs becomes superscript characters (kg⁻¹, ³¹P), so 10⁻³ can't read as 10-3. Structured abstracts read as LABEL: text lines.
  • sort: "date" works. Results were always re-sorted by design tier. They now come newest first by first publication, as PubMed sorts. PubMed's esearch has no such order, so the newest records are found among the first 100 or more of its issue-date and date-added orders; against every record dated since 2026-10-01 that found all 10 newest for five queries.
  • minDesignTier warns about unrated records. The warning never fired, because the narrowed query never fetches them. It now fires whenever minDesignTier leaves out records studyTypes alone would keep.
  • Full text ends cleanly. Europe PMC full texts no longer end in an empty "References" heading, and sections that render only their heading are skipped.
  • Animal-study filter explains itself. A filter that finds none says that lab-animal studies are flagged animals-not-humans instead.
  • Fewer silent failures. NCBI, Europe PMC and ChinaRxiv requests share one retry helper that also retries 500/502/503/504, timeouts and dropped connections, twice with backoff, within a 20 s budget. PubMed records returned without their abstract and retraction links after a failed efetch now carry a warning.

Added

  • epubDate on records (PubMed's electronic date, Europe PMC's electronic publication date). It explains a pubDate outside the dateRange: both filters match the electronic date too.
  • literature_fulltext paging. New offset and maxChars arguments, and totalChars and nextOffset in the result. A part ends at a paragraph break or space, never mid-word, and cached texts serve every part without a download.

Upgrading

The SQLite cache records its format and empties files written by 0.6.0 and earlier: abstracts never expire, so the old ones would stay broken. Nothing to do; the cache refills. A 0.6.0 process still running on the same file keeps to its own tables.

Docs: tools.md · how-it-works.md

Full Changelog: v0.6.0...v0.6.1

v0.6.0

Choose a tag to compare

@emilkrebs emilkrebs released this 21 Oct 22:03
2470241

First stable release: evidence-graded literature search over PubMed, Europe PMC, ChinaXiv and RussiaRxiv, with full-text resolution. Folds in the three 0.6.0-next pre-releases.

Install: npx -y med-research-mcp, or download med-research-mcp.mcpb below and open it in Claude Desktop (per-client setup).

What it does

  • Three tools: literature_search, literature_fetch and literature_fulltext (reference).
  • Study design from metadata: each result carries studyType and an OCEBM designTier (0–5) from NLM PublicationType tags, plus flags for retractions, errata, preprints, animal studies and machine-translated text. No LLM calls.
  • Built to be reused: three agent skills, a library entry point (library.md) and a Streamable HTTP server for hosted deployments (hosting.md).

Since 0.5.0

  • Failures no longer look like empty results. When every database fails, literature_search returns the error (RATE_LIMIT, QUERY_TOO_BROAD, …) instead of {articles: [], total: 0}.
  • Misnamed arguments are rejected. literature_search used to drop unknown keys, so {"databases": "chinaxiv"} silently searched PubMed; it now returns an error naming the key.
  • ChinaXiv and RussiaRxiv are fixed. Correct /papers/{id} fetches, url and originalUrl on each record, dateRange on both databases, and new machine-translated and machine-generated-abstract flags.
  • Full text got safer and better. A guard refuses loopback, private and reserved addresses at every redirect and at connect time; PMC copies come from Europe PMC's fullTextXML; tables, formulas and OCR text convert. Extraction in the Claude Desktop bundle now works.
  • Contact address. NCBI and Unpaywall requests carry hello@emilkrebs.dev when you set no email. Setting your own NCBI_EMAIL is still recommended.

Docs: compliance.md · README.zh-CN.md

Full Changelog: https://github.com/emilkrebs/med-research-mcp/commits/v0.6.0

v0.6.0-next.2

v0.6.0-next.2 Pre-release
Pre-release

Choose a tag to compare

@emilkrebs emilkrebs released this 20 Oct 22:37
8979504

Pre-release of 0.6.0. Every NCBI and Unpaywall request now carries a contact email, and the Claude Desktop bundle installs without asking for one.

  • The project's contact address when you set no email. NCBI's usage guidelines ask for an email with every request, so NCBI can get in touch before blocking an IP. Requests without NCBI_EMAIL used to carry no email; they now carry the project's address, hello@emilkrebs.dev. Setting your own NCBI_EMAIL is still recommended.
  • literature_fulltext always asks Unpaywall for open-access copies. It used to skip Unpaywall without an email. It now uses MED_RESEARCH_UNPAYWALL_EMAIL, then NCBI_EMAIL, then the project's address. MED_RESEARCH_UNPAYWALL=0 turns the lookups off.
  • Clearer full-text warnings. When literature_fulltext falls back, the warning says whether Unpaywall failed or was turned off, instead of reading as "no open-access copy".
  • The installer's NCBI email is optional. An optional field left empty in Claude Desktop no longer reaches the server as the literal ${user_config.…} placeholder, which could have been sent as an API key, email or proxy prefix.
  • For library users: only the default tool name, med-research-mcp, falls back to the project's address, so software that passes its own tool sends no email unless it sets one. UnpaywallClient takes a tool option, and its lookup() returns found, none, off or failed (library.md).

Try it with npx -y med-research-mcp@next, or install the attached med-research-mcp.mcpb in Claude Desktop.

What's Changed

  • feat: project contact for NCBI and Unpaywall, optional installer email (0.6.0-next.2) by @emilkrebs in #8

Full Changelog: v0.6.0-next.1...v0.6.0-next.2

v0.6.0-next.1

v0.6.0-next.1 Pre-release
Pre-release

Choose a tag to compare

@emilkrebs emilkrebs released this 20 Oct 21:01
dc4aa14

Pre-release of 0.6.0, with no changes to the server since 0.6.0-next.0. It is the first version published to npm from GitHub Actions, with npm provenance.

Try it with npx -y med-research-mcp@next, or install the attached med-research-mcp.mcpb in Claude Desktop.

What's Changed

Full Changelog: v0.6.0-next.0...v0.6.0-next.1