NCBI Literature Search

by vitorpavinato

Not rated
GitHub

About

Search NCBI databases, including PubMed, for scientific literature. Tailored for researchers in life sciences, evolutionary biology, and computational biology.

Details

Author
vitorpavinato
Categories
Search, Other, Knowledge Base

Setup

Install NCBI Literature Search in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/vitorpavinato/ncbi-mcp-server

Follow the installation instructions in the repository README, then restart your MCP client.

A Model Context Protocol (MCP) server for searching NCBI databases, designed for researchers across all life sciences and biomedical fields. This server provides seamless access to PubMed's vast collection of 35+ million scientific articles through natural language queries, enabling AI assistants to help with literature reviews, research discovery, and scientific analysis.

πŸ”¬Comprehensive Search: Search PubMed's 35+ million articles across all biological disciplines πŸ“ŠAdvanced Queries: Support for complex searches with boolean operators, field tags, and filters
🧬Life Sciences Research: Covers all biological and biomedical fields including genetics, ecology, medicine, and biotechnology πŸ’»Computational Biology: Perfect for finding bioinformatics methods, algorithms, and computational tools πŸ”¬Research Applications: Literature reviews, hypothesis generation, method discovery, and staying current with scientific advances πŸ“šFull Article Details: Get abstracts, author lists, MeSH terms, DOIs, and publication information πŸ”—Related Articles: Discover relevant research through NCBI's relationship algorithms πŸ“–MeSH Integration: Search and utilize Medical Subject Headings for precise terminology

- Python 3.8 or higher
- Poetry (recommended) -Install Poetry

mkdir ncbi-mcp-server && cd ncbi-mcp-server poetry init

During init, add dependencies:mcp,httpx,typing-extensions

mkdir -p src/ncbi_mcp_server # Save server.py code as src/ncbi_mcp_server/server.py
poetry run python src/ncbi_mcp_server/server.py

- macOS:~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:%APPDATA%/Claude/claude_desktop_config.json
- Linux:~/.config/claude/claude_desktop_config.json

{ "mcpServers": { "ncbi-literature": { "command": "poetry", "args": ["run", "python", "src/ncbi_mcp_server/server.py"], "cwd": "/FULL/PATH/TO/YOUR/ncbi-mcp-server" } } }

Restart Claude Desktopand start searching!

conda env create -f environment.yml conda activate ncbi-mcp python server.py
python -m venv venv source venv/bin/activate # Linux/macOS pip install -r requirements.txt python server.py
"Search for recent phylogenetic analysis papers on mammalian evolution" β†’ Uses: search_pubmed with query "phylogenetic analysis[ti] AND mammalian[ti] AND evolution"

Find computational phylogenetics methods:

"Find papers about maximum likelihood methods for phylogenetic reconstruction" β†’ Uses: search_pubmed with query "maximum likelihood[ti] AND phylogenetic reconstruction"
"Find recent papers on Drosophila comparative genomics" β†’ Uses: search_pubmed with query "Drosophila[ti] AND comparative genomics[ti]"
"Search for machine learning applications in genomics from the last 2 years" β†’ Uses: search_pubmed with date_range="730" and query "machine learning AND genomics"
"Find papers about new bioinformatics tools for sequence analysis" β†’ Uses: search_pubmed with query "bioinformatics[ti] AND software[ti] AND sequence analysis"
"Find review articles about CRISPR applications in evolutionary studies published in Nature or Science" β†’ Uses: advanced_search with terms=["CRISPR", "evolution"], publication_types=["Review"], journals=["Nature", "Science"]
"Find recent papers by researchers working on ancient DNA and phylogenomics" β†’ Uses: search_pubmed with query "ancient DNA[ti] AND phylogenomics[ti]"

- query: Search terms (supports field tags like[ti]for title,[au]for author,[mh]for MeSH terms)
- max_results: Number of results (1-100, default: 20)
- sort: Sort by "relevance", "pub_date", "author", or "journal"
- date_range: Limit to recent articles ("30", "90", "365", "1095" days)

- "CRISPR[ti] AND evolution"- CRISPR in title AND evolution anywhere
- "phylogenetic analysis[mh]"- Using MeSH term for phylogenetic analysis
- "computational biology AND machine learning"- Boolean search

Fetch complete information for specific articles

Returns full abstracts, author lists, MeSH terms, DOI, publication details

Find standardized Medical Subject Headings

Helps discover related concepts and improve search precision

Discover articles related to a specific paper

- pmid: PubMed ID of reference article
- max_results: Number of related articles (1-50, default: 10)

Perfect for literature reviews and finding relevant research

- terms: List of search terms to combine
- operator: "AND", "OR", or "NOT" to combine terms
- authors: List of author names
- journals: List of journal names
- publication_types: "Research Article", "Review", "Meta-Analysis", etc.
- date_from/date_to: Date range in YYYY/MM/DD format
- max_results: Number of results (1-100, default: 20)

The NCBI MCP Server includes comprehensive analytics to help you understand your research patterns and optimize performance.

"Show me my research analytics summary"

- Total requests and uptime
- Operation breakdown (searches, fetches, etc.)
- Cache performance metrics
- Recent activity and error rates
- System health indicators

Detailed performance metrics for specific time periods

"Get detailed metrics for the last 24 hours"

- hours: Time period to analyze (default: 24)
- Operation-specific performance data
- Timeline analysis with hourly breakdowns
- Error rates and response times per operation

Note: This permanently clears all collected metrics.

- Search queries and frequency
- Most used operations
- Unique vs. repeated queries
- Peak usage periods

