Skip to content

Releases: cyanheads/eia-energy-mcp-server

v0.2.8: mcp-ts-core ^0.10.9 maintenance

Choose a tag to compare

@cyanheads cyanheads released this 20 Jun 11:11
v0.2.8
07c7b92

mcp-ts-core ^0.10.9 maintenance

Framework adoption and dependency refresh. No server tool changes.

Changed:

  • Adopt @cyanheads/mcp-ts-core ^0.10.9 — DuckdbProvider.describe({ tableName }) ambiguous-column fix and the canvas SQL gate classifying SELECT-shaped prepare failures as invalid_sql (both reachable via eia_dataframe_describe / eia_dataframe_query), plus the ctx.content image/audio collector
  • Add the check-dependency-specifiers devcheck step (new framework script) — rejects floating specifiers in package.json + bun.lock workspaces
  • Enable plugin-manifest validation via devcheck.config.json packaging.pluginManifests; fill the empty .codex-plugin longDescription
  • Re-sync 14 framework skills and 5 scripts

Dependency bumps:

  • @cyanheads/mcp-ts-core ^0.10.6 → ^0.10.9
  • @duckdb/node-api ^1.5.3-r.3 → ^1.5.4-r.1
  • @types/node ^25.9.3 → ^26.0.0
  • vitest ^4.1.8 → ^4.1.9

165 tests pass; bun run devcheck clean.

v0.2.7: canvas spillover fix, query-input echoes, error contract

Choose a tag to compare

@cyanheads cyanheads released this 13 Jun 12:16
v0.2.7
7e33619

canvas spillover fix, query-input echoes, error contract

Fixes DataCanvas spillover for EIA's {col}-units columns, echoes the applied query inputs back to callers, and declares the system-catalog rejection in the error contract.

