Skip to content

Releases: cyanheads/smithsonian-mcp-server

v0.1.15: Deep pagination reach for find_related, plugin description fix

Choose a tag to compare

@cyanheads cyanheads released this 11 Jul 08:28
v0.1.15
358e41d

Deep pagination reach for find_related, plugin description fix

Chunked upstream fetching for smithsonian_find_related and a Codex plugin longDescription alignment.

Changed:

  • .codex-plugin/plugin.json longDescription realigned with the actual tool output contract (#22)

Fixed:

  • smithsonian_find_related per-signal reach raised 100 → 5,000, fetched in ≤1,000-row upstream chunks; truncationCeiling now capped at the reachable depth of each signal (#18)

Dependency bumps:

  • @types/node ^26.1.0 → ^26.1.1
  • @biomejs/biome ^2.5.2 → ^2.5.3

103 tests pass; bun run devcheck clean.

CHANGELOG v0.1.15

v0.1.14: searchable term vocab, accurate descriptions

Choose a tag to compare

@cyanheads cyanheads released this 11 Jul 01:56
v0.1.14
ec7260a

searchable term vocab, accurate descriptions

Resolves guessed filter values to exact vocabulary terms and tightens two tool descriptions to their real output contract.

Added:

  • smithsonian_list_terms gains a contains substring filter over the term vocabulary, resolving a guessed value (e.g. "greek") to its exact term(s) in one call; a no-match returns a notice instead of the no_terms error (#21)

Changed:

  • smithsonian_search's filtered-zero recovery routes culture/place/date_decade to smithsonian_list_terms { field, contains }; object_type/unit_code keep the existing result-harvest, and both combine when both kinds of filter are set (#21)
  • smithsonian_get_object and smithsonian_find_related descriptions no longer claim "full"/"all available"/"provenance" or expose fan-out mechanics — aligned with the actual output contract (#22)

99 tests pass; bun run devcheck clean.

CHANGELOG v0.1.14

v0.1.13: find_related pagination and signal accumulation, get_object topic parity

Choose a tag to compare

@cyanheads cyanheads released this 10 Jul 22:23
v0.1.13
bb904ed

find_related pagination and signal accumulation, get_object topic parity

Three own-issue fixes plus packaging and branding metadata polish — no breaking changes.

Added:

  • smithsonian_find_related start input pages the merged interleaved sequence contiguously (start = page × limit); each fan-out fetches rows = min(start + limit, 100) from start:0 (#18)
  • truncationCeiling enrichment field — summed upstream match count across contributing signals, an upper bound on the related pool (#18)

Fixed:

  • smithsonian_get_object renders every topic in format(), not just the first 10, restoring content/structuredContent parity (#17)
  • smithsonian_find_related similarity_signals accumulates every signal that surfaced an object across fan-outs, not just the first (#19)

Changed:

  • Package/manifest descriptions reworded across package.json, manifest.json, and both plugin manifests
  • package.json repository URL (git+https://...) and author website; manifest.json gains license and author
  • .github/FUNDING.yml added

89 tests pass; bun run devcheck clean.

CHANGELOG v0.1.13

v0.1.12: Recovery hints, search term suggestions, and mcp-ts-core 0.10.14 maintenance

Choose a tag to compare

@cyanheads cyanheads released this 10 Jul 20:04
v0.1.12
c13d944

Recovery hints, search term suggestions, and mcp-ts-core 0.10.14 maintenance

Four own-issue fixes plus framework maintenance and Bun supply-chain hardening — no breaking changes.

Added:

  • Recovery hints (data.recovery.hint) on all 9 ctx.fail() sites across every tool (#14)
  • smithsonian_search filtered-zero queries harvest and suggest exact object_type/unit_code terms to retry with (#15)
  • date field on smithsonian_search summaries (#20)
  • bunfig.toml (Socket scanner + minimumReleaseAge guard), .github/SECURITY.md, .gitattributes

Changed:

  • Dockerfile base pinned to oven/bun:1.3.14, BuildKit cache mounts, build-stage --ignore-scripts
  • Vendored skills/ (12 dirs) and scripts/ re-synced to the framework version

Fixed:

  • smithsonian_list_terms past-end pagination now returns an empty page instead of throwing no_terms (#16)

Dependency bumps:

  • @cyanheads/mcp-ts-core ^0.10.10 → ^0.10.14
  • vitest ^4.1.9 → ^4.1.10
  • @socketsecurity/bun-security-scanner — new, ^1.1.2

83 tests pass; bun run devcheck clean. bun audit: no vulnerabilities.

CHANGELOG v0.1.12

v0.1.11: Error-contract fixes and docs reconcile

Choose a tag to compare

@cyanheads cyanheads released this 05 Jul 03:29
v0.1.11
c3d2fdb

Error-contract fixes and docs reconcile

Removes a duplicated materials/dimensions field, completes the not_found error contract, drops a dead env var, and reconciles descriptions and docs/design.md to as-built.

Fixed:

  • materials no longer duplicates dimension-labeled physicalDescription entries — shared isDimensionLabel() predicate excludes Dimensions/Measurements labels from materials, mirroring how dimensions is built. (#9)
  • SmithsonianService.getContent() not_found errors now carry reason: 'not_found' in data, matching the contract get_object/get_media/find_related already declare (wire code -32001). (#10)

Changed:

  • Tool descriptions across find_related, get_media, get_object, list_terms, and search reworded to value semantics — call-order coaching and implementation-speak removed. (#12)
  • docs/design.md reconciled to as-built: list_terms row added, InvalidParams to ValidationError, not_cc0 to Forbidden, nonexistent fq parameter and online_media_type filter removed, plural filter examples. (#12)
  • CLAUDE.md/AGENTS.md synced to the current framework template (server-identity section, ctx.elicit.url()).

Removed:

  • SMITHSONIAN_MAX_ROWS env var — documented but never read by any tool; no replacement, no schema-default change. (#11)

78 tests pass; bun run devcheck clean.

v0.1.10: list_terms and filter fixes; js-yaml security patch

Choose a tag to compare

@cyanheads cyanheads released this 04 Jul 19:29
v0.1.10
d3f1695

list_terms and filter fixes; js-yaml security patch

Fixes three tracked issues — list_terms upstream shape, filter vocabulary, and an enrichment-schema crash — and patches a moderate js-yaml DoS advisory.

Dependency bumps:

  • @cyanheads/mcp-ts-core ^0.10.9 → ^0.10.10
  • @biomejs/biome ^2.5.0 → ^2.5.2
  • @types/node ^26.0.0 → ^26.1.0
  • tsc-alias ^1.8.17 → ^1.9.0
  • js-yaml 3.14.2 → 3.15.0 (transitive)

Changed:

  • smithsonian_list_terms output reshaped terms from {value, count} objects to a plain string[] — upstream has no per-term counts, and the tool previously errored on every call, so no working consumer received the old shape.

Fixed:

  • smithsonian_list_terms parses the real upstream shape (bare string[], no counts, no rowCount); pagination moved client-side. field enum narrowed to unit_code, culture, place, date, online_media_type. (#7)
  • Filter example values corrected to the Smithsonian controlled vocabulary; a filtered zero-result now throws invalid_filter with recovery pointing at smithsonian_list_terms. (#8)
  • truncated/shown/cap made optional in the enrichment block of all four affected tools — the effective output schema threw on every non-truncated result. (#13)

Security:

  • js-yaml fix clears GHSA-h67p-54hq-rp68 (CVE-2026-53550), a moderate quadratic-complexity DoS in merge-key handling via repeated aliases. bun audit: 1 moderate → 0.

74 tests pass; bun run devcheck clean.

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

Choose a tag to compare

@cyanheads cyanheads released this 20 Jun 18:13
v0.1.9
5098e2f

mcp-ts-core ^0.10.9 maintenance

Framework-maintenance release: adopt mcp-ts-core 0.10.6 → 0.10.9 and re-sync vendored tooling and skills. No server source or tool-surface changes.

Dependency bumps:

  • @cyanheads/mcp-ts-core ^0.10.6 → ^0.10.9
  • @types/node ^25.9.3 → ^26.0.0

Added:

  • check-dependency-specifiers devcheck step — fails on floating specifiers in package.json deps and bun.lock workspaces (cyanheads/mcp-ts-core#246)
  • Plugin-manifest checks in lint:packaging, gated by packaging.pluginManifests (cyanheads/mcp-ts-core#240)
  • ctx.content media collector — image/audio blocks ride content[] only, never structuredContent (cyanheads/mcp-ts-core#239)

Changed:

64 tests pass; bun run devcheck clean.

v0.1.8: Run release:github under bun

Choose a tag to compare

@cyanheads cyanheads released this 16 Jun 01:59
v0.1.8
3c90413

Run release:github under bun

The release:github script invoked tsx, an undeclared dependency; it now runs under bun like every other scripts/*.ts entry.

Fixed:

  • release:github runs bun run scripts/release-github.ts instead of tsx scripts/release-github.ts

Dependency bumps:

  • vitest ^4.1.8 → ^4.1.9

64 tests pass; bun run devcheck clean.

v0.1.7: mcp-ts-core 0.10.6 adoption

Choose a tag to compare

@cyanheads cyanheads released this 13 Jun 04:46
v0.1.7
70a17bd

mcp-ts-core 0.10.6 adoption

Adopts the mcp-ts-core 0.10.x surface — truncation enrichment on the list tools, a ValidationError code migration, an MCPB bundle cleaner, and a Docker healthcheck.

Added:

  • Truncation enrichment on smithsonian_search, smithsonian_explore, smithsonian_list_terms, and smithsonian_find_related — each declares an enrichment block (truncated/shown/cap/truncationCeiling) and emits ctx.enrich.truncated() when the returned set is smaller than the total available.
  • scripts/clean-mcpb.ts, wired into bun run bundle — mcpb clean plus a strip of dependency-shipped agent docs under node_modules/** that root-anchored .mcpbignore patterns cannot reach.
  • Docker HEALTHCHECK on /healthz and an image.version label fed by APP_VERSION.

Changed:

  • invalid_id/invalid_filter error contracts migrated from JsonRpcErrorCode.InvalidParams to JsonRpcErrorCode.ValidationError.
  • createApp() sets name/title to smithsonian-mcp-server explicitly instead of relying on package-name fallback.
  • lint-packaging.ts gains bundle-content and identity guards; check-framework-antipatterns.ts gains a z.coerce.boolean() rule and skips comment lines.
  • Vendored skills re-synced; ctx.sample references dropped from CLAUDE.md/AGENTS.md; techniques skill added.

Dependency bumps:

  • @cyanheads/mcp-ts-core ^0.9.21 → ^0.10.6
  • @biomejs/biome ^2.4.16 → ^2.5.0
  • @types/node ^25.9.1 → ^25.9.3
  • typescript ^5.9.3 → ^6.0.3

64 tests pass; bun run devcheck clean.

v0.1.6: smithsonian_list_terms — enumerate valid filter vocabulary

Choose a tag to compare

@cyanheads cyanheads released this 04 Jun 09:27
v0.1.6
519b9a9

smithsonian_list_terms — enumerate valid filter vocabulary

Add a new tool that enumerates the valid term vocabulary for any indexed Smithsonian filter field before applying filters to smithsonian_search or smithsonian_explore.

Added:

  • smithsonian_list_terms tool — enumerate terms for unit_code, object_type, culture, place, date, media_usage, online_media_type; paginate with start + rows (max 100); terms sorted by object count descending (#6)
  • SmithsonianService.listTerms() service method
  • RawTermsResponse type

Changed:

  • smithsonian_search filter field descriptions now reference smithsonian_list_terms for vocabulary discovery
  • invalid_filter error recovery hint names smithsonian_list_terms as resolution step
  • Server instructions include smithsonian_list_terms guidance

64 tests pass; bun run devcheck clean.