# Reported issues for socrata-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 [socrata-mcp-server](/mcp/socrata-mcp-server).

## Most discussed

### bug(output): rendered content truncates rows and fields present in structuredContent

### Server version

0.1.16

### mcp-ts-core version

^0.13.6

### Runtime

Bun

### Runtime version

Bun 1.3.14

### Transport

HTTP (Streamable HTTP)

### Description

Four `format()` paths cap a value in `content[]` that `structuredContent` carries in full, so clients reading only `content[]` lose data with no way to retrieve it:

- `socrata_dataframe_query`: executed SQL sliced to 200 characters, silently.
- `socrata_get_dataset`: dataset description capped at 2000 characters.
-…

[Read the thread](https://github.com/cyanheads/socrata-mcp-server/issues/19) · 2026-07-05 · closed · 6 comments

### bug(socrata-service): 404 and 429 lose reason and recovery unless the body is SODA-shaped JSON

### Server version

0.1.16

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`SocrataService.fetchJson` maps 404 → `not_found` and 429 → `rate_limited` only inside `if (sodaErr)`, which requires a JSON body with `code`/`errorCode` plus `message`. Any other body falls through to `httpErrorFromResponse` with no `reason`, so the tools' contract rewrap never fires and no recovery hint is sent. Three live 404…

[Read the thread](https://github.com/cyanheads/socrata-mcp-server/issues/27) · 2026-07-27 · closed · 5 comments

### bug(socrata_get_dataset): off-host redirect to a non-Socrata JSON page returns an empty success

### Server version

0.1.16

### mcp-ts-core version

^0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

stdio

### Description

`data.oxnard.org` no longer serves Socrata: `/api/views/<id>.json` redirects to `oxnardca.opengov.com/data`, which answers `Accept: application/json` with HTTP 200 and an unrelated JSON document. `socrata_get_dataset` accepts that as dataset metadata and returns a "successful" record with an empty name and no columns. The dataset resource already…

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

### bug(socrata-service): URL-shaped domain builds https://https:// and retries a DNS failure to exhaustion

### Server version

0.1.16

### mcp-ts-core version

^0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

stdio

### Description

`domain` is interpolated into `https://${domain}/...` verbatim, so a caller who passes a URL-shaped value — the form a portal's address bar shows — builds `https://https://data.cdc.gov/...`. On `socrata_get_dataset` and `socrata_query_dataset` the resulting DNS failure is treated as transient and retried to exhaustion before surfacing as a raw…

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

### bug(socrata_list_portals): dataset_count skips the Discovery alias, reporting 0 for a portal that has datasets

### Server version

0.1.15

### mcp-ts-core version

^0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`findDatasets` comma-joins `DISCOVERY_DOMAIN_ALIASES` into the Discovery `domains` filter, but `fetchPortalDatasetCount` sets `domains: domain` with no alias expansion. For a portal whose catalog assets live under an alias tenant, the count query necessarily returns `resultSetSize: 0` — the map's own doc comment records that…

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

### feat(socrata_query_dataset): name the staged table and socrata_dataframe_describe when a result spills to canvas

### Use case

When `socrata_query_dataset` spills to a DataCanvas, it returns a `canvas_id` but no table name, and it never mentions `socrata_dataframe_describe`, the only tool that reveals the name. A caller writing SQL has to guess the `FROM` target, gets `table_not_found`, and only then sees the hint that points at describe.

The truncation notice is also written before the spill runs. Responses that already carry a `canvas_id` still say to query the canvas "when…

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

### bug(socrata_find_datasets,socrata_query_dataset): column_names are display labels, unusable as SoQL field names

### Server version

0.1.16

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

stdio

### Description

`socrata_find_datasets` fills `column_names` from the Discovery API's `resource.columns_name` — display labels, not the API field names SoQL takes. A label matches only when it equals the field name up to case (`DBA` works); labels with spaces fail to parse. The describe frames the gap as types-only ("Preview column name list (no type info)"), and…

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

### bug(socrata_get_dataset,socrata_query_dataset): not_found hides the queried domain and blames retirement for a cross-portal ID

### Server version

0.1.16

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

stdio

### Description

A Socrata four-by-four ID is only meaningful relative to its portal. `socrata_get_dataset` and `socrata_query_dataset` take `domain` as optional and fall back to `SOCRATA_DEFAULT_DOMAIN` (`data.seattle.gov`), so an ID from any other portal is looked up on the wrong host. The `not_found` that follows names neither the ID nor the domain (the…

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

## Most recent

### bug(socrata-service): a non-tabular asset's 403 surfaces as bare 'Forbidden' with no reason

### Server version

0.2.1

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

Related: #39

A row query against a non-tabular Socrata asset (a file, a map, or an external link that `socrata_find_datasets` lists by default) gets HTTP 403 with a SODA body, `{"error": true, "message": "no row or column access to non-tabular tables"}`. That body matches neither the app-token branch nor the gateway branch in…

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

### feat(socrata_query_dataset): no way to stage a canvas without paying for the full inline page

### Use case

An agent that wants the wider result set for SQL analysis has to request a full page it will not read. The canvas spill fires only when `rowCount >= limit`, so staging the bounded 50,000-row copy requires asking for the maximum page — and that page comes back inline in `structuredContent.rows` as well.

Measured: `{"limit":5000,"select":"report_number,offense_date,offense_category,precinct,neighborhood"}` against a Seattle crime dataset returned 1,135,178 bytes (~284k tokens)…

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

### bug(socrata_dataframe_describe): description promises registration time but output omits it

### Server version

0.1.14

### mcp-ts-core version

0.10.14

### Runtime

Bun

### Runtime version

Bun 1.3.14

### Transport

HTTP (Streamable HTTP)

### OS

macOS 26.1

### Description

`socrata_dataframe_describe`'s description says it lists each table's "schema, row count, column names, and registration time," but neither the advertised output schema nor either client response path contains a registration timestamp.

### Steps to reproduce

1. Enable canvas and stage rows with…

[Read the thread](https://github.com/cyanheads/socrata-mcp-server/issues/26) · 2026-07-16 · closed · 1 comment

### bug(canvas): spilled tables lose SODA number types and drop columns null in the first 100 rows

### Server version

0.2.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

stdio

### OS

macOS 27.0

### Description

When `socrata_query_dataset` spills to a DataCanvas, it registers the rows with no schema, so DuckDB sniffs the first 100 rows. This causes two problems:

- SODA 2.1 returns number values as strings, so every Number column lands as `VARCHAR`. `year > 2020` then fails, even though `socrata_dataframe_query`'s description says it…

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

### bug(socrata_query_dataset): assembled_query omits pagination offset

### Server version

0.2.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

stdio

### OS

macOS 27.0

### Description

`socrata_query_dataset` returns `assembled_query` as the SoQL behind the returned rows, but drops `$offset`. Two pages of the same query report the same `assembled_query` in `structuredContent` and in the `**Query:**` line of `content[]`. Paging itself works: only the reported query is incomplete.

### Steps to reproduce

1.…

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

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