Skip to main content
Glama
SuyashEkhande

PubMed Advanced MCP Server

๐Ÿงฌ PubMed Advanced MCP Server

Python 3.10+ FastMCP License: MIT NCBI E-utilities

A comprehensive Model Context Protocol (MCP) server that exposes PubMed and PubMed Central research literature APIs as intelligent tools for LLM applications.

Built with โค๏ธ by Suyash Ekhande

Features โ€ข Quick Start โ€ข Tools โ€ข Examples โ€ข Architecture

https://github.com/user-attachments/assets/892978f7-88d8-4b26-992e-41ba87c1b1cf


๐ŸŒŸ Features

  • 16 Intelligent Tools organized into 5 categories for comprehensive biomedical literature access

  • 34M+ PubMed Articles - Search across the world's largest biomedical abstract database

  • 7M+ PMC Full-Text Articles - Access complete article content from PubMed Central

  • Smart Rate Limiting - Automatic compliance with NCBI rate limits (3-10 req/sec)

  • Cross-Database Linking - Connect articles to genes, proteins, clinical variants, and more

  • ID Conversion - Seamlessly convert between PMID, PMCID, DOI, and Manuscript IDs

  • BioC Format Support - Pre-parsed text for NLP and text mining applications

  • Pipeline Operations - Build complex multi-step queries using Entrez History Server

  • Batch Processing - Efficiently handle 10K+ articles with chunked operations

Related MCP server: mcp-pubmed

๐Ÿ“ฆ Installation

Prerequisites

  • Python 3.10 or higher

  • pip or uv package manager

Install from source

# Clone the repository
git clone https://github.com/yourusername/pubmed-advanced-mcp.git
cd pubmed-advanced-mcp

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Or install as package
pip install -e .
# Copy example environment file
cp .env.example .env

# Edit .env and add your NCBI API key
# Get one at: https://www.ncbi.nlm.nih.gov/account/

Note: Without an API key, you're limited to 3 requests/second. With an API key, you get 10 requests/second.

๐Ÿš€ Quick Start

Run the MCP Server

# Using Python directly (Streamable HTTP on port 8000)
python -m src.server

# With custom host/port
MCP_HOST=127.0.0.1 MCP_PORT=9000 python -m src.server

Transport: This server uses Streamable HTTP as the only transport protocol. It runs on http://0.0.0.0:8000/mcp by default.

Run with Docker

# Build the image
docker build -t pubmed-mcp .

# Run the container
docker run -d -p 8000:8000 --name pubmed-mcp pubmed-mcp

# Run with NCBI API key for higher rate limits
docker run -d -p 8000:8000 -e NCBI_API_KEY=your-api-key pubmed-mcp

๐Ÿ›  Available Tools

Category 1: Search & Discovery (5 tools)

Tool

Description

Example Use Case

pubmed_search

Search 34M+ PubMed abstracts

Find reviews on CAR-T therapy

pmc_search

Full-text search in PMC

Search methods sections for protocols

mesh_term_search

MeSH controlled vocabulary search

Find all cancer therapy articles

advanced_search

Multi-field Boolean queries

Complex author + topic + date searches

global_search

Cross-database hit counts

Discover data across NCBI

Category 2: Document Retrieval (4 tools)

Tool

Description

Example Use Case

fetch_article_summary

Get article metadata

Retrieve author and abstract info

fetch_full_article

Get complete article content

Download full PMC articles

fetch_bioc_article

BioC format for NLP

Text mining and NER tasks

batch_fetch_articles

Bulk article retrieval

Download 1000+ articles efficiently

Category 3: Cross-Reference & Linking (3 tools)

Tool

Description

Example Use Case

find_related_articles

Citation/similarity links

Build citation networks

link_to_databases

Cross-link to Gene, Protein, etc.

Find genes mentioned in articles

find_citations_by_authors

Author publication history

Track researcher output

Category 4: ID Conversion (2 tools)

Tool

Description

Example Use Case

convert_article_ids

Batch ID conversion

Convert DOIs to PMIDs

resolve_article_identifier

