Repository navigation
Releases: emilkrebs/med-research-mcp
Release list
v0.6.1
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.03became(= 0.03)) and left character references undecoded (31 ± 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), so10⁻³can't read as10-3. Structured abstracts read asLABEL: textlines. sort: "date"works. Results were always re-sorted by design tier. They now come newest first by first publication, as PubMed sorts. PubMed'sesearchhas 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.minDesignTierwarns about unrated records. The warning never fired, because the narrowed query never fetches them. It now fires wheneverminDesignTierleaves out recordsstudyTypesalone 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-humansinstead. - 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
efetchnow carry a warning.
Added
epubDateon records (PubMed's electronic date, Europe PMC's electronic publication date). It explains apubDateoutside thedateRange: both filters match the electronic date too.literature_fulltextpaging. NewoffsetandmaxCharsarguments, andtotalCharsandnextOffsetin 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
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_fetchandliterature_fulltext(reference). - Study design from metadata: each result carries
studyTypeand an OCEBMdesignTier(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_searchreturns the error (RATE_LIMIT,QUERY_TOO_BROAD, …) instead of{articles: [], total: 0}. - Misnamed arguments are rejected.
literature_searchused 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,urlandoriginalUrlon each record,dateRangeon both databases, and newmachine-translatedandmachine-generated-abstractflags. - 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.devwhen you set no email. Setting your ownNCBI_EMAILis 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
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_EMAILused to carry no email; they now carry the project's address,hello@emilkrebs.dev. Setting your ownNCBI_EMAILis still recommended. literature_fulltextalways asks Unpaywall for open-access copies. It used to skip Unpaywall without an email. It now usesMED_RESEARCH_UNPAYWALL_EMAIL, thenNCBI_EMAIL, then the project's address.MED_RESEARCH_UNPAYWALL=0turns the lookups off.- Clearer full-text warnings. When
literature_fulltextfalls 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 owntoolsends no email unless it sets one.UnpaywallClienttakes atooloption, and itslookup()returnsfound,none,offorfailed(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
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
- chore(release): 0.6.0-next.1 by @emilkrebs in #7
Full Changelog: v0.6.0-next.0...v0.6.0-next.1