BioMCP (Typescript)

Reescrita agent-first do BioMCP da genomeoncology em TypeScript para fornecer acesso de próxima geração a dados biomédicos para agentes.

Documentação

BioMCP

npm version downloads/mo downloads YTD commits/30d software DOI

BioMCP-TS architecture

Destaques

Democratizando o acesso agêntico a bancos de dados e análises de bioinformática e biofarmacêutica.

  • Acesso federado baseado em seções a mais de 50 bancos de dados de bioinformática, farmacêutica e patentes
  • Caixas de ferramentas opcionais para curadoria local de bancos de dados e análise sem dependências com Bioconductor e SAM/BED/BCFtools — sem instalação de R, toolchain C ou contêineres
  • Exemplos concretos de vignettes, desenvolvidos totalmente em código aberto

Instalação

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

A configuração é guiada em docs/AGENT-INSTALL.md — início em um minuto, entradas de configuração copiar-e-colar para Claude Desktop, Claude Code, Codex e OpenCode (um único comando canônico fixado cobrindo todos os recursos), biomcp doctor como ponto único de entrada para solução de problemas e caminhos amigáveis para agentes para chaves de API e recursos opcionais.

Múltiplos agentes em uma máquina: o biomcp aplica o limite de taxa dos Termos de Uso do arXiv (1 requisição / 3 s) por processo. Ao executar múltiplas instâncias MCP do biomcp em uma máquina (por exemplo, uma instância stdio por agente), os limites de taxa não são coordenados entre processos, e os Termos de Uso do arXiv se aplicam a todas as suas máquinas em conjunto. Para implantações multi-agente em uma única máquina, execute um único daemon biomcp serve compartilhado (veja docs/SELF-HOSTING.md) para que todos os agentes compartilhem um processo e um limitador de taxa global.

Ferramentas Disponíveis

Os esquemas completos das ferramentas (parâmetros, enums, padrões) estão em src/server/README.md.

Gene (7)

FerramentaDescrição
gene_searchPesquisar genes por símbolo, nome ou palavra-chave com filtro de cromossomo
gene_getObter informações detalhadas do gene pelo símbolo HGNC com seções opcionais (core, pathways, protein, ontology, go, interactions, expression, protein_atlas, constraint, druggability, dosage_sensitivity, clinical_evidence, disease_associations, diseases, funding). Defina smart=true para resolver automaticamente aliases de genes (por exemplo, "HER2" → "ERBB2")
gene_diseasesObter doenças associadas a um gene (DisGeNET / OpenTargets)
gene_drugsEncontrar medicamentos que têm como alvo um gene (OpenTargets)
gene_trialsEncontrar ensaios clínicos para um gene
gene_articlesEncontrar artigos sobre um gene
gene_enrichAnálise de enriquecimento de vias para uma lista de genes (Reactome)

Variante (4)

FerramentaDescrição
variant_searchPesquisar variantes por rsid, HGVS, gene, significância ClinVar, frequência, CADD
variant_getObter informações detalhadas da variante com seções opcionais (frequency, predictions, clinical; alphagenome_scores atualmente retorna um erro de indisponibilidade até a reimplementação)
variant_oncokbObter anotações de variantes de câncer OncoKB (requer ONCOKB_TOKEN)
variant_trialsEncontrar ensaios clínicos para uma variante

Medicamento (3)

FerramentaDescrição
drug_searchPesquisar medicamentos por nome, mecanismo ou palavra-chave
drug_getObter informações detalhadas do medicamento com seções opcionais (us_regulatory, eu_regulatory, who_regulatory, safety, targets, indications, adverse_events — reações FDA FAERS classificadas por contagem de relatos)
drug_trialsEncontrar ensaios clínicos para um medicamento

Doença (4)

FerramentaDescrição
disease_searchPesquisar doenças por nome, fenótipo ou palavra-chave
disease_getObter informações detalhadas da doença por ID (DOID, MONDO, OMIM, etc.) com seções opcionais (gene_associations, phenotypes, pathways)
disease_drugsObter medicamentos para uma doença (OpenTargets)
disease_trialsObter ensaios clínicos para uma doença (ClinicalTrials.gov)

Artigo (2)

