Ensembl MCP Server

# Unofficial Ensembl MCP Server
A comprehensive Model Context Protocol (MCP) server that provides access to the Ensembl REST API for genomic data, comparative genomics, and biological annotations.
**Developed by [Augmented Nature](https://augmentednature.ai)**
## Overview
This server enables seamless access to Ensembl's vast genomic database through a standardized MCP interface. It supports gene lookups, sequence retrieval, variant analysis, comparative genomics, regulatory features, and much more across multiple species.
## Features
### Gene & Transcript Information
- **Gene Lookup**: Get detailed gene information by Ensembl ID or gene symbol
- **Transcript Analysis**: Retrieve all transcripts for a gene with structural details
- **Gene Search**: Search genes by name, description, or identifier with filtering options
### Sequence Data
- **Genomic Sequences**: Extract DNA sequences for any genomic region or feature
- **CDS Sequences**: Get coding sequences for specific transcripts
- **Sequence Translation**: Translate DNA sequences to protein sequences
- **Repeat Masking**: Support for hard and soft repeat masking
### Comparative Genomics
- **Homolog Detection**: Find orthologous and paralogous genes across species
- **Phylogenetic Trees**: Generate gene family trees in multiple formats
- **Cross-Species Analysis**: Compare genes and genomes across different organisms
### Variant Data
- **Variant Retrieval**: Get genetic variants in genomic regions
- **Consequence Prediction**: Predict variant effects on genes and transcripts
- **Population Genetics**: Access allele frequencies and population data
### Regulatory Features
- **Regulatory Elements**: Access enhancers, promoters, and TFBS data
- **Motif Features**: Get transcription factor binding motifs
- **Cell Type Context**: Filter regulatory features by cell type
### Cross-References & Annotations
- **External Database Links**: Get cross-references to PDB, EMBL, RefSeq, etc.
- **Coordinate Mapping**: Convert coordinates between genome assemblies
- **Ontology Terms**: Access GO terms and functional annotations
### Species & Assembly Information
- **Species Lists**: Browse available species and assemblies
- **Assembly Statistics**: Get genome assembly information and statistics
- **Karyotype Data**: Access chromosome information and banding patterns
### Batch Processing
- **Batch Gene Lookup**: Process multiple genes simultaneously
- **Batch Sequence Fetch**: Retrieve sequences for multiple regions efficiently
## Installation
```bash
# Clone or download the server files
cd ensembl-server
# Install dependencies
npm install
# Build the server
npm run build
```
## Usage with Claude Desktop
### Setup Instructions
1. **Build the server** (if not already done):
```bash
npm run build
```
2. **Add to Claude Desktop configuration**:
- Open Claude Desktop
- Go to Settings → MCP Servers
- Add a new server with:
- **Name**: `ensembl`
- **Command**: `node`
- **Args**: `/path/to/ensembl-server/build/index.js`
3. **Restart Claude Desktop** to load the server
### Available Tools (25 total)
#### Gene & Transcript Information
- `lookup_gene` - Get detailed gene information by stable ID or symbol
- `get_transcripts` - Get all transcripts for a gene with detailed structure
- `search_genes` - Search for genes by name, description, or identifier
#### Sequence Data
- `get_sequence` - Get DNA sequence for genomic coordinates or gene/transcript ID
- `get_cds_sequence` - Get coding sequence (CDS) for a transcript
- `translate_sequence` - Translate DNA sequence to protein sequence
#### Comparative Genomics
- `get_homologs` - Find orthologous and paralogous genes across species
- `get_gene_tree` - Get phylogenetic tree for gene family
#### Variant Data
- `get_variants` - Get genetic variants in a genomic region
- `get_variant_consequences` - Predict consequences of variants on genes and transcripts
#### Regulatory Features
- `get_regulatory_features` - Get regulatory elements in genomic region
- `get_motif_features` - Get transcription factor binding motifs in genomic region
#### Cross-References & Annotations
- `get_xrefs` - Get external database cross-references for genes
- `map_coordinates` - Convert coordinates between genome assemblies
#### Species & Assembly Information
- `list_species` - Get list of available species and assemblies
- `get_assembly_info` - Get genome assembly information and statistics
- `get_karyotype` - Get chromosome information and karyotype
#### Batch Processing
- `batch_gene_lookup` - Look up multiple genes simultaneously
- `batch_sequence_fetch` - Fetch sequences for multiple regions or features
### Example Usage in Claude Desktop
Once connected, you can use natural language to access genomic data:
- "Look up the BRCA2 gene and get its sequence"
- "Find orthologs of TP53 in mouse"
- "Get variants in the region chr17:43044295-43125364"
- "Search for insulin-related genes"
- "Get the assembly information for human genome"
- "Translate this DNA sequence to protein: ATGAAACGC..."
## Supported Species
The server supports all species available in Ensembl, including:
- **Vertebrates**: Human, Mouse, Rat, Zebrafish, etc.
- **Plants**: Arabidopsis, Rice, Wheat, etc.
- **Fungi**: Yeast, etc.
- **Protists**: Various protist species
- **Metazoa**: Drosophila, C. elegans, etc.
Default species is `homo_sapiens` when not specified.
## Input Formats
### Genomic Regions
- `chr1:1000000-2000000` - Standard format
- `1:1000000-2000000` - Without 'chr' prefix
- `ENSG00000139618` - Feature IDs
### Gene/Transcript IDs
- Ensembl IDs: `ENSG00000139618`, `ENST00000380152`
- Gene symbols: `BRCA2`, `TP53`
- RefSeq IDs: `NM_000059`
## Output Formats
### Primary Formats
- **JSON**: Structured data (default for most tools)
- **FASTA**: Sequence data
- **GFF**: Genomic feature format
- **VCF**: Variant call format
### Tree Formats
- **JSON**: Structured tree data
- **Newick**: Standard phylogenetic format
- **PhyloXML**: Rich phylogenetic format
## Error Handling
The server provides comprehensive error handling:
- **Invalid Parameters**: Clear validation messages
- **API Errors**: Detailed error information from Ensembl
- **Network Issues**: Timeout and connectivity error handling
- **Species Validation**: Automatic species name validation
## Rate Limiting
The server respects Ensembl's rate limiting guidelines:
- Maximum 15 requests per second
- Appropriate delays between batch operations
- Connection pooling for efficiency
## Configuration
### Environment Variables
- `ENSEMBL_BASE_URL`: Override default API base URL
- `REQUEST_TIMEOUT`: Set custom timeout (default: 30000ms)
### Species Configuration
- Default species: `homo_sapiens`
- Automatic species validation
- Support for all Ensembl divisions
## API Coverage
This server provides access to major Ensembl REST API endpoints:
### Lookup & Search
- `/lookup/id/{id}` - Gene/transcript lookup
- `/search` - Gene search functionality
### Sequences
- `/sequence/id/{id}` - Feature sequences
- `/sequence/region/{species}/{region}` - Genomic sequences
### Comparative Genomics
- `/homology/id/{id}` - Homology data
- `/genetree/id/{id}` - Gene trees
### Variation
- `/variation/region/{species}/{region}` - Variant data
- `/vep/species/{species}/region` - Variant effect prediction
### Regulation
- `/regulatory/species/{species}/region/{region}` - Regulatory features
- `/regulatory/species/{species}/microarray/{region}` - Motif features
### Cross-references
- `/xrefs/id/{id}` - External database references
- `/map/coords/{species}/{assembly}/{region}` - Coordinate mapping
### Information
- `/info/species` - Available species
- `/info/assembly/{species}` - Assembly information
## Support
For issues related to:
- **Server functionality**: Check server logs and error messages
- **Ensembl data**: Refer to [Ensembl documentation](https://rest.ensembl.org/)
- **API usage**: See [Ensembl REST API guide](https://github.com/Ensembl/ensembl-rest/wiki)
## Contributing
Contributions are welcome! Please ensure:
- TypeScript compliance
- Comprehensive error handling
- Documentation updates
- Test coverage for new features
## Related Tools
This server integrates well with other bioinformatics MCP servers:
- **UniProt Server**: Protein data integration
- **AlphaFold Server**: 3D structure predictions
- **STRING Server**: Protein interaction networks
- **PDB Server**: Structural biology data
## About Augmented Nature
This Ensembl MCP Server is developed by [Augmented Nature](https://augmentednature.ai), a company focused on building AI-powered tools for scientific research and discovery.
## Citation
If you use this project in your research or publications, please cite it as follows:
```bibtex @misc{ensemblmcp2025,
author = {Moudather Chelbi},
title = {Ensembl MCP Server},
year = {2025},
howpublished = {https://github.com/Augmented-Nature/Ensembl-MCP-Server},
note = {Accessed: 2025-06-29}
TDQS
Scored across 19 tools
Every tool has a clearly distinct purpose with no ambiguity. For example, 'lookup_gene' retrieves detailed gene information, 'search_genes' finds genes by name or description, and 'get_transcripts' focuses on transcript structures, ensuring agents can easily differentiate between them.
All tool names follow a consistent verb_noun pattern using snake_case, such as 'get_sequence', 'list_species', and 'search_genes'. This uniformity makes the toolset predictable and easy to navigate for agents.
With 19 tools, the server is well-scoped for genomic data analysis, covering diverse operations like sequence fetching, variant analysis, and gene lookups. Each tool earns its place without feeling excessive or insufficient for the domain.
The toolset provides complete coverage for genomic workflows, including data retrieval (e.g., 'get_sequence'), analysis (e.g., 'get_variant_consequences'), and utilities (e.g., 'map_coordinates'). There are no obvious gaps, supporting comprehensive agent operations in this domain.