BioMCP-TS MCP server
io.github.yeyuan98/biomcp-ts·v1.4.3·12 starsBiomedical MCP server: genes, variants, trials, literature, patents, optional SQL/R/biowasm tools.
12 stars236 downloads/wk
Reviews
Write oneNobody has reviewed BioMCP-TS yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
BioMCP-TS tools (56)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
analysis_bam_summaryInspect an alignment (SAM/BAM/CRAM) before deeper work \u2014 "what is in this BAM?": header contigs and lengths, sample and read groups, flagstat mapping metrics, and per-contig mapped/unmapped counts via idxstats when an index is available. Follow up with analysis_bam_view_region for loci of interest; analysis_biowasm_convert for format plumbing. Large host files are estimate-gated: when the ful
analysis_bam_view_regionanalysis_bcf_summaryInspect a VCF/BCF before querying variants \u2014 "what is in this variant file?": total variant record count (from the index per-contig counts when available, else a streaming count), contigs, sample count and names (watch for cohort-scale files), and the full INFO/FORMAT field inventory from the header (bcftools view -h; with an index, per-contig record counts are included). Follow up with analy
analysis_bcf_view_regionVariants in a genomic region as a narrow field projection instead of raw VCF rows (bcftools query): pick columns (CHROM/POS/REF/ALT/\u2026/GT), a `samples` subset (strongly recommended for cohort VCFs \u2014 the #1 context-reduction lever), an expression `filter` (e.g. 'INFO/DP>10 && QUAL>30'), and variant_types. format="artifact" returns a sliced VCF.gz for analysis_biowasm_convert instead. Defau
analysis_bed_opInterval algebra on BED tracks (bedtools): intersect, merge, subtract, coverage, jaccard, or sort. Binary ops take `source` (A) and `b_source` (B) \u2014 pass b_source as an OBJECT like {"content": "chr1\t10\t20\ chr1\t100\t200\ "} or {"host_path": "..."}, never as a JSON-encoded string; set sorted_inputs=true for the memory-frugal -sorted algorithm on coordinate-sorted inputs (B-side inputs are o
analysis_biowasm_cliAdvanced escape hatch: run an allowlisted samtools/bedtools/bcftools subcommand directly (args are passed as an array to the tool \u2014 never through a shell). Prefer the workflow tools \u2014 analysis_bam_summary, analysis_bam_view_region, analysis_bcf_summary, analysis_bcf_view_region, analysis_bed_op, analysis_biowasm_convert \u2014 which validate inputs and bound outputs; use this only for su
analysis_biowasm_convertFormat plumbing between the biowasm tools: SAM/BAM/CRAM via samtools view, VCF/BCF via bcftools view, and VCF/BCF -> TSV via bcftools query with a field projection and optional filter. The input format is inferred from the source (inline content is sniffed); the result is an artifact handle (id, sha256, size, preview) reusable as artifact_id by every other analysis_biowasm tool \u2014 the glue for
analysis_biowasm_session_infoBiowasm runtime report: pinned samtools/bedtools/bcftools versions, asset cache location and verification time, engine status, retained artifact count, and process memory \u2014 for diagnosing analysis_biowasm_* issues. Read-only; never downloads assets or starts the worker.
analysis_r_deseq2Differential expression analysis of RNA-seq count data with Bioconductor DESeq2 (negative-binomial, variance-stabilizing shrinkage, independent filtering), running in a sandboxed WebAssembly R runtime.
analysis_r_edgerDifferential expression analysis of RNA-seq count data with Bioconductor edgeR (TMM normalization, empirical Bayes dispersion, quasi-likelihood F-test or exact test), running in a sandboxed WebAssembly R runtime.
analysis_r_limmaDifferential expression analysis of RNA-seq count data with limma-voom (TMM normalization via edgeR, precision-weighted linear models, empirical Bayes moderation), running in a sandboxed WebAssembly R runtime.
analysis_r_session_infoReport the R analysis runtime status: R/WebAssembly version, installed Bioconductor package versions, library paths, memory usage, and the package mirror endpoint. Use this to diagnose analysis tool issues.
article_getGet article by PMID/PMCID/DOI. Citation: fast mode (~4s, 4 providers, auto-fallback to PubMed) or full mode (~15-30s, all 5 providers incl. PubMed). Forward citation lists come from Europe PMC, Semantic Scholar, and OpenCitations; Crossref provides counts and references only.
article_searchSearch literature across multiple backends with federated search and deduplication
batch_getGet multiple entities in parallel
biomcp_configuredb_describe_tableGet the column schema for a specific table. **Returns for each column:** - Field name - Data type - Nullable status - Key type (PRI for primary key) - Default value **Workflow:** 1. Use `db_list_tables` first to see available databases, aliases, and tables 2. Use this tool to understand the column structure 3. Use `db_query` to query the data **Multiple databases:** table names resolve against the
db_list_tablesList all tables/views across the configured database(s) with metadata. **Returns:** - `databases`: every reachable database (SQLite multi-file setups: `main` plus attached aliases) with its file path and table count - `collections`: table/view names with their owning `database`, type, and row count - Row count is approximate for MySQL; exact for SQLite tables, except for large databases (>256 MB)
db_querydiscoverFree-text concept resolution - find entities matching a free-text query
disease_drugsGet drugs for a disease via OpenTargets
disease_getGet detailed disease information by ID
disease_searchSearch for diseases by name, phenotype, or keyword
disease_trialsGet clinical trials for a disease
drug_getGet detailed drug information by name
drug_searchSearch for drugs by name, mechanism, or keyword
drug_trialsFind clinical trials for a drug
ensembl_consequenceensembl_homologyFind orthologues or paralogues of a gene across species (Ensembl Compara) \u2014 the cross-species gene mapping source in biomcp. Returns target stable IDs, species, taxonomy level, and percent identity, sorted by identity. Accepts an HGNC symbol or Ensembl gene ID; scope to one species with target_species ('mouse') or target_taxon (10090). Use it for conservation questions ('is this gene conserve
ensembl_lookupResolve a gene in Ensembl terms for ANY Ensembl species (356 available): stable ID (ENSG\u2026), symbol\u2194ID mapping, versioned identifier, canonical transcript, and coordinates on the current assembly (GRCh38 human, GRCm39 mouse, \u2026). With expand=true, returns all transcripts with translation/protein IDs. Accepts an HGNC symbol (BRAF) or Ensembl gene ID (ENSG00000157764, versioned or bare
ensembl_regionQuery what lives in a genomic interval on the current assembly (GRCh38 for human): genes/transcripts (stable IDs, symbols, biotypes) and known variants (rsIDs, alleles, consequence terms, clinical significance). Ideal for locus triage \u2014 "what genes and known variants sit in this GWAS hit interval?". Keep spans modest (<1 Mb recommended); output is capped at limit with a truncated marker. For
genbank_genesMap a GenBank/RefSeq nucleotide accession to its NCBI Gene IDs (elink nuccore\u2192gene). The returned gene_ids are entrezgene IDs usable directly with MyGene-backed gene tools (gene_get, gene_search). Useful bridge from a sequence record to gene-level annotation.
genbank_getFetch a GenBank/RefSeq nucleotide record as text (GenBank flat file or FASTA). Whole-record fetches are capped at 2,000,000 bp \u2014 larger records require a seq_start/seq_stop region (1-based, inclusive, up to 10 Mb span; set strand=2 for a reverse-strand slice where seq_start > seq_stop \u2014 the region field echoes the request as given, while NCBI's text shows complement(min..max)). Output gu
genbank_searchSearch NCBI nucleotide records (GenBank/RefSeq/INSDC). Queries may be plain terms, an accession, or NCBI field syntax ("TP53[Gene Name] AND Homo sapiens[Organism]", "BRCA1[Gene Name]"). Results include accession.version, definition, length_bp, organism, and topology \u2014 chain accessions into genbank_get or genbank_genes.
gene_articlesFind articles about a gene
gene_diseasesGet diseases associated with a gene. Requires DISGENET_API_KEY environment variable for DisGeNET data; falls back to OpenTargets gene-disease associations when unavailable.
gene_drugsFind drugs targeting a gene
gene_enrichPerform pathway enrichment analysis for a gene list
gene_getGet detailed gene information by symbol
gene_searchSearch for genes by symbol, name, or keyword
gene_trialsFind clinical trials for a gene
geo_getGet the full SOFT record details for a GEO entry: series (GSE...), sample (GSM...), or platform (GPL...). A series detail includes summary, organisms, platform_ids, a sample preview, supplementary file URLs, and cross-references for chaining: sra \u2192 sra_get(SRP.../SRR...), pubmed_ids \u2192 article_get, samples \u2192 geo_get(GSM...), platform_ids \u2192 geo_get(GPL...). download=true addition
geo_searchSearch NCBI GEO (Gene Expression Omnibus) for functional genomics studies \u2014 expression microarrays, RNA-seq, and other high-throughput sequencing series. Queries accept plain terms ("breast cancer RNA-seq", "melanoma single cell") or NCBI field syntax ("GSE183947[Accession]"). Each result carries cross-links for chaining: sra_project \u2192 sra_get, bioproject, pubmed_ids \u2192 article_get,
gtex_eqtlGet significant cis-eQTL associations for a gene in a specific GTEx tissue (GTEx Analysis v10): variant_id, p_value, and NES (effect direction/size), sorted by ascending p-value. tissue is a required GTEx tissueSiteDetailId (e.g. Whole_Blood, Brain_Cortex).
gtex_expressionGet median gene expression across GTEx tissues (GTEx Analysis v10, 54 tissue sites, TPM, sorted highest first). Accepts an HGNC symbol (TP53) or Ensembl gene ID (ENSG00000141510, versioned or bare). Optionally filter to a single tissue via its tissueSiteDetailId (e.g. Brain_Cortex, Whole_Blood).
patent_getGet patent details by publication number (e.g. "US11027025B2", "EP3904939B1", "US20260240819A1"). Sections: abstract, claims (US fulltext via USPTO Public Search; EP/WO via EPO OPS), citations (backward + forward), family, classifications.
patent_searchpdbAccess the Protein Data Bank (RCSB PDB) for macromolecular structure data. SEARCH: Provide "query" to find structures (e.g., "kinase inhibitor", "hemoglobin"). GET: Provide "pdb_id" to retrieve entry metadata with optional detail sections. DOWNLOAD: Provide "pdb_id" + download=true to save the structure file and get the file path.
sra_getGet full details for an NCBI SRA accession: SRR run (instrument, spots, bases, size), SRX experiment (library design), SRP study (experiment list), or SRS sample. Chain from geo_get (sra field) or sra_search (experiment_accession / first_run_accession). European (ERP/ERR) and DDBJ (DRP/DRR) accessions are NOT indexed in NCBI SRA \u2014 use ENA (https://www.ebi.ac.uk/ena) for those.
sra_searchSearch NCBI's Sequence Read Archive (SRA) for sequencing experiments and runs. The query may be free text, an accession (SRP study, SRX experiment, SRR run, SRS sample), or NCBI field syntax ("RNA-SEQ AND Homo sapiens[Organism]"). Results list experiment/study/sample accessions, organism, library strategy, run count, and first_run_accession for chaining into sra_get.
trial_getGet detailed trial information by NCT ID
trial_searchSearch clinical trials by condition, intervention, or keyword
variant_getGet detailed variant information with optional sections. Core data (id, gene, rsid, significance) is always returned at the top level. Use sections to request additional data.
variant_oncokbGet OncoKB annotations for a variant in a cancer gene. Requires ONCOKB_TOKEN environment variable.
variant_searchSearch for variants. Use structured parameters for best results: - rsid: e.g. query="rs113488022" - HGVS: e.g. query="NM_004333.4:c.1799T>A" - Gene filter: e.g. gene="BRAF" with hgvsp="V600E" or consequence="missense" - ClinVar significance: e.g. significance="pathogenic" Do NOT use compound free-text like "BRAF V600E" \u2014 use separate gene and hgvsp parameters instead.
variant_trialsFind clinical trials for a variant
Public scan report
scanner v0.1.10 · 2026-10-15 · same rubric, same numbers if you re-run it
- Code scan7 source files scanned20/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 0 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Findings (1)
- mediumeval / new Function used
exec.evaldist/bundle.js: …&&(u=this.opts.code.process(u,t));let m=new Function(`${ds.default.self}`,`${ds.default.scope…
How BioMCP-TS compares
Against every graded Databases MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 75/100
- higher than 35% of 802 Databases servers
- Tools
- 56
- the typical Databases server has 8
- Tools that change things
- 0%
- typical: 10%. Fewer write tools means less an agent can break
- GitHub stars
- 12
- more than 81% of 602 Databases servers
- Downloads a week
- 236
- more than 73% of 328 Databases servers with a package
What its tools let an agent do: 56 read
Install BioMCP-TS in Claude Code, Cursor or VS Code
Runs npx -y biomcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add biomcp-ts -- npx -y biomcp
What the publisher says
From the BioMCP-TS repository's README, as published. We do not edit it. Read it on GitHub
BioMCP
Highlights
Democratizing agentic access to bioinformatics and biopharmaceutical databases and analyses.
- Section-based federated access to 50+ bioinformatics, pharmaceutical, and patent databases
- Optional toolboxes for local database curation and dependency-free analysis with Bioconductor and SAM/BED/BCFtools — no R installation, C toolchain, or containers
- Concrete example vignettes, developed fully in the open
Install
npx -y biomcp doctor # diagnose a machine: Node gate, config health, feature gates, peer deps
npx biomcp # zero-config stdio MCP server (this is what MCP clients run); Node >= 22.13Setup is guided in docs/AGENT-INSTALL.md — a one-minute start, copy-paste config entries for Claude Desktop, Claude Code, Codex, and OpenCode (one canonical pinned command covering every feature), biomcp doctor as the single troubleshooting entry point, and agent-friendly paths for API keys and optional features.
Multiple agents on one machine: biomcp enforces arXiv's Terms-of-Use rate limit (1 request / 3 s) per process. When running multiple biomcp MCP instances on one machine (e.g., one stdio instance per agent), rate limits are not coordinated across processes, and arXiv's TOU applies to all your machines in aggregate. For multi-agent single-machine deployments, run a single shared biomcp serve daemon (see docs/SELF-HOSTING.md) so all agents share one process and one global rate limiter.
Available Tools
Full tool schemas (params, enums, defaults) live in src/server/README.md.
Gene (7)
Variant (4)
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Grade history
- 2026-09-19restoreC → Bscore 75: eval / new Function used
BioMCP-TS: common questions
- Is BioMCP-TS MCP server safe?
- Mostly: it is graded B (75/100). Read the BioMCP-TS safety report
- How do I install BioMCP-TS?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does BioMCP-TS need an API key?
- Yes. The registry entry asks for
NCBI_API_KEY,S2_API_KEY,OPENFDA_API_KEY,ONCOKB_TOKENand 1 more. - Is BioMCP-TS maintained?
- The last commit was 20 days ago (2026-10-15). The latest release is v1.4.3.
- What can I use instead of BioMCP-TS?
- Servers from other publishers that do the same job: Ensembl MCP server, DBHub MCP server and Motherduck MCP server.
- How does BioMCP-TS compare with other Databases MCP servers?
- safety score 75/100 (higher than 35% of 802 Databases servers); tools 56 (the typical Databases server has 8); tools that change things 0% (typical: 10%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to BioMCP-TS
Same job from other publishers: the closest match first, then the best rated.
- EnsemblLook up genes, sequences, variants, homologs, and cross-database xrefs from Ensembl REST.not reviewedGrowingA
- DBHubToken-efficient database MCP server for PostgreSQL, MySQL, MariaDB, SQL Server, Oracle, SQLitenot reviewedWidely usedA
- MotherduckSQL analytics and data engineering for AI Assistants and IDEsnot reviewedEstablishedA
- KeboolaConnect your AI assistants to Keboola and expose your data, transformations, SQL queries, ...not reviewedEstablishedA
- GeoLensRead-only access to a self-hosted GeoLens spatial catalog: datasets, features, maps, sandboxed SQL.not reviewedEstablishedB