Skip to content

v0.2.0 - stdio → gRPC Bridge

Latest

Choose a tag to compare

@github-actions github-actions released this 20 Jun 13:44

The bridge release. mcp-grpc now ships cmd/mcp-grpc-bridge, a transparent stdio → gRPC bridge that lets existing stdio MCP clients — Claude Desktop, Cursor, and anything else that speaks MCP over stdio — reach a remote MCP server over a gRPC connection, with TLS and mTLS. This is the connectivity story the transport was built to enable.

What's new

The bridge is a local MCP server on its stdio side and an MCP client on its gRPC side, in one process. It relays JSON-RPC messages in both directions and never interprets MCP semantics, so it works for any MCP traffic (initialize, tools/*, resources/*, notifications, …) without tracking sessions or schemas. Internally it exercises the v0.1 ClientTransport over a real network with a real MCP client on the other end.

Why it matters

Thousands of people already run stdio MCP clients; almost nobody has a gRPC-native client looking for an MCP server. The bridge meets that reality: point your stdio client at the bridge binary and it dials a remote gRPC MCP backend for you — over TLS. A bridge that crosses the network in plaintext is not deployable, so TLS/mTLS is the part that turns the in-memory v0.1 proof into something usable.

Added

  • cmd/mcp-grpc-bridge: a stdio → gRPC bridge. It opens a stdio mcp.Connection and a gRPC mcp.Connection (via transport.ClientTransport) and pumps jsonrpc.Message values between them in both directions, ending cleanly when either side closes.
  • TLS and mTLS on the bridge's gRPC connection via -tls, -ca, -cert, -key, -server-name, and -insecure-skip-verify. TLS minimum version is 1.2; -cert/-key must be supplied together for mTLS.
  • End-to-end test driving a real MCP client → bridge sub-process → echo MCP server over a real TCP listener with TLS (certificates generated in-test), plus a unit test of the relay pump asserting both-direction relay and clean close.

Changed

  • README documents the bridge (plaintext, TLS, mTLS) and reframes the project's lasting value as connectivity rather than a scaffold.

Not in this release

  • The symmetric direction (gRPC → stdio, exposing a stdio MCP server over gRPC) and gRPC ↔ Streamable HTTP bridging.
  • Interceptors (log/metrics), session-id/auth via gRPC metadata, and fine-grained keepalive/deadline tuning — deferred to a following increment.

Usage

go install github.com/P4ST4S/mcp-grpc/cmd/mcp-grpc-bridge@v0.2.0

# TLS, verifying the server against a CA bundle:
mcp-grpc-bridge -addr mcp.example.com:7777 -tls -ca ca.pem

# mTLS with a server-name override:
mcp-grpc-bridge -addr 10.0.0.5:7777 -tls -ca ca.pem \
    -cert client.pem -key client-key.pem -server-name mcp.example.com

Install

go get github.com/P4ST4S/mcp-grpc@v0.2.0

See the README for wiring the bridge into a stdio MCP client.