Releases: cyanheads/worldbank-mcp-server
Release list
v0.1.14: mcp-ts-core ^0.10.9 maintenance
mcp-ts-core ^0.10.9 maintenance
Framework-maintenance sync — no source or behavior changes.
Dependency bumps:
@cyanheads/mcp-ts-core^0.10.6 → ^0.10.9@types/node^25.9.3 → ^26.0.0
Changed:
- Re-synced framework
scripts/andskills/, including the newcheck-dependency-specifiers.tsguard and updateddevcheck.config.jsonchecks
134 tests pass; bun run devcheck clean.
v0.1.13: server instructions + plugin identity unscoping
server instructions + plugin identity unscoping
Server-level orientation on createApp() and unscoped agent-facing plugin identity fields.
Added:
- createApp({ instructions }) — worldbank_* workflow, indicator code format, country forms, and worldbank_get_data constraints, sent on every initialize
Changed:
- Plugin display identity unscoped to worldbank-mcp-server (plugin name, mcpServers key, Codex displayName, Codex mcp.json key); install args stay @cyanheads/worldbank-mcp-server
Dependency bumps:
- @biomejs/biome ^2.4.16 → ^2.5.0
- vitest ^4.1.8 → ^4.1.9
134 tests pass; bun run devcheck clean.
v0.1.12: mcp-ts-core ^0.10.6 adoption, packaging and identity hardening
mcp-ts-core ^0.10.6 adoption, packaging and identity hardening
Adopts the latest framework, pins the served identity to the machine name, and hardens MCPB bundling so dependency-shipped agent docs never leak into the bundle.
Dependencies:
@cyanheads/mcp-ts-core^0.9.21 → ^0.10.6@types/node^25.9.1 → ^25.9.3
Added:
createApp({ name, title })set toworldbank-mcp-server— served identity is the unscoped package name on every surfacescripts/clean-mcpb.tspost-pack cleaner (wired intobundle) stripsnode_modulesagent-doc entries that root-anchored.mcpbignorecannot reachlint-packagingbundle-content + identity guards;check-framework-antipatternsz.coerce.boolean()env-flag rule- Dockerfile
/healthzHEALTHCHECK andorg.opencontainers.image.versionlabel
Changed:
.mcpbignoreroot dev-dir patterns anchored with a leading/- Vendored framework skills re-synced to ^0.10.6
134 tests pass; bun run devcheck clean.
v0.1.11: Typed error contracts, empty getData structured result
Typed error contracts, empty getData structured result
Tools now surface recovery.hint on the wire for all declared error reasons.
getData returns a structured empty result instead of throwing when the WB API returns no observations.
Fixed:
- worldbank_get_country, worldbank_get_indicator: service-layer errors caught and re-thrown via ctx.fail(), populating data.recovery.hint (#10)
- worldbank_get_data: indicator_not_found and country_not_found re-thrown via ctx.fail(); no_data contract entry removed (#10)
- worldbank_get_data: empty items array returns structured result (data: [], paging totals in enrichment) instead of throwing (#9)
- worldbank_list_countries: errors[] contract added for invalid_filter; handler catches service throw and re-routes via ctx.fail() (#11)
134 tests pass; bun run devcheck clean.
v0.1.10: mcp-ts-core ^0.9.21 — log context fix, secret scrubbing, withRetry fail-fast
mcp-ts-core ^0.9.21 — log context fix, secret scrubbing, withRetry fail-fast
Adopts @cyanheads/mcp-ts-core ^0.9.16 → ^0.9.21 with three framework fixes
that improve observability, security, and retry correctness.
Changed:
- HTTP transport per-request log context now carries fresh request/trace/span IDs instead of the frozen boot-time 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
Dependencies:
@cyanheads/mcp-ts-core^0.9.16 → ^0.9.21vitest^4.1.7 → ^4.1.8
Also: README client-config key renamed to full package name; plugin manifests updated.
128 tests pass; bun run devcheck clean.
v0.1.9: enrichment adoption — query echoes, result totals, pagination, empty-result guidance
enrichment adoption — query echoes, result totals, pagination, empty-result guidance
Pagination metadata (total/page/pages) moved from output to a typed enrichment block
across all four search/list/data tools, surfacing in both structuredContent and
content[] automatically. structuredContent keys renamed (total → totalCount,
page → currentPage, pages → totalPages; message → notice in search_indicators).
worldbank_search_indicators gains effectiveQuery; worldbank_get_data gains notice
for empty-result recovery hints.
Changed:
- output fields total/page/pages → enrichment.totalCount/currentPage/totalPages (all 4 tools)
- output.message (worldbank_search_indicators) → enrichment.notice
- worldbank_search_indicators: adds enrichment.effectiveQuery (active filter echo)
- worldbank_get_data: adds enrichment.notice for empty-result guidance
- @cyanheads/mcp-ts-core ^0.9.13 → ^0.9.16
36 tests pass; bun run devcheck clean.
v0.1.8: mcp-ts-core ^0.9.13: 413 body cap, session-init gate, quieter error logging, GET /mcp keywords
mcp-ts-core ^0.9.13: 413 body cap, session-init gate, quieter error logging, GET /mcp keywords
Framework adoption and dependency refresh.
Changed:
@cyanheads/mcp-ts-core^0.9.9 → ^0.9.13 — HTTP transport hardening (configurable 413 body cap via MCP_HTTP_MAX_BODY_BYTES, session-init gate rejects uninitialized-session requests with 400), expected client error log-level split (401/403/400/404 now log at warning, not full error pipeline), GET /mcp surfaces package.json keywords.@biomejs/biome^2.4.15 → ^2.4.16
32 tests pass; bun run devcheck clean.
v0.1.7: Bug fixes, code simplification, mcp-ts-core ^0.9.9
Bug fixes, code simplification, mcp-ts-core ^0.9.9
Two resource files passed cause: err in the wrong argument position to notFound() — it landed in the data object instead of the options bag, silently dropping the error cause from the envelope.
Fixed:
- worldbank-country.resource and worldbank-indicator.resource — cause: err moved to third arg (options) of notFound()
Changed:
- worldbank-search-indicators — missing-filter guard now throws missing_filter (ValidationError) instead of no_match (NotFound)
- worldbank-get-data — invalid_params error contract corrected to ValidationError code
- worldbank-service — consolidated imports, collapsed duplicate clientFilterTerm pagination guard, removed nullish fallback on items, bucket pattern for Map grouping
Dependency bumps:
@cyanheads/mcp-ts-core^0.9.7 → ^0.9.9
32 tests pass; bun run devcheck clean.
v0.1.6: Field-test bug fixes
Field-test bug fixes
Three fixes from field-testing: a crash on invalid API input, a flag that was always false, and inaccurate pagination counts when filtering aggregates.
Fixed:
- Error envelope array unwrap in
getData— WB error responses are wrapped in an array; accessing.messageon the outer array caused TypeError on invalid indicator/country isAggregatelookup now checkscountryiso3code(ISO3, e.g. AFE) in addition tocountry.id(ISO2); aggregate entries were always flagged falselistCountrieswithinclude_aggregates: falseover-fetches all entries and re-paginates client-side;totalandpagesnow reflect the filtered set
32 tests pass; bun run devcheck clean.
v0.1.5: Add hosted server endpoint
Add hosted server endpoint
Registers the public streamable-HTTP endpoint at worldbank.caseyjhand.com/mcp
via the server.json remotes block and README public URL link.
Added:
server.jsonremotesarray with streamable-HTTP entry pointing to https://worldbank.caseyjhand.com/mcp- README public hosted server link in the badge section
32 tests pass; bun run devcheck clean.