Single ID resolution

Look up article by any ID type

Category 5: Advanced Operations (2 tools)

Tool

Description

Example Use Case

build_search_pipeline

Multi-step query pipelines

Complex research workflows

batch_process_articles

Large-scale processing

Process 10K+ articles

๐Ÿ“– Usage Examples

User: Find recent reviews about CRISPR gene editing in cancer

AI uses: pubmed_search(
    query="CRISPR gene editing cancer",
    filters={"publication_types": ["Review"], "publication_date_start": "2023"},
    max_results=10
)
User: Find all articles about breast cancer treatment using MeSH terms

AI uses: mesh_term_search(
    mesh_term="Breast Neoplasms",
    qualifiers=["therapy", "drug therapy"],
    explode=True,
    max_results=50
)
User: What articles are similar to PMID 37000000?

AI uses: find_related_articles(
    pmid="37000000",
    relationship_type="similar",
    max_results=20
)

Convert Article IDs

User: Convert these DOIs to PMIDs: 10.1038/nature12373, 10.1126/science.1225829

AI uses: convert_article_ids(
    ids=["10.1038/nature12373", "10.1126/science.1225829"],
    from_type="auto"
)

Build a Research Pipeline

User: Find diabetes review articles that are linked to HLA genes

AI uses: build_search_pipeline(
    steps=[
        {"operation": "search", "database": "pubmed", 
         "parameters": {"query": "diabetes[mh] AND review[pt]"}},
        {"operation": "link", "database": "gene",
         "parameters": {"from_db": "pubmed"}}
    ]
)

Batch Processing

User: Get metadata for these 500 PMIDs for my literature review

AI uses: batch_fetch_articles(
    pmids=["12345678", "23456789", ...],  # 500 IDs
    include_metadata=True,
    include_abstract=True,
    batch_size=100
)

๐Ÿ— Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                         LLM / AI Agent Client                           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                     โ”‚
                        MCP Protocol (Streamable HTTP)
                                     โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    FastMCP Server (Python)                              โ”‚
โ”‚                                                                          โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚                    16 MCP Tools                                    โ”‚ โ”‚
โ”‚  โ”‚  Search โ”‚ Retrieval โ”‚ Linking โ”‚ ID Conversion โ”‚ Advanced Ops      โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”‚                                   โ”‚                                      โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚              API Clients (with Rate Limiting)                      โ”‚ โ”‚
โ”‚  โ”‚  E-Utilities โ”‚ BioC API โ”‚ ID Converter โ”‚ Session Manager           โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                     โ”‚
                        HTTP/REST API Calls
                                     โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ–ผ                            โ–ผ                            โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ NCBI E-Utilitiesโ”‚      โ”‚ BioC APIs        โ”‚      โ”‚ ID Converter     โ”‚
โ”‚ (34M+ articles) โ”‚      โ”‚ (29M+ articles)  โ”‚      โ”‚ (200 IDs/batch)  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“ Project Structure

pubmed-advanced-mcp/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ server.py                 # FastMCP server with all 16 tools
โ”‚   โ”œโ”€โ”€ config.py                 # Configuration management
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ clients/                  # API client modules
โ”‚   โ”‚   โ”œโ”€โ”€ base.py              # Base HTTP client with rate limiting
โ”‚   โ”‚   โ”œโ”€โ”€ eutilities.py        # NCBI E-Utilities client
โ”‚   โ”‚   โ”œโ”€โ”€ bioc_api.py          # BioC text mining API
โ”‚   โ”‚   โ”œโ”€โ”€ id_converter.py      # PMC ID Converter
โ”‚   โ”‚   โ””โ”€โ”€ session_manager.py   # Entrez History management
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ tools/                    # MCP Tool implementations
โ”‚   โ”‚   โ”œโ”€โ”€ search_tools.py      # 5 search tools
โ”‚   โ”‚   โ”œโ”€โ”€ retrieval_tools.py   # 4 retrieval tools
โ”‚   โ”‚   โ”œโ”€โ”€ linking_tools.py     # 3 linking tools
โ”‚   โ”‚   โ”œโ”€โ”€ id_conversion_tools.py # 2 ID tools
โ”‚   โ”‚   โ””โ”€โ”€ advanced_tools.py    # 2 advanced tools
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ schemas/                  # Pydantic models
โ”‚   โ”‚   โ””โ”€โ”€ tool_schemas.py      # Input/output schemas
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ utils/                    # Utilities
โ”‚       โ”œโ”€โ”€ rate_limiter.py      # Token bucket rate limiter
โ”‚       โ”œโ”€โ”€ query_builder.py     # E-utilities query builder
โ”‚       โ””โ”€โ”€ error_handler.py     # Custom exceptions
โ”‚
โ”œโ”€โ”€ docs/
โ”‚   โ”œโ”€โ”€ implementation/          # Implementation documentation
โ”‚   โ””โ”€โ”€ *.md                     # Original requirements
โ”‚
โ”œโ”€โ”€ requirements.txt
โ”œโ”€โ”€ pyproject.toml
โ”œโ”€โ”€ .env.example
โ””โ”€โ”€ README.md

