The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Biomcp listing page.
One binary. One grammar. Evidence from the biomedical sources you already trust.
BioMCP is one CLI binary over a single command grammar that reaches ~30 trusted biomedical sources (PubMed, ClinVar, ClinicalTrials.gov, OncoKB, Reactome, and more). It is also an MCP (Model Context Protocol) server, so the same tools are available to AI agents such as Claude Code, Codex, and Claude Desktop.
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.biomcp skill list shows shipped worked examples
so you can open the matching biomcp skill <slug> workflow.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.First useful query in under 30 seconds:
A project using BioMCP won St. Jude's KIDS BioHackathon in 2025. The talk that followed is a one-hour introduction to BioMCP, recorded October 24, 2025.
Watch on YouTube · Read the write-up · Full transcript
PyPI package warning: install
biomcp-cli, notbiomcp. ThebiomcpPyPI package is unrelated to this project.
MCP Registry ownership marker: mcp-name: io.github.genomoncology/biomcp.
This installs the biomcp binary in ~/.local/bin. If that directory is not
already on PATH, the installer prints one command to add it; it never edits
your shell startup files.
The separate genomoncology/homebrew-biomcp tap repository must exist before these commands can work.
Use the GHCR image for quick CLI checks or stdio MCP clients without a local install.
Install the biomcp binary first, then add the hosted plugin marketplace and
install the BioMCP plugin in Claude Code:
The plugin wires Claude Code to the local stdio MCP server with biomcp serve.
For guided BioMCP workflows, also install the skill assets below.
Install the biomcp binary first, then register the same stdio MCP server with
Codex:
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:
For shared or remote deployments:
Remote clients connect to http://127.0.0.1:8080/mcp. Probe routes are
GET /health, GET /readyz, and GET /.
Runnable demo:
See Remote HTTP Server for the newcomer guide.
For repo-local verification, run the standard gates directly: make lint,
make test, and make spec. make test includes both Rust nextest and the
Python/docs contract lane, while make release-gate adds the named full-feature
proof and runs specs against the all-feature release binary.
There is no supported make check command. Use make verify only for opt-in
live public-upstream confidence; make release-live-smoke remains a
compatibility alias.
The tables below distinguish detail-card entities from search-only surfaces so
agents do not synthesize unsupported get commands.
| Entity | Upstream providers used by BioMCP | Example |
|---|---|---|
| gene | MyGene.info, UniProt, Reactome, QuickGO, STRING, GTEx, Human Protein Atlas, DGIdb, ClinGen, NIH Reporter, DisGeNET, GTR-backed diagnostics pivot | biomcp get gene BRAF pathways hpa |
| variant | MyVariant.info, ClinVar, direct gnomAD v4 population data, 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 |
| diagnostic | NCBI Genetic Testing Registry local bulk bundle + WHO IVD local CSV + optional OpenFDA device overlay | biomcp get diagnostic GTR000006692.3 regulatory |
| drug | MyChem.info, DDInter local bundle, EMA local batch, WHO Prequalification local exports, ChEMBL, OpenTargets, Drugs@FDA, OpenFDA labels/shortages/approvals/FAERS/MAUDE/recalls, CIViC | biomcp drug interactions warfarin |
| disease | MyDisease.info, Monarch Initiative, MONDO, OpenTargets, Reactome, CIViC, SEER Explorer, NIH Reporter, DisGeNET, GTR/WHO IVD diagnostics pivot | biomcp get disease "Lynch syndrome" genes |
| pathway | Reactome, KEGG, WikiPathways, 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 plus CDC WONDER VAERS aggregate vaccine search | biomcp search adverse-event --drug pembrolizumab |
| pgx | CPIC, PharmGKB | biomcp get pgx CYP2D6 recommendations |
| Entity | Upstream providers used by BioMCP | Example |
|---|---|---|
| gwas | GWAS Catalog | biomcp search gwas --trait "type 2 diabetes" |
| phenotype | Monarch Initiative (HPO semantic similarity plus direct-support checks) | 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.
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:
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:
search article, get article, batch article, 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, pubmed,
semanticscholar, and litsense2. The default compatible article federation
uses PubTator3, Europe PMC, PubMed, and automatic Semantic Scholar; use
--source semanticscholar or --source litsense2 explicitly when you want one
of those sources alone. Explicit source selection also disables cross-provider
row enrichment. 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 significance details, and gnomAD population frequencies.
User prompt: Show OncoKB therapy evidence for BRAF V600E.
Expected tool call: biomcp variant oncokb "BRAF V600E"
Expected behavior: Uses ONCOKB_TOKEN when configured and otherwise
returns helpful guidance about the missing credential.
Expected output: Therapy and level evidence when ONCOKB_TOKEN is set, or
a clear setup hint when it is not.
User prompt: Show scored DisGeNET associations for TP53.
Expected tool call: biomcp get gene TP53 disgenet
Expected behavior: Uses DISGENET_API_KEY to retrieve the scored
gene-disease association section.
Expected output: Ranked disease-association table with evidence counts and
scores when DISGENET_API_KEY is configured.
BioMCP does not add telemetry, analytics, or remote log upload. Review the full privacy statement at https://biomcp.org/policies/.
BioMCP rate limiting is process-local. For many concurrent workers, run one shared
Streamable HTTP biomcp serve-http endpoint so all workers share a single
limiter budget:
Loopback servers accept only local Host values by default. A non-loopback
bind requires --allowed-hosts. The explicit --unsafe-allow-any-host escape
hatch disables only this Host check; it does not add authentication, TLS, or
encryption. Put remote deployments behind a trusted authenticated TLS proxy or
inside a private network.
Remote clients should connect to http://<host>:8080/mcp. Lightweight process
probes are available at GET /health, GET /readyz, and GET /.
BioMCP ships an embedded agent guide and a worked-example catalog.
Use biomcp skill list when you need the right worked example,
then use biomcp skill to read the embedded BioMCP guide or install it into
your agent directory when you want local copies of the workflow references:
See Skills for supported install targets, installed files, and legacy compatibility notes.
study is BioMCP's local analysis family for downloaded cBioPortal-style datasets.
The public entity surface handles API-backed, local-runtime, and hybrid
discovery/detail; study commands work on local datasets when you need
per-study query, cohort, survival, comparison, or co-occurrence workflows. Per-gene queries include mutations, CNA, expression, and structural variants/fusions from local data_sv.txt files. Mutation summaries stay mutation-only and note when fusions/SV need --type sv.
Use study download to fetch a dataset into your local study root. Set
BIOMCP_STUDY_DIR when you want an explicit dataset location for reproducible
scripts and demos; if it is unset, BioMCP falls back to its default study root.
See the CLI reference
for the full study command family and dataset prerequisites.
If you use BioMCP in research, cite it via CITATION.cff.
GitHub also exposes Cite this repository in the repository sidebar when that file is present.
BioMCP is MIT-licensed. It performs on-demand queries against upstream providers instead of vendoring or mirroring their datasets, but upstream terms govern reuse of retrieved results.
Some providers are fully open, some BioMCP features require registration or API keys, and some queryable sources still impose notable reuse limits. The two biggest cautions are KEGG, which distinguishes academic and non-academic use, and COSMIC, which BioMCP keeps indirect-only because its licensing model is incompatible with a direct open integration.
Use Source Licensing and Terms for the per-source breakdown and API Keys for setup steps and registration links.
MIT