Skip to main content
Glama
README.md
# 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.

[![MCP](https://img.shields.io/badge/MCP-Server-7c5cff?style=flat-square)](https://modelcontextprotocol.io)
[![PyPI](https://img.shields.io/pypi/v/biomcp-server?style=flat-square&logo=pypi&logoColor=white)](https://pypi.org/project/biomcp-server/)
[![Tools](https://img.shields.io/badge/Tools-83-0ea5e9?style=flat-square)](https://github.com/qgeng1465/bio-mcp)
[![Databases](https://img.shields.io/badge/Databases-43-22c55e?style=flat-square)](https://github.com/qgeng1465/bio-mcp)
[![Python](https://img.shields.io/badge/Python-3.10%2B-2ea44f?style=flat-square)](https://www.python.org)
[![License](https://img.shields.io/badge/License-Dual%20License-blue?style=flat-square)](LICENSE)
[![Platform](https://img.shields.io/badge/Platform-win%20%7C%20mac%20%7C%20linux-lightgrey?style=flat-square)](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

B3.1/5.0

Scored across 73 tools

Disambiguation2/5

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.

Naming Consistency3/5

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.

Tool Count2/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues