pubmed-mcp-server
io.github.cyanheads/pubmed-mcp-serverVersion 2.12.2Search PubMed/Europe PMC, fetch articles and full text (PMC/EPMC/Unpaywall), citations, MeSH terms.
Status
Responds527 msAnswered our handshake without sign-in.- Last checked
- Nov 14, 2026, 14:48 UTC
- Latency
- 527 ms
- Remotes responding
- 1 of 1
- Sign-in
- No sign-in
- Hosting
- Hosted outside the EU (detected)
- Registry data as of
- Nov 14, 2026, 22:14 UTC
Data from the official MCP Registry, checked by run.zero. How we check
Connect
Streamable HTTP
https://pubmed.caseyjhand.com/mcpResponds527 msNo sign-in
Claude Code
claude mcp add --transport http pubmed-mcp-server https://pubmed.caseyjhand.com/mcpClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: pubmed-mcp-server
Remote MCP server URL: https://pubmed.caseyjhand.com/mcpCursor
{
"mcpServers": {
"pubmed-mcp-server": {
"url": "https://pubmed.caseyjhand.com/mcp"
}
}
}VS Code
code --add-mcp '{"name":"pubmed-mcp-server","type":"http","url":"https://pubmed.caseyjhand.com/mcp"}'Streamable HTTP
npm: @cyanheads/pubmed-mcp-server 2.12.2Package only
npm (npx)
claude mcp add pubmed-mcp-server -- npx -y @cyanheads/pubmed-mcp-server@2.12.2Streamable HTTP
npm: @cyanheads/pubmed-mcp-server 2.12.2Package only
npm (npx)
claude mcp add pubmed-mcp-server -- npx -y @cyanheads/pubmed-mcp-server@2.12.2Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
12 tools
Read-only | Idempotent | Open world | ||
|---|---|---|---|---|
pubmed_convert_idsConvert between article identifiers (DOI, PMID, PMCID). Accepts up to 50 IDs of a single type per request. Only resolves articles indexed in PubMed Central — for articles not in PMC, use pubmed_search_articles instead. | Not declared | Yes | Not declared | Yes |
pubmed_europepmc_fetchFetch complete Europe PMC records — including the full, untruncated abstract — addressed as `records: [{ source, epmcId }]`, an array even for one record. Pairs with `pubmed_europepmc_search`, which returns bounded `abstractSnippet` values and flags cut ones with `abstractTruncated: true`; copy each hit's `source` and `epmcId` into `records` here to read the whole abstract. This is the retrieval path for preprint (`PPR`), patent (`PAT`), and Agricola (`AGR`) records, which frequently carry no PMID and no DOI, so `pubmed_fetch_articles` and `pubmed_fetch_fulltext` cannot address them. Up to 25 records per call. Set `maxResponseCharacters` to bound the whole response: records past the ceiling are deferred whole and listed in `deferred.records` for a follow-up call. | Not declared | Yes | Not declared | Yes |
pubmed_europepmc_searchSearch Europe PMC, a broad open-access biomedical corpus. Surfaces preprints (`source: PPR`), patents (`source: PAT`), Agricola (`source: AGR`), plus everything in PubMed (`MED`) and PMC. Use when additional coverage is needed — preprints and EPMC-only OA records are the typical recovery. Paginate via `cursorMark`. Defaults to `MED`, `PMC`, and `PPR`; pass `sources` to include `PAT` / `AGR`. Abstracts arrive as a bounded `abstractSnippet` with `abstractTruncated` marking the cut ones — pass a hit to `pubmed_europepmc_fetch` as `records: [{ source, epmcId }]` for the complete abstract. | Not declared | Yes | Not declared | Yes |
pubmed_fetch_articlesFetch full article metadata by PubMed IDs. Returns detailed article information including abstract, authors, journal, language and original-language title, MeSH terms and indexed substances, linked retraction, erratum, and comment notices, and databank accessions such as trial registration IDs; grants and the members of a collective author are opt-in (`includeGrants`, `includeInvestigators`). Set `maxResponseCharacters` to bound the whole response: articles past the ceiling are deferred whole and listed in `deferred.ids` for a follow-up call. | Not declared | Yes | Not declared | Yes |
pubmed_fetch_citation_metricsFetch NIH iCite citation metrics for PubMed articles: the Relative Citation Ratio (RCR), NIH percentile, citation count, citations per year, expected and field citation rates, the Approximate Potential to Translate (APT), the human, animal, and molecular/cellular shares of each article's MeSH terms, and how many clinical articles cite it (set `includeClinicalCitations` for their PMIDs). RCR is a field- and year-normalized citation rate benchmarked to NIH-funded papers, whose median RCR is 1.0; iCite computes none for the most recent papers and marks recent ones provisional. iCite does not flag retractions — a retracted article keeps its metrics — so check pubmed_fetch_articles for retraction notices before relying on a record. Up to 1000 PMIDs per call; the first 200 distinct PMIDs are fetched and the rest returned in `overLimit`. PMIDs iCite has no record for are listed in `unavailablePmids`. | Not declared | Yes | Not declared | Yes |
pubmed_fetch_fulltextFetch full-text articles from PubMed Central as structured sections — the body, then back matter such as acknowledgments, declarations, and appendices — with tables and references. When PMC misses, transparently falls back to Europe PMC `fullTextXML` (structured JATS for its open-access subset, preprints included), then to Unpaywall — publisher-hosted or institutional open-access copies as HTML-as-Markdown or PDF-as-text. Name articles by `pmcids` (PMC IDs directly), `pmids` (PubMed IDs, auto-resolved), `dois` (DOIs, auto-resolved to PMC via the ID Converter; preprints and EPMC-only OA fall through to the Europe PMC and Unpaywall layers), or any mix of the three — up to 50 distinct identifiers; the first 10 are fetched per call, the rest returned in `overLimit`; an article several of them name is fetched and returned once. Two independent character controls: `maxCharacters` caps body text per article, `maxResponseCharacters` caps the whole response and defers articles past the ceiling whole, listing them in `deferred.ids` for a follow-up call. | Not declared | Yes | Not declared | Yes |
pubmed_find_relatedFind articles related to a source article — similar content (similar), articles citing this one (cited_by), or articles this one cites (references). Uses NCBI ELink as the primary source; falls back to Europe PMC then OpenAlex when NCBI is unavailable. | Not declared | Yes | Not declared | Yes |
pubmed_format_citationsGet formatted citations for PubMed articles in one or more formats (apa, mla, bibtex, ris, vancouver). Pass a single format as a string or multiple as an array. Retractions, errata, and expressions of concern NCBI links to an article come back in `notices`; Vancouver and APA also cite a retraction in the reference itself. | Not declared | Yes | Not declared | Yes |
pubmed_lookup_citationLook up PubMed IDs from partial bibliographic citations. Useful when you have a reference (journal, year, volume, page, author) and need the PMID — deterministic citation matching, more reliable than free-text search for structured references. Each citation must include at least journal or a four-digit year (ECitMatch primary-keys on journal+volume+page; author-only or volume-only inputs guarantee no match); more fields = better match accuracy. | Not declared | Yes | Not declared | Yes |
pubmed_lookup_meshSearch and explore the MeSH (Medical Subject Headings) controlled vocabulary. Returns MeSH records of every type — descriptors, supplementary concepts, qualifiers, and pharmacological actions — each with its record type and the PubMed clause that searches it, plus tree numbers, scope notes, entry terms, year introduced, previous indexing, and the exact heading match's allowable subheadings, with pagination via offset for paging past the maxResults cap. | Not declared | Yes | Not declared | Yes |
pubmed_search_articlesSearch PubMed with full query syntax, filters, and date ranges. Returns PMIDs and optional brief summaries. Supports field-specific filters (author, journal, MeSH terms), common filters (language, species, free full text), and pagination via offset for paging through large result sets. | Not declared | Yes | Not declared | Yes |
pubmed_spell_checkSpell-check a PubMed search query against NCBI ESpell and get the corrected query back. Use after a zero-hit or thin `pubmed_search_articles` result, or when a drug, gene, disease, or author name may be misspelled. Corrections are applied in place, so field tags, operators, spacing, and gene symbols stay as written (`alzhiemer diseese treatmnt outcomse` → `alzheimer disease treatment outcomes`). The value of an indexed field — MeSH, publication type, journal, author, language, subset, and the like (`aged[mh]`, `free full text[sb]`, `zhang y[au]`) — is kept as written, misspelled or not, since the ESpell dictionary is not the index that field searches; free-text fields such as `[tiab]`, `[ti]`, and `[tw]` are corrected. Words in all capitals, with digits or non-ASCII letters, or differing only in case are never changed, nor is a single letter swapped for another (`q fever`, the initial in `smith q`), words after a number or symbol ESpell skips are left as written, and `hasSuggestion` is false when no correction was applied. Re-run the search with `corrected`. | Not declared | Yes | Not declared | Yes |
Details
- Registry status
- Active
- Published
- Nov 13, 2026
- Updated
- Nov 13, 2026
- Website
- Not given
- Categories (suggested)
- Data and analyticsSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
- GDPR
- Not declared