Releases: cyanheads/smithsonian-mcp-server
Release list
v0.1.15: Deep pagination reach for find_related, plugin description fix
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.jsonlongDescription realigned with the actual tool output contract (#22)
Fixed:
smithsonian_find_relatedper-signal reach raised 100 → 5,000, fetched in ≤1,000-row upstream chunks;truncationCeilingnow 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.
v0.1.14: searchable term vocab, accurate descriptions
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_termsgains acontainssubstring filter over the term vocabulary, resolving a guessed value (e.g. "greek") to its exact term(s) in one call; a no-match returns anoticeinstead of theno_termserror (#21)
Changed:
smithsonian_search's filtered-zero recovery routesculture/place/date_decadetosmithsonian_list_terms { field, contains };object_type/unit_codekeep the existing result-harvest, and both combine when both kinds of filter are set (#21)smithsonian_get_objectandsmithsonian_find_relateddescriptions 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.
v0.1.13: find_related pagination and signal accumulation, get_object topic parity
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_relatedstartinput pages the merged interleaved sequence contiguously (start = page × limit); each fan-out fetches rows = min(start + limit, 100) from start:0 (#18)truncationCeilingenrichment field — summed upstream match count across contributing signals, an upper bound on the related pool (#18)
Fixed:
smithsonian_get_objectrenders every topic informat(), not just the first 10, restoring content/structuredContent parity (#17)smithsonian_find_relatedsimilarity_signalsaccumulates 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.jsonrepository URL (git+https://...) and author website;manifest.jsongainslicenseandauthor.github/FUNDING.ymladded
89 tests pass; bun run devcheck clean.
v0.1.12: Recovery hints, search term suggestions, and mcp-ts-core 0.10.14 maintenance
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 9ctx.fail()sites across every tool (#14) smithsonian_searchfiltered-zero queries harvest and suggest exactobject_type/unit_codeterms to retry with (#15)datefield onsmithsonian_searchsummaries (#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) andscripts/re-synced to the framework version
Fixed:
smithsonian_list_termspast-end pagination now returns an empty page instead of throwingno_terms(#16)
Dependency bumps:
@cyanheads/mcp-ts-core^0.10.10 → ^0.10.14vitest^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.
v0.1.11: Error-contract fixes and docs reconcile
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:
materialsno 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
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.0tsc-alias^1.8.17 → ^1.9.0js-yaml3.14.2 → 3.15.0 (transitive)
Changed:
smithsonian_list_termsoutput reshapedtermsfrom{value, count}objects to a plainstring[]— 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_termsparses the real upstream shape (barestring[], no counts, norowCount); pagination moved client-side.fieldenum 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_filterwith recovery pointing atsmithsonian_list_terms. (#8) truncated/shown/capmade optional in the enrichment block of all four affected tools — the effective output schema threw on every non-truncated result. (#13)
Security:
js-yamlfix 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
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-specifiersdevcheck 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 bypackaging.pluginManifests(cyanheads/mcp-ts-core#240) ctx.contentmedia collector — image/audio blocks ride content[] only, never structuredContent (cyanheads/mcp-ts-core#239)
Changed:
- Fresh-scaffold devcheck guards re-synced — empty-changelog and missing-.git skips, deleted-SKILL.md guard (cyanheads/mcp-ts-core#242, #243, #237)
- Canvas SQL gate classifies prepare-failed SELECTs as
invalid_sqlwith binder detail (cyanheads/mcp-ts-core#236) DuckdbProvider.describe()qualifies pushed WHERE filters, fixing an ambiguous-column error (cyanheads/mcp-ts-core#235)- Vendored skills re-synced to the installed framework version (cyanheads/mcp-ts-core#238)
64 tests pass; bun run devcheck clean.
v0.1.8: Run release:github under bun
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:githubrunsbun run scripts/release-github.tsinstead oftsx 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
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
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_termstool — enumerate terms forunit_code,object_type,culture,place,date,media_usage,online_media_type; paginate withstart+rows(max 100); terms sorted by object count descending (#6)SmithsonianService.listTerms()service methodRawTermsResponsetype
Changed:
smithsonian_searchfilter field descriptions now referencesmithsonian_list_termsfor vocabulary discoveryinvalid_filtererror recovery hint namessmithsonian_list_termsas resolution step- Server instructions include
smithsonian_list_termsguidance
64 tests pass; bun run devcheck clean.