---
summary: "Opt-in `MCP_GC_PRESSURE_INTERVAL_MS` forced-GC loop (Bun-only) drains the per-request `McpServer`/`McpSessionTransport` cycle under sustained low-traffic HTTP load (#50). Skill-versioning policy extended to reference files. README install-button URLs switched to HTTPS endpoints."
breaking: false
security: false
---

# 0.9.4 — 2026-05-22

Follow-up to the 0.8.16 SSE-abort binding for [#50](https://github.com/cyanheads/mcp-ts-core/issues/50). Production telemetry showed per-request `McpServer`/`McpSessionTransport` pairs still accumulating across hours of low-traffic SSE — `close()` runs cleanly, but the V8 reference cycle between `server.onmessage` and `transport` only breaks on a major GC, and major GC fires too rarely under sparse allocation to drain the backlog. This release ships the issue author's suggested mitigation: an opt-in forced-GC pressure loop.

## Added

- **`MCP_GC_PRESSURE_INTERVAL_MS` — opt-in forced GC loop** ([#50](https://github.com/cyanheads/mcp-ts-core/issues/50)) — when set to a positive integer on Bun, a `setInterval` (`.unref()`'d) calls `Bun.gc(true)` every N ms to reclaim the major-GC backlog. ~50 ms reclaims dozens of pairs; benign when unset, on Node, or in Workers. Default `0` (disabled). Recommended starting point for production HTTP deployments exhibiting heap growth: `60000`.

## Changed

- **Skill-versioning policy covers reference files** — `CLAUDE.md` / `AGENTS.md` now spell out that any change under `skills/<name>/` (references, templates, examples — anything the skill ships) bumps `metadata.version` on that skill's `SKILL.md`. Reference files don't carry their own version frontmatter; SKILL.md is the single knob for the whole directory, since the downstream `maintenance` skill's Phase A replaces directories as a unit keyed on SKILL.md.
- **README install-button URLs in `templates/` + `polish-docs-meta`** — Cursor switches to the official `https://cursor.com/en/install-mcp` endpoint (base64 JSON with single `command` string). VS Code's `vscode:mcp/install?...` deep link now wraps in `https://vscode.dev/redirect?url=` so GitHub-rendered markdown doesn't strip the non-HTTP scheme. Affects newly scaffolded servers and the `polish-docs-meta` reference; existing servers re-render on next docs pass.