โš™๏ธ Configuration

Environment Variables

Variable

Description

Default

NCBI_API_KEY

NCBI API key for higher rate limits

None (3 req/sec)

TOOL_NAME

Tool identifier for NCBI

pubmed-mcp-server

TOOL_EMAIL

Contact email (required by NCBI)

pubmed-mcp@example.com

Rate Limits

Scenario

Rate Limit

Without API Key

3 requests/second

With API Key

10 requests/second

Violation

IP blocked for 24+ hours

๐Ÿ”ฌ Sample Prompts for LLMs

Here are example prompts you can use with Claude or other LLM clients:

Literature Review

"Find all systematic reviews about COVID-19 vaccine efficacy published in 2023-2024. 
Include the abstracts and MeSH terms."

Gene-Disease Research

"Search for articles about TP53 mutations in breast cancer. Then link these articles 
to related gene records in NCBI Gene database."

Author Analysis

"Find all publications by Jennifer Doudna in the last 5 years and summarize 
her research focus areas."

ID Conversion

"I have these DOIs from my reference manager. Convert them to PMIDs so I can 
search for related articles: 10.1038/nature12373, 10.1126/science.1225829"

Text Mining Pipeline

"Get the full text of PMC7611378 in BioC format. I need it for named entity 
recognition to extract drug names and disease mentions."

๐Ÿงช Testing

Run Tests

# Install dev dependencies
pip install -e ".[dev]"

# Run all tests
pytest

# Run with verbose output
pytest -v

# Run specific test file
pytest tests/test_search_tools.py

๐Ÿ“š API Documentation

E-Utilities Query Syntax

The server supports full E-utilities query syntax:

# Basic search
cancer

# Field-specific search
cancer[ti]                    # Title
CRISPR[ab]                    # Abstract
"Zhang F"[au]                 # Author
Nature[ta]                    # Journal

# Boolean operators (MUST be uppercase)
cancer AND therapy
cancer OR tumor
cancer NOT lung

# Date ranges
cancer AND 2023[dp]           # Year
cancer AND 2020:2024[dp]      # Range

# MeSH terms
"Breast Neoplasms"[mh]        # MeSH heading
"Neoplasms/therapy"[mh]       # With qualifier

# Publication types
review[pt]
clinical trial[pt]

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/AmazingFeature)

  3. Commit your changes (git commit -m 'Add some AmazingFeature')

  4. Push to the branch (git push origin feature/AmazingFeature)

  5. Open a Pull Request

Acknowledgments

  • NCBI for providing the E-utilities and related APIs

  • FastMCP for the excellent MCP framework

  • The biomedical research community for their contributions to PubMed


Made with โค๏ธ for the biomedical research community

Built by Suyash Ekhande

Available Tools

16 tools
batch_fetch_articlesA

Efficiently fetch multiple articles with rate limiting.

Handles large batches by chunking requests and respecting NCBI rate limits. Returns both successful and failed retrievals.

