# Enrichr MCP Server
A Model Context Protocol (MCP) server that provides gene set enrichment analysis using the [Enrichr](https://maayanlab.cloud/Enrichr/) API. This server supports all available gene set libraries from Enrichr and returns only statistically significant results (corrected-$p$ < 0.05) for LLM tools to interpret.
[](https://smithery.ai/server/enrichr-mcp-server)
## Installation
### Claude Desktop
Download the latest [MCPB bundle](https://github.com/tianqitang1/enrichr-mcp-server/releases/latest) (`.mcpb` file) and install it via `☰ (top left) -> File -> Settings`, then drag and drop the file into the Settings window.
### Cursor / VS Code
Use the buttons below to install with default settings:
[](https://cursor.com/install-mcp?name=enrichr-mcp-server&config=eyJjb21tYW5kIjoibnB4IC15IGVucmljaHItbWNwLXNlcnZlciAtLWNvbXBhY3QgLS1tYXgtdGVybXMgMTAwIn0%3D)
[](https://vscode.dev/redirect?url=vscode%3Amcp/install%3F%257B%2522name%2522%253A%2522enrichr-mcp-server%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522-y%2522%252C%2522enrichr-mcp-server%2522%252C%2522--compact%2522%252C%2522--max-terms%2522%252C%2522100%2522%255D%257D)
[](https://vscode.dev/redirect?url=vscode-insiders%3Amcp/install%3F%257B%2522name%2522%253A%2522enrichr-mcp-server%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522-y%2522%252C%2522enrichr-mcp-server%2522%252C%2522--compact%2522%252C%2522--max-terms%2522%252C%2522100%2522%255D%257D)
### Claude Code
```bash
claude mcp add enrichr-mcp-server -- npx -y enrichr-mcp-server
```
Or install as a Claude Code plugin:
```bash
/plugin install enrichr-mcp-server
```
### Smithery
```bash
npx -y @smithery/cli install enrichr-mcp-server --client claude
```
### Manual Configuration
Add to your MCP client config (e.g., `.cursor/mcp.json`):
```json
{
"mcpServers": {
"enrichr-server": {
"command": "npx",
"args": ["-y", "enrichr-mcp-server"]
}
}
}
```
## Features
- **Two Tools**: `enrichr_analysis` for running enrichment, `suggest_libraries` for discovering relevant libraries
- **Library Catalog**: Browse 200+ libraries by category via MCP resources
- **Guided Workflow**: `enrichment_analysis` prompt for end-to-end analysis with interpretation
- **22 Library Categories**: Programmatic category mapping for all libraries (pathways, cancer, kinases, etc.)
- **Parallel Library Queries**: All libraries queried in parallel for fast multi-database analysis
- **Structured Output**: Returns both human-readable text and structured JSON for programmatic use
- **Configurable Output Formats**: Detailed, compact, or minimal to manage token usage
- **TSV Export**: Save complete results to TSV files
## Tools
### `suggest_libraries`
Discover the most relevant Enrichr libraries for a research question. Use this before `enrichr_analysis` to pick the best libraries for your specific topic. **No network call needed** — searches locally across all library names and descriptions.
**Parameters:**
- `query` (required): Research context (e.g., "DNA repair", "breast cancer drug resistance")
- `category` (optional): Filter by category (e.g., `cancer`, `pathways`, `kinases`)
- `maxResults` (optional): Max results to return (default: 10, max: 50)
**Returns:**
- Ranked list of libraries with relevance scores, categories, and descriptions
- Structured JSON with suggestions array
### `enrichr_analysis`
Perform enrichment analysis across multiple Enrichr libraries in parallel.
**Parameters:**
- `genes` (required): Array of gene symbols (e.g., `["TP53", "BRCA1", "EGFR"]`) — minimum 2
- `libraries` (optional): Array of Enrichr library names to query (defaults to configured libraries)
- `description` (optional): Description for the gene list
- `maxTerms` (optional): Maximum terms per library (default: 50)
- `format` (optional): Output format: `detailed`, `compact`, `minimal`
- `outputFile` (optional): Path to save complete results as TSV file
**Returns:**
- Text content with formatted significant terms (name, p-values, odds ratio, combined score, overlapping genes)
- Structured JSON output with full result data
## Resources
| URI | Description |
|-----|-------------|
| `enrichr://libraries` | Full library catalog organized by category |
| `enrichr://libraries/{category}` | Libraries for a specific category (e.g., `enrichr://libraries/cancer`) |
## Prompts
### `enrichment_analysis`
Guided workflow for gene set enrichment analysis. Accepts a gene list and optional research context, then walks through library selection, analysis, and interpretation.
**Arguments:**
- `genes` (required): Gene symbols, comma or newline separated
- `context` (optional): Research context for library selection (triggers `suggest_libraries` step)
## Library Categories
All 200+ libraries are organized into 22 categories:
| Category | Examples |
|----------|----------|
| `transcription` | ChEA_2022, ENCODE_TF_ChIP-seq_2015, TRANSFAC_and_JASPAR_PWMs |
| `pathways` | KEGG_2021_Human, Reactome_2022, WikiPathways_2023_Human, MSigDB_Hallmark_2020 |
| `ontologies` | GO_Biological_Process_2025, GO_Molecular_Function_2025, Human_Phenotype_Ontology |
| `diseases_drugs` | GWAS_Catalog_2023, DrugBank_2022, OMIM_Disease, DisGeNET |
| `cell_types` | GTEx_Tissue_Expression_Up, CellMarker_2024, Tabula_Sapiens |
| `microRNAs` | TargetScan_microRNA_2017, miRTarBase_2022, MiRDB_2019 |
| `epigenetics` | Epigenomics_Roadmap_HM_ChIP-seq, JASPAR_2022, Cistrome_2023 |
| `kinases` | KEA_2015, PhosphoSitePlus_2023, PTMsigDB_2023 |
| `gene_perturbations` | LINCS_L1000_CRISPR_KO_Consensus_Sigs, CRISPR_GenomeWide_2023 |
| `metabolomics` | HMDB_Metabolites, Metabolomics_Workbench_2023, SMPDB_2023 |
| `aging` | Aging_Perturbations_from_GEO_down, GenAge_2023, Longevity_Map_2023 |
| `protein_families` | InterPro_Domains_2019, Pfam_Domains_2019, UniProt_Keywords_2023 |
| `computational` | Enrichr_Submissions_TF-Gene_Coocurrence, ARCHS4_TF_Coexp |
| `literature` | Rummagene_signatures, AutoRIF, GeneRIF |
| `cancer` | COSMIC_Cancer_Gene_Census, TCGA_Mutations_2023, OncoKB_2023, GDSC_2023 |
| `single_cell` | Human_Cell_Landscape, scRNAseq_Datasets_2023, SingleCellSignatures_2023 |
| `chromosome` | Chromosome_Location, Chromosome_Location_hg19 |
| `protein_interactions` | STRING_Interactions_2023, BioGRID_2023, IntAct_2023, MINT_2023 |
| `structural` | PDB_Structural_Annotations, AlphaFold_2023 |
| `immunology` | ImmuneSigDB, ImmPort_2023, Immunological_Signatures_MSigDB |
| `development` | ESCAPE, Developmental_Signatures_2023 |
| `other` | MSigDB_Computational, HGNC_Gene_Families, Open_Targets_2023 |
Use `suggest_libraries` to search across all categories, or read `enrichr://libraries/{category}` for the full list in any category.
## Configuration
### Command Line Options
| Option | Short | Description | Default |
|--------|-------|-------------|---------|
| `--libraries ` | `-l` | Comma-separated list of Enrichr libraries to query | `pop` |
| `--max-terms ` | `-m` | Maximum terms to show per library | `50` |
| `--format ` | `-f` | Output format: `detailed`, `compact`, `minimal` | `detailed` |
| `--output ` | `-o` | Save complete results to TSV file | _(none)_ |
| `--compact` | `-c` | Use compact format (same as `--format compact`) | _(flag)_ |
| `--minimal` | | Use minimal format (same as `--format minimal`) | _(flag)_ |
| `--help` | `-h` | Show help message | _(flag)_ |
#### Format Options
- **`detailed`**: Full details including p-values, odds ratios, and gene lists (default)
- **`compact`**: Term name + p-value + gene count (saves ~50% tokens)
- **`minimal`**: Just term name + p-value (saves ~80% tokens)
### Environment Variables
| Variable | Description | Example |
|----------|-------------|---------|
| `ENRICHR_LIBRARIES` | Comma-separated list of libraries | `GO_Biological_Process_2025,KEGG_2021_Human` |
| `ENRICHR_MAX_TERMS` | Maximum terms per library | `20` |
| `ENRICHR_FORMAT` | Output format | `compact` |
| `ENRICHR_OUTPUT_FILE` | TSV output file path | `/tmp/enrichr_results.tsv` |
**Note**: CLI arguments take precedence over environment variables.
### Multiple Server Instances
Set up different instances for different research contexts:
```json
{
"mcpServers": {
"enrichr-pathways": {
"command": "npx",
"args": ["-y", "enrichr-mcp-server", "-l", "GO_Biological_Process_2025,KEGG_2021_Human,Reactome_2022"]
},
"enrichr-disease": {
"command": "npx",
"args": ["-y", "enrichr-mcp-server", "-l", "Human_Phenotype_Ontology,OMIM_Disease,ClinVar_2019"]
}
}
}
```
### Popular Libraries (Default)
When using the default `-l pop` configuration:
| Library | Description |
|---------|-------------|
| `GO_Biological_Process_2025` | Gene Ontology terms describing biological objectives accomplished by gene products. |
| `KEGG_2021_Human` | Metabolic and signaling pathways from KEGG for human. |
| `Reactome_2022` | Curated and peer-reviewed pathways covering signaling, metabolism, and disease. |
| `MSigDB_Hallmark_2020` | Hallmark gene sets representing well-defined biological states and processes. |
| `ChEA_2022` | ChIP-seq experiments identifying transcription factor-gene interactions. |
| `GWAS_Catalog_2023` | Genome-wide association study results linking genes to traits. |
| `Human_Phenotype_Ontology` | Standardized vocabulary of phenotypic abnormalities associated with human diseases. |
| `STRING_Interactions_2023` | Protein interactions from STRING including experimental and predicted. |
| `DrugBank_2022` | Drug targets from DrugBank including approved and experimental compounds. |
| `CellMarker_2024` | Manually curated cell type markers for human and mouse. |
## API Details
This server uses the Enrichr API:
- **Add List Endpoint**: `https://maayanlab.cloud/Enrichr/addList`
- **Enrichment Endpoint**: `https://maayanlab.cloud/Enrichr/enrich`
- **Supported Libraries**: All libraries available through the [Enrichr web interface](https://maayanlab.cloud/Enrichr/#libraries)
## Development
```bash
npm run build # Build TypeScript
npm test # Run tests (unit + integration + MCP protocol)
npm run test:watch # Run tests in watch mode
npm run watch # Auto-rebuild on file changes
npm run inspector # Debug with MCP inspector
```
## Requirements
- Node.js 18+
- Internet connection for Enrichr API access
## License
MIT
## References
- Chen EY, Tan CM, Kou Y, Duan Q, Wang Z, Meirelles GV, Clark NR, Ma'ayan A. Enrichr: interactive and collaborative HTML5 gene list enrichment analysis tool. BMC Bioinformatics. 2013; 128(14).
- Kuleshov MV, Jones MR, Rouillard AD, Fernandez NF, Duan Q, Wang Z, Koplev S, Jenkins SL, Jagodnik KM, Lachmann A, McDermott MG, Monteiro CD, Gundersen GW, Ma'ayan A. Enrichr: a comprehensive gene set enrichment analysis web server 2016 update. Nucleic Acids Research. 2016; gkw377.
- Xie Z, Bailey A, Kuleshov MV, Clarke DJB., Evangelista JE, Jenkins SL, Lachmann A, Wojciechowicz ML, Kropiwnicki E, Jagodnik KM, Jeon M, & Ma'ayan A. Gene set knowledge discovery with Enrichr. Current Protocols, 1, e90. 2021. doi: 10.1002/cpz1.90
- [Enrichr](https://maayanlab.cloud/Enrichr/)
- [Model Context Protocol](https://modelcontextprotocol.io/)
- [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk)