Skip to content

Releases: MohibShaikh/mcp-uplift

v0.2.6

Choose a tag to compare

@github-actions github-actions released this 15 Aug 12:47

Full Changelog: v0.2.5...v0.2.6

v0.2.5

Choose a tag to compare

@github-actions github-actions released this 14 Aug 18:08

Full Changelog: v0.2.4...v0.2.5

v0.2.4

Choose a tag to compare

@github-actions github-actions released this 14 Aug 16:04

Full Changelog: v0.2.3...v0.2.4

v0.2.3

Choose a tag to compare

@github-actions github-actions released this 14 Aug 14:16

Full Changelog: v0.2.2...v0.2.3

v0.2.2

Choose a tag to compare

@MohibShaikh MohibShaikh released this 14 Aug 13:55

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

Choose a tag to compare

@MohibShaikh MohibShaikh released this 14 Aug 13:14

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.version in the _meta stamped onto every result the bridge returns, which is what a modern client reads to identify what it is talking to.
  • clientInfo.version sent to the wrapped server during the legacy initialize handshake, 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

Choose a tag to compare

@MohibShaikh MohibShaikh released this 14 Aug 12:22

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.
  • resourceSubscriptions is registered upstream through the legacy resources/subscribe that 2026-07-28 removed, with URIs reference counted so two subscriptions watching one URI do not unsubscribe each other.
  • Cancel with notifications/cancelled naming 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

Choose a tag to compare

@MohibShaikh MohibShaikh released this 14 Aug 05:48

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

Choose a tag to compare

@MohibShaikh MohibShaikh released this 13 Aug 13:48

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 /tmp

What it translates

  • Legacy initialize handshake, exposed as server/discover
  • Server-initiated requests (sampling, elicitation, roots/list) into multi round-trip input_required results
  • Removed methods, rejected with -32601 instead of forwarded
  • Legacy -32002 resource-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.