FerramentaDescrição
article_searchPesquisa federada de literatura em PubMed, EuropePMC, Semantic Scholar, arXiv, PubTator e LitSense com filtragem opcional por intervalo de datas; source: "preprint_only" alterna para apenas preprints bioRxiv+medRxiv (resumos, contagens de citações, filtragem por data)
article_getObter informações detalhadas do artigo por identificador (PMID, PMCID, DOI ou DOI de preprint bioRxiv/medRxiv) com seções opcionais: oa (acesso aberto / informações de licença), annotations, graph (grafo de citações), citation (dados de citação rápidos/completos; citações Europe PMC para preprints). Registros de preprints incluem todas as versões, licença, categoria, financiadores, URL do texto completo JATS e mapeamento da versão publicada

Ensaio Clínico (2)

FerramentaDescrição
trial_searchPesquisar ensaios clínicos por condição, intervenção, status ou fase. Paginação baseada em cursor via page_token
trial_getObter informações detalhadas do ensaio pelo ID NCT com seções opcionais (eligibility, locations, outcomes)

Utilitário (2)

FerramentaDescrição
discoverResolução de conceitos em texto livre em todos os tipos de entidades
batch_getRecuperar múltiplas entidades em paralelo

Biologia Estrutural (1)

FerramentaDescrição
pdbPesquisar estruturas PDB, obter metadados de entrada com seções opcionais (polymer entities, ligands, assembly, experiment, citation) e baixar arquivos de estrutura (mmCIF/PDB)

Patentes (2)

FerramentaDescrição
patent_searchPesquisar patentes mundialmente (US, EP, WO, JP, 100+ autoridades) com filtros de cessionário/inventor/CPC/status/data e classificação por relevância (sort_by). Cite conceitos exatos de múltiplas palavras (por exemplo, "mRNA display"). Arte anterior fundamental é descoberta automaticamente via mineração de co-citação (seminal_prior_art; desative com seminal: false). Backends padrão: USPTO Public Search texto completo (US, sem chave, classificado por relevância) + EPO OPS (mundial, com chave); uspto_odp (metadados bibliográficos US) e google_patents (melhor esforço) disponíveis via source
patent_getObter detalhes da patente por número de publicação com seções: resumo, reivindicações (texto completo US via USPTO Public Search; EP/WO via EPO OPS), citações (para frente + para trás), família, classificações

GEO (2)

FerramentaDescrição
geo_searchPesquisar NCBI GEO para estudos de genômica funcional (microarranjos de expressão, RNA-seq, séries de célula única) por tipo de entrada (GSE/GSM/GPL/GDS) e organismo; resultados trazem links cruzados (sra_project, bioproject, pubmed_ids) para encadeamento
geo_getObter o registro SOFT completo para uma série/amostra/plataforma GEO: resumo, organismos, pré-visualização de amostras (≤20), URLs de arquivos suplementares e referências cruzadas; opcionalmente baixar o primeiro arquivo suplementar

SRA (2)

FerramentaDescrição
sra_searchPesquisar o Sequence Read Archive do NCBI para experimentos e execuções de sequenciamento por texto livre, acesso ou sintaxe de campo; retorna acessos de experimento/estudo/amostra com estratégia de biblioteca e contagens de execuções
sra_getObter detalhes completos para um acesso SRA: execução SRR (instrumento, spots, bases, tamanho), experimento SRX (design de biblioteca), estudo SRP (lista de experimentos) ou amostra SRS; acessos ENA/DDBJ rejeitados com um ponteiro ENA

GenBank (3)

FerramentaDescrição
genbank_searchPesquisar registros de nucleotídeos do NCBI (GenBank/RefSeq/INSDC) por termos simples, acesso ou sintaxe de campo; resultados incluem accession.version, definição, comprimento, organismo, topologia
genbank_getBuscar um registro GenBank/RefSeq como arquivo plano GenBank ou FASTA; registros completos limitados a 2 Mb — registros maiores requerem uma região seq_start/seq_stop (até 10 Mb, fita reversa via strand=2)
genbank_genesMapear um acesso GenBank/RefSeq para seus IDs de genes NCBI (elink nuccore→gene) para ponte nas ferramentas de genes

GTEx (2)

FerramentaDescrição
gtex_expressionObter expressão gênica mediana entre tecidos GTEx (Analysis v10, 54 sítios de tecido, TPM, maior primeiro); aceita símbolo HGNC ou ID de gene Ensembl, com filtro opcional de tecido único
gtex_eqtlObter associações cis-eQTL significativas para um gene em um tecido GTEx específico (v10): variant_id, p_value, NES, slope, ordenados por p-valor ascendente

