{"name":"io.github.yeyuan98/biomcp-ts","slug":"yeyuan98-biomcp-ts","title":"BioMCP-TS","description":"Biomedical MCP server: genes, variants, trials, literature, patents, optional SQL/R/biowasm tools.","url":"https://mcp.market/server/yeyuan98-biomcp-ts","rating":null,"grade":"B","score":75,"certified":false,"status":"active","category":"data","tags":["data"],"presence":{"score":41,"stars":12,"forks":0,"downloads_week":236,"last_push_at":"2026-09-19T16:31:20.000Z","license":"Apache-2.0"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/yeyuan98/biomcp-ts","website":"https://github.com/yeyuan98/biomcp-ts/blob/main/docs/AGENT-INSTALL.md","version":"1.4.3","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"biomcp","version":"1.4.3","runtimeHint":"npx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Set to 1 to enable the samtools/bedtools/bcftools biowasm analysis tools","name":"ANALYSIS_BIOWASM"},{"description":"Set to 1 to enable the R/Bioconductor analysis tools (requires the webr peer dependency; use the pinned one-shot client command)","name":"ANALYSIS_R"},{"description":"Set to mysql or sqlite to enable the read-only SQL database tools","name":"DB_TYPE"},{"description":"Higher NCBI E-utilities rate limits (3 -> 10 req/s)","isSecret":true,"name":"NCBI_API_KEY"},{"description":"Higher Semantic Scholar rate limits","isSecret":true,"name":"S2_API_KEY"},{"description":"Higher OpenFDA rate limits","isSecret":true,"name":"OPENFDA_API_KEY"},{"description":"Required by the variant_oncokb tool (OncoKB annotations)","isSecret":true,"name":"ONCOKB_TOKEN"},{"description":"Required for DisGeNET disease-gene associations","isSecret":true,"name":"DISGENET_API_KEY"}]}],"tools":[{"name":"analysis_bam_summary","description":"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","write_action":false,"price_micros":0,"input_schema":null},{"name":"analysis_bam_view_region","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"analysis_bcf_summary","description":"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","write_action":false,"price_micros":0,"input_schema":null},{"name":"analysis_bcf_view_region","description":"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","write_action":false,"price_micros":0,"input_schema":null},{"name":"analysis_bed_op","description":"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","write_action":false,"price_micros":0,"input_schema":null},{"name":"analysis_biowasm_cli","description":"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","write_action":false,"price_micros":0,"input_schema":null},{"name":"analysis_biowasm_convert","description":"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","write_action":false,"price_micros":0,"input_schema":null},{"name":"analysis_biowasm_session_info","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"analysis_r_deseq2","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"analysis_r_edger","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"analysis_r_limma","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"analysis_r_session_info","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"article_get","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"article_search","description":"Search literature across multiple backends with federated search and deduplication","write_action":false,"price_micros":0,"input_schema":null},{"name":"batch_get","description":"Get multiple entities in parallel","write_action":false,"price_micros":0,"input_schema":null},{"name":"biomcp_configure","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"db_describe_table","description":"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","write_action":false,"price_micros":0,"input_schema":null},{"name":"db_list_tables","description":"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) ","write_action":false,"price_micros":0,"input_schema":null},{"name":"db_query","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"discover","description":"Free-text concept resolution - find entities matching a free-text query","write_action":false,"price_micros":0,"input_schema":null},{"name":"disease_drugs","description":"Get drugs for a disease via OpenTargets","write_action":false,"price_micros":0,"input_schema":null},{"name":"disease_get","description":"Get detailed disease information by ID","write_action":false,"price_micros":0,"input_schema":null},{"name":"disease_search","description":"Search for diseases by name, phenotype, or keyword","write_action":false,"price_micros":0,"input_schema":null},{"name":"disease_trials","description":"Get clinical trials for a disease","write_action":false,"price_micros":0,"input_schema":null},{"name":"drug_get","description":"Get detailed drug information by name","write_action":false,"price_micros":0,"input_schema":null},{"name":"drug_search","description":"Search for drugs by name, mechanism, or keyword","write_action":false,"price_micros":0,"input_schema":null},{"name":"drug_trials","description":"Find clinical trials for a drug","write_action":false,"price_micros":0,"input_schema":null},{"name":"ensembl_consequence","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"ensembl_homology","description":"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","write_action":false,"price_micros":0,"input_schema":null},{"name":"ensembl_lookup","description":"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 ","write_action":false,"price_micros":0,"input_schema":null},{"name":"ensembl_region","description":"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 ","write_action":false,"price_micros":0,"input_schema":null},{"name":"genbank_genes","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"genbank_get","description":"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","write_action":false,"price_micros":0,"input_schema":null},{"name":"genbank_search","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"gene_articles","description":"Find articles about a gene","write_action":false,"price_micros":0,"input_schema":null},{"name":"gene_diseases","description":"Get diseases associated with a gene. Requires DISGENET_API_KEY environment variable for DisGeNET data; falls back to OpenTargets gene-disease associations when unavailable.","write_action":false,"price_micros":0,"input_schema":null},{"name":"gene_drugs","description":"Find drugs targeting a gene","write_action":false,"price_micros":0,"input_schema":null},{"name":"gene_enrich","description":"Perform pathway enrichment analysis for a gene list","write_action":false,"price_micros":0,"input_schema":null},{"name":"gene_get","description":"Get detailed gene information by symbol","write_action":false,"price_micros":0,"input_schema":null},{"name":"gene_search","description":"Search for genes by symbol, name, or keyword","write_action":false,"price_micros":0,"input_schema":null},{"name":"gene_trials","description":"Find clinical trials for a gene","write_action":false,"price_micros":0,"input_schema":null},{"name":"geo_get","description":"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","write_action":false,"price_micros":0,"input_schema":null},{"name":"geo_search","description":"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, ","write_action":false,"price_micros":0,"input_schema":null},{"name":"gtex_eqtl","description":"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).","write_action":false,"price_micros":0,"input_schema":null},{"name":"gtex_expression","description":"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).","write_action":false,"price_micros":0,"input_schema":null},{"name":"patent_get","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"patent_search","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"pdb","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sra_get","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sra_search","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"trial_get","description":"Get detailed trial information by NCT ID","write_action":false,"price_micros":0,"input_schema":null},{"name":"trial_search","description":"Search clinical trials by condition, intervention, or keyword","write_action":false,"price_micros":0,"input_schema":null},{"name":"variant_get","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"variant_oncokb","description":"Get OncoKB annotations for a variant in a cancer gene. Requires ONCOKB_TOKEN environment variable.","write_action":false,"price_micros":0,"input_schema":null},{"name":"variant_search","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"variant_trials","description":"Find clinical trials for a variant","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":75,"grade":"B","scanned_at":"2026-09-19T21:13:44.927Z","report":{"scannerVersion":"0.1.8","scannedAt":"2026-09-19T21:13:44.947Z","components":{"code":{"score":20,"max":25,"notes":["7 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"dist/bundle.js: …&&(u=this.opts.code.process(u,t));let m=new Function(`${ds.default.self}`,`${ds.default.scope…"}],"inputs":{"packages":[{"registryType":"npm","identifier":"biomcp","version":"1.4.3","found":true,"license":"Apache-2.0","hasInstallScripts":false,"dependencyCount":1,"publishedAt":"2026-09-11T12:49:50.707Z","repositoryUrl":"git+https://github.com/yeyuan98/biomcp-ts.git","weeklyDownloads":236}],"repo":{"found":true,"owner":"yeyuan98","repo":"biomcp-ts","archived":false,"pushedAt":"2026-09-19T16:31:20Z","stars":12,"forks":0,"openIssues":8,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/62569917?v=4","ownerCreatedAt":"2020-03-23T19:49:48Z","license":"Apache-2.0"},"icon":{"url":null,"source":"none"},"presence":{"stars":12,"forks":0,"downloadsWeek":236,"license":"Apache-2.0","lastPushAt":"2026-09-19T16:31:20.000Z","score":41}}}},"grade_history":[{"kind":"restore","fromGrade":"C","toGrade":"B","reason":"score 75: eval / new Function used","createdAt":"2026-09-19T21:13:45.511Z"}],"reviews":[]}