BioMCP: Biomedical Model Context Protocol
# Add to your Claude Code skills
git clone https://github.com/genomoncology/biomcpOne binary. One grammar. Evidence from the biomedical sources you already trust.
BioMCP cuts through the usual biomedical data maze: one query reaches the sources that normally live behind different APIs, identifiers, and search habits. Researchers, clinicians, and agents use the same command grammar to search, focus, and pivot without rebuilding the workflow for each source. You get compact, evidence-oriented results across live public data plus local study analytics.
search article fans out across PubTator3 and
Europe PMC, deduplicates PMID/PMCID/DOI identifiers, and can add a Semantic
Scholar leg when your filters support it.study commands cover local query, cohort, survival,
compare, and co-occurrence workflows with native terminal, SVG, and PNG
charts for downloaded cBioPortal-style datasets.article citations, article references,
article recommendations, and article entities turn one known paper into a
broader evidence map.biomcp enrich for top-level g:Profiler
enrichment and biomcp batch for up to 10 focused get calls in one
command.curl -fsSL https://biomcp.org/install.sh | bash
No comments yet. Be the first to share your thoughts!
uv tool install biomcp-cli
# or: pip install biomcp-cli
This installs the biomcp binary on your PATH.
Install BioMCP from the Anthropic Directory in Claude Desktop when that path is available for your environment. For local/manual setups, use the JSON MCP config below.
Install guided investigation workflows into your agent directory:
biomcp skill install ~/.claude --force
{
"mcpServers": {
"biomcp": {
"command": "biomcp",
"args": ["serve"]
}
}
}
For shared or remote deployments:
biomcp serve-http --host 127.0.0.1 --port 8080
Remote clients connect to http://127.0.0.1:8080/mcp. Probe routes are
GET /health, GET /readyz, and GET /.
Runnable demo:
uv run --script examples/streamable-http/streamable_http_client.py
See Remote HTTP Server for the newcomer guide.
make install
"$HOME/.local/bin/biomcp" --version
First useful query in under 30 seconds:
uv tool install biomcp-cli
biomcp health --apis-only
biomcp list gene
biomcp search all --gene BRAF --disease melanoma # unified cross-entity discovery
biomcp get gene BRAF pathways hpa
search <entity> [filters] → discovery
discover <query> → concept resolution before entity selection
get <entity> <id> [sections] → focused detail
<entity> <helper> <id> → cross-entity pivots
enrich <GENE1,GENE2,...> → gene-set enrichment
batch <entity> <id1,id2,...> → parallel gets
search all [slot filters] → counts-first cross-entity orientation
| Entity | Upstream providers used by BioMCP | Example |
|--------|-----------------------------------|---------|
| gene | MyGene.info, UniProt, Reactome, QuickGO, STRING, GTEx, Human Protein Atlas, DGIdb, ClinGen | biomcp get gene BRAF pathways hpa |
| variant | MyVariant.info, ClinVar, gnomAD fields via MyVariant, CIViC, Cancer Genome Interpreter, OncoKB, cBioPortal, GWAS Catalog, AlphaGenome | biomcp get variant "BRAF V600E" clinvar |
| article | PubMed, PubTator3, Europe PMC, PMC OA, NCBI ID Converter, Semantic Scholar (optional auth; S2_API_KEY recommended) | biomcp search article -g BRAF --limit 5 |
| trial | ClinicalTrials.gov API v2, NCI CTS API | biomcp search trial -c melanoma -s recruiting |
| drug | MyChem.info, EMA local batch, WHO Prequalification local CSV, ChEMBL, OpenTargets, Drugs@FDA, OpenFDA, CIViC | biomcp get drug trastuzumab regulatory --region who |
| disease | MyDisease.info, Monarch Initiative, MONDO, OpenTargets, Reactome, CIViC | biomcp get disease "Lynch syndrome" genes |
| pathway | Reactome, KEGG, g:Profiler, Enrichr-backed enrichment sections | biomcp get pathway hsa05200 genes |
| protein | UniProt, InterPro, STRING, ComplexPortal, PDB, AlphaFold | biomcp get protein P15056 complexes |
| adverse-event | OpenFDA FAERS, MAUDE, Recalls | biomcp search adverse-event --drug pembrolizumab |
| pgx | CPIC, PharmGKB | biomcp get pgx CYP2D6 recommendations |
| gwas | GWAS Catalog | biomcp search gwas --trait "type 2 diabetes" |
| phenotype | Monarch Initiative (HPO semantic similarity) | biomcp search phenotype "HP:0001250" |
Pivot between related entities without rebuilding filters.
See the cross-entity pivot guide for when to use a helper versus a fresh search.
biomcp variant trials "BRAF V600E" --limit 5
biomcp variant articles "BRAF V600E"
biomcp drug adverse-events pembrolizumab
biomcp drug trials pembrolizumab
biomcp disease trials melanoma
biomcp disease drugs melanoma
biomcp disease articles "Lynch syndrome"
biomcp gene trials BRAF
biomcp gene drugs BRAF
biomcp gene articles BRCA1
biomcp gene pathways BRAF
biomcp pathway drugs R-HSA-5673001
biomcp pathway drugs hsa05200
biomcp pathway articles R-HSA-5673001
biomcp pathway trials R-HSA-5673001
biomcp protein structures P15056
biomcp article entities 22663011
biomcp article citations 22663011 --limit 3
biomcp article references 22663011 --limit 3
biomcp article recommendations 22663011 --limit 3
biomcp enrich BRAF,KRAS,NRAS --limit 10
Top-level biomcp enrich uses g:Profiler. Gene enrichment sections inside
other entity views still reference Enrichr where that is the backing
source.
Every get command supports selectable sections for focused output:
biomcp get gene BRAF # summary card
biomcp get gene BRAF pathways # add pathway section
biomcp get gene BRAF hpa # protein tissue expression + localization
biomcp get gene BRAF civic interactions # multiple sections
biomcp get gene BRAF all # everything
biomcp get variant "BRAF V600E" clinvar population conservation
biomcp get article 22663011 tldr
biomcp get drug pembrolizumab label targets civic approvals
biomcp get drug trastuzumab regulatory --region who
biomcp get disease "Lynch syndrome" genes phenotypes variants
biomcp get trial NCT02576665 eligibility locations outcomes
In JSON mode, get responses expose _meta.next_commands for the next likely
follow-ups and _meta.section_sources for section-level provenance. batch ... --json returns per-entity objects with the same metadata shape.
Most commands work without credentials. Optional keys improve rate limits or unlock optional enrichments:
export NCBI_API_KEY="..." # PubTator, PubMed/efetch, PMC OA, NCBI ID converter
export S2_API_KEY="..." # Optional Semantic Scholar auth; dedicated quota at 1 req/sec
export OPENFDA_API_KEY="..." # OpenFDA rate limits
export NCI_API_KEY="..." # NCI CTS trial search (--source nci)
export ONCOKB_TOKEN="..." # OncoKB variant helper
export ALPHAGENOME_API_KEY="..." # AlphaGenome variant effect prediction
search article, get article, article batch, get article ... tldr, and
the explicit Semantic Scholar helpers all work without S2_API_KEY. With the
key, BioMCP sends authenticated requests and uses a dedicated rate limit at
1 req/sec. Without it, BioMCP uses the shared unauthenticated pool at 1 req/2sec.
search article --source supports all, pubtator, europepmc, and
pubmed. The
default compatible article federation uses PubTator3, Europe PMC, and PubMed,
while the S2 leg remains automatic rather than directly selectable. References
and recommendations can be empty for paywalled papers because of publisher
elision in Semantic Scholar upstream coverage.
The directory bundle exposes only the optional settings needed for the first reviewer-facing build:
| Claude Desktop field | Runtime env var | Purpose |
|----------------------|-----------------|---------|
| OncoKB Token | ONCOKB_TOKEN | Enables biomcp variant oncokb "<gene> <variant>" therapy and level evidence |
| DisGeNET API Key | DISGENET_API_KEY | Enables scored DisGeNET sections on gene and disease lookups |
| Semantic Scholar API Key | S2_API_KEY | Improves reliability for article TLDR, citation, reference, and recommendation helpers |
The first directory build exposes only those three optional settings. Advanced CLI-only env vars remain documented in API Keys for the general BioMCP CLI path.
User prompt: Give me a low-noise overview of BRAF in melanoma.
Expected tool call: biomcp search all --gene BRAF --disease melanoma --counts-only
Expected behavior: Returns a cross-entity counts summary that orients the next command instead of dumping long detail tables.
Expected output: Counts-first summary with suggested next commands for the highest-yield entity follow-ups.
User prompt: Summarize ClinVar significance and population frequency for BRAF V600E.
Expected tool call: biomcp get variant "BRAF V600E" clinvar population
Expected behavior: Retrieves the focused variant card, ClinVar section, and population-frequency data in one read-only call.
Expected output: Variant summary, ClinVar signific