MCP.Market

BioMCP-TS MCP server

by yeyuan98·io.github.yeyuan98/biomcp-ts·v1.4.3·12 stars

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

B75/100grade B
What users say
No reviews yet
Be the first
Safety scan
B75/100

full report

Adoption
Growing

12 stars236 downloads/wk

Reviews

Write one

Nobody 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 posts

Read from the package source without running it. The installed server may list more.

  • analysis_bam_summary

    Inspect 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_region
  • analysis_bcf_summary

    Inspect 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_region

    Variants 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_op

    Interval 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_cli

    Advanced 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_convert

    Format 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_info

    Biowasm 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_deseq2

    Differential 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_edger

    Differential 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_limma

    Differential 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_info

    Report 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_get

    Get 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_search

    Search literature across multiple backends with federated search and deduplication

  • batch_get

    Get multiple entities in parallel

  • biomcp_configure
  • db_describe_table

    Get 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_tables

    List 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_query
  • discover

    Free-text concept resolution - find entities matching a free-text query

  • disease_drugs

    Get drugs for a disease via OpenTargets

  • disease_get

    Get detailed disease information by ID

  • disease_search

    Search for diseases by name, phenotype, or keyword

  • disease_trials

    Get clinical trials for a disease

  • drug_get

    Get detailed drug information by name

  • drug_search

    Search for drugs by name, mechanism, or keyword

  • drug_trials

    Find clinical trials for a drug

  • ensembl_consequence
  • ensembl_homology

    Find 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_lookup

    Resolve 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_region

    Query 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_genes

    Map 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_get

    Fetch 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_search

    Search 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_articles

    Find articles about a gene

  • gene_diseases

    Get diseases associated with a gene. Requires DISGENET_API_KEY environment variable for DisGeNET data; falls back to OpenTargets gene-disease associations when unavailable.

  • gene_drugs

    Find drugs targeting a gene

  • gene_enrich

    Perform pathway enrichment analysis for a gene list

  • gene_get

    Get detailed gene information by symbol

  • gene_search

    Search for genes by symbol, name, or keyword

  • gene_trials

    Find clinical trials for a gene

  • geo_get

    Get 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_search

    Search 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_eqtl

    Get 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_expression

    Get 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_get

    Get 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_search
  • pdb

    Access 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_get

    Get 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_search

    Search 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_get

    Get detailed trial information by NCT ID

  • trial_search

    Search clinical trials by condition, intervention, or keyword

  • variant_get

    Get 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_oncokb

    Get OncoKB annotations for a variant in a cancer gene. Requires ONCOKB_TOKEN environment variable.

  • variant_search

    Search 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_trials

    Find clinical trials for a variant

Public scan report

scanner v0.1.10 · 2026-10-15 · same rubric, same numbers if you re-run it

1 medium
  • 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 usedexec.eval
    dist/bundle.js: …&&(u=this.opts.code.process(u,t));let m=new Function(`${ds.default.self}`,`${ds.default.scope…
Overall 75/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

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
Add to Cursor

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.13

Setup 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_TOKEN and 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.

  • Ensembl
    Look up genes, sequences, variants, homologs, and cross-database xrefs from Ensembl REST.
    A
  • DBHub
    Token-efficient database MCP server for PostgreSQL, MySQL, MariaDB, SQL Server, Oracle, SQLite
    A
  • Motherduck
    SQL analytics and data engineering for AI Assistants and IDEs
    A
  • Keboola
    Connect your AI assistants to Keboola and expose your data, transformations, SQL queries, ...
    A
  • GeoLens
    Read-only access to a self-hosted GeoLens spatial catalog: datasets, features, maps, sandboxed SQL.
    B