Live › vulnerability › CVE-2026-116686
Go to dashboardThe official Model Context Protocol Python SDK resolves $ref values in server-declared outputSchema documents with a default resolver. A malicious MCP server can make the client fetch HTTP, HTTPS or local file URLs, and block the event loop without a timeout.
Summary written from the sources below. Check the originals before acting.
First seen by InfraStack 2026-10-27 20:33 UTC. All times on this page are UTC.
Applications that act as MCP clients in Python and connect to MCP servers they do not fully trust, through ClientSession, ClientSessionGroup or Client tool calls. Exposure depends on the client connecting to remote or third-party servers; clients that only talk to trusted local servers face lower risk.
| Product | Ecosystem | Affected | Fixed in |
|---|---|---|---|
| mcp | pypi | >= 2.0.0, < 2.2.0 | 2.2.0 |
| mcp | pypi | >= 1.10.0, < 1.30.0 | 1.30.0 |
pip show mcp and confirm whether it is between 1.10.0 and 1.30.0 or 2.0.0 to 2.2.0mcp to find every service that uses the SDKmcp Python package to 1.30.0 or 2.2.0Each row is the first time that source carried this signal. The analyst’s rows are its own findings.
In affected versions, when a connected MCP server declared an outputSchema for a tool, the SDK's client validated each call_tool result with jsonschema's default resolver, which fetches any $ref it cannot resolve locally by opening the URL. A server could therefore put an http://, https:// or file:// reference in a tool's output schema and make the client:
Yes, if your application uses the SDK as an MCP client (ClientSession over any transport, ClientSessionGroup, or the 2.x Client) and calls tools on servers you do not fully control. There was no setting that turned the validation off.
Affected versions: 1.10.0 through 1.29.1, and 2.0.0 through 2.1.1.
Not affected: applications that only build servers. If nothing in your code uses ClientSession, ClientSessionGroup or the 2.x Client class, you are not affected.
Upgrade to mcp 1.30.0 (1.x) or 2.2.0 (2.x) or later. The client now resolves references only within the schema document the server sent (plus the standard JSON Schema metaschemas), so result validation performs no network or file access. A tool whose output schema points outside its own document fails at call time with RuntimeError (Invalid schema for tool ...); in-document references such as #/$defs/... work as before.
Until you can upgrade, call tools only on servers you trust. As a partial stopgap, skip tools whose outputSchema contains an $id, or a $ref / $dynamicRef that does not start with #.
This page as .md · .json · in your agent: get_signal("CVE-2026-116686")
NVD data is provided by NIST and is public domain · GitHub Advisory Database, CC-BY 4.0. Posts quoted belong to their authors.