Skip to main content
Glama

🧬 Ensembl API MCP Server

smithery badge

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

  1. 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:

  1. Clone and install dependencies:

    git clone https://github.com/effieklimi/ensembl-mcp-server.git cd ensembl-mcp-server npm install
  2. 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" } } }
  3. 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

Development Workflow

  1. Fork the repository

  2. Clone your fork:

    git clone https://github.com/YOUR_USERNAME/ensembl-mcp-server.git cd ensembl-mcp-server
  3. Install dependencies:

    npm install
  4. Run tests to make sure everything works:

    npm test
  5. Start development server:

    npm run dev
  6. Make your changes and test thoroughly

  7. Submit a pull request

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


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

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/effieklimi/ensembl-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server