ParametersJSON Schema
NameRequiredDescriptionDefault
pmidsYesList of PubMed IDs (up to 10,000)
batch_sizeNoIDs per API call (max 500)
include_abstractNoInclude abstracts
include_metadataNoInclude article metadata

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden; it reveals chunking, rate-limit handling, and the return of both successful and failed retrievals. This gives useful behavioral insight beyond the schema, though it omits details like error handling or ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the primary purpose, and contains no filler or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and full parameter documentation, the description sufficiently frames the tool's role. It could benefit from explicit alternatives or exclusions, but overall it's complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters, so baseline is 3. The description adds context that batch_size relates to chunking and rate limits, but doesn't provide any additional parameter-level detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches multiple articles, using a specific verb and resource. It implies batch behavior but doesn't explicitly differentiate from siblings like batch_process_articles or fetch_article_summary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description notes it handles large batches and respects NCBI rate limits, indicating when to use it (large-scale retrieval with rate-limit management). It doesn't name alternatives or exclusions but provides clear context for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_process_articlesB

Process large sets of articles with batch operations.

Handles datasets of 10K+ articles efficiently with chunked processing and rate limiting.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationNo - "fetch_summaries": Get article metadata - "fetch_full": Get full records - "export_bioc": Export in BioC format - "text_statistics": Compute text statisticsfetch_summaries
batch_configNo{"batch_size": 100, "parallel_workers": 3}
input_sourceYesData source specification - {"from_search": {"query": "...", "database": "pubmed"}} - {"from_ids": ["pmid1", "pmid2", ...]} - {"from_pipeline": {"query_key": "1", "web_env": "..."}}
output_formatNo"json", "csv", or "ndjson"json

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It discloses chunked processing and rate limiting, which are useful behavioral traits, but it does not mention whether operations are read-only, require authentication, or how errors are handled. This is partial transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences that are front-loaded with the purpose and add one key detail about handling scale and rate limiting. There is no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich input schema (all parameters described, nested objects explained) and the presence of an output schema, the description covers the high-level usage and scale. It could mention the specific operation types, but those are already in the schema, so the description is adequate for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents all four parameters with examples and allowed values. The description adds no additional meaning about parameters, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it processes large sets of articles with batch operations, but 'process' is a generic verb that does not specify the actual operations (fetch summaries, export BioC, etc.). It identifies the resource (articles) and scale, but lacks a specific action, making it vague and not clearly distinguishing from siblings like batch_fetch_articles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for large datasets ('10K+ articles') and mentions efficiency, which provides some context. However, it does not explicitly state when to use this tool over alternatives like batch_fetch_articles, nor does it give exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

build_search_pipelineA

Build and execute a multi-step search pipeline.

Uses Entrez History Server to chain operations efficiently. Ideal for complex queries like: "Find diabetes reviews, then limit to articles linked to HLA genes"

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsYesList of pipeline steps, each with: - operation: "search", "link", or "combine" - database: Target database ("pubmed", "pmc", "gene", etc.) - parameters: Operation-specific params - search: {"query": "search terms"} - link: {"from_db": "pubmed", "link_name": "pubmed_gene"} - combine: {"combine_with": 1, "operator": "AND"}
output_stepNoStep number to return results from

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing side effects and behavior. It mentions the Entrez History Server, hinting at server-side state, but does not clarify whether the operation is read-only, whether it has lasting side effects, how errors or rate limits manifest, or what happens after execution. This is insufficient for a compound action that 'builds and executes' a pipeline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact at two sentences plus an example. The first sentence states the core purpose, the second adds the technical mechanism (Entrez History Server), and the example clarifies the intended query pattern. Every element earns its place with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is complex with a nested parameter structure, but the schema provides rich detail and the description gives one use case. However, the absence of any behavioral caveats (e.g., limits on number of steps, required authentication, or whether results are returned as IDs or summaries) makes it only partially complete. An output schema exists, so return format may be covered there, but broader execution expectations are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% parameter coverage, including detailed descriptions for the 'steps' array and 'output_step'. The description adds an illustrative example that demonstrates how to combine search and link operations in the steps parameter, which reinforces the schema's abstract structure with a concrete scenario.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Build and execute a multi-step search pipeline.' This specifies a concrete action (build and execute) on a specific resource (multi-step search pipeline), and the example ('Find diabetes reviews, then limit to articles linked to HLA genes') distinguishes it from single-step sibling tools like pubmed_search or link_to_databases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context on when to use this tool: it is 'Ideal for complex queries' and mentions the efficiency gain from using the Entrez History Server. However, it does not explicitly state when not to use it or mention alternative simpler tools (e.g., pubmed_search for one-step searches), so it lacks exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_article_idsA

