mcp-go: JSON-RPC member-name case/Unicode folding lets calls bypass exact-match proxy allowlists (through v1.5.0, unpatched)
mcp-go (github.com/mark3labs/mcp-go)
Sponsored
Brought to you byTinkerer Club
The private club for people who own their servers, run their own AI, and pay $0/month for software.
mark3labs/mcp-go's MCPServer.HandleMessage decodes JSON-RPC with encoding/json, which matches member names case-insensitively, folds ſ (U+017F) to s and K (U+212A) to k, and keeps the last of duplicate members. A request with Method/METHOD/paramſ, or with method given twice, still runs as the named call. mcp-go does not authorize calls itself, so this matters when a gateway or proxy in front allowlists method / params.name with an exact-match parser: the proxy may not see the call the server executes. The official Model Context Protocol Go SDK had the same class of bug (CVE-2026-27896 / GHSA-wvj2-96wp-fq3f) and fixed it in 1.3.1. Reported privately to contact@mark3labs.com on 2026-08-16 with no reply, then disclosed. Affected through v1.5.0 (tested on v1.0.0-beta.1, v1.4.0 and main after v1.5.0); no fix released. Workarounds: reject messages whose member names are not exactly the defined ones or that repeat a member, or re-encode before forwarding.
Why this severity: Same class as official MCP Go SDK CVE-2026-27896 / GHSA-wvj2-96wp-fq3f (fixed there in 1.3.1). Impact needs a fronting proxy/gateway that allowlists method names with exact-match parsing; unpatched through v1.5.0.
- Started
- Nov 4, 2026
Affected
- github.com/mark3labs/mcp-go through v1.5.0 (and main after v1.5.0 as of disclosure; earlier versions not all tested)
Fixed in
No fixed release yet
Timeline3
golang/vulndb#6911 opened describing the mcp-go JSON-RPC case/Unicode-folding proxy-allowlist bypass; fixed in: not fixed.
Public disclosure filed as mark3labs/mcp-go#1164 after private report and follow-up went unanswered.
Issue reported privately to contact@mark3labs.com; no reply (per public disclosure).
Advisories3
- golang/vulndb#6911: potential Go vuln in github.com/mark3labs/mcp-go (JSON-RPC case folding)golang/vulndb · Nov 4, 2026
- mark3labs/mcp-go#1164: JSON-RPC member names matched case-insensitivelymark3labs/mcp-go · Nov 4, 2026
- GHSA-wvj2-96wp-fq3f / CVE-2026-27896: same class in official MCP Go SDK (fixed in 1.3.1)modelcontextprotocol/go-sdk · Feb 26, 2026
Get an email when a new major security incident drops. No spam, unsubscribe any time.