- Response times for each operation
- Cache hit/miss rates
- Error rates and types
- Rate limiting efficiency

- Popular search terms and patterns
- Research workflow analysis
- Literature access patterns
- Most accessed journals and topics

cp .env.example .env # Edit .env with your NCBI email and API key
# Local development ./deploy.sh local # Docker deployment ./deploy.sh docker # Production deployment ./deploy.sh production
poetry install poetry run python -m src.ncbi_mcp_server.server

Recommended for most users with two options:

# Copy and configure environment cp .env.example .env # Edit .env with your NCBI email and API key # Start all services docker-compose up -d
# For basic usage without Redis dependencies cp .env.example .env # Edit .env with your NCBI email docker-compose -f docker-compose.simple.yml up -d

- NCBI MCP Server container
- Redis cache for performance
- Redis Commander UI (http://localhost:8081)

- NCBI MCP Server container only
- In-memory caching (no persistence)

# Configure production settings cp .env.production .env # Edit with production values # Deploy ./deploy.sh production

- Redis Commander:http://localhost:8081
- Cache stats via MCP tool:cache_stats()

# Test server health curl http://localhost:8000/health # Test via MCP python -c "from src.ncbi_mcp_server.server import cache_stats; import asyncio; print(asyncio.run(cache_stats()))"

For higher rate limits and better performance:
- Register at NCBI:
https://www.ncbi.nlm.nih.gov/account/
- Get API key:
https://www.ncbi.nlm.nih.gov/account/settings/
- Add to server codeinsrc/ncbi_mcp_server/server.py:

# Replace the line: ncbi_client = NCBIClient() # With: ncbi_client = NCBIClient( email="your.email@university.edu", api_key="your_api_key_here" )

- Without API key: 3 requests/second
- With API key: 10 requests/second
- With API key + email: Higher limits for bulk requests

poetry shell # Activate virtual environment poetry add package # Add new dependency poetry remove package # Remove dependency poetry update # Update all dependencies poetry run python ... # Run commands in environment poetry build # Create distribution packages

Code Quality (if you added dev dependencies)

poetry add --group dev black mypy pytest isort flake8 poetry run black . # Format code poetry run mypy . # Type checking poetry run pytest # Run tests poetry run isort . # Sort imports
# They just need: git clone your-repo cd ncbi-mcp-server poetry install # Everything works identically!

PubMed supports many field tags for precise searching:

- [ti]- Title
- [tiab]- Title and Abstract
- [au]- Author
- [mh]- MeSH Terms
- [journal]- Journal Name
- [pdat]- Publication Date
- [pt]- Publication Type
- [lang]- Language
- [sb]- Subset (e.g., medline, pubmed)

"machine learning"[ti] AND "phylogen*"[tiab] AND "2020"[pdat]:"2024"[pdat] evolutionary[mh] AND computational[ti] AND (genomics[tiab] OR proteomics[tiab]) "ancient DNA"[ti] AND (paleogenomics[mh] OR phylogenomics[tiab])

- Start broad:search_pubmed("computational phylogenetics")
- Refine with MeSH:search_mesh_terms("phylogenetics")
- Find key papers: Use publication dates and journal filters
- Explore connections:get_related_articles(pmid="key_paper_id")
- Deep dive:get_article_details(pmids=["12345", "67890"])
- Recent methods:search_pubmed("new methods", date_range="90")
- Follow key authors:search_pubmed("author_name[au]", sort="pub_date")
- Track specific topics:advanced_searchwith your research keywords
- Algorithm papers:search_pubmed("algorithm[ti] AND your_field")
- Software tools:search_pubmed("software[ti] OR tool[ti] AND bioinformatics")
- Benchmarking:search_pubmed("comparison[ti] OR benchmark[ti]")

- Check Python version (3.8+ required)
- Install dependencies:pip install -r requirements.txt
- Verify file permissions

- Check query syntax (use proper field tags)
- Try broader search terms
- Verify internet connection

- Add delays between requests
- Get NCBI API key for higher limits
- Consider searching fewer results per query

- Usually temporary NCBI server issues
- Retry after a few seconds
- Check NCBI status:https://www.ncbi.nlm.nih.gov/

- NCBI E-utilities documentation:https://www.ncbi.nlm.nih.gov/books/NBK25499/
- PubMed search tips:
https://pubmed.ncbi.nlm.nih.gov/help/
- MeSH database:
https://www.ncbi.nlm.nih.gov/mesh/

This MCP server is designed to grow with the research community. Ideas for enhancement:

- Additional databases: PMC, BioRxiv, databases beyond NCBI
- Citation analysis: Track paper impact and citation networks
- Export formats: BibTeX, EndNote, RIS for reference managers
- Saved searches: Persistent search profiles and alerts
- Full-text integration: When available through PMC

This project is open source. Feel free to modify and distribute according to your institution's policies.

- Evolutionary Biology & Phylogenetics
- Computational Biology & Bioinformatics
- Molecular Evolution & Population Genetics
- Comparative Genomics & Proteomics
- Systems Biology & Network Analysis
- Biostatistics & Mathematical Biology
- Ancient DNA & Paleogenomics
- Conservation Genetics & Ecology

Start exploring the vast world of biological literature with powerful, precise searches!

Search global news using natural language. Webz.io News Search API returns the most relevant articles and content, with filters for source, country, language, date, sentiment, and category.

Verified, tier-0 regulatory data for your AI: connect Claude, ChatGPT or Cursor to 850+ official sources across 50+ jurisdictions.

Search and analyze academic papers on arXiv.

A flexible service for searching and analyzing academic papers on arXiv.

No reviews yet β€” be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.