PubMed
Provides tools for biomedical literature research: searching PubMed with filters, fetching article metadata and summaries by PMID, finding related and citing articles, resolving partial citations, spell-checking queries, looking up MeSH terms, converting between DOI/PMID/PMCID, retrieving full texts from PMC/Europe PMC/Unpaywall, formatting citations, and searching clinical trials.
Provides access to Semantic Scholar data, including citation counts, influence metrics, and open-access PDF links for academic papers.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PubMedsearch for recent articles on mRNA vaccines and cancer therapy"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
pubmed-mcp
An MCP server for biomedical literature research — 17 tools covering PubMed, Europe PMC, full-text retrieval, MeSH, citations, clinical trials, Semantic Scholar, OpenFDA and DrugBank.
One file, deps: FastMCP + httpx only. Works out of the box — all API keys are optional (they raise rate limits and enable a couple of extras). Read-only: it never writes to upstream services.
17 tools · optional API keys · read-only · works with any MCP client (Claude Desktop, Claude Code, Cursor, Windsurf, Hermes, ...).
The server itself is a single Python file: server.py — everything else in this repo is documentation, packaging and tests.
What it gives your assistant
# | Tool | Source | What it does |
1 |
| PubMed | Search with year / free-fulltext / abstract filters |
2 |
| PubMed | Full metadata by PMID (abstract, authors, DOI, grants) |
3 |
| PubMed | Fast summaries for many PMIDs at once |
4 |
| PubMed | Similar / citing / reference articles |
5 |
| PubMed | Partial citation → PMID resolution |
6 |
| Europe PMC | Broader corpus: preprints, patents, Agricola |
7 |
| NCBI ESpell | Biomedical query spell check |
8 |
| MeSH | Medical Subject Headings vocabulary |
9 |
| PMC ID Converter | DOI ↔ PMID ↔ PMCID conversion |
10 |
| PMC / Europe PMC / Unpaywall | Full text as structured sections |
11 |
| Local | APA, MLA, BibTeX, RIS, Vancouver |
12 |
| ClinicalTrials.gov | Search studies by condition / drug / status |
13 |
| Semantic Scholar | Citation counts, influence, OA PDF links |
14 |
| FDA FAERS | Drug side-effect reports |
15 |
| FDA labels | Indications, warnings, mechanism, PK |
16 |
| FDA | Recalls and market withdrawals |
17 |
| DrugBank | Drug targets / interactions (needs free key) |
Related MCP server: PubMed MCP Server
Quick start
No installation needed — run it straight from GitHub with uv:
uvx --from git+https://github.com/BerkayCelk/pubmed-mcp pubmed-mcpor from a clone:
pip install -r requirements.txt
python server.pyClient setup
Claude Desktop — merge into claude_desktop_config.json:
{
"mcpServers": {
"pubmed": {
"command": "uvx",
"args": ["--from", "git+https://github.com/BerkayCelk/pubmed-mcp", "pubmed-mcp"]
}
}
}Claude Code:
claude mcp add pubmed -- uvx --from git+https://github.com/BerkayCelk/pubmed-mcp pubmed-mcpCursor (~/.cursor/mcp.json) and Windsurf: same JSON shape as Claude Desktop.
Hermes: add to your config.yaml under mcp_servers (see examples/hermes_config.yaml).
Ready-made config files live in examples/.
For AI agents (automated setup)
Written so an AI coding agent (Claude Code, Codex, Cursor, Hermes, ...) can install and verify this server on its own.
1. Install command (no clone needed):
uvx --from git+https://github.com/BerkayCelk/pubmed-mcp pubmed-mcp2. Register with a client:
Claude Code:
claude mcp add pubmed -- uvx --from git+https://github.com/BerkayCelk/pubmed-mcp pubmed-mcpClaude Desktop — merge into
claude_desktop_config.json(~/Library/Application Support/Claude/on macOS,%APPDATA%\Claude\on Windows,~/.config/Claude/on Linux):{"mcpServers": {"pubmed": {"command": "uvx", "args": ["--from", "git+https://github.com/BerkayCelk/pubmed-mcp", "pubmed-mcp"]}}}Cursor — same JSON in
~/.cursor/mcp.json(project scope:.cursor/mcp.json).Hermes — see
examples/hermes_config.yaml.Any other MCP client — register this stdio command:
uvx --from git+https://github.com/BerkayCelk/pubmed-mcp pubmed-mcp
3. Verify (no client needed):
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}' | uvx --from git+https://github.com/BerkayCelk/pubmed-mcp pubmed-mcp | head -c 400Expect JSON containing "serverInfo":{"name":"PubMed".
4. Usage notes for agents:
Literature questions ->
pubmed_search, thenpubmed_fetch/pubmed_summaryfor the hits; usepubmed_europepmc_searchfor preprints and grey literature.Full text ->
pubmed_fetch_fulltext(chain: PMC → Europe PMC → Unpaywall; setUNPAYWALL_EMAILto enable the last step).Drug safety ->
openfda_*tools (no key needed);drugbank_searchrequires a freeDRUGBANK_API_KEY.Batch PMIDs whenever possible (up to 50 per call) and don't remove the built-in throttles — these are shared public APIs.
5. Copy-paste prompt for users:
Set up the PubMed MCP server for me: register
uvx --from git+https://github.com/BerkayCelk/pubmed-mcp pubmed-mcpas a stdio MCP server namedpubmedin my client config, restart/reload the client, then verify by calling thepubmed_searchtool with a small test query.
Optional API keys
Everything works without keys. Keys only raise rate limits or enable extras:
Env var | Effect | Where to get it |
| 3 → 10 requests/sec on NCBI | |
| Enables the Unpaywall fallback in | — |
| Relaxes Semantic Scholar rate limits | |
| Polite-pool identifier for Europe PMC | — |
| Enables |
Full text chain & rate limits
pubmed_fetch_fulltext tries, in order: NCBI PMC → Europe PMC → Unpaywall,
returning structured sections (Introduction, Methods, Results, ...) when available.
The server throttles itself: 0.35 s between NCBI calls (0.1 s with a key) and 3 s for Semantic Scholar. This wraps shared public APIs — please keep the throttles. Data sources: NCBI, Europe PMC, OpenFDA, ClinicalTrials.gov, Semantic Scholar, Unpaywall, DrugBank.
Development
Run from a clone:
uv run --with fastmcp --with httpx python server.pySmoke test (spawns the server over stdio, a few live calls — keep it gentle):
uv run --with fastmcp --with httpx python smoke_test.pyPackaging check:
uv build
Disclaimer
Unofficial community project — not affiliated with or endorsed by NCBI/NLM, Europe PMC, the FDA, ClinicalTrials.gov, Semantic Scholar, OurResearch, or DrugBank. For research assistance only; not medical advice.
License
MIT — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Search biomedical literature, get article details, find related articles, and explore MeSH terms
Search biomedical papers, inspect publication records, and traverse citation or semantic graphs.
Search PubMed/Europe PMC, fetch articles and full text (PMC/EPMC/Unpaywall), citations, MeSH terms.
Search 36M+ PubMed biomedical articles and ClinicalTrials.gov studies.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables comprehensive biomedical literature research through PubMed database access with advanced search, full-text retrieval, citation analysis, and batch processing capabilities. Supports both local deployment and cloud hosting for seamless integration with AI assistants.1MIT
- FlicenseNot gradedqualityCmaintenanceEnables searching PubMed's biomedical literature database and retrieving article metadata, abstracts, and full content through the E-utilities API. Supports advanced queries, batch operations, and multiple output formats with automatic rate limiting.2-
- AlicenseNot gradedqualityBmaintenanceEnables searching and retrieving biomedical literature from PubMed via the NCBI E-utilities API.10 npm1MIT
- AlicenseBqualityDmaintenanceThis MCP server provides 16 intelligent tools for searching, retrieving, and linking biomedical literature from PubMed and PMC. It enables LLM applications to perform complex queries, batch processing, and cross-database linking.168MIT