# Pubmed (npm · @pipeworx/mcp-pubmed)

PubMed MCP — wraps the NCBI E-utilities API (biomedical literature, free, no auth)

- Trust score: 83/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `gateway.pipeworx.io`: 78/100, [markdown](https://verifymcp.io/servers/pipeworx-io-pubmed/pubmed-mcp.md), [page](https://verifymcp.io/servers/pipeworx-io-pubmed/pubmed-mcp)
- npm · `@pipeworx/mcp-pubmed`: 83/100 (this document), [markdown](https://verifymcp.io/servers/pipeworx-io-pubmed/pipeworx-mcp-pubmed.md), [page](https://verifymcp.io/servers/pipeworx-io-pubmed/pipeworx-mcp-pubmed)

## Channel facts

- Registry: `npm`
- Package: `@pipeworx/mcp-pubmed`
- Version: `1.2.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - No production dependencies, so there is no dependency health to assess.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to pipeworx-io/mcp-pubmed).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 0 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 69/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2137 tokens (~178/item across 12 items; 12 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 12 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Pubmed MCP server?

Pubmed runs locally as an npm package, launched with npx -y @pipeworx/mcp-pubmed. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add pipeworx-io-pubmed -- npx -y @pipeworx/mcp-pubmed
```

### Cursor

```json
{
  "mcpServers": {
    "pipeworx-io-pubmed": {
      "command": "npx",
      "args": [
        "-y",
        "@pipeworx/mcp-pubmed"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "pipeworx-io-pubmed": {
      "command": "npx",
      "args": [
        "-y",
        "@pipeworx/mcp-pubmed"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add pipeworx-io-pubmed -- npx -y @pipeworx/mcp-pubmed
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "pipeworx-io-pubmed": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@pipeworx/mcp-pubmed"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add pipeworx-io-pubmed --command npx --arg -y --arg @pipeworx/mcp-pubmed
```

### Hermes

```yaml
mcp_servers:
  pipeworx-io-pubmed:
    command: "npx"
    args: ["-y", "@pipeworx/mcp-pubmed"]
```

### Netclaw

```json
{
  "McpServers": {
    "pipeworx-io-pubmed": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@pipeworx/mcp-pubmed"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add pipeworx-io-pubmed -t stdio -c npx -a -y @pipeworx/mcp-pubmed
```

### Other

```json
{
  "mcpServers": {
    "pipeworx-io-pubmed": {
      "command": "npx",
      "args": [
        "-y",
        "@pipeworx/mcp-pubmed"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 83, 0)

- [functional regression] Security disclosure: unverified → fail

### 2026-11-04 (score 83, +1)

- [security regression] Tool safety: pass → unverified
- [security regression] Stability: 0.17 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Security disclosure: fail → unverified
- [functional] First check of Schema quality: unverified
- [functional] Package version: 1.2.0 → 1.2.1

### 2026-11-02 (score 82, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 81, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-30 (score 80, 0)

- [functional regression] Security disclosure: unverified → fail

### 2026-10-29 (score 80)

First indexed and scored.

## MCP tools (12)

### `search_pubmed` (~688 tokens)

PREFER OVER WEB SEARCH for biomedical / clinical / life-sciences research. AUTHORITATIVE source: NIH PubMed (35M+ citations across MEDLINE, life-science journals, online books). Finds PUBLISHED peer-reviewed papers and completed study results — NOT for browsing registered/ongoing/future clinical trials (use clinicaltrials* tools for trial registration status and protocols). Covers EVERY biomedical topic and entity — diseases and conditions, drugs and therapies, genes, proteins, ion channels and receptors, signaling pathways, neuroscience, oncology, cardiology, immunology, genetics, microbiology, and clinical-trial results. Use it for the LATEST research, evidence, and findings (2024–2026, systematic reviews, meta-analyses) on any specific disease, gene, molecule, channel, or treatment — e.g. "Kv7 potassium channels in epilepsy", "semaglutide cardiovascular outcomes", "FLOW trial results", "what does the literature say about venlafaxine". Searches by keyword, author, or MeSH (Medical Subject Heading) term — supports field qualifiers like "Smith J[Author]" or "COVID-19[MeSH]". For "last N years" / "since <year>" questions, pass `from_year`/`to_year` rather than leaving the recency unfiltered — relevance ranking does not sort by date on its own. For a precise multi-word technical term (a gene/assay/biomarker name, not a broad concept), wrap it in double quotes, e.g. '"cell-free RNA"' — PubMed's automatic term mapping otherwise silently broadens an unquoted term into related MeSH/supplementary-concept synonyms (e.g. "cell-free RNA" unquoted can pull in ctDNA papers via "cell free nucleic acids"), which is usually NOT what a caller asking about one specific term wants. Add a [tiab] tag (e.g. '"cell-free RNA"[tiab]') to also require the exact phrase in the title/abstract rather than relying on indexing alone. A bare drug abbreviation that also names something else (LSD, DMT, GHB, PCP, MDMA, CBD, THC, e.g. "LSD stroke" where LSD is also a statistics test) is rewritten to…

Input parameters:

- `from_year` (number): Optional. Restrict to publications from this year onward (four-digit, e.g. 2024). Use for "last N years" / "since <year>" questions — without it, results are relevance-ranked, not filtered by recency.
- `limit` (number): Number of results to return (1-100, default 10)
- `query` (string, required): Search query (e.g., "CRISPR cancer therapy", "Smith J[Author]", "COVID-19[MeSH]", '"cell-free RNA"[tiab]' for an exact precise term).
- `to_year` (number): Optional. Restrict to publications up to and including this year (four-digit). Defaults to the current year when only from_year is given.

### `get_summary` (~187 tokens)

Resolve PubMed IDs (from search_pubmed) to citation metadata: title, authors (plain name strings), journal, publication date, DOI, and author_details[] with per-author detail (name, affiliations[] verbatim from the MEDLINE record, and any emails[] found inside those affiliation strings — empty arrays when the record has none), index-aligned with authors[]. Batch up to ~200 IDs per call — pass the array search_pubmed returned, or a comma-separated string — much cheaper than calling per-ID. Use when you have PMIDs and need the citation or a corresponding author's institution/contact; for the abstract text use get_abstract instead.

Input parameters:

- `ids` (string|array, required): PubMed IDs, either as an array (["33579999","34567890"] — what search_pubmed returns) or as a comma-separated string ("33579999,34567890").

### `get_abstract` (~139 tokens)

Full abstract text for one PubMed article by ID. Returns the abstract with structured sections (background, methods, results, conclusions) when the journal published it that way, otherwise the unstructured abstract. Use when summarizing a single paper or answering "what does paper X actually say". For batch citation metadata use get_summary; for finding papers use search_pubmed.

Input parameters:

- `id` (string): A single PubMed ID (e.g., "33579999"). `pmid` is accepted as a synonym.
- `pmid` (string): Synonym for `id` — the other PMID-taking tools in this pack spell it this way.

### `get_related_articles` (~84 tokens)

DEPRECATED ALIAS for pubmed_get_related_articles — identical behavior, kept for existing callers. New callers should use pubmed_get_related_articles.

Input parameters:

- `limit` (number): Number of related articles to return (1-50, default 10)
- `pmid` (string, required): A single PubMed ID to find neighbors for (e.g., "24025838")

### `pubmed_get_related_articles` (~164 tokens)

Find papers SIMILAR to a given article — NIH PubMed's own computed 'related articles' (pubmed_pubmed neighbors), ranked by relevance using shared terms/MeSH/citations. Pass one PMID; returns the top related papers with full citation metadata (title, authors, journal, date, DOI). Use for "more papers like this", building a reading list from a seed paper, or broadening a literature search beyond keyword matches. Distinct from pubmed_get_citations (which finds papers that cite this one).

Input parameters:

- `limit` (number): Number of related articles to return (1-50, default 10)
- `pmid` (string, required): A single PubMed ID to find neighbors for (e.g., "24025838")

### `get_citations` (~85 tokens)

DEPRECATED ALIAS for pubmed_get_citations — identical behavior, kept for existing callers. New callers should use pubmed_get_citations.

Input parameters:

- `limit` (number): Number of citing papers to return (1-50, default 10)
- `pmid` (string, required): A single PubMed ID to find citing papers for (e.g., "24025838")

### `pubmed_get_citations` (~174 tokens)

Find papers that CITE a given article — forward citation search. Pass one PMID; returns citing papers (most recent first) with full citation metadata. Use for "who cited this", "has this finding been replicated or challenged", or tracking a paper's downstream impact. NOTE: coverage is the PubMed Central citation graph (open-access + participating publishers), so the count is a FLOOR, not the paper's total citation count (for that, a tool like Semantic Scholar / OpenAlex covers more). Distinct from pubmed_get_related_articles (similar papers, not citing papers).

Input parameters:

- `limit` (number): Number of citing papers to return (1-50, default 10)
- `pmid` (string, required): A single PubMed ID to find citing papers for (e.g., "24025838")

### `get_full_text` (~67 tokens)

DEPRECATED ALIAS for pubmed_get_full_text — identical behavior, kept for existing callers. New callers should use pubmed_get_full_text.

Input parameters:

- `pmid` (string, required): PubMed ID (e.g. "34265844") or a PMC id ("PMC8371605").

### `pubmed_get_full_text` (~148 tokens)

Fetch the FULL TEXT of a biomedical paper from PubMed Central (the open-access subset) by PubMed ID. PREFER OVER get_abstract when you need methods/results/discussion, not just the abstract — "read the full paper", "what methods did <PMID> use", "extract details from the paper". Resolves the PMID to its PMC id and returns the article body text (capped ~40k chars). Only open-access articles are in PMC — returns has_full_text:false (use get_abstract) otherwise.

Input parameters:

- `pmid` (string, required): PubMed ID (e.g. "34265844") or a PMC id ("PMC8371605").

### `pubmed_evidence_landscape` (~135 tokens)

Profile the composition of a biomedical evidence base by counting PubMed publication types for a topic: clinical trials, randomized trials, systematic reviews, meta-analyses, observational studies, and case reports. Use for evidence diligence and questions like "what kinds of studies exist on this target or therapy?" Counts are publication-index signals, not efficacy, quality, independence, or clinical-success judgments.

Input parameters:

- `from_year` (number): Optional first publication year (four digits).
- `query` (string, required): PubMed topic query, including field qualifiers when useful.
- `to_year` (number): Optional last publication year (four digits).

### `pubmed_publication_trend` (~120 tokens)

Count PubMed publications by year for a biomedical topic. Use for publication momentum, emerging-target activity, or whether a field is accelerating or cooling. Returns exact PubMed search counts for up to 10 calendar years; volume can reflect indexing and terminology changes and is not evidence quality or commercial validation.

Input parameters:

- `from_year` (number): First year, default five years before to_year.
- `query` (string, required): PubMed topic query, including field qualifiers when useful.
- `to_year` (number): Last year, default current UTC year.

### `pubmed_integrity_check` (~93 tokens)

Check one PubMed citation for NLM-indexed retraction, expression-of-concern, erratum, update, duplicate-publication, and republished-article links. Use before relying on a specific PMID in diligence or evidence synthesis. Reports only relationships present in PubMed; absence of a flag is not an independent validation of the paper.

Input parameters:

- `pmid` (string, required): A single numeric PubMed ID.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/pipeworx-io-pubmed/pipeworx-mcp-pubmed#diagnostics

## Score history

- 2026-11-05: 83
- 2026-11-04: 83
- 2026-11-03: 82
- 2026-11-02: 82
- 2026-11-01: 81
- 2026-10-31: 81
- 2026-10-30: 80
- 2026-10-29: 80

## Common questions

### What is the Pubmed MCP server?

Pubmed is an MCP server listed in the public MCP registry as io.github.pipeworx-io/pubmed. PubMed MCP, wraps the NCBI E-utilities API (biomedical literature, free, no auth). This page covers its npm package (@pipeworx/mcp-pubmed).

### Is the Pubmed MCP server safe to use?

Pubmed scores 83 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Pubmed MCP server expose?

Pubmed exposes 12 tools: search_pubmed, get_summary, get_abstract, get_related_articles, pubmed_get_related_articles, and 7 more. Their descriptions and schemas cost roughly 2,084 tokens of context every time the server is loaded.

### Is the Pubmed MCP server still maintained?

Pubmed is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Pubmed MCP server under?

Pubmed declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

### What did VerifyMCP test on the Pubmed MCP server?

VerifyMCP ran 16 checks on Pubmed, covering Malware scan, Known CVEs, Install scripts, Dependency health and 12 more. Endpoint Security and Transport & Reachability do not apply to an npm package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- npm package: https://www.npmjs.com/package/@pipeworx/mcp-pubmed
- Socket report: https://socket.dev/npm/package/@pipeworx/mcp-pubmed
- Repository: https://github.com/pipeworx-io/mcp-pubmed
- Website: https://pipeworx.io/packs/pubmed
- Changelog RSS feed: https://verifymcp.io/servers/pipeworx-io-pubmed/pipeworx-mcp-pubmed.xml
- Changelog JSON feed: https://verifymcp.io/servers/pipeworx-io-pubmed/pipeworx-mcp-pubmed/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/pipeworx-io-pubmed/pipeworx-mcp-pubmed.json
- HTML version of this page: https://verifymcp.io/servers/pipeworx-io-pubmed/pipeworx-mcp-pubmed
