# Reported issues for gdelt-mcp-server

Pod holds 15 of 15 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 [gdelt-mcp-server](/mcp/gdelt-mcp-server).

## Most discussed

### bug(gdelt-pacer): start-relative spacing leaves no gap after a slow GDELT response

### Server version

0.4.2

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

http

### Description

`gdeltFetch` paces GDELT through the framework pacer — `maxConcurrent: 1`, `minStartGapMs` from `GDELT_REQUEST_DELAY_MS`. That gap spaces consecutive *starts*: the next start is `max(previous start + gap, previous completion)`, so a response slower than the gap leaves ~0 ms before the next request goes out. [GDELT](https://www.gdeltproject.org/)'s…

[Read the thread](https://github.com/cyanheads/gdelt-mcp-server/issues/44) · 2026-09-18 · closed · 4 comments

### bug(gdelt-fetch): timeout errors omit the gdelt_unavailable contract

### Server version

0.4.2

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### OS

macOS 26.1

### Description

Every upstream-backed tool declares `gdelt_unavailable` with `retryable: true` and a recovery hint. A `FetchTimeout` raised below the handler bypasses that contract, so callers receive neither the stable reason nor the declared recovery guidance.

### Steps to reproduce

1. Replace `globalThis.fetch` with a…

[Read the thread](https://github.com/cyanheads/gdelt-mcp-server/issues/39) · 2026-08-31 · closed · 3 comments

### bug(gdelt_get_tone_distribution): bin headers fold into the previous bin's article list

### Server version

0.4.3

### mcp-ts-core version

^0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### OS

macOS 26.1

### Description

`gdelt_get_tone_distribution` renders each histogram bin as a line (`**Bin -3:** 12 articles ███`) followed by its article links as an indented list. No blank line separates a bin's list from the next bin's header, so CommonMark lazy continuation folds every header after the first into the previous bin's last…

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

### bug(gdelt_list_tv_stations): empty-catalog error code, openWorldHint, and market grouping

### Server version

0.4.3

### mcp-ts-core version

^0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### OS

macOS 26.1

### Description

`gdelt_list_tv_stations` has three contract defects in one definition file:

1. An empty station catalog throws `no_stations` as `NotFound` (`-32001`) with no `retryable` flag, while its own `when`/`recovery` text describes a transient upstream failure ("API may be temporarily unavailable", "Retry after a short…

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

### feat(gdelt_list_tv_stations): filter by station, network, or market instead of returning all 159 stations

### Use case

`gdelt_list_tv_stations` takes no arguments and always returns the full catalog: 159 stations, 43,993 bytes per call (26,172 in `structuredContent` plus 17,821 in `content[]`, catalog as of 2026-09-24). A caller checking one or two station IDs, or one network's affiliates, pays for all of it.

### Proposed behavior

Add three optional filters, combined with AND:

- `stations`: station IDs, the same parameter name the other TV tools use. Matches any listed ID.
- `network`: e.g.…

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

### bug(parseGdeltJson): "Invalid Station" rejection has no closing punctuation and lands on SerializationError

### Server version

0.4.2

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### OS

macOS 26.1

### Description

The TV API rejects an unknown station ID with the HTTP-200 plain-text body `Invalid Station: <id>`. It matches no entry in `GDELT_REJECTIONS`, and `looksLikeGdeltRejection` requires the body to end in `.`, `?`, or `!`, so the positive-ID fallback misses it too. The caller's bad input is reported as a server-side…

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

### bug(gdelt-fetch): 30s request deadline sits inside GDELT's latency spread, failing slow queries after 4 retries

### Server version

0.4.2

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### OS

macOS 26.1

### Description

`gdeltFetch` hardcodes a 30-second `fetchWithTimeout` deadline and leaves `withRetry` at its four-attempt default with no total budget. 30 s sits inside [GDELT](https://www.gdeltproject.org/)'s response-time spread rather than above it, so the deadline and the upstream latency cross under load. The call then…

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

### bug(empty-results): return normal output shapes for zero-match queries

### Server version

0.4.0

### mcp-ts-core version

^0.12.3

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### OS

macOS 26.1

### Description

Seven tools throw `NotFound` when a valid query matches nothing. GDELT's TV API answers that case with HTTP 200 `{}`, which the services map to empty arrays. Callers get `isError: true` for a normal search outcome and lose the output shape, totals, echoes, and pagination fields.

Affected tools, one throw site…

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

## Most recent

### bug(gdelt-fetch): non-timeout upstream failures lose the gdelt_unavailable contract

### Server version

0.5.0

### mcp-ts-core version

^0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### OS

macOS 26.1

### Description

Every DOC and TV tool declares `gdelt_unavailable` (`ServiceUnavailable`, `retryable: true`, recovery "Retry after a short delay; GDELT may be temporarily unavailable."). Only an exhausted timeout carries that contract (#39). The other upstream failures `gdeltFetch` can end on reach the caller as a bare…

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

### feat(gdelt_search_themes): find GKG theme identifiers for the theme: query operator

### Use case

The DOC tools accept `theme:<GKG_THEME>` in `query`, but nothing on the MCP surface maps a concept such as drought or displacement to one of the opaque identifiers. The advertised example `theme:DISEASE_OUTBREAK` is not in GDELT's lookup, which lists `TAX_DISEASE_OUTBREAK`.

### Proposed behavior

Add `gdelt_search_themes` over GDELT's [GKG theme lookup](https://data.gdeltproject.org/api/v2/guides/LOOKUP-GKGTHEMES.TXT): 59,315 `THEME<TAB>count` lines as of 2026-09-24, last…

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

### bug(format): Markdown-escape upstream text at the content[] render boundary

### Server version

0.4.0

### mcp-ts-core version

^0.12.3

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### OS

macOS 26.1

### Description

`format()` interpolates upstream text (titles, labels, clip shows and snippets, context terms, station metadata) raw into Markdown headings, link labels, bold spans, and list items, so `content[]` renders it as markup. A nested `[x](y)` or backtick breaks an article link, `*…*` turns into emphasis, a trailing `…

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

### bug(gdelt_search_articles): 250-record page can exceed an MCP context

### Server version

0.4.0

### mcp-ts-core version

^0.12.3

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### OS

macOS 26.1

### Description

`gdelt_search_articles` renders every returned article (up to `maxRecords` 250) into both `structuredContent` and `content[]` with no size bound. Through the real handler and `format()`, an article costs a median 460 bytes per surface (560 max, live 5-article sample), so a full page is about 250 × that.…

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

### bug(date-range): invalid calendar timestamps shift the requested window

### Server version

0.4.0

### mcp-ts-core version

^0.12.3

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### OS

macOS 26.1

### Description

Related: #22

The shared date schema checks only that `startDatetime` and `endDatetime` contain 14 digits. Calendar-invalid values therefore pass MCP validation and can be normalized by GDELT into a different, valid-looking window.

This is a silent wrong-answer path: the response succeeds, but it is not for…

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

### bug(gdelt_get_tv_trending): retire the tool — the frozen TV archive leaves it no successful outcome

### Server version

0.2.6

### mcp-ts-core version

0.10.15

### Runtime

Bun

### Runtime version

Bun 1.3.x

### Transport

HTTP (Streamable HTTP)

### Description

`gdelt_get_tv_trending` has no successful outcome. The upstream `trendingtopics` endpoint still answers HTTP 200 and regenerates its timestamp every 15 minutes, but every topic array is empty. Its computation ran over the live TV monitoring feed, which froze in October 2024, and the endpoint serves no archived snapshot. So every…

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

### bug(gdelt_get_tv_clips): 3000-record ceiling can exceed an MCP context

### Server version

0.2.6

### mcp-ts-core version

^0.10.15

### Runtime

Bun

### Runtime version

Bun 1.3.x

### Transport

HTTP (Streamable HTTP)

### Description

`gdelt_get_tv_clips` renders every returned clip (up to `maxRecords` 3,000) into both `structuredContent` and `content[]` with no size bound. Below 3,000 the cap-hit notice recommends raising `maxRecords`, and `continuationWindows` (#21) fires only at 3,000, after the full page is emitted.

Related: #37 (same fix for…

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

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