# ensembl-mcp-server MCP server

Look up genes, fetch sequences, predict variant consequences, find orthologs and xrefs via Ensembl.

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-cyanheads-ensembl-mcp-server
- Repository: https://github.com/cyanheads/ensembl-mcp-server

## Install
- Command: `npx -y @cyanheads/ensembl-mcp-server`
- Endpoint: https://ensembl.caseyjhand.com/mcp
- Auth: Not captured

## Setup notes
- Package: Npm @cyanheads/ensembl-mcp-server v0.1.2
- Environment variable: ENSEMBL_BASE_URL (default https://rest.ensembl.org)
- Environment variable: MCP_LOG_LEVEL (default info)
- Package: Npm @cyanheads/ensembl-mcp-server v0.1.2
- Environment variable: ENSEMBL_BASE_URL (default https://rest.ensembl.org)
- Environment variable: MCP_HTTP_HOST (default 127.0.0.1)
- Environment variable: MCP_HTTP_PORT (default 3010)
- Environment variable: MCP_HTTP_ENDPOINT_PATH (default /mcp)
- Environment variable: MCP_AUTH_MODE (default none)
- Environment variable: MCP_LOG_LEVEL (default info)
- Remote endpoint: https://ensembl.caseyjhand.com/mcp

## Tools
- ensembl_list_species (List Ensembl Species) - List species supported by Ensembl with display name, common name, assembly, taxon ID, and division. Required discovery step — species names like homo_sapiens are opaque to non-biologists and are the input format every other Ensembl tool expects. Filter by division to select one; use nameContains to find a species by partial name match. With no division, returns the endpoint default division — the vertebrates (~356 species on the default GRCh38 endpoint); pass a division to list that division. Endpoint: https://ensembl.caseyjhand.com/mcp
- ensembl_lookup_gene (Lookup Gene) - Resolve a gene by symbol + species (or by stable ID) to its Ensembl ID, genomic location (chr:start-end:strand), biotype, description, and transcript list. Entry point for most workflows — the stable ID and coordinates returned here are inputs to other tools. Accepts both symbol lookup (BRCA2 + homo_sapiens) and direct ID lookup (ENSG00000139618). Supports batch lookup of up to 20 IDs or symbols in one call via the ids or symbols field. Provide exactly one of symbol, id, ids, or symbols. For symbol lookups species defaults to homo_sapiens (override for other organisms); for ID lookups species is not needed. Use ensembl_list_species to discover valid species names. Endpoint: https://ensembl.caseyjhand.com/mcp
- ensembl_get_sequence (Get Sequence) - Fetch the DNA, cDNA, CDS, or protein sequence for a gene, transcript, protein, or genomic region. Returns the sequence with its stable ID, molecule type, and character count — large sequences are returned in full but the length is stated so callers can budget context. The type parameter selects which sequence is fetched: genomic (default, includes introns), cdna (spliced transcript), cds (coding sequence only), protein. For region mode, set id to a region — either species:chr:start-end (e.g. homo_sapiens:13:32315086-32400268) or a bare chr:start-end with species set (e.g. id 13:32315086-32400268, species homo_sapiens). Protein sequences require a transcript or protein stable ID (ENST…/ENSP…), not a gene ID — use ensembl_lookup_gene with expand_transcripts=true to get the canonical transcript ID first. Endpoint: https://ensembl.caseyjhand.com/mcp
- ensembl_query_region (Query Genomic Region) - Find genomic features overlapping a chromosomal region: genes, transcripts, variants, regulatory elements, or exons. Returns each feature with its stable ID, type, location, biotype, and name. Useful for "what's in this locus?" and for seeding follow-up lookups. Region format is chr:start-end (e.g. 13:32315086-32400268 for the BRCA2 locus). Ensembl normalizes chromosome names and canonical vertebrate output omits the chr prefix (13, not chr13); a chr-prefixed name like chr13 is also accepted. The feature parameter defaults to gene only to prevent overwhelming returns — requesting variation in an 85 kb region returns 44,000+ entries. Explicitly include variation, regulatory, transcript, or exon only when needed. Exon rows carry the parent transcript ID, so the same exon appears once per transcript it belongs to. Endpoint: https://ensembl.caseyjhand.com/mcp
- ensembl_predict_variant (Predict Variant Effect) - Predict the functional consequences of a sequence variant using the Ensembl Variant Effect Predictor (VEP). Accepts three input formats: HGVS notation (transcript-relative, e.g. ENST00000380152.8:c.2T>A, or genomic, e.g. 13:g.32316462T>A); region+allele (chr:start:end:strand/allele, e.g. 1:65568:65568:1/T); and a dbSNP rsID (e.g. rs334). Returns the most severe consequence term, affected transcripts and genes, impact level (HIGH/MODERATE/LOW/MODIFIER), and any colocated known variants with clinical significance. HGVS input: provide the full notation including transcript version for best results. Region+allele input: Ensembl normalizes chromosome names and canonical vertebrate output omits the chr prefix (a chr-prefixed name is also accepted). By default the response caps transcript consequences (max_transcript_consequences) and per-variant PubMed IDs (max_pubmed_ids_per_variant) to keep large VEP results compact — well-studied variants like rs334 otherwise carry 60+ consequences and 100+ citations. Truthful totals are always reported; set a cap to 0 (or include_all_colocated_pubmed=true) to retrieve the full set. Endpoint: https://ensembl.caseyjhand.com/mcp
- ensembl_get_homology (Get Gene Homologs) - Find orthologs and/or paralogs of a gene across species. Returns each homolog's stable ID, species, homology type (ortholog_one2one, ortholog_one2many, paralog_many2many, etc.), perc_id (percent identity), perc_pos (percent positives), and taxonomy level. Essential for cross-species research — for example, "what is the mouse equivalent of human TP53?" or "how conserved is BRCA2 across mammals?". Provide either symbol + species or a stable gene ID. Target species can be filtered to a single species or left open to return all available homologs. Endpoint: https://ensembl.caseyjhand.com/mcp
- ensembl_get_xrefs (Get Cross-Database References) - Retrieve cross-database references for a gene or feature — HGNC, UniProt, EntrezGene, OMIM, RefSeq, Reactome, and others. Returns each xref with its database name, primary ID, display ID, and description. The dbname filter narrows to specific databases; omit to return all xrefs. IDs returned here chain to protein (pubchem via UniProt), literature (pubmed via PubMed IDs), disease (OMIM via MIM_GENE), and pathway (Reactome) resources. Requires an Ensembl stable ID — use ensembl_lookup_gene to get the ENSG… ID first. Common dbname values: HGNC, Uniprot_gn, EntrezGene, MIM_GENE, RefSeq_mRNA, RefSeq_peptide, Reactome, GO (Gene Ontology), ChEMBL. Endpoint: https://ensembl.caseyjhand.com/mcp

## Resources
- ensembl://species - Ensembl Species Ensembl species catalog for the endpoint default division — internal name, display name, assembly, taxon ID, and division. On the default GRCh38 endpoint this returns the vertebrate division (~356 species). Stable, injectable context for unfamiliar species names. For a specific division read ensembl://species/{division} (e.g. ensembl://species/EnsemblPlants); the ensembl_list_species tool also filters by division and name. MIME type: application/json
- ensembl://gene/ENSG00000139618 - Ensembl Gene Example: BRCA2 breast cancer susceptibility gene MIME type: application/json
- ensembl://gene/ENSG00000141510 - Ensembl Gene Example: Tumor protein p53 MIME type: application/json
- ensembl://transcript/ENST00000380152 - Ensembl Transcript Example: canonical BRCA2 transcript MIME type: application/json
- ensembl://species/EnsemblVertebrates - Ensembl Species by Division Ensembl-supported species in the EnsemblVertebrates division MIME type: application/json
- ensembl://species/EnsemblPlants - Ensembl Species by Division Ensembl-supported species in the EnsemblPlants division MIME type: application/json
- ensembl://species/EnsemblFungi - Ensembl Species by Division Ensembl-supported species in the EnsemblFungi division MIME type: application/json
- ensembl://species/EnsemblMetazoa - Ensembl Species by Division Ensembl-supported species in the EnsemblMetazoa division MIME type: application/json
- ensembl://species/EnsemblProtists - Ensembl Species by Division Ensembl-supported species in the EnsemblProtists division MIME type: application/json

## Prompts
- ensembl_gene_dossier - Structured research workflow for assembling a complete gene profile. Guides the agent through the Ensembl tool chain in order: symbol → ID + location → protein sequence → key variants → cross-species orthologs → xref IDs for protein and literature follow-up. Arguments: gene_symbol, species

## Metadata
- Owner: io.github.cyanheads
- Version: 0.1.2
- Runtime: Npm
- Transports: STDIO, HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Jun 6, 2026
- Source: https://registry.modelcontextprotocol.io
