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
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。