BioMCP
# BioMCP — Bioinformatics MCP Server
<!-- README-I18N:START -->
**English** | [汉语](./README.zh.md)
<!-- README-I18N:END -->
**BioMCP** is an open-source **MCP server** that connects any AI assistant directly to **43 open bioinformatics databases** — zero config, no API keys. Literature, sequences, BLAST, structures, enrichment, annotations, genomes, interactions, pathways, variants, population frequencies, methylation QTLs, tissue expression, drug targets, compounds, single-cell, glycomics, metabolomics, lipidomics, microbiome, plants, model organisms, proteomics and more.
[](https://modelcontextprotocol.io)
[](https://pypi.org/project/biomcp-server/)
[](https://github.com/qgeng1465/bio-mcp)
[](https://github.com/qgeng1465/bio-mcp)
[](https://www.python.org)
[](LICENSE)
[](https://github.com/qgeng1465/bio-mcp)
---
## Features
**Standard MCP protocol** — Based on official MCP SDK with stdio transport, compatible with all MCP clients
**83 tools · 43 databases** — Covers literature → sequences → structures → functions → interactions → pathways → variants → population frequency → methylation → tissue expression → drug targets → drugs → single-cell → glycomics → metabolomics → lipidomics → microbiome → plants → model organisms → proteomics → intelligent analysis
**Zero-config** — `pip install biomcp-server` one command, no database setup, no API keys required
**Authoritative public data** — All from official APIs: NCBI / RCSB / UniProt / Ensembl / EBI / STRING / KEGG / GlyGen / Reactome / OpenAlex, etc.
**Smart rate-limiting** — Built-in NCBI 3 seconds/request rate limiting with retry backoff, respects academic API standards
**Cross-database validation** — `gene_full_profile` concurrently queries 4 databases, `intelligent_analyze` auto-detects data types and recommends optimal analysis plans
**Bilingual** — Tool descriptions are available in both English and Chinese, and the default endpoints are reachable from mainland China (Enrichr is used in place of g:Profiler)
**Intelligent Agent System** — Auto-analyzes input data, recommends optimal tools, saves tokens, provides unexpected insights
**Honest Agent** — `db_health_check` runs real connectivity tests on all endpoints, `tool_inventory` reports which tools are end-to-end verified vs best-effort
---
## Install
```bash
# Install (Python 3.10+)
pip install biomcp-server
# Run in stdio mode
bio-mcp
```
### Install from source
```bash
git clone https://github.com/qgeng1465/bio-mcp.git
cd bio-mcp
pip install .
# or dev mode
pip install -e ".[test]"
```
---
## Quick Start
Register BioMCP in any MCP-compatible AI assistant / IDE (Cursor / VS Code / MCP clients, etc.):
```json
{
"mcpServers": {
"bio-mcp": {
"command": "bio-mcp"
}
}
}
```
Then just ask in conversation:
```
Search the latest literature on BRCA1 / highly cited papers on CRISPR
Download the protein sequence for CYP2D6 / fetch nucleotide sequences for E. coli
BLAST this DNA: ATGC...
Look up the structure of PDB 1CRN / AlphaFold prediction for P04637 / EMDB cryo-EM structure EMD-1234
Run enrichment analysis on the gene list BRCA1,TP53,EGFR,ATM,RAD51
Look up the apoptosis pathway / the experimental interaction network of TP53
Look up the structure of glycan G00051MO / glycosylation of P04637 / lipid LMFA01030001
Search gut microbiome studies / E. coli genome assemblies / the pET-28a plasmid
Look up BRCA1 expression across human tissues
Look up the population allele frequency of rs1800562 / gnomAD constraint metrics for HFE
Look up mQTL associations for rs6602381 / epigenetic associations for cg05575921
Look up the liver eQTL for TP53 / TP53 drug-target–disease associations
Look up the Arabidopsis gene AT1G01010 / the C. elegans gene WBGene00000001
Search the human plasma proteomics project PXD000001 / the HGNC symbol for TP53
Search SRA sequencing data for breast cancer / UniChem ID mapping for aspirin
Produce a multi-database combined analysis report for BRCA1
Use intelligent analysis: functional analysis of the TP53 gene
Get an analysis template for gene research
Check which databases are currently reachable (honesty check)
```
---
## Tools (83)
### Intelligent Analysis
| Tool | Function | Description |
|---|---|---|
| `intelligent_analyze` | Intelligent data analysis and tool recommendation | Auto-detects the data type, recommends the best analysis plan, saves tokens |
| `get_analysis_template` | Get analysis scenario templates | Pre-built analysis pipelines for gene research, drug discovery, and more |
### Literature
| Tool | Function | Source |
|---|---|---|
| `pubmed_search` | literature search | NCBI E-utilities |
| `europepmc_search` | full-text + open-access | Europe PMC (EBI) |
| `openalex_work_search` | scholarly works search | OpenAlex |
### Sequence & Alignment
| Tool | Function | Source |
|---|---|---|
| `ncbi_fetch_sequence` | fetch sequences | NCBI E-utilities |
| `blast_search` | homology search | NCBI BLAST |
| `taxonomy_lookup` | species taxonomy | NCBI Taxonomy |
| `geo_dataset_search` | expression dataset search | NCBI GEO |
| `uniparc_search` | protein archive search | EBI UniParc |
| `uniparc_by_id` | record by UPI ID | EBI UniParc |
### Structure
| Tool | Function | Source |
|---|---|---|
| `pdb_structure_summary` | experimental structures | RCSB PDB |
| `alphafold_structure` | AI-predicted structures | AlphaFold DB (EBI) |
| `emdb_structure_lookup` | cryo-EM structures | EBI EMDB |
### Protein Function
| Tool | Function | Source |
|---|---|---|
| `uniprot_annotate` | protein annotations | UniProt |
| `protein_domains` | structural domains | InterPro (EBI) |
### Gene Nomenclature
| Tool | Function | Source |
|---|---|---|
| `hgnc_search` | gene symbol search | HGNC |
| `hgnc_gene_symbol` | canonical symbol & aliases | HGNC |
### Pathways & Interactions
| Tool | Function | Source |
|---|---|---|
| `gene_enrichment` | enrichment analysis | Enrichr |
| `kegg_pathway_search` | pathway search | KEGG |
| `kegg_pathway_genes` | genes in a pathway | KEGG |
| `reactome_pathway_search` | pathway search | Reactome |
| `string_interactions` | protein interaction network | STRING-db |
| `intact_interactions` | experimental interactions | EBI IntAct |
| `ensembl_gene_lookup` | gene lookup | Ensembl |
| `ensembl_homologs` | homologous genes | Ensembl Compara |
| `biogrid_interactions` | interactions | BioGRID |
| `biogrid_gene_interactions` | gene interactions | BioGRID |
### Genome & Assembly
| Tool | Function | Source |
|---|---|---|
| `ucsc_genome_info` | genome assemblies | UCSC Genome Browser |
| `genome_assembly_search` | genome assemblies | NCBI Assembly |
### Variants & Clinical
| Tool | Function | Source |
|---|---|---|
| `variant_annotate` | variant annotation | MyVariant.info |
| `clinvar_query` | clinical variant classification | NCBI ClinVar |
| `dbsnp_search` | variant search | NCBI dbSNP |
### GO & GWAS
| Tool | Function | Source |
|---|---|---|
| `go_term_lookup` | GO term details | QuickGO (EBI) |
| `go_term_search` | GO term search | QuickGO (EBI) |
| `gene_go_annotation` | GO annotations by gene | QuickGO (EBI) |
| `gwas_variant_associations` | variant-trait associations | GWAS Catalog (EBI) |
| `gwas_gene_variants` | GWAS variants by gene | GWAS Catalog (EBI) |
### Population Frequency & Constraint
| Tool | Function | Source |
|---|---|---|
| `gnomad_variant_lookup` | allele frequency | gnomAD (Broad) |
| `gnomad_gene_constraint` | LOEUF)/ gene constraint metrics | gnomAD (Broad) |
### Methylation QTL & Epigenetics
| Tool | Function | Source |
|---|---|---|
| `mqtl_snp_lookup` | SNP-to-CpG mQTL | GoDMC |
| `mqtl_cpg_lookup` | CpG-to-SNP mQTL | GoDMC |
| `ewas_probe_lookup` | probe EWAS associations | EWAS Atlas (NGDC) |
| `ewas_gene_lookup` | gene→probe EWAS | EWAS Atlas (NGDC) |
### Tissue Expression & Drug Targets
| Tool | Function | Source |
|---|---|---|
| `gtex_tissue_expression` | tissue median expression | GTEx Portal |
| `gtex_eqtl` | single-tissue eQTL | GTEx Portal |
| `ot_target_info` | drug target info | Open Targets |
| `ot_target_disease` | target-disease associations | Open Targets |
### Compounds & Drugs
| Tool | Function | Source |
|---|---|---|
| `compound_info` | compound info | PubChem |
| `chembl_drug_search` | drug bioactivity & targets | ChEMBL (EBI) |
| `unichem_mapping` | ID mapping by InChIKey | UniChem (EBI) |
| `unichem_structure` | cross-refs by InChIKey | UniChem (EBI) |
| `chebi_compound` | compound details | ChEBI (EBI) |
| `chebi_search` | compound search | ChEBI (EBI) |
### Nucleic Acid & Plasmids
| Tool | Function | Source |
|---|---|---|
| `plasmid_search` | plasmid search | NCBI nuccore |
| `ena_sequence_search` | nucleotide sequences | EBI ENA |
### Microbiome
| Tool | Function | Source |
|---|---|---|
| `microbiome_study_search` | metagenomics studies | EBI MGnify |
### Single-Cell
| Tool | Function | Source |
|---|---|---|
| `cellxgene_search` | single-cell datasets | CELLxGENE (CZ) |
### Glycomics
| Tool | Function | Source |
|---|---|---|
| `glycan_lookup` | glycan structure | GlyGen (GlyTouCan) |
| `protein_glycosylation` | protein glycosylation | GlyGen |
### Metabolomics
| Tool | Function | Source |
|---|---|---|
| `metabolomics_study` | study details | EBI Metabolights |
| `metabolomics_latest` | latest studies | EBI Metabolights |
### Lipidomics
| Tool | Function | Source |
|---|---|---|
| `lipid_lookup` | lipid structure | LIPID MAPS |
### Protein Atlas
| Tool | Function | Source |
|---|---|---|
| `protein_tissue_expression` | tissue expression | Human Protein Atlas |
### Samples & Expression
| Tool | Function | Source |
|---|---|---|
| `biosample_by_id` | sample details | NCBI BioSamples |
| `biosample_search` | sample search | NCBI BioSamples |
| `expression_atlas_gene` | gene-related experiments | EBI Expression Atlas |
| `expression_atlas_experiment` | experiment search | EBI Expression Atlas |
### Proteomics
| Tool | Function | Source |
|---|---|---|
| `pride_project` | project details | EBI PRIDE |
| `pride_search` | project search | EBI PRIDE |
### Model Organisms
| Tool | Function | Source |
|---|---|---|
| `flybase_gene` | fly gene details | FlyBase |
| `flybase_search` | fly gene search | FlyBase |
| `wormbase_gene` | worm gene details | WormBase |
| `wormbase_search` | worm gene search | WormBase |
| `rgd_gene_symbol` | rat gene symbol | Rat Genome DB |
| `rgd_search` | rat gene search | Rat Genome DB |
### Plants
| Tool | Function | Source |
|---|---|---|
| `plant_gene_lookup` | plant gene lookup | Ensembl Plants |
| `plant_species_list` | supported plant species | Ensembl Plants |
### Sequencing Archive
| Tool | Function | Source |
|---|---|---|
| `sra_search` | sequence read archive | NCBI SRA |
| `bioproject_search` | BioProject search | NCBI BioProject |
### Honesty
| Tool | Function | Source |
|---|---|---|
| `db_health_check` | real connectivity test | All databases |
| `tool_inventory` | best_effort)/ tool inventory & status | All tools |
### Combined
| Tool | Function | Source |
|---|---|---|
| `gene_full_profile` | combined report | 4 databases |
---
## Example Output
**Intelligent Analysis**
```
Input: "TP53"
Goal: "function"
Output:
{
"data_analysis": {
"primary_type": "gene_name",
"confidence": {"gene_name": 0.85}
},
"recommended_plans": [
{
"plan_id": "primary",
"recommended_tools": [
"uniprot_annotate",
"protein_domains",
"gene_enrichment",
"string_interactions"
],
"expected_results": [
"Basic protein information",
"Domains and families",
"GO enrichment analysis",
"Protein interaction network"
],
"token_efficiency": "high",
"insights": [
"Consider checking the species specificity of the gene",
"Consider how this gene's expression differs across tissues",
"You could explore aberrant expression of this gene in disease states"
]
}
]
}
```
**gene_full_profile** (combined tool)
```
Combined analysis: TP53 (homo_sapiens)
- Ensembl ENSG00000141510 · chr17:7668402-7687550 · protein_coding · tumor protein p53
- UniProt P04637 · Cellular tumor antigen p53 · Homo sapiens · 393 aa · Multifunctional transcription factor...
- STRING interaction partners: MDM2(0.999), TP53BP1(0.996), EP300(0.986), ...
- PubMed literature: 74,021 papers
Cross-validated across Ensembl / UniProt / STRING / PubMed.
```
---
## Two Ways to Use: Agent or Direct
Two usage modes are available:
**Mode 1 — Intelligent agent + skills (token-saving)**
- Ask `intelligent_analyze(input, goal)` directly: the agent classifies the data type, recommends databases, states the expected results and insights, and calls only the tools it needs.
- Or use one of the bundled skills (bio-data-to-database / bio-analysis / bio-mcp-usage), which follow the flow "classify → recommend → cross-validate → report honestly".
- Best for: when you are not sure what the data can answer, want to save tokens, or need insights.
**Mode 2 — Call any tool directly (fully manual)**
- Skip the agent and call any single tool, e.g. `pubmed_search(term="BRCA1")`, `blast_search(...)`, `uniprot_annotate(gene="TP53")`.
- Best for: when the data and the goal are clear, you already have a query plan, or you don't want agent judgement in the loop.
- The tools are the same ones the agent uses: `tool_inventory` lists all 83 tools with their verification status, and `db_health_check` confirms current reachability.
> The two modes are equivalent and interchangeable: the agent ends up calling the same tools, and manual calls return exactly the same results.
---
## Architecture
```
Client Layer
┌──────────────────────────────────────────────┐
│ MCP Client │
│ (Any MCP-compatible AI assistant / IDE) │
└──────────────────────┬───────────────────────┘
│ stdio (JSON-RPC 2.0)
Server Layer
┌──────────────────────▼───────────────────────┐
│ bio-mcp server │
│ ┌────────────────────────────────────────┐ │
│ │ tools/ (83 MCP tools) │ │
│ │ intelligent · honesty · pubmed · ncbi │ │
│ │ blast · pdb · uniprot · enrichment · │ │
│ │ ensembl · string · kegg · variant · │ │
│ │ interpro · pubchem · chembl · │ │
│ │ europepmc · alphafold · cellxgene · │ │
│ │ ucsc · taxonomy · geo · glygen · │ │
│ │ uniparc · metabolights · proteinatlas │ │
│ │ assembly · dbsnp · plasmid · ena · │ │
│ │ mgnify · reactome · openalex · lipid │ │
│ │ emdb · intact · crosscheck · hgnc · │ │
│ │ biogrid · biosamples · expression · │ │
│ │ unichem · chebi · pride · flybase · │ │
│ │ wormbase · rgd · plants · gnomad · │ │
│ │ godmc · ewas · gtex · opentargets │ │
│ └────────────────────┬───────────────────┘ │
│ ┌────────────────────▼───────────────────┐ │
│ │ core/ (42 client modules · 43 DBs) │ │
│ │ BioHTTP: retry/backoff/rate-limit/ │ │
│ │ LRUCache: thread-safe caching │ │
│ └────────────────────┬───────────────────┘ │
└───────────────────────┼──────────────────────┘
Database Layer
┌───────┬───────┼───────┬───────┬────────────┐
┌──▼──┐ ┌──▼──┐ ┌──▼──┐ ┌──▼──┐ ┌──▼──┐ ┌─────▼─────┐
│NCBI │ │RCSB │ │Uni │ │Ens │ │STRING│ │Enrichr │
│ │ │PDB │ │Prot │ │embl │ │ │ │... 43 DBs │
└─────┘ └─────┘ └─────┘ └─────┘ └─────┘ └───────────┘
```
### Why Enrichr and not g:Profiler?
g:Profiler (Estonia) is frequently unreachable from mainland China; Enrichr (Ma'ayan Lab) is reachable there and provides hundreds of gene-set libraries including GO/KEGG/Reactome/WikiPathways. BioMCP uses Enrichr by default so it works out of the box.
### Why OpenGWAS / DisGeNET are excluded
OpenGWAS has required an API token since 2024-05, and DisGeNET also needs an API key; neither can be used zero-config, so neither is included. Of the databases that are included, all 42 are open, keyless APIs except BioGRID, which needs a `BIOGRID_ACCESS_KEY` environment variable. BioGRID is kept because a key is free on registration and its interaction data is valuable for protein-network analysis.
---
## Project Structure
```
bio-mcp/
├── src/bio_mcp/
│ ├── server.py # MCP server entry point (wires up the 83 tools)
│ ├── core/ # 42 client modules covering 43 databases
│ │ ├── http.py # BioHTTP: retry / backoff / rate-limit / timeout
│ │ ├── cache.py # LRUCache: thread-safe caching layer
│ │ ├── ncbi.py # NCBI E-utilities + BLAST + Assembly + dbSNP + SRA/BioProject/BioSamples
│ │ ├── rcsb.py # RCSB PDB
│ │ ├── uniprot.py # UniProt REST
│ │ ├── enrichr.py # Enrichr enrichment
│ │ ├── ensembl.py # Ensembl genes / homologs / plants
│ │ ├── stringdb.py # STRING interactions
│ │ ├── kegg.py # KEGG pathways
│ │ ├── myvariant.py # MyVariant variants
│ │ ├── interpro.py # InterPro domains
│ │ ├── pubchem.py # PubChem compounds
│ │ ├── europepmc.py # Europe PMC literature
│ │ ├── alphafold.py # AlphaFold structures
│ │ ├── chembl.py # ChEMBL drugs
│ │ ├── cellxgene.py # CELLxGENE single-cell
│ │ ├── ucsc.py # UCSC genomes
│ │ ├── glygen.py # GlyGen glycomics
│ │ ├── uniparc.py # UniParc protein sequence archive
│ │ ├── metabolights.py # Metabolights metabolomics
│ │ ├── proteinatlas.py # Human Protein Atlas
│ │ ├── ena.py # EBI ENA nucleotide archive
│ │ ├── mgnify.py # EBI MGnify microbiome
│ │ ├── reactome.py # Reactome pathways
│ │ ├── openalex.py # OpenAlex literature
│ │ ├── lipidmaps.py # LIPID MAPS lipids
│ │ ├── emdb.py # EBI EMDB cryo-EM structures
│ │ ├── intact.py # EBI IntAct experimental interactions
│ │ ├── hgnc.py # HGNC gene nomenclature
│ │ ├── biogrid.py # BioGRID interactions (API key required)
│ │ ├── expressionatlas.py # EBI Expression Atlas
│ │ ├── unichem.py # UniChem compound ID mapping
│ │ ├── chebi.py # ChEBI compound ontology
│ │ ├── pride.py # EBI PRIDE proteomics
│ │ ├── flybase.py # FlyBase Drosophila
│ │ ├── wormbase.py # WormBase C. elegans
│ │ ├── rgd.py # Rat Genome DB
│ │ ├── gnomad.py # gnomAD population frequency / gene constraint
│ │ ├── godmc.py # GoDMC mQTL
│ │ ├── ewas.py # EWAS Atlas epigenetics
│ │ ├── gtex.py # GTEx tissue expression / eQTL
│ │ └── opentargets.py # Open Targets drug targets
│ └── tools/ # 83 MCP tool definitions
│ ├── intelligence.py # intelligent analysis system
│ ├── honesty.py # honesty agent (connectivity check / tool inventory)
│ ├── plants.py # plant gene tools
│ ├── pubmed.py · ncbi.py · blast.py · pdb.py
│ ├── uniprot.py · enrichment.py · ensembl.py
│ ├── stringdb.py · kegg.py · variant.py
│ ├── interpro.py · pubchem.py · europepmc.py
│ ├── alphafold.py · chembl.py · cellxgene.py
│ ├── ucsc.py · ncbi_extra.py · glygen.py
│ ├── uniparc.py · metabolights.py · proteinatlas.py
│ ├── ena.py · mgnify.py · reactome.py · openalex.py
│ ├── lipidmaps.py · emdb.py · intact.py · crosscheck.py
│ ├── hgnc.py · biogrid.py · biosamples.py
│ ├── expressionatlas.py · unichem.py · chebi.py
│ ├── pride.py · flybase.py · wormbase.py · rgd.py
│ ├── gnomad.py · godmc.py · ewas.py · gtex.py
│ └── opentargets.py
├── tests/ # unit tests (no network)
├── examples/ # client configs and quick start
├── .github/workflows/ # CI (GitHub Actions)
└── pyproject.toml
```
---
## Testing
```bash
# offline unit tests
python -m pytest tests/ -v
```
Honest note on verification status:**
> The original 40 tools (v0.1-0.4) were end-to-end validated against real public databases during development. Most of the 28 tools added in v0.5 (HGNC, BioSamples, UniChem, ChEBI, PRIDE, WormBase, plants, SRA/BioProject, Expression Atlas experiment search, intelligent analysis and the honesty checks) were also validated end-to-end against real data. The 5 tools added in v0.6 (QuickGO ×3, GWAS Catalog ×2) were validated against live APIs. The 10 tools added in v0.7 (gnomAD ×2, GoDMC ×2, EWAS ×2, Open Targets ×2) were validated against live APIs; GTEx ×2 were implemented per the OpenAPI spec with structural checks — the gtexportal endpoints intermittently return 502/SSL errors, so treat `db_health_check` as the live answer. Restricted tools are disclosed honestly: FlyBase is blocked by CloudFront WAF bot detection; Rat Genome DB timed out on the current network; WormBase search is best-effort; BioGRID needs an API key. `expression_atlas_gene` is an honest version — the public REST API no longer exposes numeric per-gene expression values, so it returns matching experiments instead. Run `db_health_check` to confirm what is reachable before relying on a specific database.
> The original 40 tools (v0.1-0.4) were end-to-end validated during development. Most of the 28 tools added in v0.5 were validated against real data during development. The 5 tools added in v0.6 (QuickGO ×3, GWAS Catalog ×2) were e2e-validated against live APIs. The 10 tools added in v0.7 (gnomAD ×2, GoDMC ×2, EWAS ×2, Open Targets ×2) were e2e-validated against live APIs; GTEx ×2 were implemented per OpenAPI with structural checks — the gtexportal endpoints intermittently return 502/SSL errors from some networks, so verify with `db_health_check`. Restricted tools are disclosed honestly: FlyBase is blocked by CloudFront WAF bot detection; Rat Genome DB timed out in the current network; WormBase search is best-effort; BioGRID needs an API key. `expression_atlas_gene` is an honest version — the public REST no longer exposes numeric per-gene expression values, so it returns matching experiments instead. Run `db_health_check` to confirm endpoint reachability before relying on a specific database.
---
## License
BioMCP uses a **dual licensing model**:
- **Academic Use**: MIT License for educational, research, and personal non-commercial use
- **Commercial Use**: Requires a separate commercial license for business integration, revenue generation, or SaaS deployment
For commercial licensing inquiries: https://github.com/qgeng1465
---
## Roadmap
Batch comparative analysis
Virtual cell & organoid data interfaces
More database support
Advanced intelligent analysis (multi-agent collaboration)
Candidate databases: EVA, cBioPortal, GDC, BioMart, SIGNOR, SGD, BioStudies, CTD, WikiPathways, Complex Portal, HCA, MGI/AllianceMine
HTTP/2, response caching, concurrent requests to speed up cross-database validation
---
## Disclaimer
For educational research and personal reasonable use only.
Query results come from public database raw data and are not guaranteed to be completely accurate; please verify with professional tools and original data.
Please comply with database usage terms (NCBI requires ≥3 seconds/request with contact info, already built-in).
For clinical/drug/medical decisions, please consult professionals. Users assume all risks and liabilities.
---
## Support
If BioMCP helps you, consider supporting the project to keep it updated.
<img src="assets/donate.png" alt="Donation QR" width="200">
---
## Citation
If you use BioMCP in your research or publication, please cite:
```bibtex
@software{bio_mcp_2026,
title={BioMCP: A Zero-Config MCP Server for Bioinformatics Databases},
author={qgeng1465},
year={2026},
url={https://github.com/qgeng1465/bio-mcp}
}
```
---
License © 2026 qgeng1465
TDQS
Scored across 73 tools
Multiple tools have nearly interchangeable roles, especially biogrid_interactions vs. biogrid_gene_interactions, hgnc_search vs. hgnc_gene_symbol, and unichem_mapping vs. unichem_structure. Protein interaction data can also be obtained from string_interactions or intact_interactions, while literature search is split across pubmed_search, europepmc_search, and openalex_work_search. Although many database-prefixed searches are distinct, these overlapping boundaries make selection error-prone.
Nearly all names use lower_snake_case and most follow a source-prefix pattern, but the action suffix is not standardized: search, lookup, query, annotate, fetch, and get are used inconsistently, and some names like pdb_structure_summary or protein_tissue_expression have no clear action. The pattern is readable but not predictable enough to support high-confidence selection.
73 tools is far beyond the practical agent context size for reliable selection, even for a broad bioinformatics utility. Many tools could be consolidated, such as merging the BioGRID, UniChem, and HGNC search/detail pairs. The count overwhelms rather than clearly earning each tool's place.
The set covers an unusually broad range of life-science domains, including genes, proteins, variants, literature, structures, pathways, interactions, compounds, model organisms, and multi-omic data repositories. Minor gaps remain, such as no direct retrieval of full expression matrices or raw sequence files from search results, but the search-and-annotate surface is generally adequate.