Convert article IDs between different formats.

Supports batch conversion (up to 200 IDs) between:

  • PMID (PubMed ID): e.g., "37000000"

  • PMCID (PubMed Central ID): e.g., "PMC7611378"

  • DOI: e.g., "10.1093/nar/gks1195"

  • Manuscript ID: e.g., "NIHMS1677310"

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesList of IDs to convert (max 200)
from_typeNo"auto" (detect), "pmid", "pmcid", "doi", "mid"auto
include_versionsNoInclude version history

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. It adds useful context by mentioning the batch limit and the four supported ID formats. However, it says nothing about error handling, authentication, or return behavior. Given the tool is a simple read-only conversion, this is acceptable but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with a bullet list, immediately stating the tool's purpose and then elaborating on formats. Every line contributes to understanding, with no fluff or redundant repetition of schema details. It is excellently structured and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity of this tool, the output schema exists, and the parameter schema is fully documented, the description covers the essential information. It lacks a note about how this tool relates to 'resolve_article_identifier', but that gap is more of a usage guideline issue. Overall, it is complete enough for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage, providing descriptions for all three parameters. The description adds value by giving concrete examples of each ID format (e.g., '37000000', 'PMC7611378'), which helps the agent format inputs correctly. This goes beyond the schema's terse parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool converts article IDs between formats, using the specific verb 'convert' and identifying the resource (article IDs). It distinguishes itself from siblings by focusing on format conversion, but it doesn't explicitly differentiate from the similarly named 'resolve_article_identifier'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context about batch conversion (up to 200 IDs) and the supported formats, which implies when to use it. However, it does not explicitly state when not to use it or mention alternatives like 'resolve_article_identifier' for single-ID resolution. This is an implied usage scenario rather than explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetch_article_summaryA

Fetch detailed article summary and metadata.

Returns comprehensive information including title, authors, abstract, MeSH terms, journal details, DOI, and more.

ParametersJSON Schema
NameRequiredDescriptionDefault
pmidYesPubMed ID (e.g., "37000000")
databaseNo"pubmed" or "pmc"pubmed
include_full_metadataNoInclude all available metadata

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden. It honestly describes the fetch/read nature and what data it returns, which implies minimal side effects. However, it does not disclose any operational details such as error behavior, potential rate limits, permissions, or behavior on invalid input. The absence of risky behavior (mutation) earns it a mid-range score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of exactly two sentences with no redundant words. The primary action is front-loaded, and the second sentence efficiently lists the key output fields. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The presence of an output schema means return values are already structurally covered, so the description need not explain them in detail. The description gives a solid overview of what the tool returns and implies its scope. It could be slightly more explicit about how this tool fits with siblings like fetch_full_article, but overall it is complete for the tool's simple fetch functionality.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters (pmid, database, include_full_metadata) have complete schema descriptions, so the baseline is 3. The tool description does not add parameter-specific semantics beyond the schema, nor does it highlight any special parameter interactions or value formatting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as fetching 'detailed article summary and metadata' and enumerates the specific fields returned (title, authors, abstract, MeSH terms, journal details, DOI). This is a specific verb+resource and distinguishes it from search tools, but it does not explicitly compare against fetch_full_article, so sibling differentiation is only implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when an article summary or metadata is needed, but it gives no explicit guidance about when not to use it or which alternative to choose (e.g., fetch_full_article for full text). There are no prerequisites, exclusions, or conditional scenarios mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetch_bioc_articleA

