BioMCP
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.
README
BioMCP
A high-performance MCP server that gives LLMs access to 25 biomedical tools federated across 50+ upstream APIs — genes, variants, drugs, diseases, literature, clinical trials, and structural biology in a single integration.
Adapted from the BioMCP Rust with agent-first development approach and enhancements. Kudos to the original authors.
Highlights
- 25 tools across 8 domains — search, retrieve, and cross-reference biomedical entities
- 50+ upstream sources — MyGene, MyVariant, MyChem, MyDisease, ClinVar, gnomAD, UniProt, Reactome, OpenTargets, CIViC, OncoKB, DisGeNET, GTEx, STRING, DGIdb, ClinicalTrials.gov, PubMed, EuropePMC, Semantic Scholar, PubTator, LitSense, Monarch Initiative, OpenFDA, NIH Reporter, AlphaGenome, and more
- Section-based fetching —
entityGet(id, sections)fans out to multiple sources with per-section timeouts and graceful degradation (failed sections return{ _error }instead of crashing) - Federated article search — queries 5 literature backends simultaneously with PMID/PMCID/DOI deduplication
- Zero-config startup — works out of the box; optional API keys unlock higher rate limits and premium data
- 350+ unit tests (mocked) + 90+ integration tests (live APIs via in-process MCP client, with automatic retry on 429 rate limits)
Quick Start
Install and build
git clone <repo-url> && cd biomcp-ts
make install build
Configure with Claude Desktop
Add to your Claude Desktop claude_desktop_config.json:
{
"mcpServers": {
"biomcp": {
"command": "npx",
"args": ["biomcp"]
}
}
}
Or from a local checkout:
{
"mcpServers": {
"biomcp": {
"command": "node",
"args": ["/path/to/biomcp-ts/dist/bundle.js"]
}
}
}
Direct stdio
npm start
Any MCP-compatible client
BioMCP speaks standard MCP over stdio. Point any MCP client at the biomcp binary or node dist/bundle.js.
Available Tools
Gene (7)
| Tool | Description |
|---|---|
gene_search |
Search genes by symbol, name, or keyword with type/chromosome filters |
gene_get |
Get detailed gene info by HGNC symbol with optional sections (core, pathways, protein, ontology, GO, interactions, expression, protein_atlas, constraint, druggability, dosage_sensitivity, clinical evidence, disease associations, diseases, funding). Set smart=true to auto-resolve gene aliases (e.g., "HER2" → "ERBB2") |
gene_diseases |
Get diseases associated with a gene (DisGeNET / OpenTargets) |
gene_drugs |
Find drugs targeting a gene (OpenTargets) |
gene_trials |
Find clinical trials for a gene |
gene_articles |
Find articles about a gene |
gene_enrich |
Pathway enrichment analysis for a gene list (Reactome) |
Variant (4)
| Tool | Description |
|---|---|
variant_search |
Search variants by rsid, HGVS, gene, ClinVar significance, frequency, CADD |
variant_get |
Get detailed variant info with optional sections (frequency, predictions, clinical, alphagenome_scores) |
variant_oncokb |
Get OncoKB cancer variant annotations (requires ONCOKB_TOKEN) |
variant_trials |
Find clinical trials for a variant |
Drug (3)
| Tool | Description |
|---|---|
drug_search |
Search drugs by name, mechanism, or keyword |
drug_get |
Get detailed drug info with optional sections (us_regulatory, eu_regulatory, who_regulatory, safety, targets, indications) |
drug_trials |
Find clinical trials for a drug |
Disease (4)
| Tool | Description |
|---|---|
disease_search |
Search diseases by name, phenotype, or keyword |
disease_get |
Get detailed disease info by ID (DOID, MONDO, OMIM, etc.) with optional sections (gene_associations, phenotypes, pathways, survival) |
disease_drugs |
Get drugs for a disease (OpenTargets) |
disease_trials |
Get clinical trials for a disease (ClinicalTrials.gov) |
Article (2)
| Tool | Description |
|---|---|
article_search |
Federated literature search across PubMed, EuropePMC, Semantic Scholar, PubTator, and LitSense with optional date range filtering. Accepts query, source, limit, offset, and dateRange parameters. |
article_get |
Get detailed article info by identifier (PMID, PMCID, or DOI) with optional sections: oa (open access / license info), annotations, graph (citation graph), citation (fast-mode or full citation data with citation_mode and citation_direction options) |
Trial (2)
| Tool | Description |
|---|---|
trial_search |
Search clinical trials by condition, intervention, status, or phase. Uses cursor-based pagination via page_token parameter |
trial_get |
Get detailed trial info by NCT ID with optional sections (eligibility, locations, outcomes) |
Utility (2)
| Tool | Description |
|---|---|
discover |
Free-text concept resolution across all entity types |
batch_get |
Retrieve multiple entities in parallel |
Structural Biology (1)
| Tool | Description |
|---|---|
pdb |
Search PDB structures, get entry metadata with optional sections (polymer entities, ligands, assembly, experiment, citation), and download structure files (mmCIF/PDB) |
Citation Module
Modes:
- Fast (default): Europe PMC, Semantic Scholar, Crossref (~4s)
- Returns: Citations with title, authors, journal, year when available
- Note: Crossref requires DOI; Europe PMC auto-resolves DOI/PMCID to PMID
- Full (
citation_mode="full"): All 5 providers (~15-30s)- Adds: PubMed (PMID only) and OpenCitations (DOI only)
- Use for: Comprehensive citation analysis
Provider Data Coverage:
| Provider | Forward | Backward | Count | Required ID |
|---|---|---|---|---|
| Europe PMC | ✓ | ✓ | ✓ | PMID/DOI/PMCID |
| Semantic Scholar | ✓ | ✓ | ✓ | PMID/DOI/PMCID |
| Crossref | ✓ | ✓ | ✓ | DOI only |
| PubMed | ✓ | ✓ | ✓ | PMID only |
| OpenCitations | ✓ | ✓ | ✓ | DOI only |
Automatic Fallback: Fast mode automatically queries PubMed when other providers return counts but no items (requires PMID).
Development
make # Show available targets
make install # Install dependencies
make build # Compile and bundle into dist/bundle.js
make typecheck # Type-check without emitting
make test # Run unit tests (fast, mocked)
make test-integration # Run integration tests (live APIs, ~60s)
make test-all # Run all tests
make clean # Remove build artifacts
Local Testing with npx
After building, you can test the MCP server locally via npx:
make build # Creates dist/bundle.js
npx . # Runs the bundled MCP server
This is the recommended workflow for local development and testing.
Environment Variables
All keys are optional. BioMCP works without any keys — they unlock higher rate limits and additional data sources.
| Variable | Source | Benefit |
|---|---|---|
NCBI_API_KEY |
NCBI | Higher PubMed / NCBI rate limits |
S2_API_KEY |
Semantic Scholar API key (prevents 429 rate limits) | |
OPENFDA_API_KEY |
OpenFDA | OpenFDA API access |
NCI_API_KEY |
NCI CTS | NCI Clinical Trials API |
ONCOKB_TOKEN |
OncoKB | OncoKB cancer variant annotations |
DISGENET_API_KEY |
DisGeNET | Disease-gene associations |
UMLS_API_KEY |
UMLS | UMLS terminology services |
ALPHAGENOME_API_KEY |
AlphaGenome | AlphaGenome variant scores |
License
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.