This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Affected surfaces
Summary
AI summaryFixed multiple stability issues causing whole‑server disconnects and added catalog search for manifest‑only servers.
Full changelog
Fixed
- A single downstream stdout line larger than the read limit (default 10 MiB,
PMCP_STDIO_READ_LIMIT) no longer disconnects the whole server (issue #79,
symptom 1b). The stdout reader now reads in chunks and splits on newlines
itself: an oversized line is dropped — failing only the request it belongs to,
with an actionable "output too large" message — while the connection and other
pending requests stay alive, so the next call no longer fails. Large browser
responses (full-page snapshots, screenshots) were a common trigger of the
reported "session expired"/instability. A reproduction harness lives in
diagnostics/issue-79-1b/. - Downstream tool calls are no longer killed by a fixed wall-clock deadline
(issue #79, symptom 1a).timeout_msis now an inactivity (idle) timeout:
a call survives as long as the downstream MCP server keeps producing output
(including JSON progress notifications, which now count toward per-request
liveness in both the stdio and SSE readers). An absolute backstop caps total
wall-clock time so a chatty-but-never-completing call cannot hang forever —
configurable viaPMCP_REQUEST_CEILING_MS(default 600000ms / 10 min). The
long ceiling applies only to tool invocations; control-plane requests
(initialize, list calls) keep the tighter idle deadline so one stuck server
can't stall startup/refresh. This unblocks legitimately long browser/
automation operations driven through the gateway. - Stdio servers are now spawned in their own session/process group
(start_new_session=True) and reaped as a whole tree on disconnect (issue
#79, symptom 1c). Previously, killing a stdio server (e.g.@playwright/mcp)
left the browser it launched orphaned to init, holding the profile's
SingletonLock and breaking the next launch. A new group-aware
_terminate_process_treehelper (SIGTERM the group, wait, then SIGKILL, with
a single-process fallback when the process is not a group leader, or on
Windows where process groups are unavailable) now backs all four downstream
shutdown paths. gateway.refreshis now diff-based and non-destructive (issue #79, symptom
2). Servers whose resolved config is unchanged are left connected and
running; only servers that were removed or whose config changed are
disconnected, and only newly-added eager servers are connected. Previously
refresh tore down every server and reconnected only the eager set, which
dropped previously-running lazy/provisioned servers to offline (the reported
"105 seen, 0 online") and needlessly respawned unchanged processes (e.g. a
live browser) on every refresh. The diff keeps only servers that are actually
ONLINE — a crashed eager server is reconnected (recovery path preserved);
reconciles the lazy registry to the resolved keep-set so removed/policy-denied
servers can no longer be lazily started; and reconnects a remote server when
its${VAR}auth token has rotated in the env store (compared against the
connect-time resolved headers), instead of keeping stale/revoked auth.- Process-tree reaping now escalates to a group
SIGKILLwhen the leader exits
but a grandchild (e.g. aSIGTERM-ignoring browser) survives theSIGTERM
grace period, and reaps servers concurrently at shutdown so multiple hung
servers can't exceed the shutdown budget and orphan browsers (issue #79/1c).
Added
gateway.catalog_searchwithinclude_offline=truenow surfaces
manifest-only provisionable servers in a dedicatedmanifest_candidatesfield
when the query matches a manifest server by name or keyword but no cached
tools exist yet (issue #78). Candidates carry machine-readable next-action
metadata (provisionable,provision_tool,request_capability_tool,
auth_tool,requires_api_key,api_key_available,env_var) so an agent
can provision the exact server instead of falling back to a plain web search.- Manifest:
brightdatakeywords extended withweb research,current web,
page fetch, andexternal researchso research-oriented prompts match
without the exact brand name.
Changed
gateway.request_capabilitytool description now states it recommends a
server to provision (and thatgateway.provisiondoes the actual install/
start), matching the implementation — it previously claimed to auto-provision
(issue #78).
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About ViperJuice/mcp-gateway
A meta-server for minimal Claude Code tool bloat with progressive disclosure and dynamic server provisioning. Exposes 9 stable meta-tools, auto-starts Playwright and Context7, and can dynamically provision 25+ MCP servers on-demand from a curated manifest.
Related context
Beta — feedback welcome: [email protected]