Releases: cyanheads/libofcongress-mcp-server
Release list
v0.2.12: Subject-namespace filtering, totalCount consistency, and newspaper page metadata fallbacks
Subject-namespace filtering, totalCount consistency, and newspaper page metadata fallbacks
Three fixes: LCSH-only subject suggestions, totalCount agreement on empty results, and URL-derived newspaper page metadata.
Added:
libofcongress_get_newspaper_pagederivesdateandsequencefrom the page URL when the resource endpoint omits them (#28)
Fixed:
libofcongress_search_subjectsfilters suggest results to the LCSH subjects namespace (#25)libofcongress_browse_collections,libofcongress_search, andlibofcongress_search_newspapersre-enrichtotalCountto 0 on empty results (#27)
171 tests pass; bun run devcheck clean.
v0.2.11: search/get_item id fixes, mcp-ts-core ^0.10.14
search/get_item id fixes, mcp-ts-core ^0.10.14
Fixes the search→get_item id contract (#24, #26) and adopts mcp-ts-core ^0.10.14 with supply-chain install hardening.
Added:
is_itemfield onlibofcongress_searchresults — flags catalog items resolvable vialibofcongress_get_item(#24)bunfig.tomlsupply-chain guard —minimumReleaseAge+ Socket install scanner.github/SECURITY.md,.gitattributes
Changed:
- Docker base image pinned to
bun:1.3.14/1.3.14-slim; build installs with--ignore-scripts - Vendored skills/scripts re-synced to the framework
Dependency bumps:
@cyanheads/mcp-ts-core^0.10.9 → ^0.10.14@biomejs/biome^2.5.0 → ^2.5.3@types/node^26.0.0 → ^26.1.1ignore^7.0.5 → ^7.0.6tsc-alias^1.8.17 → ^1.9.0vitest^4.1.9 → ^4.1.10@socketsecurity/bun-security-scanner^1.1.2 (new)
Fixed:
libofcongress_searchid extraction preserves the full/item/path for multi-segment newspaper ids (#24)libofcongress_get_itemencodes multi-segment ids per path segment instead of flattening slashes to%2F(#24)libofcongress_get_itemand thelibofcongress://item/{item_id}resource normalize protocol-relative urls tohttps://(#26)
161 tests pass; bun run devcheck clean.
v0.2.10: mcp-ts-core ^0.10.9 maintenance refresh
mcp-ts-core ^0.10.9 maintenance refresh
Framework and dev-dependency refresh; vendored skills and devcheck scripts re-synced.
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)- Plugin marketplace manifest checks in
lint:packaging— validates .claude-plugin and .codex-plugin descriptions, unscoped identity, and the full-package install arg (cyanheads/mcp-ts-core#240)
Changed:
- Framework refresh adds
ctx.contentfor image/audio blocks (cyanheads/mcp-ts-core#239), classifies SELECT-shaped Canvas SQL prepare failures asinvalid_sql(cyanheads/mcp-ts-core#236), and fixes aDuckdbProvider.describe()ambiguous-column error (cyanheads/mcp-ts-core#235) - 13 vendored skills and 6 devcheck scripts re-synced to the framework (cyanheads/mcp-ts-core#237, #238, #242, #243)
151 tests pass; bun run devcheck clean.
v0.2.9: mcp-ts-core ^0.10.6 adoption, display identity, bundle cleaning
mcp-ts-core ^0.10.6 adoption, display identity, bundle cleaning
Adopts the 0.10.x framework line and adds explicit display identity,
subject-search truncation disclosure, and MCPB bundle-content cleaning.
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
Added:
libofcongress_search_subjectsenrichment:truncated/shown/capwith raise-limit guidance when results hit the capscripts/clean-mcpb.ts— strips dependency-shipped agent docs (skills/, .claude/, .agents/, SKILL.md) from the.mcpbbundle- Docker
HEALTHCHECKpolling /healthz;org.opencontainers.image.versionlabel
Changed:
createApp()setsname/titleto libofcongress-mcp-server;.codex-plugindisplayName de-scoped to match.mcpbignoredev-dir patterns anchored;/.agents/and/skills/added
151 tests pass; bun run devcheck clean.
v0.2.8: Rate-limit error contract fix across all 5 tools
Rate-limit error contract fix across all 5 tools
All 5 tool handlers now route rate-limit throws from the service layer through ctx.fail() so the framework's contract-correlation machinery auto-populates retryable and recovery.hint.
Fixed:
- Rate-limit error routing — all 5 tool handlers wrap the service call in try/catch and re-throw rate-limit errors via ctx.fail('rate_limit_exceeded') instead of letting the service factory throw bypass the contract entry (#22).
- Error code — corrected from JsonRpcErrorCode.ServiceUnavailable (-32000) to JsonRpcErrorCode.RateLimited (-32003) in all 5 contracts.
- retryable: false — added to each rate_limit_exceeded contract entry; framework retry machinery now receives an explicit do-not-retry signal for the 1-hour block window.
- Test — libofcongress-search rate-limit test updated to pass errors contract to createMockContext.
151 tests pass; bun run devcheck clean.
v0.2.7: mcp-ts-core ^0.9.21: per-request log context, secret scrubbing, withRetry fail-fast
mcp-ts-core ^0.9.21: per-request log context, secret scrubbing, withRetry fail-fast
Adopts @cyanheads/mcp-ts-core ^0.9.16 → ^0.9.21. Per-request logs and traces now
carry fresh request + trace/span IDs instead of the frozen boot context. fetchWithTimeout
strips query-string secrets from error messages. withRetry fails fast on non-retryable
errors; ctx.fail auto-populates the retryable flag.
Changed:
- README client-config keys updated to full package name
libofcongress-mcp-server;
bunx/npxargs corrected to scoped name@cyanheads/libofcongress-mcp-server@latest - Skills re-synced:
add-tool,add-service,api-canvas,api-context,api-linter,
api-utils,design-mcp-server,release-and-publishupdated;api-mirrorand
orchestrationsskills added scripts/release-github.tsandrelease:githubnpm script added
Dependencies:
@cyanheads/mcp-ts-core^0.9.16 -> ^0.9.21vitest^4.1.7 -> ^4.1.8
151 tests pass; bun run devcheck clean.
v0.2.6: Enrichment adoption — typed enrichment block on search/browse tools
Enrichment adoption — typed enrichment block on search/browse tools
Search and browse tools now surface query echoes, true result totals, and empty-result guidance in a typed enrichment block that reaches both structuredContent and the content[] markdown trailer automatically.
Changed:
libofcongress_search,libofcongress_search_newspapers,libofcongress_browse_collections,libofcongress_search_subjects— enrichment adoption: effectiveQuery, totalCount, and notice in a typed enrichment block (both channels).structuredContent— the message key (previously in domain output) moved to enrichment.notice; value and presence semantics unchanged.- All four search/browse tools — removed the unreachable empty_results error contract (#21); empty results return success with enrichment.notice guidance.
Dependency bumps:
@cyanheads/mcp-ts-core^0.9.13 → ^0.9.16
81 tests pass; bun run devcheck clean.
v0.2.5: mcp-ts-core ^0.9.9 → ^0.9.13, dep refresh, public catalog landing fix
mcp-ts-core ^0.9.9 → ^0.9.13, dep refresh, public catalog landing fix
Framework adoption (0.9.10–0.9.13) brings HTTP hardening and DX improvements.
Changed:
landing.requireAuth: false— explicit opt-out of the new auth-gated default for public hosted catalogs (0.9.13)@cyanheads/mcp-ts-core^0.9.9 → ^0.9.13
Added:
MCP_HTTP_MAX_BODY_BYTES— configurable inbound body cap (default 1 MiB); oversized requests rejected with 413 before body parsing- HTTP session-init gate — non-
initializerequests withoutMcp-Session-Idrejected with 400 - Expected client errors (401/403/400/404) now log at warning level instead of full error pipeline
GET /mcpkeywords —package.jsonkeywords now surfaced on the status endpoint- Plugin metadata files (
.claude-plugin/,.codex-plugin/) skills/code-simplifier/— synced from frameworkMCP_HTTP_MAX_BODY_BYTESdocumented in.env.examplemanifest.json—repository,homepage,licensefields added
Dependency bumps:
@cyanheads/mcp-ts-core^0.9.9 → ^0.9.13@biomejs/biome^2.4.7 → ^2.4.16@types/node^25.6.0 → ^25.9.1tsc-alias^1.8.16 → ^1.8.17typescript^5.9.3 → ^6.0.3vitest^4.1.0 → ^4.1.7
81 tests pass; bun run devcheck clean.
v0.2.4: FUNDING.yml, hosted URL in README, trim npm files
FUNDING.yml, hosted URL in README, trim npm files
Metadata and discoverability patch.
Added:
- .github/FUNDING.yml (GitHub Sponsors + Buy Me a Coffee)
- Hosted server URL to README (https://libofcongress.caseyjhand.com/mcp)
Changed:
- package.json files — removed changelog/ and AGENTS.md from npm bundle
81 tests pass; bun run devcheck clean.
v0.2.3
Drop tsx, align scripts to bun-native execution, revert Dockerfile to oven/bun
Build tooling alignment release — removes the tsx runtime dependency and runs all scripts natively under Bun. Dockerfile build stage returns to oven/bun:1.3.
Changed:
- All package.json scripts switched from tsx to bun run scripts/*.ts
- start:stdio and start:http now invoke bun ./dist/index.js (not node)
- Dockerfile build stage reverted from node:24-slim to oven/bun:1.3 (bun install + bun run build)
- funding block added to package.json
Removed:
- tsx devDependency
81 tests pass; bun run devcheck clean.