Releases: MohibShaikh/mcp-uplift
Release list
v0.2.6
Full Changelog: v0.2.5...v0.2.6
v0.2.5
v0.2.4
v0.2.3
v0.2.2
Documentation release. src/ is byte-identical to v0.2.1 — there is no reason to upgrade for behavior.
The README demo now shows the full surface. The previous clip covered only the MRTR round trip, leaving subscriptions with no visual documentation; the new recording runs install, discovery, an MRTR resume, the subscription acknowledgement, a live list_changed notification, and graceful closure against a clean registry install of 0.2.1. The recording is also substantially smaller: 1.5 MB to 492 KB (GIF) and 1.0 MB to 138 KB (WebM).
The verification note was corrected to say the clip was recorded against the registry release rather than a locally packed artifact.
v0.2.1
Patch release. mcp-uplift reported itself as 0.1.0 regardless of the version actually installed.
The version was hardcoded in two places, so both ends of the bridge were misinformed:
serverInfo.versionin the_metastamped onto every result the bridge returns, which is what a modern client reads to identify what it is talking to.clientInfo.versionsent to the wrapped server during the legacyinitializehandshake, which some servers log or branch on.
Both now read the installed package.json, so the reported version cannot drift from the released one again. Present since 0.1.1; no other behavior changed.
v0.2.0
Legacy change notifications now reach modern clients, and the bridge finally works on Windows.
Subscriptions
subscriptions/listen is implemented. A legacy server pushes notifications unconditionally; 2026-07-28 has the client open a stream naming the types it wants and forbids the server from sending anything else. The bridge keeps the legacy end permanently opted in and does that filtering itself.
- The listen request stays open. Its JSON-RPC id is the subscription id stamped onto every notification, and its response is withheld until the stream closes, so a client can tell a clean shutdown from a dropped transport.
- The acknowledgement reports only what the wrapped server declared, rather than promising a type it can never send.
resourceSubscriptionsis registered upstream through the legacyresources/subscribethat2026-07-28removed, with URIs reference counted so two subscriptions watching one URI do not unsubscribe each other.- Cancel with
notifications/cancellednaming the listen id.
Progress and logging notifications are still dropped. They belong to an in-flight request rather than a stream, and the README says so.
Windows
mcp-uplift could not launch any npm-installed MCP server on Windows, including the quickstart in its own README. Node's spawn does not apply PATHEXT (bare npx is ENOENT) and refuses to spawn a batch file without a shell since the CVE-2024-27980 mitigation (npx.cmd is EINVAL).
It now resolves the real file and routes only batch scripts through cmd.exe, escaping each argument for the C runtime and then for cmd.exe. shell: true was rejected deliberately: Node pastes arguments in unescaped, so an argument containing & could run a second command. A test asserts a hostile argument cannot break out.
Verified
39 offline tests. Against real published servers, 49 packages probed with zero protocol failures; 11 completed the full subscription lifecycle with different negotiated filters per server, and the lifecycle was confirmed natively on Windows.
MIT, zero dependencies, Node >= 20.
v0.1.2
Metadata-only release. No functional changes to the bridge — src/ is byte-identical to v0.1.1.
Changed
npm keywords now name the protocol features the bridge actually translates, so the package is discoverable by the problem it solves rather than only by the generic proxy/bridge terms it shares with every other MCP transport tool.
Added: elicitation, sampling, roots, input-required, mrtr, multi-round-trip, server-discover, legacy, stdio.
Existing users have no reason to upgrade.
v0.1.1
First public release of mcp-uplift.
MCP 2026-07-28 removed the initialize handshake, sessions, ping, logging/setLevel, resource subscriptions, and server-initiated requests. This bridge wraps an existing legacy stdio MCP server and presents it to a modern, stateless client.
npx mcp-uplift npx -y @modelcontextprotocol/server-filesystem /tmpWhat it translates
- Legacy
initializehandshake, exposed asserver/discover - Server-initiated requests (sampling, elicitation,
roots/list) into multi round-tripinput_requiredresults - Removed methods, rejected with
-32601instead of forwarded - Legacy
-32002resource-not-found, mapped to-32602
Verified
Output validates against the official 2026-07-28 JSON schema (DiscoverResult, InputRequiredResult, CallToolResult). Discovery and tool listing confirmed on 39 published packages, with a full MRTR round trip against the official filesystem server.
Limitations
Experimental, stdio only, and not a sandbox: a wrapped server runs with your OS permissions, so only wrap servers you trust. The wrapped process receives a minimal environment by default; forward credentials explicitly with --env NAME. Calls that can trigger a server request are serialized, and legacy notifications are dropped.
MIT, zero dependencies, Node >= 20.