# BioMCP-TS [Health: Active]

**Category:** 🧬 Biology & Bioinformatics  
**Repository:** https://github.com/yeyuan98/biomcp-ts  
**GitHub Stars:** 12  
**npm Downloads (last month):** 840  
**Views:** 3  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/biomcp-ts

## Description
Biomedical MCP server: genes, variants, trials, literature, patents, optional SQL/R/biowasm tools.

## Tools
Capabilities this server exposes over MCP:

- **gene_search** — Search genes by symbol, name, or keyword with chromosome filter
- **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…
- **gene_diseases** — Get diseases associated with a gene (DisGeNET / OpenTargets)
- **gene_drugs** — Find drugs targeting a gene (OpenTargets; envelope `{ results, warnings?, errors? }` — OpenTargets failures and unresolved genes ride in `errors[]`, never as inline rows)
- **gene_trials** — Find clinical trials for a gene
- **gene_articles** — Find articles about a gene (federated across PubMed, EuropePMC, Semantic Scholar, arXiv, PubTator, LitSense; envelope `{ results, warnings?, errors? }` — per-backend failures ride in `errors`)
- **gene_enrich** — Pathway enrichment analysis for a gene list (Reactome)
- **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` currently returns an unavailability error pending reimplementation)
- **variant_oncokb** — Get OncoKB cancer variant annotations (requires `ONCOKB_TOKEN`)
- **variant_trials** — Find clinical trials for a variant
- **drug_search** — Search drugs by name, mechanism, or keyword (envelope `{ results, hint? }` — when nothing matches, `hint` points mechanism/target queries at gene_drugs)
- **drug_get** — Get detailed drug info with optional sections (us_regulatory, who_regulatory, safety, targets, indications, adverse_events — FDA FAERS reactions ranked by report count; WHO PQ listing lookup, ~650 global-health priority products)
- **drug_trials** — Find clinical trials for a drug
- **disease_search** — Search diseases by name, phenotype, or keyword (envelope `{ results, warnings?, errors? }`)
- **disease_get** — Get detailed disease info by ID (DOID, MONDO, OMIM, etc.) with optional sections (gene_associations, phenotypes, pathways)
- **disease_drugs** — Get drugs for a disease (OpenTargets; envelope `{ results, warnings?, errors? }` — OpenTargets failures and unresolved diseases ride in `errors[]`, never as inline rows)
- **disease_trials** — Get clinical trials for a disease (ClinicalTrials.gov; envelope `{ results, warnings?, errors? }`)
- **article_search** — Federated literature search across PubMed, EuropePMC, Semantic Scholar, arXiv, PubTator, and LitSense with optional date range filtering; `source: "preprint_only"` switches to bioRxiv+medRxiv preprints only (abstracts, citation counts, date filtering). Result records carry `journal_issn
- **article_get** — Get detailed article info by identifier (PMID, PMCID, DOI, or bioRxiv/medRxiv preprint DOI) with optional sections: `fulltext` (the complete article text when freely readable in PMC/Europe PMC — open-access AND free-to-read articles; by default (`fulltext_output="file"`) written to a server-side ma…
- **preprint_fulltext** — On-demand bioRxiv/medRxiv preprint full text (JATS XML parsed to sections), by preprint DOI with optional version (default: latest). Strictly on-demand (never during search), downloads are paced (≥3 s spacing), cached per (doi, version) — JATS per version is immutable — and license-aware (`cc_by` →…
- **journal_metrics** — OpenAlex journal quality metrics (2yr mean citedness — an open-access impact-factor alternative), h-index, quality lists; by name, NLM abbreviation, or ISSN
- **trial_search** — Search clinical trials by condition, intervention, status, or phase. Cursor-based pagination via `page_token
- **trial_get** — Get detailed trial info by NCT ID with optional sections (eligibility, locations, outcomes)
- **discover** — Free-text concept resolution across all entity types
- **batch_get** — Retrieve multiple entities in parallel
- **pdb** — Search PDB structures, get entry metadata with optional sections (polymer entities, ligands, assembly, experiment, citation), and download structure files (mmCIF/PDB)
- **patent_search** — Search patents worldwide (US, EP, WO, JP, 100+ authorities) with assignee/inventor/CPC/status/date filters and relevance ranking (`sort_by`). Quote exact multi-word concepts (e.g. "flow cytometry"). Foundational prior art is auto-discovered via co-citation mining (`seminal_prior_art`; disable with…
- **patent_get** — Get patent details by publication number with sections: abstract, claims (US fulltext via USPTO Public Search; EP/WO via EPO OPS when configured, otherwise Google Patents pages), citations (forward + backward), family, classifications
- **geo_search** — Search NCBI GEO for functional genomics studies (expression microarrays, RNA-seq, single-cell series) by entry type (GSE/GSM/GPL/GDS) and organism; results carry cross-links (bioproject, pubmed_ids; sra_project when NCBI links the SRA study — otherwise geo_get's sra field) for chaining
- **geo_get** — Get the full SOFT record for a GEO series/sample/platform: summary, organisms, sample preview (≤20), supplementary file URLs, and cross-references; optionally download the first supplementary file. GDS curated DataSets return structured guidance (`{ accession, guidance, see_also: { series, sample }…
- **sra_search** — Search NCBI's Sequence Read Archive for sequencing experiments and runs by free text, accession, or field syntax; returns experiment/study/sample accessions with library strategy and run counts
- **sra_get** — Get full details for an SRA accession: run (SRR/ERR/DRR — instrument, spots, bases, size), experiment (SRX/ERX/DRX — library design), study (SRP/ERP/DRP — experiment list), or sample (SRS/ERS/DRS); NCBI SRA indexes NCBI, ENA, and DDBJ accessions alike
- **genbank_search** — Search NCBI nucleotide records (GenBank/RefSeq/INSDC) by plain terms, accession, or field syntax; results include accession.version, definition, length, organism, topology
- **genbank_get** — Fetch a GenBank/RefSeq record as GenBank flat file or FASTA; whole records capped at 2 Mb — larger records require a `seq_start`/`seq_stop` region (up to 10 Mb, reverse-strand via `strand=2`)
- **genbank_genes** — Map a GenBank/RefSeq accession to its NCBI Gene IDs (elink nuccore→gene) for bridging into gene tools
- **gtex_expression** — Get median gene expression across GTEx tissues (Analysis v10, 54 tissue sites, TPM, highest first); accepts HGNC symbol or Ensembl gene ID, with optional single-tissue filter
- **gtex_eqtl** — Get significant cis-eQTL associations for a gene in a specific GTEx tissue (v10): variant_id, p_value, NES, slope, sorted by ascending p-value
- **ensembl_lookup** — Resolve a gene in Ensembl terms for any of ~356 species: stable ID (+version), symbol, coordinates on the current assembly, canonical transcript; `expand=true` adds transcripts with translation/protein IDs
- **ensembl_homology** — Find orthologues/paralogues across species via Ensembl Compara — target stable IDs, taxonomy level, percent identity, sorted by identity; filter with `target_species`/`target_taxon
- **ensembl_consequence** — Compute variant consequences on demand via Ensembl VEP for NOVEL variants and non-human species: most severe consequence, per-transcript effects (SIFT/PolyPhen), co-located ClinVar/COSMIC/gnomAD data. Known human variants get deeper pre-computed scores via `variant_get`; prefer HGVS input over rsID…
- **ensembl_region** — Query genes/transcripts/known variants in a genomic interval (`chr:start-end`) on the current assembly — locus triage
- **analysis_r_deseq2** — Differential expression for RNA-seq counts with Bioconductor DESeq2 (negative binomial, independent filtering, optional LFC shrinkage) in sandboxed WebAssembly R. Inputs: integer count matrix + sample metadata + design formula; output: markdown table of top genes by adjusted p-value with summary (`…
- **analysis_r_edger** — Differential expression with edgeR — TMM normalization, empirical-Bayes dispersion, quasi-likelihood F-test (`test="qlm"`) or 2-group exact test; same input/output contract
- **analysis_r_limma** — Differential expression with limma-voom — precision-weighted linear models with empirical-Bayes moderation; same input/output contract
- **analysis_r_session_info** — R runtime report: R/webR versions, installed package versions, memory, mirror endpoint — for diagnosing analysis issues
- **analysis_bam_summary** — Inspect an alignment (SAM/BAM/CRAM): header contigs, sample/read groups, flagstat mapping metrics, per-contig counts via idxstats when indexed — "what's in this BAM?" before region work
- **analysis_bam_view_region** — Reads, depth, pileup, or read extraction in a genomic region (samtools view/depth/mpileup); indexed sources use fast positional retrieval, indexless sources stream a BED filter (depth requires coordinate-sorted input and detects order violations), returning counts, coverage tables, SAM rows, or a B…
- **analysis_bcf_summary** — Inspect a VCF/BCF: contigs, sample count and names, INFO/FORMAT field inventory from the header
- **analysis_bcf_view_region** — Variants in a region as a narrow field projection (bcftools query): chosen columns, sample subsets, expression filters, variant types — or a sliced VCF.gz artifact
- **analysis_bed_op** — Interval algebra on BED tracks (bedtools intersect/merge/subtract/coverage/jaccard/sort) with the streaming `-sorted` algorithm for sorted inputs
- **analysis_biowasm_convert** — Format plumbing: SAM/BAM/CRAM via samtools view, VCF/BCF via bcftools view, VCF/BCF → TSV via bcftools query; results are artifact handles reusable as `artifact_id
- **analysis_biowasm_session_info** — Biowasm runtime report: pinned tool versions, asset cache state, engine status, retained artifacts, memory
- **analysis_biowasm_cli** — Constrained escape hatch: an allowlisted samtools/bedtools/bcftools subcommand with schema-validated args (no shell, paths under /shared only)

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "biomcp-ts": {
    "command": "npx",
    "args": ["-y","biomcp"]
  }
}
```

## Documentation

## What BioMCP-TS does

BioMCP-TS provides MCP tools for querying biomedical and biopharmaceutical information from multiple public and specialized sources. Its entity coverage includes genes, genetic variants, drugs, diseases, research articles, clinical trials, protein structures, patents, and NCBI GEO functional-genomics studies.

The server supports both discovery and follow-up retrieval. Agents can search by natural-language concepts or domain identifiers, resolve concepts across entity types, request selected detail sections, and retrieve several entities in parallel. Gene tools include alias-aware lookup, disease and drug associations, clinical trials, literature, and Reactome pathway enrichment. Variant tools support identifiers such as rsIDs and HGVS expressions, along with ClinVar significance, frequency, CADD, predictions, and clinical information.

## How it works

BioMCP-TS exposes the data sources through MCP tool calls and federates several searches across backends. Literature search can query PubMed, Europe PMC, Semantic Scholar, arXiv, PubTator, and LitSense; a preprint-only mode targets bioRxiv and medRxiv. Article retrieval accepts PMIDs, PMCIDs, DOIs, and preprint DOIs. Freely readable full text can be returned inline with a character cap or written to a server-side Markdown file with an outline for selective reading.

Preprint full text is fetched only on demand, parsed from JATS XML, and cached by DOI and version. Downloads are paced to respect source limits, and rate-limit responses expose retry information. Federated responses can preserve warnings and backend errors separately from result records, which helps agents distinguish partial results from empty searches.

Clinical-trial searches support cursor pagination, while patent searches cover worldwide authorities and can filter by assignee, inventor, CPC, status, and date. The PDB tool handles structure searches, metadata, and mmCIF or PDB downloads.

## Setup and configuration

The package runs with Node.js 22.13 or newer. Use the following commands to check the local environment and start the standard MCP process:

```bash
npx -y biomcp doctor
npx biomcp
```

The second command starts a zero-configuration stdio server for MCP clients. A shared `biomcp serve` daemon is available for setups with multiple agents on one machine, allowing them to share process-level rate limiting. OncoKB variant annotations require the `ONCOKB_TOKEN` environment variable.

Optional toolboxes support local database curation and dependency-free analysis using Bioconductor and SAM/BED/BCFtools without requiring an R installation, C toolchain, or containers.

## Tools and capabilities

- Search and inspect genes, variants, drugs, diseases, articles, trials, patents, PDB structures, and GEO studies.
- Resolve free-text biomedical concepts with `discover` and retrieve multiple entities concurrently with `batch_get`.
- Run Reactome enrichment for gene lists and query gene, disease, drug, and variant relationships.
- Search federated literature sources, inspect citation graphs and article metadata, and retrieve eligible full text.
- Query clinical trials by condition, intervention, status, phase, gene, variant, drug, or disease.
- Retrieve regulatory, safety, target, indication, adverse-event, patent, structure, and functional-genomics information through specialized tools.

## Limitations and notes

Data availability depends on the upstream source used by each tool. Some responses may contain backend warnings or errors alongside usable results. AlphaGenome scores in `variant_get` currently return an unavailable status. Full article text is limited to freely readable content in supported repositories, and preprint retrieval is subject to source rate limits and article-specific licenses.

For multiple local MCP processes, arXiv request limits are not coordinated between processes. A shared daemon is the intended arrangement when several agents need to use the service on one machine.

_Full upstream README: https://allmcps.com/mcp/biomcp-ts/readme_

