Skip to content

Releases: cyanheads/exchange-rates-mcp-server

v0.1.5: mcp-ts-core ^0.10.9 adoption

Choose a tag to compare

@cyanheads cyanheads released this 20 Jun 11:34
v0.1.5
f01a532

mcp-ts-core ^0.10.9 adoption

Framework maintenance pass picking up DataCanvas and packaging fixes.

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
  • @biomejs/biome ^2.4.16 → ^2.5.0
  • @types/node ^25.9.3 → ^26.0.0
  • vitest ^4.1.8 → ^4.1.9

Added:

  • check-dependency-specifiers devcheck step — rejects floating specifiers (latest, *, dist-tags) in package.json and bun.lock workspaces (cyanheads/mcp-ts-core#246)
  • Plugin-manifest packaging checks via packaging.pluginManifests — validates plugin.json identity and install args (cyanheads/mcp-ts-core#240)

Changed:

  • fx_dataframe_describe / fx_dataframe_query pick up framework DataCanvas fixes: describe() filter-qualification binder error resolved; SELECT-shaped prepare failures now classify as invalid_sql with DuckDB binder detail (cyanheads/mcp-ts-core#235, #236)
  • 14 vendored skills + 5 devcheck scripts re-synced; outbound User-Agent string synced

45 tests pass; bun run devcheck clean.

v0.1.4: mcp-ts-core ^0.10.6 adoption, ValidationError classification

Choose a tag to compare

@cyanheads cyanheads released this 12 Jun 07:38
v0.1.4
1c4803b

mcp-ts-core ^0.10.6 adoption, ValidationError classification

Adopts @cyanheads/mcp-ts-core ^0.10.6 and tracks its error model.

Added:

  • fx_dataframe_query: truncated output field; format() flags a capped result set (N+ (capped))
  • scripts/clean-mcpb.ts: strips dependency-shipped agent docs from the MCPB bundle (node_modules-nested skills/.claude/.agents/SKILL.md)
  • Dockerfile: bun-native HEALTHCHECK and APP_VERSION-fed OCI version label

Changed:

  • Input-validation failures now classify as ValidationError (-32007) instead of InvalidParams (-32602), across all FX tools, fx_dataframe_query, and fx://rates/latest/{base}
  • createApp name/title and .codex-plugin displayName pinned to the unscoped exchange-rates-mcp-server
  • lint-packaging.ts: bundle-content + identity guards; check-framework-antipatterns.ts: z.coerce.boolean() env-flag rule
  • Anchored .mcpbignore dev-dir patterns; resynced vendored skills, added the techniques skill

Dependencies:

  • @cyanheads/mcp-ts-core ^0.9.21 → ^0.10.6
  • @types/node ^25.9.2 → ^25.9.3

45 tests pass; bun run devcheck clean.

v0.1.3: InvalidParams for unsupported currency, description phrasing fixes

Choose a tag to compare

@cyanheads cyanheads released this 07 Jun 06:32
v0.1.3
b4f2266

InvalidParams for unsupported currency, description phrasing fixes

Two patch fixes to error handling and definition language.

Fixed:

  • fx://rates/latest/{base} — unsupported currency now returns InvalidParams (-32602) instead of InternalError (-32603) (#1)
  • fx_convert_currency description — removed trailing audience-coaching sentence (#2)
  • fx://currencies description — removed "Injectable context" audience-coaching sentence (#2)

43 tests pass; bun run devcheck clean.

v0.1.2: Public hosted endpoint

Choose a tag to compare

@cyanheads cyanheads released this 06 Jun 22:05
v0.1.2
1177dfb

Public hosted endpoint

Registers the public hosted instance at exchange-rates.caseyjhand.com/mcp in the MCP Registry and README.

Added:

  • Public hosted endpoint in server.json remotes (type: streamable-http)
  • README: centered hosted server link + Public Hosted Instance Getting Started subsection

Changed:

  • @types/node ^25.9.1 → ^25.9.2
  • @cyanheads/mcp-ts-core held at ^0.9.21 (allowlisted in devcheck.config.json)

bun run devcheck clean; bun run rebuild succeeded.

v0.1.1: Initial public release

Choose a tag to compare

@cyanheads cyanheads released this 05 Jun 12:00
v0.1.1
eea0ed6

Initial public release

ECB reference FX rates and currency conversion via the Frankfurter API (keyless, ~30 currencies, 1999-01-04 to present).

Added:

  • 7 tools: fx_list_currencies, fx_get_rates, fx_get_rate, fx_convert_currency, fx_get_timeseries, fx_dataframe_describe, fx_dataframe_query
  • 2 resources: fx://rates/latest/{base}, fx://currencies
  • DataCanvas support — fx_get_timeseries spills long ranges (>90 days) to DuckDB for SQL analytics

Security:

  • Input injection hardening: assertCurrencyFormat() + assertDateFormat() guards on all service inputs
  • URL parameter encoding via URLSearchParams and encodeURIComponent() throughout FrankfurterService

43 tests pass; bun run devcheck clean.