PubMed MCP Server
A local MCP server enabling PubMed, PMC, and iCite API access via stdio for tools like search, fetch, full text, and citation counts.
README
PubMed MCP Server v2.0.0
A local Model Context Protocol (MCP) server that exposes the NCBI PubMed / PubMed Central / iCite APIs to MCP-compatible clients (Claude Desktop, MCP Inspector, etc.) over stdio.
This version (2.0.0) is a complete rewrite of the tool layer to provide feature parity with the remote OAuth-protected sibling project pubmed-mcp-remote-Oauth- — all 10 tools are identical in name, schema, and behavior. The local build simply drops OAuth and runs on stdio so it can be wired into Claude Desktop without authentication.
✨ What's new in v2.0.0
| v1.0.2 (legacy) | v2.0.0 (this release) | |
|---|---|---|
| Tools | 8 tools (search_pubmed, get_full_abstract, …) |
10 tools with new schema (see below) |
| Output format | Markdown-formatted strings | Structured JSON for every tool (token-efficient, parser-friendly) |
| Search | Single sort, no filters | output_mode (minimal/compact/full), pagination, structured filters (date range, publication types, languages, humans-only, has-abstract, free full text) |
| Full text | Whole-article dump | Section-aware extraction (abstract / introduction / methods / results / discussion / conclusions / references) |
| Citations | elink only |
iCite by default (counts include non-PubMed citations) + elink mode for citing-PMIDs |
| ID conversion | — | New convert_ids (PMID ↔ PMCID ↔ DOI) |
| Bulk fetch | — | New fetch_batch |
| Count-only query | — | New count tool for fast query refinement |
| HTML entities | Raw | Decoded via he |
| 429 handling | — | Exponential-backoff retry (1s/2s/4s) |
| Module structure | Single pubmed-api.ts |
Split into pubmed-client.ts (transport) / tools.ts (MCP) / ris-exporter.ts |
Breaking change: tool names and response shapes have changed. If you were using v1.x, update your client prompts to the new names.
🔧 Tools (10)
All tools return JSON in content[0].text.
| # | Tool | Purpose |
|---|---|---|
| 1 | search |
PubMed search with MeSH support, pagination (retmax/retstart), sort (relevance/pub_date/first_author), output_mode (minimal/compact/full), and structured filters |
| 2 | fetch |
Single-PMID abstract (OpenAI MCP–compliant document shape) |
| 3 | fetch_batch |
Multiple-PMID abstracts in one call; optional include_abstract flag |
| 4 | get_full_text |
PMC full text via JATS XML; section filter [abstract, introduction, methods, results, discussion, conclusions, references, all]; max 20 PMCIDs |
| 5 | count |
Result count only — fast query refinement |
| 6 | find_similar_articles |
NCBI elink pubmed_pubmed similarity |
| 7 | export_to_ris |
Compact RIS for EndNote/Zotero/Mendeley (citation manager auto-fetches full metadata via PMID) |
| 8 | get_citation_counts |
iCite (default, counts only) or elink (PubMed-internal, with citing PMIDs) |
| 9 | convert_ids |
PMID ↔ PMCID ↔ DOI via NCBI ID Converter API |
| 10 | batch_process |
Run any subset of [abstract, citations, similar, ris_export, full_text] against the same PMID set with bounded concurrency |
For exact input/output schemas, run tools/list via MCP Inspector or check src/tools.ts.
📋 Prerequisites
- Node.js ≥ 18 (uses global
fetchandAbortSignal.timeout) - npm
- (optional) an NCBI API key — raises the rate limit from 3 req/s to 10 req/s
🔑 Getting an NCBI API key (optional but recommended)
Without a key, NCBI limits you to 3 requests/sec. With a free personal key, the limit goes up to 10 requests/sec — noticeable when running batch_process or large search paginations.
- Create / sign in to an NCBI account: https://account.ncbi.nlm.nih.gov/
- Open Account settings (top-right menu → Account settings) → scroll to API Key Management at the bottom of the page.
- Direct link: https://account.ncbi.nlm.nih.gov/settings/ (look for "API Key Management")
- Click Create an API Key. A 36-character hex string is generated immediately.
- Copy that string and put it in the
NCBI_API_KEYenv var in yourclaude_desktop_config.json(see the Claude Desktop section below).
The key is tied to your NCBI account; revoke or rotate it any time from the same page. Don't commit it to git or share it — it's effectively your identity on the E-utilities API.
📚 Official policy: https://support.nlm.nih.gov/kbArticle/?pn=KA-05317
🚀 Installation
The server is published on npm as pubmed_mcp_server2. For Claude Desktop you don't need to install anything manually — npx -y pubmed_mcp_server2 will fetch and run it.
If you'd rather build from source (development):
git clone https://github.com/masa061580/pubmed_mcp_server2.git
cd pubmed_mcp_server2
npm install
npm run build # produces dist/index.js
Smoke test (optional)
# From a clone:
( echo '{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
echo '{"jsonrpc":"2.0","method":"notifications/initialized"}'
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
sleep 1
) | node dist/index.js
# Or directly from npm:
npx -y pubmed_mcp_server2
The server should list all 10 tools.
🖥️ Claude Desktop configuration
Edit (create if missing):
- macOS —
~/Library/Application Support/Claude/claude_desktop_config.json - Windows —
%APPDATA%\Claude\claude_desktop_config.json
Recommended (via npm)
{
"mcpServers": {
"pubmed": {
"command": "npx",
"args": ["-y", "pubmed_mcp_server2"],
"env": {
"NCBI_API_KEY": ""
}
}
}
}
Alternative (from a local clone)
{
"mcpServers": {
"pubmed": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/pubmed_mcp_server2/dist/index.js"
],
"env": {
"NCBI_API_KEY": ""
}
}
}
}
Notes:
- Set
NCBI_API_KEYto your key, or remove the env block entirely if you don't have one. With a key the rate limit goes from 3 req/s → 10 req/s. - Windows users: if
npxis not on PATH inside Claude Desktop, use the full path tonpx.cmd(e.g.C:\\Program Files\\nodejs\\npx.cmd). - macOS + nvm: if Claude Desktop can't find
npx, replace"command": "npx"with the absolute path (e.g./Users/you/.nvm/versions/node/v20.x.x/bin/npx). Claude Desktop's PATH may not include nvm shims. - For the local-clone variant, use the absolute path to
dist/index.jsand runnpm run buildfirst. - Fully quit and relaunch Claude Desktop after editing (Cmd+Q on macOS).
Logs
tail -f "$HOME/Library/Logs/Claude/mcp-server-pubmed.log"
🛠️ MCP Inspector
# Run the published package directly:
npx @modelcontextprotocol/inspector npx -y pubmed_mcp_server2
# Or inspect a local build:
npx @modelcontextprotocol/inspector node /ABSOLUTE/PATH/TO/dist/index.js
📦 Project structure
src/
├── index.ts # stdio entry point — registers tools, connects transport
├── tools.ts # 10 MCP tool definitions (zod schemas + handlers)
├── pubmed-client.ts # NCBI E-utilities / iCite / ID-Converter client (XML parsing, 429 retry, timeouts)
└── ris-exporter.ts # Minimal RIS format generator
The server is stateless — every request creates fresh state. Safe for concurrent invocations.
🤝 Sibling project
A remote, OAuth-protected variant deployed on Cloudflare Workers lives at: 👉 masa061580/pubmed-mcp-remote-Oauth-
Both servers expose the same 10 tools with identical schemas, so client prompts/workflows are portable between them.
📚 NCBI Compliance
This server respects NCBI E-utilities guidelines:
- Sends
toolandemailparameters on every request - Honors rate limits (3 req/s without key, 10 req/s with key)
- Uses POST for large ID lists (
efetch) - Retries 429 with exponential backoff (max 3 attempts)
- 30s
AbortSignal.timeouton every fetch
Please supply your own NCBI_API_KEY for production use and update email/tool in src/pubmed-client.ts to identify your deployment.
📝 License
MIT — see LICENSE.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。