io.github.cyanheads/ensembl-mcp-server
REMOTE · ENSEMBL.CASEYJHAND.COM · 2 COMPONENTS
Look up genes, sequences, variants, homologs, and cross-database xrefs from Ensembl REST.
Available components
Last scanned (22 hours ago)
Scores higher than 97% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Health and Science
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security83
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability76
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 5091 tokens (~299/item across 17 items; 7 tools + 10 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 9 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Checks we ran (13)
- TLS certificate
- Authorization
- HTTPS
- HSTS header
- DNSSEC
- Transport
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Does not apply to this hosted endpoint (2)
- Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
- Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
The score does not measure everything. What the score does not measure →
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 29 Oct 26 0
- Tool “ensembl_get_xrefs” rewrote its description, which is the text the model reads security
- Tool “ensembl_get_homology” rewrote its description, which is the text the model reads security
- Server version: 0.7.0 → 0.7.1 functional
- “ensembl_get_xrefs” reworded the description of “dbname” cosmetic
- 28 Oct 26 0
- New resource “ensembl-guide” functional
- Server version: 0.6.2 → 0.7.0 functional
- 25 Oct 26 0
- Server version: 0.6.1 → 0.6.2 functional
- 19 Oct 26 0
- Tool “ensembl_lookup_gene” rewrote its description, which is the text the model reads security
- Tool “ensembl_get_homology” rewrote its description, which is the text the model reads security
- Tool “ensembl_get_sequence” rewrote its description, which is the text the model reads security
- Tool “ensembl_get_xrefs” rewrote its description, which is the text the model reads security
- Server version: 0.6.0 → 0.6.1 functional
- “ensembl_get_xrefs” added an optional parameter “all_levels” cosmetic
- “ensembl_get_xrefs” reworded the description of “id” cosmetic
- “ensembl_query_region” reworded the description of “biotype” cosmetic
- “ensembl_lookup_gene” reworded the description of “symbols” cosmetic
- “ensembl_lookup_gene” reworded the description of “ids” cosmetic
- “ensembl_get_xrefs” reworded the description of “dbname” cosmetic
- 13 Oct 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “ensembl_query_region” rewrote its description, which is the text the model reads security
- Tool “ensembl_lookup_gene” rewrote its description, which is the text the model reads security
- Tool “ensembl_list_species” rewrote its description, which is the text the model reads security
- Tool “ensembl_get_sequence” rewrote its description, which is the text the model reads security
- Schema quality: 236 → 289 ▼ functional
- Server version: 0.5.1 → 0.6.0 functional
- “ensembl_list_species” added an optional parameter “offset” cosmetic
- “ensembl_list_species” added an optional parameter “max_results” cosmetic
- “ensembl_get_sequence” reworded the description of “id” cosmetic
- “ensembl_query_region” reworded the description of “species” cosmetic
- “ensembl_query_region” reworded the description of “region” cosmetic
- “ensembl_predict_variant” reworded the description of “species” cosmetic
- “ensembl_lookup_gene” reworded the description of “symbols” cosmetic
- “ensembl_lookup_gene” reworded the description of “symbol” cosmetic
- “ensembl_lookup_gene” reworded the description of “species” cosmetic
- “ensembl_lookup_gene” reworded the description of “ids” cosmetic
- “ensembl_lookup_gene” reworded the description of “id” cosmetic
- “ensembl_get_xrefs” reworded the description of “id” cosmetic
- “ensembl_get_sequence” reworded the description of “type” cosmetic
- “ensembl_get_sequence” reworded the description of “species” cosmetic
- “ensembl_get_sequence” reworded the description of “expand_5prime” cosmetic
- “ensembl_get_sequence” reworded the description of “expand_3prime” cosmetic
- “ensembl_get_homology” reworded the description of “target_species” cosmetic
- “ensembl_get_homology” reworded the description of “species” cosmetic
- “ensembl_get_homology” reworded the description of “id” cosmetic
- “ensembl_query_region” made “species” optional cosmetic
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 24 Sept 26 0
- Tool “ensembl_get_sequence” rewrote its description, which is the text the model reads security
- Tool “ensembl_query_region” rewrote its description, which is the text the model reads security
- Schema quality: 214 → 236 ▼ functional
- Server version: 0.4.4 → 0.5.0 functional
- “ensembl_query_region” added an optional parameter “max_results” cosmetic
- “ensembl_get_sequence” added an optional parameter “offset” cosmetic
- “ensembl_get_sequence” added an optional parameter “max_length” cosmetic
- “ensembl_get_sequence” reworded the description of “type” cosmetic
- “ensembl_get_sequence” reworded the description of “id” cosmetic
- “ensembl_query_region” reworded the description of “region” cosmetic
- “ensembl_query_region” reworded the description of “feature” cosmetic
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://ensembl.caseyjhand.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=caseyjhand.com | CN=WE1,O=Google Trust Services,C=US | 2 Nov 2026 | 31 Jan 2027 | ECDSA 256 | ECDSA-SHA256 | 995a30681ab772540e934241ca1d576c |
| SANs: caseyjhand.com, *.caseyjhand.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of ensembl.caseyjhand.com. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | Trust anchor | 20326, 38696 | 8, 8 | Verified |
| com. | DS published | 19718 | 13 | Verified |
| caseyjhand.com. | DS published | 2371 | 13 | Verified |
| ensembl.caseyjhand.com. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| x-content-type-options | nosniff |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://ensembl.caseyjhand.com/mcp | Verified | 200 | |
| http (plaintext) | http://ensembl.caseyjhand.com/mcp | HTTPS enforced | 301 | https://ensembl.caseyjhand.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
ensembl_get_homology Get Gene Homologs ~558
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.), percId and percPos (percent identical and positive positions, over the target protein's length), 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. A target_species outside the comparison Ensembl runs for the source species is answered from Ensembl's pan-taxonomic comparison when that comparison holds both species. Includes targetProteinId when available for ensembl_get_sequence with type="protein". targetSymbol is best-effort: a secondary gene lookup shares five seconds across the returned rows and the remaining call deadline; missing names never remove homologs.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | Ensembl stable gene ID (e.g. ENSG00000139618). A version suffix (ENSG00000139618.17) is accepted and dropped before the query. Use ensembl_lookup_gene to get the stable ID from a symbol. Cannot be co… |
| max_results | integer | – | Maximum number of homologs to return. Broad orthology queries (e.g. BRCA2 across all species) can return 150+ homologs; the default keeps responses focused. Set to 0 to return every homolog uncapped.… |
| species | string | – | Source species (the species the query gene belongs to) in Ensembl internal format. Default is homo_sapiens. Use ensembl_list_species with nameContains (a genus or common name, e.g. mouse) to find val… |
| symbol | string | – | Gene symbol in the source species (e.g. BRCA2, TP53). Species defaults to homo_sapiens; set species for other organisms. Cannot be combined with id. |
| target_species | string | – | Filter to homologs in a single target species (e.g. mus_musculus for mouse). Omit to return homologs across all available species. Use ensembl_list_species with nameContains (a genus or common name)… |
| type | string | – | Type of homologs to return. orthologues: genes related by speciation (cross-species equivalents). paralogues: genes related by duplication (within or across species). all: both orthologs and paralogs. |
| Name | Type | Req | Description |
|---|---|---|---|
| cap | number | – | The max_results limit applied to the homolog list. |
| error | object | – | Present when the call failed. Absent on success. |
| homologs | array | – | Homologous genes found for the query gene, capped to max_results. totalCount reports the full count available before the cap. |
| notice | string | – | Guidance when the homologs come from Ensembl's pan-taxonomic comparison, no homologs are found, the list was capped, or symbol enrichment is incomplete. |
| queryId | string | – | The resolved Ensembl gene ID used for the homology query. |
| querySpecies | string | – | The source species used for the query. |
| queryType | string | – | The homology type queried (orthologues, paralogues, or all). |
| shown | number | – | Number of homologs returned after the max_results cap. |
| totalCount | number | – | Total number of homologs available before the max_results cap. Exceeds the returned homologs count when the list was capped. |
| truncated | boolean | – | True when the homolog list was capped at max_results. |
No examples provided.
ensembl_get_sequence Get Sequence ~952
Fetch the DNA, cDNA, CDS, or protein sequence for a gene, transcript, protein, or genomic region. Returns a window of the sequence — the first 10,000 characters by default — with its stable ID, molecule type, and full length. When more follows the window, truncated is true and nextOffset is the offset to request next; walking nextOffset reconstructs the whole sequence, and max_length 0 returns everything from offset to the end. 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), spanning at most 10,000,000 bases; a :-1 suffix (13:32315086-32315100:-1) returns the reverse-strand sequence. Regions return genomic DNA only. Protein sequences require a transcript or protein stable ID (ENST…/ENSP…), not a gene ID — use ensembl_lookup_gene and its canonicalTranscript field first; expand_transcripts=true also supplies transcript biotypes and MANE Select accessions.
| Name | Type | Req | Description |
|---|---|---|---|
| expand_3prime | integer | – | Number of base pairs to extend downstream (3' direction) of the requested feature. Default 0. Only applies to genomic sequences and region queries; on a :-1 region it extends the lower coordinate. |
| expand_5prime | integer | – | Number of base pairs to extend upstream (5' direction) of the requested feature. Default 0. Only applies to genomic sequences and region queries; on a :-1 region it extends the higher coordinate. |
| id | string | yes | Ensembl stable ID (ENSG…, ENST…, ENSP…) or a genomic region for region mode — an id containing a colon is a region. A version suffix on a stable ID (ENST00000380152.8) is dropped before the request.… |
| max_length | integer | – | Maximum number of characters in the returned window. Default 10000. Set to 0 to return everything from offset to the end, uncapped. |
| offset | integer | – | 0-based character offset where the returned window starts, counted in the resolved sequence (including any expand_5prime/expand_3prime flank). Default 0. Pass nextOffset from a truncated response to… |
| species | string | – | Species in Ensembl internal format (e.g. homo_sapiens). Required for a bare chr:start-end region. For the species:chr:start-end form the species in id takes precedence and this field is ignored. Unus… |
| type | string | – | Sequence type to retrieve. genomic: full genomic DNA including introns (default). cdna: spliced transcript sequence (requires ENST… ID). cds: coding sequence only, no UTRs (requires ENST… ID with cod… |
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | Sequence description from Ensembl, if provided. |
| error | object | – | Present when the call failed. Absent on success. |
| id | string | – | The stable ID or region used for the lookup. |
| length | number | – | Full sequence length in characters, not the window size — nucleotides for genomic/cdna/cds, amino-acid residues for protein. Includes any expand_5prime/expand_3prime flank. |
| nextOffset | number | – | Offset of the first character after this window — pass it as offset to fetch the next window. Present only when truncated. |
| notice | string | – | Guidance about the window: how to continue when truncated, or why it is empty when the offset is past the end. |
| offset | number | – | 0-based character offset where this window starts. |
| seq | string | – | The requested window of the sequence: at most max_length characters starting at offset. DNA sequences use IUPAC nucleotide codes (ACGT + ambiguity codes); protein sequences use single-letter amino ac… |
| truncated | boolean | – | True when more sequence follows this window; request nextOffset to continue. |
| type | string | – | Sequence type returned (genomic, cdna, cds, or protein). |
No examples provided.
ensembl_get_xrefs Get Cross-Database References ~547
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, plus how Ensembl assigned it (infoType, infoText) and its evidence codes (linkageTypes, such as GO evidence codes) when supplied. By default only the requested object level is queried; all_levels=true includes transcript and translation references for a gene. The dbname filter narrows this scope. IDs returned here chain onward: a Uniprot/SWISSPROT accession to UniProt (protein function) and PubChem (bioassays against the protein), MIM_GENE to OMIM (disease), Reactome_gene and Reactome to Reactome (pathways), and PDB to structure sources. Requires an Ensembl stable ID — use ensembl_lookup_gene to get the ENSG… ID first. Common dbname values: HGNC, Uniprot_gn, Uniprot/SWISSPROT (reviewed UniProt accession, held on the translation: use all_levels=true from a gene or transcript), EntrezGene, MIM_GENE, RefSeq_mRNA, RefSeq_peptide, Reactome_gene (gene pathways), Reactome (translation pathways), GO (Gene Ontology), ChEMBL.
| Name | Type | Req | Description |
|---|---|---|---|
| all_levels | boolean | – | Include references on child objects: a gene includes its transcripts and translations. Default false queries only the requested object level, independently of dbname. |
| dbname | string | – | Filter to a specific external database by its Ensembl internal name. Examples: HGNC (HGNC gene ID), Uniprot_gn (UniProt gene name), Uniprot/SWISSPROT (reviewed UniProt accession, on the translation),… |
| id | string | yes | Ensembl stable gene (ENSG…), transcript (ENST…), or translation (ENSP…) ID. A version suffix on an ENS… ID (ENSG00000139618.17) is dropped before the request. Use ensembl_lookup_gene to get the stabl… |
| Name | Type | Req | Description |
|---|---|---|---|
| error | object | – | Present when the call failed. Absent on success. |
| notice | string | – | Guidance when no cross-references are found. |
| queriedId | string | – | The Ensembl stable ID as submitted, including any version suffix. |
| totalCount | number | – | Total number of cross-references returned. |
| xrefs | array | – | Cross-database references for the queried Ensembl ID. |
No examples provided.
ensembl_list_species List Ensembl Species ~375
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. Use nameContains to find a species by partial name match; filter by division to select one. With no division, lists the endpoint default division — the vertebrates (~356 species on the default GRCh38 endpoint). Species are sorted by internal name and returned max_results at a time (default 50); totalCount reports every match, and when more follow, nextOffset is the offset for the next page.
| Name | Type | Req | Description |
|---|---|---|---|
| division | string | – | Filter to a specific Ensembl division. EnsemblVertebrates includes human, mouse, zebrafish, and other vertebrates. EnsemblPlants covers crop and model plant genomes. EnsemblFungi, EnsemblMetazoa, Ens… |
| max_results | integer | – | Maximum number of species to return, counted from offset. Default 50. Set to 0 to return every matching species from offset to the end, uncapped. totalCount always reports the full number of matches… |
| nameContains | string | – | Case-insensitive substring filter applied locally after fetching. Matches against species name, display name, and common name. Example: "sapiens" matches homo_sapiens; "mouse" matches mus_musculus. |
| offset | integer | – | 0-based position in the name-sorted matches where the returned page starts. Default 0. Pass nextOffset from a previous response to fetch the following page; an offset at or past totalCount returns no… |
| Name | Type | Req | Description |
|---|---|---|---|
| cap | number | – | The max_results limit applied to this page. |
| error | object | – | Present when the call failed. Absent on success. |
| nextOffset | number | – | Offset of the first species after this page — pass it as offset to fetch the next page. Present only when more species follow. |
| notice | string | – | Guidance when the filter matches no species, the offset is past the end, or more species follow this page. |
| shown | number | – | Number of species returned on this page. |
| species | array | – | Species matching the filter criteria, sorted by internal name: at most max_results entries starting at offset. |
| totalCount | number | – | Total number of matching species after local filtering, before offset and max_results. Exceeds the returned species count when the list was paged. |
| truncated | boolean | – | True when more matching species follow this page; request nextOffset to continue. |
No examples provided.
ensembl_lookup_gene Lookup Gene ~704
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). A symbol that is not a current gene name is matched against synonyms and former symbols (HER2 → ERBB2), reported as matchedAlias; when it maps to several genes the result is ambiguous, listing the candidates to retry by id. Supports batch submission of up to 1,000 IDs or symbols: the first 20 distinct queries are resolved, and batch.omitted names the unattempted remainder to resubmit. 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 with nameContains (a genus or common name) to find valid species names.
| Name | Type | Req | Description |
|---|---|---|---|
| expand_transcripts | boolean | – | When true, include the full transcript list in the response. Each transcript has its ID, biotype, canonical flag, and coordinates. Default is false to keep responses compact. |
| id | string | – | Ensembl stable gene ID (e.g. ENSG00000139618). A version suffix on an ENS… ID (ENSG00000139618.19) is dropped before the lookup, which returns the current version. Species is not required for ID look… |
| ids | array | – | Batch submission: up to 1,000 Ensembl stable IDs (ENSG…, ENST…); resolves the first 20 distinct trimmed queries. batch.omitted names the remainder to resubmit. A version suffix on an ENS… ID is dropp… |
| species | string | – | Species in Ensembl internal format: lowercase scientific name with underscores (e.g. homo_sapiens, mus_musculus, danio_rerio). Optional for symbol lookups — defaults to homo_sapiens; set it for other… |
| symbol | string | – | Gene symbol to look up (e.g. BRCA2, TP53, EGFR). Species defaults to homo_sapiens; set species for other organisms. Case-insensitive in most species. A synonym or former symbol (HER2, TB1) resolves t… |
| symbols | array | – | Batch submission: up to 1,000 gene symbols; resolves the first 20 distinct trimmed queries. batch.omitted names the remainder to resubmit. Species defaults to homo_sapiens; set species for other orga… |
| Name | Type | Req | Description |
|---|---|---|---|
| ambiguous | object | – | Present instead of gene when a symbol is not a current gene name and is a synonym or former symbol of several genes. |
| batch | object | – | Batch results. Present for ids or symbols lookups. |
| error | object | – | Present when the call failed. Absent on success. |
| gene | object | – | Single gene record. Present for an id lookup, or a symbol lookup that resolved to one gene. |
| notice | string | – | Guidance for resubmitting unattempted batch queries. |
No examples provided.
ensembl_predict_variant Predict Variant Effect ~681
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.
| Name | Type | Req | Description |
|---|---|---|---|
| include_all_colocated_pubmed | boolean | – | When true, return every PubMed ID for each colocated variant, overriding max_pubmed_ids_per_variant. Default false to keep responses compact. |
| max_pubmed_ids_per_variant | integer | – | Maximum PubMed IDs to return per colocated known variant. Well-studied variants (e.g. rs334) cite 100+ papers; the default trims each list. Set to 0 to return every PubMed ID uncapped. pubmedTotal on… |
| max_transcript_consequences | integer | – | Maximum transcript consequences to return per VEP record. High-impact variants can affect 60+ transcripts; the default keeps the response focused on the top consequences. Set to 0 to return every tra… |
| species | string | – | Species in Ensembl internal format. Default is homo_sapiens. For non-human variants, set the appropriate species (e.g. mus_musculus for mouse). Use ensembl_list_species with nameContains (a genus or… |
| variant | string | yes | Variant in one of three formats: (1) HGVS notation — transcript-relative: ENST00000380152.8:c.2T>A; genomic: 13:g.32316462T>A; (2) Region+allele: chr:start:end:strand/allele — e.g. 1:65568:65568:1/T… |
| Name | Type | Req | Description |
|---|---|---|---|
| cap | number | – | The max_transcript_consequences limit applied. |
| error | object | – | Present when the call failed. Absent on success. |
| notice | string | – | Guidance when no results are returned or when caps omitted detail. |
| results | array | – | VEP consequence records — typically one per input variant. Multiple records appear when a single notation matches multiple genomic positions. |
| shown | number | – | Total transcript consequences returned across all records after the cap. |
| totalCount | number | – | Number of VEP consequence records returned. |
| truncated | boolean | – | True when transcript consequences were capped at max_transcript_consequences. |
No examples provided.
ensembl_query_region Query Genomic Region ~740
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, plus the genome assembly the coordinates are on. Useful for "what's in this locus?" and for seeding follow-up lookups. Region format is chr:start-end with species set (e.g. 13:32315086-32400268 for the BRCA2 locus), or species:chr:start-end (e.g. homo_sapiens:13:32315086-32400268), spanning at most 5,000,000 bases. 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 — requesting variation in an 85 kb region matches 44,000+ entries. Explicitly include variation, regulatory, transcript, or exon only when needed. The response returns up to max_results features (default 100) while totalCount always reports the full count; set max_results to 0 for every feature, or query a smaller region to see a different slice. Exon rows carry the parent transcript ID, so the same exon appears once per transcript it belongs to.
| Name | Type | Req | Description |
|---|---|---|---|
| biotype | string | – | Optional biotype filter (e.g. protein_coding, lncRNA, SNV). Case-sensitive (lncRNA, not lncrna); remove the filter to inspect all matching feature types. Applied server-side by Ensembl. Not all featu… |
| feature | array | – | Feature types to retrieve — at least one. Default is gene only. Requesting variation in a large region can match tens of thousands of features. Include variation only for targeted small regions (sing… |
| max_results | integer | – | Maximum number of features to return. A gene-length region can hold tens of thousands of variation features; the default keeps the response compact. Set to 0 to return every feature uncapped. totalCo… |
| region | string | yes | Genomic region as chr:start-end with species set (e.g. 13:32315086-32400268), or species:chr:start-end (e.g. homo_sapiens:13:32315086-32400268), with start at or below end. Ensembl serves at most 5,0… |
| species | string | – | Species in Ensembl internal format (e.g. homo_sapiens, mus_musculus). Required for a bare chr:start-end region; for the species:chr:start-end form the species in region takes precedence and this fiel… |
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyName | string | – | Genome assembly the coordinates are on (e.g. GRCh38). Omitted only when it could not be resolved, in which case the notice says so. |
| cap | number | – | The max_results limit applied to the feature list. |
| error | object | – | Present when the call failed. Absent on success. |
| features | array | – | Genomic features found in the requested region, capped to max_results. totalCount reports the full count found before the cap. |
| notice | string | – | Guidance about the result set: empty, large, capped, or missing assembly. |
| region | string | – | The region queried, as provided minus any species prefix (reported as species). |
| shown | number | – | Number of features returned after the max_results cap. |
| species | string | – | The species queried: the region's species prefix when it has one, otherwise the species field. |
| totalCount | number | – | Total number of features found in the region before the max_results cap. Exceeds the returned features count when the list was capped. |
| truncated | boolean | – | True when the feature list was capped at max_results. |
No examples provided.
How do I install the io.github.cyanheads/ensembl-mcp-server server?
io.github.cyanheads/ensembl-mcp-server is a hosted endpoint at https://ensembl.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · ensembl.caseyjhand.com
claude mcp add --transport http cyanheads-ensembl-mcp-server 'https://ensembl.caseyjhand.com/mcp'
What is the io.github.cyanheads/ensembl-mcp-server server?
io.github.cyanheads/ensembl-mcp-server is listed in the public MCP registry as io.github.cyanheads/ensembl-mcp-server. Look up genes, sequences, variants, homologs, and cross-database xrefs from Ensembl REST. This page covers its hosted endpoint (https://ensembl.caseyjhand.com/mcp).
Is the io.github.cyanheads/ensembl-mcp-server server safe to use?
io.github.cyanheads/ensembl-mcp-server scores 89 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.cyanheads/ensembl-mcp-server server expose?
io.github.cyanheads/ensembl-mcp-server exposes 7 tools: ensembl_list_species, ensembl_lookup_gene, ensembl_get_sequence, ensembl_query_region, ensembl_predict_variant, and 2 more. Their descriptions and schemas cost roughly 4,557 tokens of context every time the server is loaded.
Does the io.github.cyanheads/ensembl-mcp-server server require authentication?
No. We connected to io.github.cyanheads/ensembl-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the io.github.cyanheads/ensembl-mcp-server server still maintained?
io.github.cyanheads/ensembl-mcp-server is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What did VerifyMCP test on the io.github.cyanheads/ensembl-mcp-server server?
VerifyMCP ran 13 checks on io.github.cyanheads/ensembl-mcp-server, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.