effieklimi/ensembl-mcp-server
If you are the rightful owner of ensembl-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The Ensembl API MCP Server is a comprehensive Model Context Protocol server that provides access to Ensembl's REST API, designed for biologists and developers.
🧬 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:
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