BioMCP (Typescript) MCP Server

Agent-first rewrite of genomeoncology's BioMCP in TypeScript to provide next-gen biomedical data access for agents.

Documentation

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 fetchingentityGet(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)

ToolDescription
gene_searchSearch genes by symbol, name, or keyword with type/chromosome filters
gene_getGet 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_diseasesGet diseases associated with a gene (DisGeNET / OpenTargets)
gene_drugsFind drugs targeting a gene (OpenTargets)
gene_trialsFind clinical trials for a gene
gene_articlesFind articles about a gene
gene_enrichPathway enrichment analysis for a gene list (Reactome)

Variant (4)

ToolDescription
variant_searchSearch variants by rsid, HGVS, gene, ClinVar significance, frequency, CADD
variant_getGet detailed variant info with optional sections (frequency, predictions, clinical, alphagenome_scores)
variant_oncokbGet OncoKB cancer variant annotations (requires ONCOKB_TOKEN)
variant_trialsFind clinical trials for a variant

Drug (3)

ToolDescription
drug_searchSearch drugs by name, mechanism, or keyword
drug_getGet detailed drug info with optional sections (us_regulatory, eu_regulatory, who_regulatory, safety, targets, indications)
drug_trialsFind clinical trials for a drug

Disease (4)

ToolDescription
disease_searchSearch diseases by name, phenotype, or keyword
disease_getGet detailed disease info by ID (DOID, MONDO, OMIM, etc.) with optional sections (gene_associations, phenotypes, pathways, survival)
disease_drugsGet drugs for a disease (OpenTargets)
disease_trialsGet clinical trials for a disease (ClinicalTrials.gov)

Article (2)

ToolDescription
article_searchFederated literature search across PubMed, EuropePMC, Semantic Scholar, PubTator, and LitSense with optional date range filtering. Accepts query, source, limit, offset, and dateRange parameters.
article_getGet 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)

ToolDescription
trial_searchSearch clinical trials by condition, intervention, status, or phase. Uses cursor-based pagination via page_token parameter
trial_getGet detailed trial info by NCT ID with optional sections (eligibility, locations, outcomes)

Utility (2)

ToolDescription
discoverFree-text concept resolution across all entity types
batch_getRetrieve multiple entities in parallel

Structural Biology (1)

ToolDescription
pdbSearch 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:

ProviderForwardBackwardCountRequired ID
Europe PMCPMID/DOI/PMCID
Semantic ScholarPMID/DOI/PMCID
CrossrefDOI only
PubMedPMID only
OpenCitationsDOI 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.

VariableSourceBenefit
NCBI_API_KEYNCBIHigher PubMed / NCBI rate limits
S2_API_KEYSemantic Scholar API key (prevents 429 rate limits)
OPENFDA_API_KEYOpenFDAOpenFDA API access
NCI_API_KEYNCI CTSNCI Clinical Trials API
ONCOKB_TOKENOncoKBOncoKB cancer variant annotations
DISGENET_API_KEYDisGeNETDisease-gene associations
UMLS_API_KEYUMLSUMLS terminology services
ALPHAGENOME_API_KEYAlphaGenomeAlphaGenome variant scores

License

MIT