Added:

  • eia_query_route echoes appliedStart, appliedEnd, appliedFrequency, and appliedColumns via enrichment (populated only when provided; appliedColumns also renders in the content[] trailer) (#23)
  • eia_dataframe_query echoes the executed SQL as a required executedSql output field and via enrichment (#23)
  • eia_dataframe_query errors[] declares system_catalog_access (ValidationError) for the framework denySystemCatalogs rejection, so agents routing on data.reason self-correct toward df_ tables (#21)

Fixed:

  • DataCanvas spillover for EIA's {col}-units companion columns: the hyphen failed the canvas identifier gate, so registration returned canvas_id: null and silently degraded to the inline preview for nearly every data query. Column identifiers are sanitized before registration ({col}-units{col}_units); the staged table and eia_dataframe_describe report the sanitized names, while inline rows keep the hyphenated keys (#25)

165 tests pass; bun run devcheck clean.

v0.2.6: mcp-ts-core ^0.10.6, server instructions, search-routes truncation

Choose a tag to compare

@cyanheads cyanheads released this 13 Jun 06:40
v0.2.6
bb09d96

mcp-ts-core ^0.10.6, server instructions, search-routes truncation

Adopts @cyanheads/mcp-ts-core ^0.10.6 (with skill + packaging-script sync), adds a server-level instructions string and in-code identity, surfaces truncation signal fields on eia_search_routes, and reclassifies the eia_query_route inverted-date-range error.

Added:

  • Server-level instructions and explicit name/title on createApp()
  • eia_search_routes output fields truncated, shown, captruncated flags when matches hit the requested limit

Changed:

  • eia_dataframe_query system-catalog denial now runs through the framework gate (denySystemCatalogs: true); behavior unchanged
  • EIA_DATAFRAME_DROP_ENABLED parsed with z.stringbool() so false/0/no disable the flag
  • lint:packaging + check-framework-antipatterns packaging/identity guards synced from the framework; bundle runs scripts/clean-mcpb.ts

Removed:

  • sql-gate-extras.ts (bridge-layer system-catalog deny) — superseded by the framework gate

Fixed:

  • eia_query_route inverted date range now returns ValidationError instead of NotFound

Dependencies:

  • @cyanheads/mcp-ts-core ^0.9.21 → ^0.10.6
  • fuse.js ^7.4.1 → ^7.4.2
  • @biomejs/biome ^2.4.16 → ^2.5.0 (dev)
  • @types/node ^25.9.1 → ^25.9.3 (dev)

154 tests pass; bun run devcheck clean.

v0.2.5: Zero-row structured response, total/returned_count output fields

Choose a tag to compare

@cyanheads cyanheads released this 04 Jun 08:07
v0.2.5
db743ed

Zero-row structured response, total/returned_count output fields

eia_query_route now returns structured empty data on zero-row results instead of throwing, and surfaces total/returned_count in every response.

Fixed:

  • Zero-row results from eia_query_route now return { data: [], total: 0, returned_count: 0, notice: '...' } instead of throwing -32001 NotFound (#20)
  • no_data error reason narrowed to inverted-date-range path only
  • Service-layer notFound() throw now includes recovery.hint, consistent with handler path (#22)

Added:

  • total and returned_count required output fields on eia_query_route
  • notice optional field present on zero-row results with filter-adjustment guidance

169 tests pass; bun run devcheck clean.

v0.2.4: mcp-ts-core ^0.9.21: request context, secret-stripped errors, fail-fast retry

Choose a tag to compare

@cyanheads cyanheads released this 02 Jun 14:16
v0.2.4
5aebba6

mcp-ts-core ^0.9.21: request context, secret-stripped errors, fail-fast retry

Adopts @cyanheads/mcp-ts-core ^0.9.21. Framework changes:

Changed:

  • HTTP transport per-request log context fix — per-request logs and traces carry fresh request and trace/span IDs instead of the frozen boot context.
  • fetchWithTimeout strips query-string secrets (e.g. ?api_key=) from error messages and logs.
  • withRetry fails fast on non-retryable errors; ctx.fail auto-populates the retryable flag.
  • README client-config key renamed to eia-energy-mcp-server in all three client-config examples.
  • release:github script added for one-command GitHub Release creation.

Dependencies:

  • @cyanheads/mcp-ts-core ^0.9.16 → ^0.9.21
  • @duckdb/node-api ^1.5.3-r.2 → ^1.5.3-r.3
  • fuse.js ^7.3.0 → ^7.4.1
  • vitest ^4.1.7 → ^4.1.8 (dev)

169 tests pass; bun run devcheck clean.

v0.2.3: Enrichment adoption — query echoes, result totals, empty-result guidance

Choose a tag to compare

@cyanheads cyanheads released this 30 May 09:41
v0.2.3
a0fdf8f

Enrichment adoption — query echoes, result totals, empty-result guidance

search/query/dataframe tools now surface a typed enrichment block in both structuredContent JSON and content[] markdown trailer.

Changed:

  • eia_search_routes: effectiveQuery echo, totalIndexed, and empty-result notice in enrichment; total_indexed removed from output
  • eia_query_route: effectiveRoute, totalCount, returnedCount, appliedFilters in enrichment; total and returned_count removed from output
  • eia_dataframe_query: totalRows, returnedRows, capped-result notice in enrichment; row_count removed from output

Dependency bumps:

  • @cyanheads/mcp-ts-core ^0.9.13 → ^0.9.16

60 tests pass; bun run devcheck clean.

v0.2.2: mcp-ts-core ^0.9.6 → ^0.9.13: HTTP transport hardening, session-init gate, quieter error logs, GET /mcp keywords

Choose a tag to compare

@cyanheads cyanheads released this 29 May 05:02
v0.2.2
21e5803

mcp-ts-core ^0.9.6 → ^0.9.13: HTTP transport hardening, session-init gate, quieter error logs, GET /mcp keywords

Adopts @cyanheads/mcp-ts-core ^0.9.13 from ^0.9.6. HTTP transport gains a configurable request-body cap (413 guard), a session-init gate for stateful mode, and quieter log levels for expected client errors. GET /mcp now surfaces package.json keywords. Explicit landing.requireAuth: false preserves the public tool inventory.

Changed:

  • landing: { requireAuth: false } added to createApp() — preserves full landing-page inventory for unauthenticated callers under the new framework default
  • stdio / streamable-http keywords added to package.json

Dependency bumps:

  • @cyanheads/mcp-ts-core ^0.9.6 → ^0.9.13
  • @duckdb/node-api ^1.5.3-r.1 → ^1.5.3-r.2
  • @biomejs/biome ^2.4.15 → ^2.4.16

59 tests pass; bun run devcheck clean.

v0.2.1: Auto-fetch route metadata on cold cache

Choose a tag to compare

@cyanheads cyanheads released this 25 May 09:08
v0.2.1
992138e

Auto-fetch route metadata on cold cache

When eia_query_route is called without a prior eia_describe_route, the service
now fetches and caches route metadata on-demand before querying, eliminating
silent data-empty results on cold start.

Fixed:

  • eia_query_route auto-describes the route when the metadata cache is cold (#17)

59 tests pass; bun run devcheck clean.

v0.2.0: Repo and package rename to eia-energy-mcp-server

Choose a tag to compare

@cyanheads cyanheads released this 24 May 23:02
v0.2.0
11b0fb9

Repo and package rename to eia-energy-mcp-server

npm: @cyanheads/eia-energy-mcp-server (was @cyanheads/eia-mcp-server)
Docker: ghcr.io/cyanheads/eia-energy-mcp-server
Hosted: eia-energy.caseyjhand.com/mcp
Tool names (eia_*) unchanged — no breaking changes to the MCP surface.

v0.1.7: add @duckdb/node-api for canvas dataframe tools

Choose a tag to compare

@cyanheads cyanheads released this 23 May 18:40
v0.1.7
37a470d

add @duckdb/node-api for canvas dataframe tools

Adds @duckdb/node-api ^1.5.3-r.1. Set CANVAS_PROVIDER_TYPE=duckdb to enable the DuckDB-backed dataframe tools (eia_dataframe_describe, eia_dataframe_query, eia_dataframe_drop).