Ensembl (4)

FerramentaDescrição
ensembl_lookupResolver um gene em termos Ensembl para qualquer uma das ~356 espécies: ID estável (+versão), símbolo, coordenadas na montagem atual, transcrito canônico; expand=true adiciona transcritos com IDs de tradução/proteína
ensembl_homologyEncontrar ortólogos/parálogos entre espécies via Ensembl Compara — IDs estáveis alvo, nível taxonômico, identidade percentual, ordenados por identidade; filtre com target_species/target_taxon
ensembl_consequenceCalcular consequências de variantes sob demanda via Ensembl VEP para variantes NOVAS e espécies não humanas: consequência mais grave, efeitos por transcrito (SIFT/PolyPhen), dados co-localizados ClinVar/COSMIC/gnomAD. Variantes humanas conhecidas obtêm pontuações pré-computadas mais profundas via variant_get; prefira entrada HGVS em vez de rsIDs para precisão
ensembl_regionConsultar genes/transcritos/variantes conhecidas em um intervalo genômico (chr:start-end) na montagem atual — triagem de locus

Análise R (4, opcional — ANALYSIS_R=1)

FerramentaDescrição
analysis_r_deseq2Expressão diferencial para contagens de RNA-seq com Bioconductor DESeq2 (binomial negativa, filtragem independente, encolhimento LFC opcional) em R WebAssembly em sandbox. Entradas: matriz de contagens inteiras + metadados de amostras + fórmula de design; saída: tabela markdown dos principais genes por p-valor ajustado com resumo (format="json", include_full=true para tabela completa base64(gzip(TSV)))
analysis_r_edgerExpressão diferencial com edgeR — normalização TMM, dispersão empírica de Bayes, teste F de quase-verossimilhança (test="qlm") ou teste exato de 2 grupos; mesmo contrato de entrada/saída
analysis_r_limmaExpressão diferencial com limma-voom — modelos lineares ponderados por precisão com moderação empírica de Bayes; mesmo contrato de entrada/saída
analysis_r_session_infoRelatório de runtime R: versões R/webR, versões de pacotes instalados, memória, endpoint de espelho — para diagnosticar problemas de análise

O primeiro uso inicia um worker R WebAssembly de ~1 GB e baixa o pacote wasm (~62 MB) dos releases do GitHub (em cache). Requer webr instalado ao lado do biomcp. Guia: docs/R-ANALYSIS.md.

Análise Biowasm (8, opcional — ANALYSIS_BIOWASM=1)

FerramentaDescrição
analysis_bam_summaryInspecionar um alinhamento (SAM/BAM/CRAM): contigs do cabeçalho, amostras/grupos de leitura, métricas de mapeamento flagstat, contagens por contig via idxstats quando indexado — "o que há neste BAM?" antes do trabalho em região
analysis_bam_view_regionLeituras, profundidade, pileup ou extração de leituras em uma região genômica (samtools view/depth/mpileup); fontes indexadas usam recuperação posicional rápida, fontes sem índice transmitem um filtro BED (profundidade requer entrada ordenada por coordenadas e detecta violações de ordem), retornando contagens, tabelas de cobertura, linhas SAM ou um artefato BAM
analysis_bcf_summaryInspecionar um VCF/BCF: contigs, número e nomes de amostras, inventário de campos INFO/FORMAT do cabeçalho
analysis_bcf_view_regionVariantes em uma região como uma projeção estreita de campos (bcftools query): colunas escolhidas, subconjuntos de amostras, filtros de expressão, tipos de variantes — ou um artefato VCF.gz fatiado
analysis_bed_opÁlgebra de intervalos em faixas BED (bedtools intersect/merge/subtract/coverage/jaccard/sort) com o algoritmo de streaming -sorted para entradas ordenadas
analysis_biowasm_convertConectividade de formatos: SAM/BAM/CRAM via samtools view, VCF/BCF via bcftools view, VCF/BCF → TSV via bcftools query; resultados são identificadores de artefatos reutilizáveis como artifact_id
analysis_biowasm_session_infoRelatório de runtime do Biowasm: versões fixadas de ferramentas, estado do cache de ativos, status do motor, artefatos retidos, memória
analysis_biowasm_cliSaída de emergência restrita: um subcomando samtools/bedtools/bcftools na lista de permissões com argumentos validados por esquema (sem shell, caminhos apenas sob /shared)

