The sequence that pays off is search, then details, then related articles — and search_mesh_terms before all of it when terminology matters, because the right Medical Subject Heading finds papers a plain keyword misses entirely. Get an NCBI API key before doing anything at volume: it takes the rate limit from 3 requests per second to 10.
An MCP server over NCBI's PubMed APIs for literature work, with caching, rate limiting and batch processing built in for volume searching.
- search_pubmed with a sort order, a date range and a result cap
- advanced_search that combines terms, authors, journals and publication types with a boolean operator and a date window
- get_article_details for a set of PMIDs — abstracts, author lists, MeSH terms, DOIs and publication information
- get_related_articles to follow NCBI's own relatedness outward from one paper
- search_mesh_terms so you can find the right Medical Subject Heading before you search with it
- Batch tools for scale: several queries run in parallel, and long PMID lists fetched in chunks
- A response cache with statistics and a way to clear expired entries
- Analytics on usage, performance and system health, with a configurable time window and a reset
Python 3.8 or higher. The package is published as ncbi-mcp-server with an entry point of the same name; the repository's own setup runs it from the project directory under Poetry. No credentials are strictly required, but an NCBI API key and email raise the ceiling: 3 requests per second without a key, 10 with one. Both go into a .env file alongside the server.
One command — uvx ncbi-mcp-server
