mcp-go: Denial of service via unbounded POST body buffering
Summary
The streamable HTTP server of the mcp-go Go library reads entire POST request bodies into memory before validating them. A remote, unauthenticated attacker can send very large or many concurrent POST requests to exhaust memory, degrading the service or causing the hosting process to be killed. The issue only applies to applications that expose the streamable HTTP transport to untrusted networks.
Affected
- mark3labs mcp-go through version 1.2.1
- Only applications that serve MCP over the streamable HTTP transport are affected
Fixed in
Unconfirmed. No fixed version has been confirmed by the vendor. Upstream fix pull requests exist but their merge and release status is not verified. Check the full v1.3.0 changelog and the current code before assuming a fix.
Workaround
- Limit the request body size in front of the MCP endpoint, for example with a reverse proxy or API gateway, and test the limit
- Do not expose the MCP endpoint to the public internet; place it behind authentication, a VPN or in an internal network
- Apply request timeouts and per-client connection limits and monitor memory usage on MCP hosts
Exploitation
- No known exploitation in the wild has been found
- CISA SSVC: exploitation none, automatable yes, technical impact partial
- Public proof of concept: not verified
Our recommendation
- Identify all applications that use mcp-go, for example by scanning go.mod, go.sum and built binaries for versions up to 1.2.1
- Check whether any MCP service using HTTP is reachable from untrusted networks and restrict access if so
- Apply a body-size limit or network restriction now and monitor memory usage
- Update to a version confirmed by the upstream changelog to fix this issue once available
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- mcp-go GitHub repository github.com
- Affected code (streamable_http.go) github.com
- VulnCheck advisory www.vulncheck.com
- HackMD write-up hackmd.io
- Upstream fix PR 1092 github.com
- Upstream fix PR 1119 github.com
- mcp-go v1.3.0 release github.com
- Giant Swarm mcp-toolkit issue 117 github.com
Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 1 Nov 2026, 05:02.
Original description (NVD)
mcp-go through 1.2.1 contains a denial of service vulnerability in StreamableHTTPServer.ServeHTTP that allows remote unauthenticated attackers to exhaust memory by sending oversized POST bodies. Attackers can send arbitrarily large or many concurrent POST requests, read fully via io.ReadAll before validation, to degrade or OOM-kill the server process.
NVD references (4)
- https://github.com/mark3labs/mcp-go
- https://github.com/mark3labs/mcp-go/blob/90d247ed8d45cbb7d71d9a95e112789b78760443/server/streamable_http.go#L…
- https://hackmd.io/@1ExmmukzRMWN7B4gQ4W-4Q/mark3labs-mcp-go-streamable-http-unbounded-body
- https://www.vulncheck.com/advisories/mcp-go-through-1.2.1-denial-of-service-via-unbounded-post-body-buffering
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.
Affected? We can help.
We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.
