Skip to content

Releases: cyanheads/faostat-mcp-server

v0.1.4: mcp-ts-core ^0.10.8 — canvas binder detail on malformed-column SQL

20 Jun 05:29
v0.1.4
d6a6ac7

Choose a tag to compare

mcp-ts-core ^0.10.8 — canvas binder detail on malformed-column SQL

Adopts the framework's native invalid_sql classification for canvas SELECTs; the server's gate-reason remap stays for non-SELECT / denied / malformed-identifier statements.

Fixed:

  • faostat_dataframe_query: a SELECT with a mistyped column now surfaces invalid_sql with the DuckDB binder detail (data.binderMessage) naming the bad column, instead of a misleading non_select_statement (mcp-ts-core#236)
  • faostat_dataframe_describe: filtered table lookups no longer raise an ambiguous-column Binder Error (mcp-ts-core#235)

Changed:

  • canvas-staging gate-reason remap retained for non-SELECT / denied / malformed-identifier reasons; native invalid_sql passes through with the binder detail intact. Comments corrected; regression test asserts the binder detail
  • devcheck outdated allowlist reconciled to empty; framework scaffold scripts re-synced (mcp-ts-core#242, #243, #237)

Dependencies:

  • @cyanheads/mcp-ts-core ^0.10.6 -> ^0.10.8
  • @duckdb/node-api ^1.5.3-r.3 -> ^1.5.4-r.1
  • @types/node 25.9.3 -> 26.0.0

62 tests pass; bun run devcheck clean.

v0.1.3: spill dead band + error-contract alignment

20 Jun 02:58
v0.1.3
d80c94e

Choose a tag to compare

spill dead band + error-contract alignment

Closes the 51-~600-row dead band in faostat_query_observations where mid-size results silently dropped rows, and aligns each tool's advertised error-contract reasons with what the handlers and SQL gate actually emit.

Fixed:

  • faostat_query_observations no longer drops rows for results of 51-~600. The not-spilled previewRows (the complete set under the char budget) is returned inline instead of re-capping at limit with a misleading 'enable DataCanvas' notice. (#1)
  • faostat_commodity_profile no longer advises enabling an already-on canvas when the merged set fits inline. (#1)

Changed:

  • Removed dead errors[] entries: unknown_domain + empty_result (query_observations), no_match (resolve_codes). (#2)
  • faostat_dataframe_query remaps every SQL-validity gate reason (from SQL_GATE_REASONS) to a stable invalid_sql; missing_table and system_catalog_access keep their own reasons. Declared set is now canvas_disabled, missing_table, system_catalog_access, invalid_sql. (#2)

Dependencies:

  • better-sqlite3 ^12.10.1 -> ^12.11.1
  • node-cron ^4.2.1 -> ^4.4.1

62 tests pass; bun run devcheck clean.

v0.1.2: hosted endpoint at faostat.caseyjhand.com/mcp

15 Jun 16:45
v0.1.2
a34c3c9

Choose a tag to compare

hosted endpoint at faostat.caseyjhand.com/mcp

Public Streamable HTTP instance added to server.json remotes and README.

Added:

Dependency bumps:

  • vitest ^4.1.8 → ^4.1.9

45 tests pass; bun run devcheck clean.

v0.1.1: Metadata fixes

14 Jun 10:42
e30d330

Choose a tag to compare

Metadata fixes

Scoped the README header to the published npm name and added the repository field to the MCPB manifest.

Added:

  • manifest.json repository field, matching package.json and server.json

Changed:

  • README <h1> scoped to @cyanheads/faostat-mcp-server
  • better-sqlite3 ^12.0.0 → ^12.10.1

45 tests pass; bun run devcheck clean.

v0.1.0: Initial release — FAOSTAT food & agriculture statistics over MCP

13 Jun 17:58
v0.1.0
6f0e560

Choose a tag to compare

Initial release — FAOSTAT food & agriculture statistics over MCP

Global food & agriculture statistics from the UN FAOSTAT bulk-download corpus, served from a local SQLite mirror with a DataCanvas SQL surface. STDIO & Streamable HTTP.

Added:

  • faostat_list_domains — full domain catalog from the live bulk manifest, annotated with local mirror status.
  • faostat_resolve_codes — FTS5 resolution of human terms to area/item/element codes; flags country vs aggregate, surfaces the CPC crosswalk.
  • faostat_query_observations — domain cube by area/item/element + year range; excludes aggregate regions (codes >= 5000) by default; spills large results to DataCanvas.
  • faostat_commodity_profile — top producers, production trend, and trade flows for one commodity in a single call.
  • faostat_dataframe_query / faostat_dataframe_describe — read-only SQL over staged canvas tables, plus table introspection.
  • faostat-mirror service — per-domain MirrorService (SQLite + FTS5) and shared dimension store, fed by a streaming bulk-ZIP ingester; mirror:init / mirror:refresh / mirror:verify CLI.

Notes:

  • Keyless bulk-download data path; run mirror:init to load the corpus before querying.
  • Mirror and DataCanvas are native (better-sqlite3 / bun:sqlite, @duckdb/node-api) — Node/Bun only.

45 tests pass; bun run devcheck clean.