Releases: cyanheads/openfec-mcp-server
Release list
v0.4.13: mcp-ts-core ^0.10.9 maintenance
mcp-ts-core ^0.10.9 maintenance
Framework-tooling refresh — no server behavior changes.
Dependency bumps:
@cyanheads/mcp-ts-core^0.10.6 → ^0.10.9@biomejs/biome^2.4.16 → ^2.5.0@types/node^25.9.3 → ^26.0.0vitest^4.1.8 → ^4.1.9
Added:
check-dependency-specifiersdevcheck step — rejects floating specifiers in package.json + bun.lock workspaces (cyanheads/mcp-ts-core#246)lint:packagingplugin-manifest checks, gated by devcheck.config.jsonpackaging.pluginManifests(cyanheads/mcp-ts-core#240)
Changed:
- Fresh-scaffold / worktree-deletion guards in build-changelog, check-framework-antipatterns, check-skill-versions (cyanheads/mcp-ts-core#242, #243, #237)
api-contextskill documentsctx.content(cyanheads/mcp-ts-core#239); skill metadata re-syncs (cyanheads/mcp-ts-core#238)
265 tests pass; bun run devcheck clean.
v0.4.12: mcp-ts-core 0.10.6, packaging guards, identity pinning
mcp-ts-core 0.10.6, packaging guards, identity pinning
Adopts mcp-ts-core 0.10.6 and hardens bundle/packaging hygiene and in-code identity.
Added:
- In-code identity: createApp() name/title and manifest display_name pinned to openfec-mcp-server
- clean-mcpb.ts strips dependency-shipped agent docs (skills/, .claude/, .agents/, SKILL.md) from the MCPB bundle
- lint-packaging.ts bundle-content + identity checks (anchored .mcpbignore, no runtime-path stripping, zero node_modules agent-doc entries, name/title/display_name match)
- check-framework-antipatterns.ts rule against z.coerce.boolean() on env flags
- Dockerfile /healthz HEALTHCHECK (bun-native fetch) and APP_VERSION OCI label
Changed:
- server.json FEC_API_KEY description trimmed
Dependency bumps:
- @cyanheads/mcp-ts-core ^0.9.21 → ^0.10.6
- @types/node ^25.9.2 → ^25.9.3
265 tests pass; bun run devcheck clean.
v0.4.11: Three search/validation bug fixes
Three search/validation bug fixes
All three fixes address field-test findings on the live OpenFEC API.
Fixed:
-
openfec_search_legal — respondent, regulatory_citation, and statutory_citation now satisfy the hasFilter gate on their own; previously returned missing_filter when used without query/type/ao_number/case_number (#7)
-
candidate/committee ID validation — removed field-level .regex() from six search tools; handler validators (validateCandidateId, validateCommitteeId) now fire as sole enforcement, surfacing the friendly format message instead of the raw Zod regex pattern. Also resolves a JSON-Schema pattern/runtime case-sensitivity mismatch. (#8)
-
openfec_lookup_elections summary mode — independent_expenditures from /elections/summary/ is now annotated with a caveat flagging it as an unreconciled upstream aggregate; directs to openfec_search_expenditures mode:by_candidate for verified per-committee totals (#9)
Dependency bumps:
@types/node^25.9.1 -> ^25.9.2
265 tests pass; bun run devcheck clean.
v0.4.10: McpError preservation and search_legal totalCount enrichment
McpError preservation and search_legal totalCount enrichment
Two targeted bug fixes.
Fixed:
rethrowSanitized— re-throws McpError instances with original code and data intact instead of wrapping into plain Error. Fixes 422 → ValidationError misclassification (was InternalError) and preserves 404/429/403 codes. (#4)openfec_search_legalenrichment — adds totalCount to the enrichment schema and calls ctx.enrich.total(), aligning with all eight other tools. (#6)
259 tests pass; bun run devcheck clean.
v0.4.9: mcp-ts-core 0.9.21 framework adoption
mcp-ts-core 0.9.21 framework adoption
Adopts @cyanheads/mcp-ts-core ^0.9.21 with three notable fixes from the 0.9.16–0.9.21 range.
Changed:
- HTTP transport per-request log context — per-request logs and traces carry fresh request + trace/span IDs instead of the frozen boot context.
- fetchWithTimeout error messages — query-string secrets (e.g. ?api_key=) are stripped from error messages and logs before surfacing.
- 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
252 tests pass; bun run devcheck clean.
v0.4.8: enrichment adoption on all 9 tools
enrichment adoption on all 9 tools
All search and lookup tools now surface a typed enrichment block with totalCount (true result count before pagination) and an optional notice (empty-result guidance). Both structuredContent JSON and content[] markdown carry the data.
Added:
- enrichment block on openfec_search_candidates, openfec_search_committees, openfec_search_contributions, openfec_search_disbursements, openfec_search_expenditures, openfec_search_filings, openfec_search_legal, openfec_lookup_elections, openfec_lookup_calendar
Dependency bumps:
@cyanheads/mcp-ts-core^0.9.13 → ^0.9.16
141 tests pass; bun run devcheck clean.
v0.4.7: mcp-ts-core ^0.9.6 → ^0.9.13: HTTP hardening, session gate, quieter error logs, GET /mcp keywords
mcp-ts-core ^0.9.6 → ^0.9.13: HTTP hardening, session gate, quieter error logs, GET /mcp keywords
Adopts six framework releases (0.9.7–0.9.13) and adds manifest metadata.
Added:
MCP_HTTP_MAX_BODY_BYTES— 413 guard on oversized HTTP request bodies (default 1 MiB)landing.requireAuth: false— public hosted catalog serves full tool/resource/prompt inventoryGET /mcpkeywords —package.jsonkeywords surfaced on the HTTP status endpointmanifest.json—repository,homepage,licensefieldspackage.jsonkeywords —bun,stdio,streamable-http
Changed:
- HTTP session-init gate — non-
initializerequests withoutMcp-Session-Id→ HTTP 400 - Expected client error log levels — 401/403/400/404 use
logger.warning, no stack traces
Dependency bumps:
@cyanheads/mcp-ts-core^0.9.6 → ^0.9.13@biomejs/biome^2.4.15 → ^2.4.16
129 tests pass; bun run devcheck clean.
v0.4.6: Zod regex + workflow hints on ID fields
Zod regex + workflow hints on ID fields
Adds structural schema validation and discovery hints to candidate_id
and committee_id parameters across all tool definitions.
Changed:
- candidate_id fields — added
.regex(/^[HSP][0-9A-Z]+$/i)to surface apatternin JSON Schema; updated.describe()to point callers toopenfec_search_candidatesfor IDs (#2) - committee_id fields — added
.regex(/^C\d+$/i)to surface apatternin JSON Schema; updated.describe()to point callers toopenfec_search_committeesfor IDs (#2) - Tests — updated invalid-ID assertions to expect
ZodErrorat parse time
129 tests pass; bun run devcheck clean (outdated-dep advisory pre-existing, unrelated).
v0.4.5: mcp-ts-core ^0.9.1 → ^0.9.6, MCPB bundle support, per-version changelog
Maintenance release: framework bump, MCPB bundle scaffolding, changelog migrated to per-version format.
Changed:
@cyanheads/mcp-ts-core^0.9.1 → ^0.9.6zod^4.4.3 added as direct dependency- Changelog migrated to per-version files under
changelog/<major.minor>.x/ - Dev dep patches: biome, @types/node, vitest
Added:
- MCPB bundle support —
manifest.json+.mcpbignore+lint:packaging+list-skillsscripts - Install badge (Claude Desktop)
bun run devcheck clean.