Releases: cyanheads/noaa-climate-mcp-server
v0.2.0: Rename noaa-cdo → noaa-climate; noaa_climate_* tool prefix (#11)
Rename noaa-cdo → noaa-climate; noaa_climate_* tool prefix (#11)
Breaking: new npm package name and tool ids. Name now describes the historical-climate workflow rather than one upstream API (CDO).
Changed:
- Package
@cyanheads/noaa-cdo-mcp-server→@cyanheads/noaa-climate-mcp-server; repo, bin, MCP-registry name, GHCR image, and hosted endpoint follow - All 7 tools reprefixed
noaa_*→noaa_climate_*(e.g.noaa_fetch_data→noaa_climate_fetch_data); tool titlesNOAA CDO …→NOAA Climate …
Added:
tests/tool-naming.test.tspinning the registerednoaa_climate_*set
Migration:
- Install
@cyanheads/noaa-climate-mcp-server; the old package is deprecated. Prefix tool callsnoaa_climate_. Unchanged:NOAA_CDO_TOKEN,noaa://resource URIs, theCdoServicelayer
167 tests pass; bun run devcheck clean.
v0.1.15: mcp-ts-core ^0.10.9 maintenance
mcp-ts-core ^0.10.9 maintenance
Framework maintenance only — no tool, resource, or behavior changes.
Dependency bumps:
@cyanheads/mcp-ts-core^0.10.6 → ^0.10.9@types/node^25.9.3 → ^26.0.0vitest^4.1.8 → ^4.1.9
Added:
check-dependency-specifiersdevcheck step — fails on floating specifiers (latest/*/dist-tags) in package.json and bun.lock workspaces (cyanheads/mcp-ts-core#246)lint:packagingplugin-manifest checks — descriptions, unscoped display name, full install-arg name (cyanheads/mcp-ts-core#240)
Changed:
- Synced framework scripts + skills to the 0.10.7–0.10.9 deltas — fresh-scaffold devcheck guards, worktree-deletion guard,
ctx.contentand OTEL_SERVICE_NAME doc corrections
165 tests pass; bun run devcheck clean.
v0.1.14: mcp-ts-core 0.10.6 adoption
mcp-ts-core 0.10.6 adoption
Adopts @cyanheads/mcp-ts-core ^0.10.6, pins the served identity to the unscoped repo name, and hardens MCPB bundling and the container image.
Added:
- scripts/clean-mcpb.ts — post-pack cleaner: runs mcpb clean, then strips dependency-shipped agent docs (skills/, .claude/, .agents/, SKILL.md) nested under node_modules/ that root-anchored .mcpbignore cannot reach
- lint:packaging — bundle-content + identity checks (root-anchored .mcpbignore dev-dir patterns, zero node_modules agent-doc entries in built bundles, name/title/display_name equal the unscoped package name)
- check-framework-antipatterns rule 4 — flags z.coerce.boolean() env flags in favor of z.stringbool()
- Dockerfile HEALTHCHECK on /healthz and org.opencontainers.image.version label
Changed:
- createApp() sets explicit name/title noaa-cdo-mcp-server
- .codex-plugin displayName de-scoped to noaa-cdo-mcp-server
Dependency bumps:
- @cyanheads/mcp-ts-core ^0.9.21 → ^0.10.6
- @biomejs/biome ^2.4.16 → ^2.5.0
- @types/node ^25.9.2 → ^25.9.3
165 tests pass; bun run devcheck clean.
v0.1.13: Patch: datasetId validation, not_found recovery hint, corrected entity counts
Patch: datasetId validation, not_found recovery hint, corrected entity counts
Three targeted fixes landed in this release.
Fixed:
- noaa_fetch_data: unknown datasetId now surfaces validation_error with a recovery hint instead of a raw HTTP 500 — KNOWN_DATASETS set validated client-side before the request. (#13)
- noaa_get_station: not_found error now carries a Recovery hint pointing to noaa_find_stations — hint was declared in the error contract but not forwarded at the throw site. (#14)
- noaa_find_locations: ST location count corrected from ~52 to 51. (#16)
- noaa_list_data_categories: category count corrected from ~41 to 42. (#16)
Dependency bumps:
@types/node^25.9.1 → ^25.9.2
165 tests pass; bun run devcheck clean.
v0.1.12: HTTP 400 validation_error contract across all 6 tools
HTTP 400 validation_error contract across all 6 tools
All six query tools now catch McpError(InvalidParams) from the CDO service
layer on HTTP 400 responses and re-throw via ctx.fail('validation_error', ...)
with tool-specific recovery hints. This populates data.reason for machine
consumers routing on structured error fields.
Fixed:
- noaa_fetch_data and noaa_list_datasets: validation_error was declared but unreachable via ctx.fail (#8)
- noaa_find_locations, noaa_find_stations, noaa_list_data_categories, noaa_list_data_types: added validation_error contract entries and catch blocks (#9)
157 tests pass; bun run devcheck clean.
v0.1.11: mcp-ts-core ^0.9.21 adoption
mcp-ts-core ^0.9.21 adoption
Adopts @cyanheads/mcp-ts-core 0.9.21 with three framework-level fixes.
Changed:
- Per-request log context fix — per-request logs and traces carry fresh request + 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.
- Re-synced skills to framework 0.9.21 (add-service, add-tool, api-canvas, api-context, api-linter, api-utils, design-mcp-server, release-and-publish); added api-mirror and orchestrations skills.
- README client-config key renamed to full package name.
Dependency bumps:
- @cyanheads/mcp-ts-core ^0.9.16 -> ^0.9.21
- vitest ^4.1.7 -> ^4.1.8
145 tests pass; bun run devcheck clean.
v0.1.10: Enrichment adoption — query echoes, totals, empty-result guidance
Enrichment adoption — query echoes, totals, empty-result guidance
Six search/list/fetch tools now surface a typed enrichment block in both
structuredContent and content[]: totalCount (true result count before the
page limit), effectiveQuery (noaa_fetch_data only), and optional notice
with actionable next steps when zero results are returned.
Changed:
- noaa_list_datasets, noaa_list_data_categories: enrichment.totalCount, optional enrichment.notice
- noaa_list_data_types, noaa_find_locations, noaa_find_stations: enrichment.totalCount, optional enrichment.notice with applied-filter echoes
- noaa_fetch_data: enrichment.totalCount, enrichment.effectiveQuery (dataset/dates/units/filters), optional enrichment.notice
- format script split into format and format:unsafe
Dependency bumps:
@cyanheads/mcp-ts-core^0.9.13 → ^0.9.16
38 tests pass; bun run devcheck clean.
v0.1.9: mcp-ts-core ^0.9.9 → ^0.9.13: HTTP hardening and log-level improvements
mcp-ts-core ^0.9.9 → ^0.9.13: HTTP hardening and log-level improvements
Adopts framework ^0.9.13 from ^0.9.9, adding configurable request-body capping, an HTTP session-init guard, and quieter expected-error logging.
-
MCP_HTTP_MAX_BODY_BYTES — 413 rejection before SDK parsing; default 1 MiB.
-
HTTP session-init gate — stateful HTTP rejects non-initialize requests missing Mcp-Session-Id with 400.
-
httpErrorHandler log-level split — 401/403/400/404 use logger.warning, eliminating stack-trace noise for expected client errors.
-
landing.requireAuth: false set in createApp() to preserve public-catalog behavior after the framework default change.
-
GET /mcp keywords — package.json keywords now surfaced on the status endpoint.
-
@cyanheads/mcp-ts-core ^0.9.9 → ^0.9.13
-
@biomejs/biome ^2.4.15 → ^2.4.16
34 tests pass; bun run devcheck clean.
v0.1.8: code simplification, mcp-ts-core ^0.9.9, error code corrections
code simplification, mcp-ts-core ^0.9.9, error code corrections
Nullish coalescing and conditional spread cleanup across cdo-service and 5 tool files. Error codes corrected at 3 sites (InvalidParams → ValidationError). mcp-ts-core upgraded through 0.9.8 and 0.9.9 — fuzzTool Phase 1 pre-parse, ZodArray minLength, fast-check optional peer dep.
Changed:
- Null coalescing and conditional spread normalization across cdo-service.ts and 5 tool files
- Template literal for server instructions; duplicate qs.toString() call eliminated
- Error codes: date_range_exceeded and invalid_params corrected to ValidationError at 3 sites
- git-wrapup v1.0 skill added; release-and-publish updated to v2.6
Dependency bumps:
@cyanheads/mcp-ts-core^0.9.7 → ^0.9.9
34 tests pass; bun run devcheck clean.
v0.1.7: pagination offset fix, dead error contract cleanup
pagination offset fix, dead error contract cleanup
Fixes two field-test findings: pagination sent 0-based offsets to a 1-based API, and 5 tools declared a no_results error contract their handlers never threw.
Fixed:
- buildParams — converts 0-based client offset to 1-based before sending to NOAA CDO API
- noaa_fetch_data, noaa_find_locations, noaa_find_stations, noaa_list_data_categories, noaa_list_data_types — removed unused no_results error contract entries
34 tests pass; bun run devcheck clean.