Fetch article in BioC format for text mining.

BioC provides pre-parsed text ideal for NLP tasks:

  • Passage-level segmentation (title, abstract, sections)

  • Sentence-level boundaries

  • Ready for named entity recognition, relation extraction

ParametersJSON Schema
NameRequiredDescriptionDefault
pmidNoPubMed ID (for abstract in BioC)
pmcidNoPMC ID (for full-text in BioC)
formatNo"xml" or "json"json

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral disclosure burden. It does so by explaining what BioC output contains (passage segmentation, sentence boundaries) and why it is suitable for NER/relation extraction. It does not discuss error cases or side effects, but for a simple read-only fetch tool, the description is reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, with a clear imperative first sentence followed by a compact bullet list. Every line adds useful context about BioC features, with no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has only three optional parameters, an output schema, and a clear purpose. The description complements the schema well by explaining the BioC format's value. However, it does not explicitly note that at least one of pmid or pmcid must be provided, which is a minor gap for an otherwise complete description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage with clear descriptions for pmid ('PubMed ID for abstract in BioC'), pmcid, and format. The description adds no additional parameter-level guidance, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Fetch article in BioC format for text mining,' which combines a specific verb, resource, and purpose. This clearly distinguishes it from sibling tools like fetch_article_summary or fetch_full_article by emphasizing the BioC format and NLP use case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states 'BioC provides pre-parsed text ideal for NLP tasks' and lists segmentation/boundaries, giving clear context for when to use this tool. It does not explicitly name alternatives or state when not to use it, but the NLP framing effectively implies the appropriate use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetch_full_articleA

Fetch complete article content.

For PubMed: Returns abstract and metadata (full text not available). For PMC: Returns full text if article is in PMC Open Access.

ParametersJSON Schema
NameRequiredDescriptionDefault
pmidNoPubMed ID (for abstracts)
pmcidNoPMC ID (for full-text, e.g., "PMC7611378")
formatNo"abstract", "medline", or "xml"xml

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It transparently discloses that PubMed does not return full text and that PMC full text is contingent on Open Access status. This covers key behavioral constraints, though it does not detail format-specific behavior or error cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the main action, followed by necessary caveats. Two short sentences, no redundancy, every sentence provides essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and schema coverage is 100%, the description adequately covers the key decision points: which ID to use and what content to expect. It could mention relationship to siblings or error handling, but it is sufficiently complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description adds semantic value by pairing PMID/PMCID with expected content types and the Open Access caveat. The format parameter is not elaborated beyond schema, but the description elevates the parameters' practical meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches article content, with specific differentiation between PubMed (abstract and metadata only) and PMC (full text if Open Access). This distinguishes it from siblings like fetch_article_summary and fetch_bioc_article.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context by mapping PMID to PubMed (abstract) and PMCID to PMC (full text if OA). It does not explicitly name alternative tools or exclusion criteria, but the context is sufficient for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_citations_by_authorsB

Find all publications by a specific author.

ParametersJSON Schema
NameRequiredDescriptionDefault
author_nameYesAuthor name ("LastName FirstInitial" format works best, e.g., "Smith J" or "Zhang Feng")
max_resultsNoMaximum publications to return
date_range_endNoEnd year (YYYY)
date_range_startNoStart year (YYYY)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must explain behavior, but it only says 'find all publications.' This is misleading because the max_results parameter limits output, and the description omits details about response format, limits, or any side effects. It does not contradict annotations (there are none), but it provides very thin behavioral transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no extraneous phrases. Every word contributes to conveying the core function, making it highly concise and well-structured for the purpose it serves.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 parameters, sibling search tools, no annotations), the description is too minimal. While an output schema exists to explain return values, the description fails to provide guidance on usage context, result limits, or how it differs from other search tools, leaving an agent under-equipped for correct selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes all four parameters with 100% coverage, including the meaning of author_name, max_results, and the date range parameters. The description adds no parameter-level semantics beyond what the schema provides, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool finds publications by an author, with a specific verb ('Find') and resource ('publications', though the tool name says 'citations'). It does not explicitly differentiate from sibling tools like pubmed_search or advanced_search, but the author-specific scope makes its purpose distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when you need publications by a specific author, but it provides no explicit guidance on when to use this tool versus the many search-oriented siblings (pubmed_search, pmc_search, etc.). There are no exclusions or direct comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_article_identifierA

