# Reported issues for ensembl-mcp-server

Pod holds 13 of 13 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to [ensembl-mcp-server](/mcp/ensembl-mcp-server).

## Most discussed

### feat(species): cap ensembl_list_species and the species resources by default

### Use case

`ensembl_list_species` is the discovery step most workflows start from, but neither it nor the `ensembl://species` / `ensembl://species/{division}` resources can bound their output: every unfiltered call returns the whole division. `nameContains` narrows only as well as the substring discriminates — `{ "division": "EnsemblFungi", "nameContains": "saccharomyces" }` still returns 132 species.

Measured 2026-09-23 against the default `rest.ensembl.org` endpoint, on the response a…

[Read the thread](https://github.com/cyanheads/ensembl-mcp-server/issues/3) · 2026-06-18 · open · 5 comments

### feat(ensembl_query_region): cap high-cardinality overlap output like predict_variant/get_homology

### Use case

`ensembl_query_region` can return very large overlap sets — a wide region with `feature: ["variation"]` can yield tens of thousands of entries (its own description warns a large region can return 44,000+). It emits a >1000-result warning notice but does not cap the result, so the full set still lands in both `content[]` and `structuredContent` — the same all-or-nothing cost #15 already fixed for `ensembl_predict_variant` and `ensembl_get_homology`. Measured against the live API:…

[Read the thread](https://github.com/cyanheads/ensembl-mcp-server/issues/17) · 2026-07-10 · closed · 3 comments

### bug(ensembl_get_sequence): region-mode rejections lack an invalid_region reason

### Server version

0.4.4

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

In region mode, `ensembl_get_sequence` returns a reasonless `-32001` for region rejections that should be an input error. The region `.catch` recognizes only `not found|invalid|no stable id`, so these `/sequence/region` HTTP 400 messages fall through:

| `id` (with `species: homo_sapiens`) | Ensembl message |
|:--|:--|
|…

[Read the thread](https://github.com/cyanheads/ensembl-mcp-server/issues/28) · 2026-09-24 · closed · 1 comment

### bug(ensembl_query_region): out-of-bounds, reversed, and undecodable regions lack invalid_region

### Server version

0.4.4

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`ensembl_query_region` still returns a reasonless `-32001` NotFound for three upstream region rejections that `invalid_region` should cover. Ensembl answers each with HTTP 400, and none of the messages matches the handler's `invalid_region` patterns:

| `region` | Ensembl message |
|:--|:--|
| `1:250000000-250000100` | `Cannot request…

[Read the thread](https://github.com/cyanheads/ensembl-mcp-server/issues/27) · 2026-09-24 · closed · 1 comment

### bug(ensembl_get_sequence): region mode silently ignores type and always returns genomic

Related: #13

### Server version

0.4.3

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

In region mode, `ensembl_get_sequence` never forwards `input.type` to the service. `getSequenceByRegion()` takes no type argument and hardcodes `normalizeSequence(raw, 'genomic')`, so a caller who asks for `cdna`, `cds`, or `protein` on a region receives genomic DNA labelled `type: "genomic"` — a wrong answer with no…

[Read the thread](https://github.com/cyanheads/ensembl-mcp-server/issues/25) · 2026-09-19 · closed · 1 comment

### bug(ensembl_query_region): oversized regions return NotFound

### Server version

0.4.3

### mcp-ts-core version

0.12.3

### Runtime

Bun

### Runtime version

Bun 1.4.0 client

### Transport

HTTP (Streamable HTTP)

### Description

`ensembl_query_region` accepts a syntactically valid region larger than Ensembl's documented 5 Mb maximum, then returns `NotFound` without its `invalid_region` reason or recovery hint. The region description recommends restricting large queries to genes but never states the hard length limit.

Related: #1.

### Steps to…

[Read the thread](https://github.com/cyanheads/ensembl-mcp-server/issues/24) · 2026-09-13 · closed · 1 comment

### feat(ensembl_query_region): include assembly metadata

### Use case

Genomic coordinates are assembly-specific. A region-overlap result is unsafe to carry into VEP, external annotation, or downstream interval analysis unless the response says which assembly the coordinates use.

`ensembl_query_region` currently returns the submitted species and region plus feature coordinates, but no assembly name. A successful BRCA2-region query therefore cannot be handed to another system without an additional out-of-band assembly lookup.

### Proposed behavior…

[Read the thread](https://github.com/cyanheads/ensembl-mcp-server/issues/23) · 2026-08-11 · closed · 1 comment

### bug(validation): reject blank required identifiers

### Server version

0.4.2

### mcp-ts-core version

^0.10.14

### Runtime

Bun

### Runtime version

1.3.14

### Transport

HTTP (Streamable HTTP)

### Description

Required free-form string identifiers accept blank or whitespace-only values and reach Ensembl before failing. Verified live against all five required-identifier fields — `ensembl_predict_variant.variant`, `ensembl_get_sequence.id`, `ensembl_get_xrefs.id`, `ensembl_query_region.species`/`region` — each makes a live upstream call on…

[Read the thread](https://github.com/cyanheads/ensembl-mcp-server/issues/22) · 2026-08-11 · closed · 1 comment

## Most recent

### bug(ensembl_get_sequence): prefixed region with a digit-bearing species routes to stable-ID mode

### Server version

0.5.0

### mcp-ts-core version

^0.13.6

### Runtime

Bun

### Runtime version

1.4.0

### Transport

stdio

### Description

`ensembl_get_sequence` detects the prefixed region form with `/^[a-z_]+:[\w.]+:\d+-\d+$/i`, so a species name containing digits never matches. Ensembl strain genomes carry digits in their internal names (`mus_musculus_129s1svimj`, from `/info/genomes`), and a valid prefixed region for one is sent to `/sequence/id` as a stable ID instead of…

[Read the thread](https://github.com/cyanheads/ensembl-mcp-server/issues/33) · 2026-09-24 · open · 0 comments

### bug(ensembl_get_sequence): protein ID with type cdna returns protein labelled cdna

### Server version

0.4.4

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`ensembl_get_sequence` labels a record with the `type` the caller requested rather than the `molecule` Ensembl returned. For a protein ID requested as `cdna` or `genomic`, Ensembl returns the protein sequence (`"molecule":"protein"`). The tool reports it as `type: "cdna"` and renders its length in `bp`, so the caller gets a wrong…

[Read the thread](https://github.com/cyanheads/ensembl-mcp-server/issues/30) · 2026-09-24 · open · 0 comments

### bug(ensembl_get_sequence): unknown species, non-coding protein/cds, and malformed regions lack reasons

### Server version

0.4.4

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`ensembl_get_sequence` still returns reasonless errors, or the wrong reason, for three input mistakes. Each case has an actionable recovery that the caller never sees:

| Input | Ensembl (HTTP 400) | Tool today |
|:--|:--|:--|
| `{"id":"1:1-100","species":"homo_sapienz"}` | `Can not find internal name for species 'homo_sapienz'` |…

[Read the thread](https://github.com/cyanheads/ensembl-mcp-server/issues/29) · 2026-09-24 · open · 0 comments

### bug(ensembl_query_region): reject an empty feature list

### Server version

0.4.2

### mcp-ts-core version

^0.10.14

### Runtime

Bun

### Runtime version

1.3.14

### Transport

HTTP (Streamable HTTP)

### Description

`ensembl_query_region` accepts an empty `feature` array even though Ensembl requires at least one feature type. The request reaches the provider without a feature filter, and the resulting error is classified as `not_found` with `data.reason` absent entirely — not merely a generic reason, the field is missing from the error…

[Read the thread](https://github.com/cyanheads/ensembl-mcp-server/issues/21) · 2026-08-11 · closed · 1 comment

### feat(ensembl_get_sequence): add bounded, retrievable sequence windows

### Use case

Full sequences already exceed useful MCP response sizes for real genes, and the two client surfaces diverge: `content[]` always renders a fixed ~300–370 character preview regardless of sequence length, while `structuredContent` carries the complete sequence. Measured live against GRCh38:

| Call | seq length | `content[]` chars | `structuredContent` bytes |
|---|---:|---:|---:|
| TP53 genomic | 25,768 | 365 | 25,898 |
| BRCA2 genomic | 85,183 | 366 | 85,314 |
| BRCA2 protein |…

[Read the thread](https://github.com/cyanheads/ensembl-mcp-server/issues/19) · 2026-08-11 · closed · 1 comment

The remaining reports are on [the project's issue tracker](https://github.com/cyanheads/ensembl-mcp-server/issues).
