An MCP server for searching PubMed and Europe PMC, fetching article metadata and full text, formatting citations, resolving references, and looking up MeSH terms. It supports stdio or Streamable HTTP transport and exposes PubMed/PMC utilities through 10 tools.
From the registry: Search PubMed/Europe PMC, fetch articles and full text (PMC/EPMC/Unpaywall), citations, MeSH terms.
Please install the `pubmed-mcp-server` MCP server into my current AI client (that's you).
Required prerequisites (do these first if not already done):
- **Install Node.js (for npx)** — Required if using the recommended npx-based local stdio setup. (https://nodejs.org/)
Optional prerequisites:
- Optional NCBI API key — Recommended for higher NCBI rate limits (10 req/s vs 3 req/s). (https://www.ncbi.nlm.nih.gov/account/settings/)
Canonical MCP server config (stdio transport):
- command: `npx`
- args: ["-y","@cyanheads/pubmed-mcp-server@latest"]
- required environment variables:
- `MCP_TRANSPORT_TYPE`: Transport mode for the server. For local MCP client stdio usage, set to stdio. (example: `stdio`)
- optional environment variables:
- `MCP_LOG_LEVEL`: Log level for server output. (example: `info`)
- `NCBI_API_KEY`: NCBI API key for higher request rate limits. (example: `<your-ncbi-api-key>`)
- `NCBI_ADMIN_EMAIL`: Contact email sent with NCBI requests, recommended by NCBI. (example: `<your-email>`)
- `UNPAYWALL_EMAIL`: Contact email for Unpaywall. When set, full-text fetching can fall back to Unpaywall open-access copies for non-PMC DOIs. (example: `<your-email>`)
- `EUROPEPMC_ENABLED`: Enable Europe PMC search tool and the full-text fallback chain. (example: `true`)
- `EUROPEPMC_EMAIL`: Optional contact email sent with Europe PMC requests. (example: `<your-email>`)
- `MCP_AUTH_MODE`: Authentication mode: none, jwt, or oauth. (example: `none`)
- `MCP_GC_PRESSURE_INTERVAL_MS`: Opt-in Bun-only forced-GC pressure loop interval in milliseconds. (example: `60000`)
- `LOGS_DIR`: Directory for log files (Node.js only). (example: `<your-logs-directory>`)
- `STORAGE_PROVIDER_TYPE`: Storage backend type. (example: `in-memory`)
- `NCBI_REQUEST_DELAY_MS`: Minimum gap between NCBI request starts in milliseconds. (example: `334`)
- `NCBI_MAX_CONCURRENT`: Maximum concurrent in-flight NCBI requests. (example: `8`)
- `NCBI_MAX_RETRIES`: Retry attempts for failed NCBI requests. (example: `6`)
- `NCBI_TIMEOUT_MS`: Per-request HTTP timeout for NCBI calls in milliseconds. (example: `30000`)
- `NCBI_TOTAL_DEADLINE_MS`: Total deadline across all retry attempts for one NCBI call, in milliseconds. (example: `60000`)
- `UNPAYWALL_TIMEOUT_MS`: Per-request HTTP timeout for Unpaywall lookups and content fetches, in milliseconds. (example: `20000`)
- `EUROPEPMC_REQUEST_DELAY_MS`: Minimum gap between Europe PMC request starts in milliseconds. (example: `200`)
- `EUROPEPMC_MAX_RETRIES`: Retry attempts for failed Europe PMC requests. (example: `3`)
- `EUROPEPMC_TIMEOUT_MS`: Per-request HTTP timeout for Europe PMC calls in milliseconds. (example: `20000`)
- `OTEL_ENABLED`: Enable OpenTelemetry. (example: `false`)
Note: README also provides a public hosted Streamable HTTP endpoint at https://pubmed.caseyjhand.com/mcp and documents self-hosted HTTP mode, but the simplest portable local install path is stdio via npx. For hosted usage, point an MCP client at the published URL instead of running a local command.
Add this MCP server to my current client's config in the correct format for you. If you need secrets or credentials I haven't provided, ASK me — do not invent values or leave raw placeholders. After adding it, tell me how to verify the server is connected.UNPAYWALL_EMAILrequiredEnables the Unpaywall layer for resolving DOIs to legal open-access copies in full-text fetching.MCP server for searching Airweave collections with natural language queries.