Resolve a single identifier to all available ID formats.

Automatically detects the ID type and returns all available identifiers for the article.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesAny article ID (PMID, PMCID, DOI, or MID)
auto_detect_typeNoAuto-detect the ID type

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully explain behavior. It transparently states that the tool auto-detects the ID type and returns all identifiers, but it does not disclose what happens on invalid input, whether auto_detect_type=false changes behavior, or any error handling details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, front-loads the core purpose, and contains no filler. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple identifier resolution tool with an output schema present, the description adequately covers the main functionality. However, it lacks any mention of error handling or limitations, and the presence of the similar 'convert_article_ids' sibling suggests a bit more context would help.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents both parameters with descriptions and 100% coverage. The description adds no significant meaning beyond the schema, though it does reinforce the auto-detection behavior tied to auto_detect_type. This matches the baseline for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool resolves a single identifier to all available ID formats, using a specific verb and resource. However, it does not explicitly distinguish itself from the similar sibling tool 'convert_article_ids', so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you have a single identifier and need all available ID formats, but it provides no context on when to use this tool instead of alternatives like batch_fetch_articles or convert_article_ids, and no exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 16 tool updatesv1.0.0
    • First observedadvanced_search
    • First observedbatch_fetch_articles
    • First observedbatch_process_articles
    • First observedbuild_search_pipeline
    • First observedconvert_article_ids
    • First observedfetch_article_summary
    • First observedfetch_bioc_article
    • First observedfetch_full_article
    • First observedfind_citations_by_authors
    • First observedfind_related_articles
    • First observedglobal_search
    • First observedlink_to_databases
    • First observedmesh_term_search
    • First observedpmc_search
    • First observedpubmed_search
    • First observedresolve_article_identifier

TDQS

B3.3/5.0

Scored across 16 tools

Disambiguation2/5

Multiple tools have overlapping purposes: resolve_article_identifier and convert_article_ids both handle ID conversion; fetch_article_summary and fetch_full_article return similar data for PubMed; batch_fetch_articles and batch_process_articles are vaguely differentiated. Descriptions help but boundaries remain unclear, increasing the risk of misselection.

Naming Consistency2/5

Naming patterns are inconsistent. Some tools use verb-first names (fetch_, find_, convert_), while search tools use noun-based names (pubmed_search, advanced_search). The mix of conventions makes the tool set feel unpredictable.

Tool Count3/5

16 tools is on the heavier side for a PubMed-focused server. Several tools appear redundant (e.g., two ID converters, multiple search variants), making the count feel inflated. However, it is not extreme and still within a workable range.

Completeness4/5

The tool set covers the core PubMed/NCBI workflows: searching across databases, fetching summaries and full text, ID conversion, related articles, database links, and batch processing. Minor gaps exist (e.g., no direct author search, but find_citations_by_authors addresses this), but overall the domain is well-covered.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A specialized MCP server that provides a structured interface to the Europe PMC database for biological and clinical evidence retrieval. It enables LLMs to gather, rank, and synthesize published research focusing on therapeutic targets and disease associations.
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that provides direct access to PubMed and PubMed Central via the NCBI E-utilities API. It enables AI models to search biomedical literature, retrieve detailed article metadata, and download open-access full texts.
    5
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    A PubMed MCP server that enables LLMs to search, retrieve details, and download full-text articles from PubMed, with support for batch queries, cross-referencing, and EndNote export.
    13
    61 npm
    6
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    A high-performance MCP server that gives LLMs access to 25 biomedical tools federated across 50+ upstream APIs for genes, variants, drugs, diseases, literature, clinical trials, and structural biology.
    41
    775 npm
    12
    Apache 2.0