Ensembl MCP Server
A Model Context Protocol server providing LLMs with access to the Ensembl genomics database, enabling AI assistants to query gene information, sequences, variants, and other genomic data across multiple species.
README Documentation
🧬 Ensembl API MCP Server
A full-featured Model Context Protocol (MCP) server that exposes Ensembl’s REST API. Built using the TypeScript MCP SDK
- Comprehensive coverage – 10 tools map to functional areas instead of 100 + individual endpoints, yet still expose nearly the whole API.
- Production-ready – TypeScript throughout, robust error handling, and a tidy API-client layer.
- Biologist-friendly – grouped by biological task (genes, variants, compara…), not by low-level REST paths.
Listed on:
Use cases:
- 🧬 Gene information – fetch details by ID or symbol
- 🔍 Gene search – scan genes across any species
- 🧬 Sequence retrieval – pull DNA for any genomic region
- 🔬 Variant data – explore variants and their annotations
- 📊 Transcript info – inspect transcripts and isoforms
- 🌍 Multi-species – every species in Ensembl, right here
- 🔗 Cross-references – hop to external databases in one call
- ⚡ Rate-limited – built-in throttling keeps you within Ensembl limits
Installation
Choose your preferred installation method:
Option 1: Via Smithery
- Visit Smithery - Ensembl MCP Server. The most common platform options include:
# claude code:
npx -y @smithery/cli@latest install @effieklimi/ensembl-mcp-server --client claude --key your-smithery-secret-key
# cursor:
npx -y @smithery/cli@latest install @effieklimi/ensembl-mcp-server --client cursor --key your-smithery-secret-key
# vscode:
npx -y @smithery/cli@latest install @effieklimi/ensembl-mcp-server --client vscode --key your-smithery-secret-key
# windsurf:
npx -y @smithery/cli@latest install @effieklimi/ensembl-mcp-server --client windsurf --key your-smithery-secret-key
Check the MCP's smithery link for additional platform options.
Option 2: Local Development Setup
For development or custom setups:
-
Clone and install dependencies:
git clone https://github.com/effieklimi/ensembl-mcp-server.git cd ensembl-mcp-server npm install
-
Configure Claude Desktop manually:
Edit your config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%/Claude/claude_desktop_config.json
Add this server configuration:
{ "mcpServers": { "ensembl": { "command": "npm", "args": ["run", "start"], "cwd": "/absolute/path/to/ensembl-mcp-server" } } }
- macOS:
-
Restart Claude Desktop - The Ensembl tools will appear in your available tools
Development Setup
# Development with hot reload
npm run dev
# Run tests
npm test
# Production build (optional)
npm run build
npm run start:prod
Contributing
We'd love your help! Here's how to get started:
Quick Contact
- Email the dev: effie@effie.bio
Development Workflow
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/ensembl-mcp-server.git cd ensembl-mcp-server
- Install dependencies:
npm install
- Run tests to make sure everything works:
npm test
- Start development server:
npm run dev
- Make your changes and test thoroughly
- Submit a pull request
Available Scripts
npm run dev
- Development with hot reloadnpm run start
- Run the servernpm test
- Run all testsnpm run build
- Compile TypeScript (optional)npm run start:prod
- Run compiled version
The ten tools (with endpoints)
1 · ensembl_feature_overlap
Find genes, transcripts, or regulatory elements that overlap a region or another feature.
GET /overlap/region/:species/:region
GET /overlap/id/:id
Typical asks: “Which genes sit in chr17:43-44 Mb?” – “What overlaps BRCA1?”
2 · ensembl_regulatory
Regulatory features, binding matrices and related annotations.
GET /overlap/region/:species/:region (with regulatory filters)
GET /overlap/translation/:id (regulatory features on proteins)
GET /species/:species/binding_matrix/:binding_matrix_stable_id
Use cases: TF-binding sites, regulatory annotation.
3 · ensembl_protein_features
Protein-level domains and functional sites.
GET /overlap/translation/:id
Use cases: protein domains, signal peptides, catalytic residues.
4 · ensembl_meta
Server metadata, species lists, release info, and diagnostics.
GET /info/ping
GET /info/rest
GET /info/software
GET /info/data
GET /info/species
GET /info/divisions
GET /info/assembly/:species
GET /info/biotypes/:species
GET /info/analysis/:species
GET /info/external_dbs/:species
GET /info/variation/:species
GET /archive/id/:id
POST /archive/id
Typical asks: “Which assemblies do you have for human?” – server health checks.
5 · ensembl_lookup
Translate IDs ↔ symbols, pull xrefs, recode variants.
GET /lookup/id/:id
GET /lookup/symbol/:species/:symbol
POST /lookup/id
POST /lookup/symbol
GET /xrefs/id/:id
GET /xrefs/symbol/:species/:symbol
GET /xrefs/name/:species/:name
GET /variant_recoder/:species/:id
POST /variant_recoder/:species
Use cases: “What is BRCA1’s Ensembl ID?” – cross-reference UniProt.
6 · ensembl_sequence
Retrieve DNA, RNA or protein sequences.
GET /sequence/id/:id
GET /sequence/region/:species/:region
POST /sequence/id
POST /sequence/region
Use cases: gene FASTA, transcript cDNA, genomic regions.
7 · ensembl_mapping
Coordinate conversion (genome ↔ cDNA/CDS/protein) and assembly lift-over.
GET /map/cdna/:id/:region
GET /map/cds/:id/:region
GET /map/translation/:id/:region
GET /map/:species/:asm_one/:region/:asm_two
Use cases: map CDS to GRCh38, convert protein to genome coords.
8 · ensembl_compara
Comparative genomics—homology, gene trees, alignments.
GET /homology/id/:species/:id
GET /homology/symbol/:species/:symbol
GET /genetree/id/:id
GET /genetree/member/symbol/:species/:symbol
GET /genetree/member/id/:species/:id
GET /cafe/genetree/id/:id
GET /cafe/genetree/member/symbol/:species/:symbol
GET /cafe/genetree/member/id/:species/:id
GET /alignment/region/:species/:region
Use cases: find orthologs, build phylogenies, pull species alignments.
9 · ensembl_variation
Variant lookup, VEP consequences, LD, phenotype mapping.
GET /variation/:species/:id
GET /variation/:species/pmcid/:pmcid
GET /variation/:species/pmid/:pmid
POST /variation/:species
GET /vep/:species/hgvs/:hgvs_notation
POST /vep/:species/hgvs
GET /vep/:species/id/:id
POST /vep/:species/id
GET /vep/:species/region/:region/:allele
POST /vep/:species/region
GET /ld/:species/:id/:population_name
GET /phenotype/variant/:species/:id
GET /phenotype/region/:species/:region
GET /transcript_haplotypes/:species/:id
Use cases: VEP predictions, LD blocks, phenotype associations.
10 · ensembl_ontotax
Ontology term search and NCBI taxonomy traversal.
GET /ontology/id/:id
GET /ontology/name/:name
GET /taxonomy/id/:id
GET /taxonomy/name/:name
Use cases: GO term look-up, phenotype ontology, taxonomic classification.
Installing via Smithery
To install ensembl-mcp-server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @effieklimi/ensembl-mcp-server --client claude