Releases: cyanheads/docgen-mcp-server
Releases · cyanheads/docgen-mcp-server
Release list
v0.2.2: MCP SDK v2 adoption and portable packaging
MCP SDK v2 adoption and portable packaging
- @cyanheads/mcp-ts-core ^0.10.9 → ^0.12.3 moves docgen onto MCP SDK v2 without changing its four-tool, one-resource surface.
- Smoke, integration, fuzz, and edge-case coverage exercise every definition and declared error envelope.
- Bun 1.4, TypeScript 7, portable MCPB cleanup, Docker build caching, and repository policy metadata refresh the release toolchain.
- deps: @cyanheads/mcp-ts-core ^0.10.9 → ^0.12.3; typescript ^6.0.3 → ^7.0.2
v0.2.1: writer-tool input validation
writer-tool input validation
Three input-validation fixes across the writer tools, plus a design-doc correction.
Fixed:
docgen_export_spreadsheetvalidates worksheet names against Excel's constraints before render — typedinvalid_sheet_nameinstead of a raw ExcelJS throw or silent over-31-character truncation (#4)docgen_fill_formaccepts line-wrapped base64 PDFs (ASCII whitespace stripped before decode); malformed base64 still rejected (#5)docgen_render_pdfrejectsdatasupplied without atemplatevia the declaredinvalid_sourcereason, no longer dropping it silently (#6)docs/design.mdreframesdownloadUrlas a reserved field not emitted in v1 (#7)
152 tests pass; bun run devcheck clean.
v0.2.0: Remove the unserved downloadUrl; validate document ids
Remove the unserved downloadUrl; validate document ids
Breaking: the downloadUrl envelope field is no longer emitted; document ids are now validated at the schema boundary.
Removed:
- downloadUrl is no longer emitted — no HTTP route served the advertised /documents/{id} path, so a GET 404'd. The field stays reserved in the schema but is always absent; bytes deliver via the docgen://document/{id} resource URI and inline base64. Breaking: read resourceUri or inlineBase64 instead. (#2)
Fixed:
- template_render_failed now carries its declared recovery.hint on the wire, alongside the existing missingKey. (#1)
Security:
- documentId is validated against ^doc_[A-Za-z0-9_-]{24}$ at the schema boundary, and the store resolves a non-conforming id as not-found before any storage read — a malformed id no longer bypasses document_expired or leaks the internal doc/meta/ storage key. (#3)
142 tests pass; bun run devcheck clean.
v0.1.1: first published release — render agent content into downloadable documents
first published release — render agent content into downloadable documents
docgen renders the structured content an agent composes into the PDF, xlsx, or filled AcroForm a human downloads. Bundled pdf-lib / exceljs / marked stack, no external API.
Added:
docgen_render_pdf— HTML / markdown / {{template}}+data to PDF (pdf-lib); flagsdegradedwhen it drops unsupported stylingdocgen_export_spreadsheet— named row sheets to .xlsx (exceljs) with an optional per-column specdocgen_fill_form— fill/flatten AcroForm PDFs from base64 or an SSRF-guarded URL; misses return inunmatchedFields[]docgen_get_document— re-fetch a rendered document by id within its TTLdocgen://document/{documentId}resource — bytes-as-blob + JSON metadata delivery surface- Shared
DocumentEnvelopeand tenant-scoped, TTL-bounded store with a byte ceiling and render timeout (DOCGEN_*config)
Changed:
- Published under the
@cyanheads/docgen-mcp-servernpm scope across install, badge, and plugin surfaces
140 tests pass; bun run devcheck clean.