🚀 🧬 Ensembl API MCP Server
A full - featured Model Context Protocol (MCP) server that exposes Ensembl’s REST API.
This server, built using the TypeScript MCP SDK, offers the following advantages:
- Comprehensive coverage: 10 tools map to functional areas instead of 100 + individual endpoints, yet still expose nearly the whole API.
- Production - ready: It uses TypeScript throughout, has 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:
🚀 Quick Start
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:
npx -y @smithery/cli@latest install @effieklimi/ensembl-mcp-server --client claude --key your-smithery-secret-key
npx -y @smithery/cli@latest install @effieklimi/ensembl-mcp-server --client cursor --key your-smithery-secret-key
npx -y @smithery/cli@latest install @effieklimi/ensembl-mcp-server --client vscode --key your-smithery-secret-key
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"
    }
  }
}
 
- 
Restart Claude Desktop - The Ensembl tools will appear in your available tools 
Development Setup
npm run dev
npm test
npm run build
npm run start:prod
💻 Usage Examples
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
📚 Documentation
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.
🔧 Technical Details
Available Scripts
- npm run dev- Development with hot reload
- npm run start- Run the server
- npm test- Run all tests
- npm run build- Compile TypeScript (optional)
- npm run start:prod- Run compiled version
🤝 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