Ensembl MCP Server
Used as the runtime environment for the MCP server, enabling the execution of TypeScript/JavaScript code for genomic data querying
Used as the programming language for implementing the MCP server, providing type safety for genomic data structures and API interactions
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Ensembl MCP Serverfind genes overlapping chr17:43000000-44000000 in human"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🧬 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:
Related MCP server: GeneOntology MCP Server
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-keyCheck 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 installConfigure Claude Desktop manually:
Edit your config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%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
# Development with hot reload
npm run dev
# Run tests
npm test
# Production build (optional)
npm run build
npm run start:prodContributing
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-serverInstall dependencies:
npm installRun tests to make sure everything works:
npm testStart development server:
npm run devMake 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/:idTypical 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_idUse cases: TF-binding sites, regulatory annotation.
3 · ensembl_protein_features
Protein-level domains and functional sites.
GET /overlap/translation/:idUse 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/idTypical 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/:speciesUse 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/regionUse 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_twoUse 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/:regionUse 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/:idUse 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/:nameUse 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 claudeAvailable Tools
10 toolsensembl_comparaC
Comparative genomics: gene trees, homology, species alignments, and evolutionary analysis. Covers /genetree/, /homology/, /alignment/* endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| gene_id | No | Gene ID for homology/gene tree analysis (e.g., 'ENSG00000141510', 'ENSG00000012048') | |
| gene_symbol | No | Gene symbol (alternative to gene_id) (e.g., 'BRCA1', 'TP53', 'EGFR') | |
| region | No | Genomic region for alignments in format 'chr:start-end' (e.g., '17:7565096-7590856', 'X:1000000-2000000', '6:25000000-35000000') | |
| analysis_type | No | Type of comparative analysis | |
| species | No | Species name (e.g., 'homo_sapiens', 'mus_musculus', 'pan_troglodytes') | homo_sapiens |
| target_species | No | Target species for homology search (e.g., 'mus_musculus', 'pan_troglodytes', 'rattus_norvegicus') | |
| homology_type | No | Type of homology to retrieve | all |
| aligned | No | Include aligned sequences |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions endpoint categories but doesn't describe what the tool actually returns (e.g., tree structures, alignment formats, homology lists), performance characteristics, rate limits, authentication needs, or error conditions. For a complex tool with 8 parameters and multiple analysis types, this is insufficient behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in two sentences: first stating the broad purpose, then listing endpoint categories. It's appropriately sized for the tool's complexity. However, the endpoint listing could be more clearly integrated with the purpose statement rather than appearing as an afterthought.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex comparative genomics tool with 8 parameters, multiple analysis types, no annotations, and no output schema, the description is incomplete. It doesn't explain what results to expect for different analysis types, how gene trees vs homology vs alignments differ in output, or provide any examples of typical use cases. The agent would struggle to understand what this tool actually returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 8 parameters thoroughly with descriptions, enums, defaults, and constraints. The description adds minimal value beyond the schema - it mentions endpoint categories that loosely map to analysis_type values but doesn't provide additional parameter context, validation rules, or usage examples. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Comparative genomics: gene trees, homology, species alignments, and evolutionary analysis' and mentions specific endpoint categories. It distinguishes from siblings by focusing on comparative genomics rather than feature overlap, lookup, mapping, etc. However, it doesn't explicitly contrast with each sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus the sibling tools. While it mentions endpoint categories, it doesn't explain scenarios where comparative genomics analysis is preferred over feature overlap, sequence retrieval, variation analysis, or other sibling capabilities. No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensembl_feature_overlapB
Find genomic features (genes, transcripts, regulatory elements) that overlap with a genomic region or specific feature. Automatically handles assembly-specific format variations (GRCh38/hg38, chromosome naming conventions, coordinate systems). Covers /overlap/region and /overlap/id endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | Genomic region in format 'chromosome:start-end' (e.g., '17:7565096-7590856', 'X:1000000-2000000', '1:100000-200000'). Use this OR feature_id, not both. | |
| feature_id | No | Feature ID (gene, transcript, etc.) to find overlapping features for (e.g., 'ENSG00000141510', 'ENST00000288602', 'BRCA1'). Use this OR region, not both. | |
| species | No | Species name (e.g., 'homo_sapiens', 'mus_musculus', 'danio_rerio') | homo_sapiens |
| feature_types | No | Types of features to include (e.g., ['gene', 'transcript', 'exon'], ['regulatory', 'enhancer']) | |
| biotype | No | Filter by biotype (e.g., 'protein_coding', 'lncRNA', 'miRNA', 'pseudogene') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context: 'Automatically handles assembly-specific format variations' and 'Covers /overlap/region and /overlap/id endpoints,' which helps the agent understand implementation details. However, it doesn't cover critical behavioral aspects like rate limits, error handling, response format, or whether this is a read-only operation (though 'Find' implies it likely is).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized (three sentences) and front-loaded with the core purpose. Every sentence adds value: the first states the purpose, the second adds behavioral context (format handling), and the third specifies endpoints. There's no wasted text, though it could be slightly more structured for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (5 parameters, no output schema, no annotations), the description is partially complete. It covers the purpose and some behavioral context but lacks details on output format, error cases, or performance characteristics. Without annotations or output schema, the agent might struggle to interpret results fully, making this description adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description doesn't add any parameter-specific semantics beyond what's in the schema (e.g., it doesn't explain format variations for 'region' beyond the schema's examples). Baseline 3 is appropriate when the schema does the heavy lifting, though the description could have enhanced understanding of parameter interactions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Find genomic features (genes, transcripts, regulatory elements) that overlap with a genomic region or specific feature.' It specifies the verb ('Find') and resource ('genomic features'), and mentions the types of features covered. However, it doesn't explicitly differentiate this tool from its siblings (e.g., ensembl_lookup, ensembl_mapping), which would be needed for a score of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning 'genomic region or specific feature' and the endpoints covered, but it doesn't provide explicit guidance on when to use this tool versus alternatives like ensembl_lookup or ensembl_mapping. The input schema's 'oneOf' constraint (region OR feature_id) offers some usage rules, but the description itself lacks clear when/when-not instructions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensembl_lookupB
Look up genes, transcripts, variants by ID or symbol. Get cross-references and perform ID translation. Covers /lookup/* and /xrefs/* endpoints plus variant_recoder.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | ID or symbol to look up (gene, transcript, variant, etc.) (e.g., 'ENSG00000141510', 'BRCA1', 'rs699', 'ENST00000288602') | |
| lookup_type | No | Type of lookup to perform | id |
| species | No | Species name (e.g., 'homo_sapiens', 'mus_musculus') | homo_sapiens |
| expand | No | Additional data to include (e.g., ['Transcript', 'Exon'], ['Translation'], ['UTR']) | |
| external_db | No | External database name for xrefs lookup (e.g., 'HGNC', 'UniProtKB/Swiss-Prot', 'RefSeq_mRNA') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool 'covers' specific endpoints but doesn't describe response formats, error conditions, rate limits, authentication needs, or whether it's read-only versus mutative. For a tool with 5 parameters and no annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with two sentences that efficiently convey scope and endpoint coverage. It's front-loaded with the core purpose and avoids unnecessary elaboration, though the second sentence could be slightly more polished.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, no annotations, and no output schema, the description provides adequate purpose and scope but lacks behavioral context and output expectations. It's complete enough to understand what the tool does but insufficient for an agent to fully predict how to use it effectively without trial and error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly with examples and defaults. The description adds minimal value beyond the schema by mentioning endpoint coverage, but doesn't provide additional parameter semantics, syntax details, or usage patterns beyond what's in the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('look up', 'get cross-references', 'perform ID translation') and resources ('genes, transcripts, variants'), distinguishing it from siblings by mentioning specific endpoints (/lookup/*, /xrefs/*, variant_recoder) that other tools likely don't cover.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through endpoint references but doesn't explicitly state when to use this tool versus alternatives like ensembl_mapping or ensembl_variation. It provides context about what the tool covers but lacks explicit guidance on tool selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensembl_mappingC
Map coordinates between different coordinate systems (genomic ↔ cDNA/CDS/protein) and between genome assemblies. Covers /map/* endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| coordinates | Yes | Coordinates to map: '100..200' for cDNA/CDS coords, or 'chr:start-end' for genomic (e.g., '100..300', '1..150', '17:7565096-7590856', 'X:1000000-2000000') | |
| feature_id | No | Feature ID (transcript/translation) for coordinate mapping (e.g., 'ENST00000288602', 'ENSP00000288602') | |
| mapping_type | Yes | Type of coordinate mapping | |
| source_assembly | No | Source assembly name (for assembly mapping) (e.g., 'GRCh37', 'GRCh38') | |
| target_assembly | No | Target assembly name (for assembly mapping) (e.g., 'GRCh38', 'GRCh37') | |
| species | No | Species name (e.g., 'homo_sapiens', 'mus_musculus') | homo_sapiens |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does but lacks details on behavioral traits such as rate limits, authentication needs, error handling, or what the output looks like (e.g., format, structure). For a tool with 6 parameters and no output schema, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, stating the core purpose in a single sentence. It avoids unnecessary details and wastes no words. However, it could be slightly more structured by explicitly separating coordinate system mapping from assembly mapping for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 parameters, no annotations, no output schema), the description is incomplete. It doesn't address output format, error cases, or usage context relative to siblings. For a mapping tool with multiple parameter dependencies, more guidance on behavior and results is needed to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain interactions between parameters like how feature_id relates to mapping_type). Baseline 3 is appropriate when the schema does the heavy lifting, but the description doesn't compensate with extra insights.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: mapping coordinates between different coordinate systems and genome assemblies. It specifies the scope with 'genomic ↔ cDNA/CDS/protein' and mentions coverage of '/map/* endpoints.' However, it doesn't explicitly differentiate this tool from its siblings (e.g., ensembl_sequence or ensembl_variation), which might also involve coordinate handling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions coverage of '/map/* endpoints' but doesn't explain when mapping is needed compared to other Ensembl tools like ensembl_lookup or ensembl_sequence. There are no explicit when/when-not statements or references to sibling tools for context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensembl_metaA
Get server metadata, data releases, species info, and system status. Covers /info/* endpoints and /archive/id for version tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| info_type | No | Type of information to retrieve | |
| species | No | Species name (required for species-specific info) (e.g., 'homo_sapiens', 'mus_musculus', 'drosophila_melanogaster') | |
| archive_id | No | ID to get version information for (alternative to info_type) (e.g., 'ENSG00000141510', 'rs699') | |
| division | No | Ensembl division name (e.g., 'vertebrates', 'plants', 'fungi', 'metazoa') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes what information can be retrieved (metadata, releases, species info, status) and the endpoints covered, but doesn't mention rate limits, authentication requirements, response formats, or error conditions. The description is informative but lacks operational details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each earn their place. The first sentence states the purpose comprehensively, and the second sentence provides important implementation context about the endpoints covered. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no annotations and no output schema, the description provides good purpose and endpoint context but lacks information about return values, error handling, and operational constraints. Given the complexity of the tool (multiple parameter combinations), more behavioral context would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema (e.g., it doesn't explain parameter interactions or provide examples). Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Get server metadata, data releases, species info, and system status') and resources ('/info/* endpoints and /archive/id'), distinguishing it from sibling tools focused on compara, features, lookup, mapping, etc. It explicitly covers what information can be retrieved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by mentioning the specific API endpoints covered ('/info/* endpoints and /archive/id'), which helps understand when to use this tool. However, it doesn't explicitly state when NOT to use it or name alternatives among siblings, though the distinction is implied by the different tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensembl_ontotaxC
Ontology term search and NCBI taxonomy traversal. Search GO terms, phenotype ontologies, and taxonomic classifications.
| Name | Required | Description | Default |
|---|---|---|---|
| term | No | Ontology term or taxonomy term to search (e.g., 'protein binding', 'cell cycle', 'mitochondrion', 'Homo sapiens') | |
| ontology | No | Ontology to search in | |
| term_id | No | Specific ontology term ID (e.g., 'GO:0008150', 'GO:0005515', 'HP:0000001', 'MP:0000001') | |
| species | No | Species for taxonomy search (e.g., 'homo_sapiens', 'mus_musculus', 'drosophila_melanogaster') | |
| relation | No | Relationship to explore in ontology |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'search' and 'traversal' operations but doesn't specify whether these are read-only, have rate limits, require authentication, or what format results return. For a tool with 5 parameters and complex logic (multiple required parameter combinations via anyOf), this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence) and front-loaded with the core functionality. Every word earns its place by specifying the domain (ontology/taxonomy), operations (search/traversal), and examples of what can be searched. There's zero redundancy or wasted verbiage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, complex conditional requirements (anyOf with three alternative required sets), no annotations, and no output schema, the description is insufficient. It doesn't explain how the different parameter combinations work together, what the tool returns, or the scope of operations. The agent must rely entirely on the input schema to understand functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly with descriptions and enums. The description adds minimal value beyond the schema by mentioning the types of ontologies and taxonomy, but doesn't provide additional context about parameter interactions or usage patterns. The baseline of 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Ontology term search and NCBI taxonomy traversal' with specific examples of what can be searched (GO terms, phenotype ontologies, taxonomic classifications). It distinguishes itself from sibling tools by focusing on ontology/taxonomy operations rather than sequence, variation, or comparative genomics tools. However, it doesn't explicitly differentiate from potential overlapping functionality in sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, constraints, or scenarios where this tool is preferred over other search or traversal methods. The agent must infer usage from the description alone without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensembl_protein_featuresC
Get protein-level features, domains, and annotations for proteins and translations.
| Name | Required | Description | Default |
|---|---|---|---|
| protein_id | Yes | Protein/translation ID (e.g., 'ENSP00000288602', 'ENSP00000350283', 'ENSP00000334393') | |
| feature_type | No | Type of protein feature (e.g., 'domain', 'signal_peptide', 'transmembrane', 'low_complexity') | |
| species | No | Species name (e.g., 'homo_sapiens', 'mus_musculus') | homo_sapiens |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action 'Get' but does not describe any behavioral traits such as whether this is a read-only operation, potential rate limits, authentication needs, or what the output format looks like (e.g., structured data or raw text). This leaves significant gaps for an agent to understand how to interact with the tool effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the key information ('Get protein-level features, domains, and annotations') without any unnecessary words or redundancy. It is appropriately sized for the tool's purpose and structure, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a tool with 3 parameters, no annotations, and no output schema, the description is incomplete. It does not address behavioral aspects, output expectations, or usage context, which are critical for an agent to use the tool correctly. The high schema coverage helps with parameters, but overall, the description lacks sufficient detail for full contextual understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, meaning all parameters are well-documented in the input schema itself. The description does not add any additional meaning beyond what the schema provides, such as explaining relationships between parameters or usage examples. With high schema coverage, the baseline score is 3, as the description does not compensate but also does not detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resources 'protein-level features, domains, and annotations for proteins and translations', making the purpose specific and understandable. However, it does not explicitly distinguish this tool from sibling tools like ensembl_feature_overlap or ensembl_sequence, which might also retrieve features or sequences, so it lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as which sibling tools might be better for different types of data (e.g., ensembl_variation for variants or ensembl_sequence for sequences). There is no mention of prerequisites, exclusions, or specific contexts for usage, leaving the agent without clear direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensembl_regulatoryC
Get regulatory features, binding matrices, and regulatory annotations. Covers regulatory overlap endpoints and binding matrix data.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | Genomic region in format 'chromosome:start-end' (e.g., '17:7565096-7590856', 'X:1000000-2000000', '6:25000000-35000000') | |
| protein_id | No | Protein ID for regulatory features affecting translation (e.g., 'ENSP00000288602', 'ENSP00000350283') | |
| binding_matrix_id | No | Binding matrix stable ID (e.g., 'ENSPFM0001', 'ENSPFM0123') | |
| species | No | Species name (e.g., 'homo_sapiens', 'mus_musculus') | homo_sapiens |
| feature_type | No | Type of regulatory feature (e.g., 'RegulatoryFeature', 'MotifFeature', 'TF_binding_site') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'Get' which implies a read-only operation, but doesn't specify if this requires authentication, has rate limits, returns paginated results, or details error conditions. The mention of 'regulatory overlap endpoints' hints at API behavior but lacks specifics like response format or performance characteristics, leaving significant gaps for a tool with 5 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, stating the core purpose in the first clause. Both sentences earn their place: the first defines what the tool gets, and the second clarifies the scope of coverage. There's no redundant or vague language, making it efficient for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 parameters, no annotations, no output schema), the description is incomplete. It lacks behavioral details (e.g., read/write nature, error handling), usage guidelines compared to siblings, and explanation of return values. While the schema covers parameters well, the description doesn't compensate for missing annotations or output schema, making it inadequate for full agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, providing clear documentation for all 5 parameters (region, protein_id, binding_matrix_id, species, feature_type). The description adds no additional parameter semantics beyond what's in the schema—it doesn't explain relationships between parameters (e.g., that region, protein_id, and binding_matrix_id are alternative inputs) or provide usage examples. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get regulatory features, binding matrices, and regulatory annotations.' It specifies the types of data retrieved (regulatory features, binding matrices, annotations) and mentions coverage of regulatory overlap endpoints and binding matrix data. However, it doesn't explicitly differentiate this tool from its siblings like 'ensembl_feature_overlap' or 'ensembl_protein_features', which likely handle related genomic data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions 'Covers regulatory overlap endpoints and binding matrix data' but doesn't clarify if this is exclusive to this tool or shared with siblings. There's no mention of prerequisites, typical use cases, or comparisons to other tools in the Ensembl suite, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensembl_sequenceC
Retrieve DNA, RNA, or protein sequences for genes, transcripts, regions. Covers /sequence/id and /sequence/region endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Feature ID (gene, transcript, etc.) OR genomic region in format 'chr:start-end' (e.g., 'ENSG00000141510', 'ENST00000288602', '17:7565096-7590856', 'X:1000000-2000000') | |
| sequence_type | No | Type of sequence to retrieve | genomic |
| species | No | Species name (e.g., 'homo_sapiens', 'mus_musculus') | homo_sapiens |
| format | No | Output format | json |
| mask | No | Mask repeats (soft=lowercase, hard=N) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the endpoints covered but fails to describe key behavioral traits: it doesn't specify if this is a read-only operation, potential rate limits, authentication needs, error handling, or what the output looks like (e.g., sequence data structure). For a tool with 5 parameters and no annotations, this leaves significant gaps in understanding how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, stating the core purpose in the first sentence. The second sentence adds endpoint context without redundancy. Both sentences earn their place by clarifying scope, though it could be slightly more structured (e.g., bullet points for endpoints). No wasted words are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 parameters, no annotations, no output schema), the description is incomplete. It lacks behavioral details (e.g., read-only status, error cases), output format explanations (beyond the 'format' parameter), and guidance on sibling tool differentiation. For a sequence retrieval tool with multiple parameters and no structured output schema, more context is needed to ensure the agent can use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all parameters are well-documented in the schema itself. The description adds minimal value beyond the schema: it implies the tool handles both ID-based and region-based queries via the endpoints mentioned, but doesn't elaborate on parameter interactions or provide examples beyond what's in the schema. With high schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Retrieve DNA, RNA, or protein sequences for genes, transcripts, regions.' It specifies the verb ('retrieve') and resources (sequences for various biological entities), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like ensembl_lookup or ensembl_feature_overlap, which might also retrieve sequence-related data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal usage guidance: it mentions covering '/sequence/id and /sequence/region endpoints,' which hints at two use cases (ID-based vs. region-based retrieval). However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., ensembl_lookup for general feature info or ensembl_protein_features for protein-specific data). No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensembl_variationC
Variant analysis: VEP consequence prediction, variant lookup, LD analysis, phenotype mapping, haplotypes. Covers /variation/, /vep/, /ld/, /phenotype/ endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| variant_id | No | Variant ID (e.g., 'rs699', 'rs1042779', 'COSM476') or HGVS notation (e.g., '17:g.7579472G>C') | |
| region | No | Genomic region in format 'chr:start-end' for variant search (e.g., '17:7565096-7590856', 'X:1000000-2000000', '1:100000-200000') | |
| hgvs_notation | No | HGVS notation for VEP analysis (e.g., '17:g.7579472G>C', 'ENST00000288602.6:c.1799T>A', 'NM_007294.3:c.1799T>A') | |
| analysis_type | No | Type of variant analysis | |
| species | No | Species name (e.g., 'homo_sapiens', 'mus_musculus') | homo_sapiens |
| consequence_type | No | Filter by consequence type (e.g., 'missense_variant', 'stop_gained', 'splice_donor_variant') | |
| population | No | Population for LD analysis (e.g., '1000GENOMES:phase_3:EUR', '1000GENOMES:phase_3:AFR', '1000GENOMES:phase_3:ASN') | |
| transcript_id | No | Transcript ID for haplotype analysis (e.g., 'ENST00000288602', 'ENST00000350283') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions analysis types and endpoints but fails to describe critical traits: whether operations are read-only or mutative, authentication needs, rate limits, error handling, or output format. For a tool with 8 parameters and complex genomic analysis, this lack of behavioral context is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise and front-loaded, stating the core purpose in the first phrase. It uses a semicolon-separated list for analysis types and a brief endpoint summary, with no redundant sentences. However, the endpoint list ('Covers /variation/*, /vep/*, /ld/*, /phenotype/* endpoints.') could be integrated more smoothly, slightly affecting flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, no output schema, no annotations), the description is incomplete. It lacks output details, behavioral traits, and usage guidelines, which are crucial for an AI agent to invoke it correctly in genomic contexts. The high schema coverage helps with parameters, but overall, the description doesn't compensate for missing structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all 8 parameters thoroughly. The description adds minimal value beyond the schema by listing analysis types (e.g., 'VEP consequence prediction') that map to the 'analysis_type' enum, but it doesn't provide additional syntax, format details, or interdependencies. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Variant analysis: VEP consequence prediction, variant lookup, LD analysis, phenotype mapping, haplotypes.' It provides specific verbs (prediction, lookup, analysis, mapping) and resources (variants, phenotypes, haplotypes), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'ensembl_lookup' or 'ensembl_feature_overlap,' which might offer overlapping genomic analysis capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It lists analysis types and endpoints but doesn't specify prerequisites, exclusions, or comparisons to sibling tools. For example, it doesn't clarify if this is the primary tool for variant data or when to choose it over 'ensembl_lookup' for similar queries, leaving the agent without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
- First observed
ensembl_compara - First observed
ensembl_feature_overlap - First observed
ensembl_lookup - First observed
ensembl_mapping - First observed
ensembl_meta - First observed
ensembl_ontotax - First observed
ensembl_protein_features - First observed
ensembl_regulatory - First observed
ensembl_sequence - First observed
ensembl_variation
TDQS
Each tool has a clearly distinct purpose targeting specific genomic data types or operations, such as comparative genomics, feature overlap, sequence retrieval, or variant analysis. The descriptions explicitly differentiate their scopes (e.g., 'ensembl_compara' for evolutionary analysis vs. 'ensembl_sequence' for sequence retrieval), with no apparent overlap that could cause agent misselection.
All tool names follow a consistent 'ensembl_' prefix with descriptive suffixes (e.g., 'compara', 'lookup', 'mapping'), using snake_case uniformly throughout. This predictable pattern enhances readability and helps agents quickly identify the tool's domain without confusion.
With 10 tools, the server is well-scoped for genomic data access and analysis, covering key areas like sequence retrieval, variant analysis, and metadata. Each tool earns its place by addressing distinct aspects of the Ensembl database, avoiding bloat while providing comprehensive coverage for typical bioinformatics workflows.
The tool set offers complete coverage for genomic data operations, including lookup, mapping, sequence retrieval, variation analysis, and metadata access. It supports full CRUD-like workflows (e.g., from data query to analysis) with no obvious gaps, ensuring agents can handle end-to-end tasks without dead ends.
Maintenance
Related MCP Connectors
Look up genes, sequences, variants, homologs, and cross-database xrefs from Ensembl REST.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
Ensembl REST — vertebrate genomes, sequences, comparative genomics, variation
Related MCP Servers
- FlicenseAqualityDmaintenanceA comprehensive Model Context Protocol (MCP) server that provides access to the Ensembl REST API for genomic data, comparative genomics, and biological annotations.193-
- AlicenseBqualityDmaintenanceA comprehensive Model Context Protocol server for accessing Gene Ontology (GO) data, enabling AI systems to perform ontology-based analysis, gene annotation research, and functional enrichment studies.468MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables retrieval of -omics data from sources like PDB, ChEMBL, UniProt, PubChem, and HUGO.5GPL 3.0
- AlicenseNot gradedqualityCmaintenanceEnables querying Ensembl genomic data including gene lookup, sequence retrieval, homology, variation, and variant effect prediction via MCP tools.14MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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