# pubmed-mcp-server MCP server

Search PubMed/Europe PMC, fetch articles and full text (PMC/EPMC/Unpaywall), citations, MeSH terms.

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-cyanheads-pubmed-mcp-server
- Repository: https://github.com/cyanheads/pubmed-mcp-server

## Install
- Command: `npx -y @cyanheads/pubmed-mcp-server`
- Endpoint: https://pubmed.caseyjhand.com/mcp
- Auth: Not captured

## Setup notes
- Package: Npm @cyanheads/pubmed-mcp-server v2.9.9
- Environment variable: MCP_LOG_LEVEL (default info)
- Environment variable: NCBI_API_KEY
- Environment variable: NCBI_ADMIN_EMAIL
- Environment variable: UNPAYWALL_EMAIL
- Package: Npm @cyanheads/pubmed-mcp-server v2.9.9
- Environment variable: MCP_HTTP_HOST (default 127.0.0.1)
- Environment variable: MCP_HTTP_PORT (default 3010)
- Environment variable: MCP_HTTP_ENDPOINT_PATH (default /mcp)
- Environment variable: MCP_PUBLIC_URL
- Environment variable: MCP_AUTH_MODE (default none)
- Environment variable: MCP_LOG_LEVEL (default info)
- Environment variable: NCBI_API_KEY
- Environment variable: NCBI_ADMIN_EMAIL
- Environment variable: UNPAYWALL_EMAIL
- Remote endpoint: https://pubmed.caseyjhand.com/mcp

## Tools
- pubmed_search_articles (Pubmed Search Articles) - Search 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. Endpoint: https://pubmed.caseyjhand.com/mcp
- pubmed_fetch_articles (Pubmed Fetch Articles) - Fetch full article metadata by PubMed IDs. Returns detailed article information including abstract, authors, journal, MeSH terms. Endpoint: https://pubmed.caseyjhand.com/mcp
- pubmed_fetch_fulltext (Pubmed Fetch Fulltext) - Fetch full-text articles from PubMed Central with structured sections and references. When PMC misses, transparently falls back to Europe PMC `fullTextXML` (structured JATS for records with a PMC counterpart), then to Unpaywall — publisher-hosted or institutional open-access copies as HTML-as-Markdown or PDF-as-text. Provide exactly one of `pmcids` (PMC IDs directly), `pmids` (PubMed IDs, auto-resolved), or `dois` (DOIs, auto-resolved to PMC via the ID Converter; preprints and EPMC-only OA fall through to the Europe PMC and Unpaywall layers). Endpoint: https://pubmed.caseyjhand.com/mcp
- pubmed_format_citations (Pubmed Format Citations) - Get 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. Endpoint: https://pubmed.caseyjhand.com/mcp
- pubmed_find_related (Pubmed Find Related) - Find 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. Endpoint: https://pubmed.caseyjhand.com/mcp
- pubmed_spell_check (Pubmed Spell Check) - Spell-check a query and get NCBI's suggested correction. Useful for refining search queries. Endpoint: https://pubmed.caseyjhand.com/mcp
- pubmed_lookup_mesh (Pubmed Lookup Mesh) - Search and explore the MeSH (Medical Subject Headings) controlled vocabulary. Returns descriptor records with tree numbers, scope notes, and entry terms, plus pagination via offset for paging past the maxResults cap. Endpoint: https://pubmed.caseyjhand.com/mcp
- pubmed_lookup_citation (Pubmed Lookup Citation) - Look 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 year (ECitMatch primary-keys on journal+volume+page; author-only or volume-only inputs guarantee no match); more fields = better match accuracy. Endpoint: https://pubmed.caseyjhand.com/mcp
- pubmed_convert_ids (Pubmed Convert Ids) - Convert 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. Endpoint: https://pubmed.caseyjhand.com/mcp
- pubmed_europepmc_search (Pubmed Europepmc Search) - Search 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’s `source` and `epmcId` to `pubmed_europepmc_fetch` for the complete abstract. Endpoint: https://pubmed.caseyjhand.com/mcp
- pubmed_europepmc_fetch (Pubmed Europepmc Fetch) - Fetch complete Europe PMC records — including the full, untruncated abstract — for records addressed by `source` plus `epmcId`. Pairs with `pubmed_europepmc_search`, which returns bounded `abstractSnippet` values and flags cut ones with `abstractTruncated: true`; pass those hits' `source` and `epmcId` 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. Endpoint: https://pubmed.caseyjhand.com/mcp

## Resources
- pubmed://database/info - PubMed Database Info PubMed database metadata including field list, last update date, and record count. MIME type: application/json

## Prompts
- research_plan - Generate a structured research plan outline for a biomedical research project. Arguments: title, goal, keywords, organism, includeAgentPrompts

## Metadata
- Owner: io.github.cyanheads
- Version: 2.9.9
- Runtime: Npm
- Transports: STDIO, HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Jul 26, 2026
- Source: https://registry.modelcontextprotocol.io