O primeiro uso baixa ativos wasm verificados por checksum (~4,5 MB, em cache); sem pacotes npm extras. Fontes indexadas respondem a consultas de região com recuperação posicional rápida (~0,2 % do arquivo lido); fontes sem índice recorrem a filtros BED de streaming. Guia: docs/BIOWASM-ANALYSIS.md.

Módulo de Citações

Citações federam 5 provedores em modo rápido (~4s) ou completo (~15-30s). Listas de citações diretas vêm de Europe PMC, OpenCitations e Semantic Scholar; Crossref fornece contagens e referências reversas. Matriz de provedores e detalhes de esquema: src/server/README.md.

Recursos Opcionais

Capacidades que acompanham o pacote, mas permanecem inativas até serem habilitadas. Cada uma tem seu próprio guia:

RecursoHabilitarGuia
Acesso a banco de dados — ferramentas SQL somente leitura (db_query, db_list_tables, db_describe_table) para MySQL e SQLite de arquivo localDefina DB_TYPE (+ variáveis de ambiente de conexão); MySQL precisa da dependência par mysql2 — use o comando de cliente único fixado (veja docs/DATABASE.md)docs/DATABASE.md
Análise em R — expressão diferencial Bioconductor (analysis_r_deseq2, analysis_r_edger, analysis_r_limma, analysis_r_session_info) executando DESeq2/edgeR/limma em R WebAssembly em sandbox; pacotes wasm baixam de releases do GitHub no primeiro uso (~62 MB, em cache; links lentos: asset_timeout_ms ou um mirror_url auto-buscado)Defina ANALYSIS_R=1; precisa da dependência par webr — use o comando de cliente único fixado ["npx","-y","-p","biomcp@1.5","-p","webr@0.6","biomcp"] (variante com todos os recursos adiciona -p mysql2@3); espere ~1 GB RSSdocs/R-ANALYSIS.md
Análise Biowasm — samtools/bedtools/bcftools (BAM/BED/VCF) em WebAssembly em sandbox; transmite/indexa conjuntos de dados reais em escala humana (~300 MB de varreduras BAM, consultas de região tocam ~0,2 % do arquivo); ativos ~4,5 MB em cache no primeiro uso; sem pacotes npm extrasDefina ANALYSIS_BIOWASM=1docs/BIOWASM-ANALYSIS.md

Em vez de editar blocos de ambiente manualmente, agentes (e usuários) podem se autoatender pela ferramenta sempre disponível biomcp_configure: ela relata o status/proveniência de cada parâmetro, escreve o arquivo de configuração do projeto .biomcp.json para os recursos opcionais acima (variáveis de ambiente mantêm precedência; parâmetros somente de ambiente são somente consulta e com valor mascarado), valida alterações, detecta conflitos, verifica pré-requisitos de dependências par e detalha as etapas de reinicialização/verificação. Detalhes: docs/ENV-VARS.md → Arquivo de configuração do projeto.

Documentação

DocConteúdo
docs/AGENT-INSTALL.mdInstalação guiada e configuração de cliente (Claude Desktop, Claude Code, Codex, OpenCode)
docs/ENV-VARS.mdFonte única de verdade para cada variável de ambiente
docs/DATABASE.mdGuia do recurso de acesso a banco de dados
docs/R-ANALYSIS.mdGuia do recurso de análise em R (Bioconductor em WebAssembly)
docs/BIOWASM-ANALYSIS.mdGuia do recurso de análise Biowasm (samtools/bedtools/bcftools em WebAssembly)
docs/DEVELOPMENT.mdFluxo de trabalho de build, teste e publicação
docs/development/CI.mdPipeline de CI, automação Dependabot, modelo de segurança de auto-merge
src/server/README.mdEsquemas completos de ferramentas (parâmetros, enums, padrões)
agent-test/README.mdTestes E2E de agente de usuário para as ferramentas de análise

Licença

Licenciado sob a Apache License, Versão 2.0. Veja NOTICE para atribuições.

BioMCP-TS é adaptado do projeto upstream BioMCP Rust (MIT) com uma abordagem de desenvolvimento priorizando agentes e melhorias — créditos aos autores originais.