{
 "ecosystem": "pypi",
 "errata": [
  {
   "action": "Not for automatic application — wrong occurs 2 times in the example. Show this correction to the user as a lead. Review before applying: this fix runs on mcp 2.3.0, but its printed output differs from what the original printed on 1.26.0 (observed stdout of one example) — it may do different work. Replace the old line with the new one; the rest of the code can stay.",
   "alternatives": [],
   "applicability": {
    "method": "literal_patch",
    "occurrences": 2,
    "reason": "wrong occurs 2 times in the example",
    "run_on": "2.3.0",
    "status": "not_applicable"
   },
   "by_notes": true,
   "changelog_ref": {
    "quote": "the dead `RequestResponder` arm and the `mcp.shared.session` module are gone (#3168).",
    "url": "https://github.com/modelcontextprotocol/python-sdk/releases/tag/v1.28.0"
   },
   "confirmations": {
    "failed": 0,
    "worked": 1
   },
   "detect": [
    "shared_session.anyio.create_memory_object_stream"
   ],
   "ecosystem": "pypi",
   "equivalence": "differs",
   "error_kind": "missing_import",
   "error_signature": {
    "message": "cannot import name 'session' from 'mcp.shared' (/usr/local/lib/python3.11/site-packages/mcp/shared/__init__.py)",
    "norm": "missing_import:session",
    "type": "ImportError"
   },
   "first_seen": "2026-10-20T16:11:13+00:00",
   "format": "replace",
   "format_version": 2,
   "id": "pypi/mcp/2.3.0/0002",
   "json": "https://formachines.ai/errata/pypi/mcp/0002-mcp-shared-session/index.json",
   "kind": "behavior_changed",
   "package": "mcp",
   "proof": {
    "applicability": {
     "method": "literal_patch",
     "occurrences": 2,
     "reason": "wrong occurs 2 times in the example",
     "run_on": "2.3.0",
     "status": "not_applicable"
    },
    "auto_apply": false,
    "auto_apply_reason": "the fix's output differs from the original's; the patch gives not_applicable when applied word for word",
    "auto_apply_rule": "Automatic application is allowed only when proof.equivalent is true and proof.applicability.status is applies; otherwise show the correction to the user as a lead and do not apply it on your own.",
    "equivalence": "differs",
    "equivalent": false,
    "fails_on": "2.3.0",
    "fixed_on": "2.3.0",
    "level": "differential",
    "method": {
     "fix_on": "2.3.0",
     "name": "stdout_match",
     "normalization": "lines stripped, blank lines dropped, runs of whitespace collapsed; memory addresses, timestamps and temporary paths masked",
     "original_on": "1.26.0",
     "scope": "the observable stdout of one example script; return values, files, other inputs and exception types are not compared, so a match is not a proof of equivalent behaviour"
    },
    "works_on": "1.26.0"
   },
   "right": "anyio.create_memory_object_stream(1)",
   "seen_in_models": [
    "gpt-6.1-sol"
   ],
   "seq": 2,
   "slug": "mcp-shared-session",
   "source": "pipeline",
   "symbol": "mcp.shared.session",
   "updated": "2026-10-27T17:20:00+00:00",
   "url": "https://formachines.ai/errata/pypi/mcp/0002-mcp-shared-session/",
   "variant_confirmations": 1,
   "variant_models": [
    "gpt-6.1-sol"
   ],
   "verified": "sandbox",
   "versions": {
    "changed_in": ">1.26.0,<=2.3.0",
    "fails_on": "2.3.0",
    "works_on": "1.26.0"
   },
   "wrong": "shared_session.anyio.create_memory_object_stream(1)"
  },
  {
   "action": "Replace the old line with the new one; the rest of the code can stay.",
   "alternatives": [],
   "applicability": {
    "exit_code": 0,
    "line": 43,
    "method": "literal_patch",
    "occurrences": 1,
    "output": "same",
    "patched_sha": "38a1a66bb2d3",
    "reason": "applied word for word, the patch parses, drops the old names, runs on 2.3.0 and prints what the verified example prints",
    "run_on": "2.3.0",
    "status": "applies"
   },
   "by_notes": true,
   "changelog_ref": {
    "quote": "The client-credentials providers take `scope=`, not `scopes=` (#3166).",
    "url": "https://github.com/modelcontextprotocol/python-sdk/releases/tag/v1.28.0"
   },
   "confirmations": {
    "failed": 0,
    "worked": 2
   },
   "detect": [
    "scopes"
   ],
   "ecosystem": "pypi",
   "equivalence": "same",
   "error_kind": "unexpected_kwarg",
   "error_signature": {
    "message": "ClientCredentialsOAuthProvider.__init__() got an unexpected keyword argument 'scopes'",
    "norm": "unexpected_kwarg:scopes",
    "type": "TypeError"
   },
   "first_seen": "2026-10-20T16:11:13+00:00",
   "format": "replace",
   "format_version": 2,
   "id": "pypi/mcp/2.3.0/0003",
   "json": "https://formachines.ai/errata/pypi/mcp/0003-scopes/index.json",
   "kind": "renamed",
   "package": "mcp",
   "proof": {
    "applicability": {
     "exit_code": 0,
     "line": 43,
     "method": "literal_patch",
     "occurrences": 1,
     "output": "same",
     "patched_sha": "38a1a66bb2d3",
     "reason": "applied word for word, the patch parses, drops the old names, runs on 2.3.0 and prints what the verified example prints",
     "run_on": "2.3.0",
     "status": "applies"
    },
    "auto_apply": true,
    "auto_apply_reason": "proof.equivalent is true and the patch applies word for word",
    "auto_apply_rule": "Automatic application is allowed only when proof.equivalent is true and proof.applicability.status is applies; otherwise show the correction to the user as a lead and do not apply it on your own.",
    "equivalence": "same",
    "equivalent": true,
    "fails_on": "2.3.0",
    "fixed_on": "2.3.0",
    "level": "differential",
    "method": {
     "fix_on": "2.3.0",
     "name": "stdout_match",
     "normalization": "lines stripped, blank lines dropped, runs of whitespace collapsed; memory addresses, timestamps and temporary paths masked",
     "original_on": "1.26.0",
     "scope": "the observable stdout of one example script; return values, files, other inputs and exception types are not compared, so a match is not a proof of equivalent behaviour"
    },
    "works_on": "1.26.0"
   },
   "right": "scope=SCOPE,",
   "seen_in_models": [
    "claude-sonnet-5-5"
   ],
   "seq": 3,
   "slug": "scopes",
   "source": "pipeline",
   "symbol": "scopes",
   "updated": "2026-10-27T17:20:00+00:00",
   "url": "https://formachines.ai/errata/pypi/mcp/0003-scopes/",
   "variant_confirmations": 2,
   "variant_models": [
    "claude-sonnet-5-5"
   ],
   "verified": "sandbox",
   "versions": {
    "changed_in": ">1.26.0,<=2.3.0",
    "fails_on": "2.3.0",
    "works_on": "1.26.0"
   },
   "wrong": "scopes=SCOPE,"
  },
  {
   "action": "Not for automatic application — after the patch the example still uses FastMCP, which the verified example does not: the patch covers part of the change. Show this correction to the user as a lead. Replace the old line with the new one; the rest of the code can stay.",
   "alternatives": [],
   "applicability": {
    "leftover": [
     "FastMCP"
    ],
    "line": 3,
    "method": "literal_patch",
    "occurrences": 1,
    "patched_sha": "113c0f3c8f66",
    "reason": "after the patch the example still uses FastMCP, which the verified example does not: the patch covers part of the change",
    "run_on": "2.3.0",
    "status": "incomplete"
   },
   "by_notes": false,
   "changelog_ref": {
    "quote": "",
    "url": ""
   },
   "confirmations": {
    "failed": 0,
    "worked": 10
   },
   "detect": [
    "FastMCP",
    "mcp.server.fastmcp"
   ],
   "ecosystem": "pypi",
   "equivalence": "same",
   "error_kind": "missing_module",
   "error_signature": {
    "message": "No module named 'mcp.server.fastmcp'. This is mcp 2.x, where FastMCP was renamed to MCPServer (from mcp.server.mcpserver import MCPServer) and other APIs changed; see the migration guide at https://py.sdk.modelcontextprotocol.io/v2/migration/#fastmcp-renamed-to-mcpserver or pin 'mcp<2' to keep runni",
    "norm": "missing_module:mcp.server.fastmcp",
    "type": "ModuleNotFoundError"
   },
   "first_seen": "2026-10-20T16:11:13+00:00",
   "format": "replace",
   "format_version": 2,
   "id": "pypi/mcp/2.3.0/0005",
   "json": "https://formachines.ai/errata/pypi/mcp/0005-context-client-id/index.json",
   "kind": "changed",
   "package": "mcp",
   "proof": {
    "applicability": {
     "leftover": [
      "FastMCP"
     ],
     "line": 3,
     "method": "literal_patch",
     "occurrences": 1,
     "patched_sha": "113c0f3c8f66",
     "reason": "after the patch the example still uses FastMCP, which the verified example does not: the patch covers part of the change",
     "run_on": "2.3.0",
     "status": "incomplete"
    },
    "auto_apply": false,
    "auto_apply_reason": "the patch gives incomplete when applied word for word",
    "auto_apply_rule": "Automatic application is allowed only when proof.equivalent is true and proof.applicability.status is applies; otherwise show the correction to the user as a lead and do not apply it on your own.",
    "equivalence": "same",
    "equivalent": true,
    "fails_on": "2.3.0",
    "fixed_on": "2.3.0",
    "level": "differential",
    "method": {
     "fix_on": "2.3.0",
     "name": "stdout_match",
     "normalization": "lines stripped, blank lines dropped, runs of whitespace collapsed; memory addresses, timestamps and temporary paths masked",
     "original_on": "1.26.0",
     "scope": "the observable stdout of one example script; return values, files, other inputs and exception types are not compared, so a match is not a proof of equivalent behaviour"
    },
    "works_on": "1.26.0"
   },
   "right": "from mcp.server.mcpserver import Context, MCPServer",
   "seen_in_models": [
    "claude-sonnet-5-5",
    "gemini-3.8-flash",
    "gpt-6.1-sol"
   ],
   "seq": 5,
   "slug": "context-client-id",
   "source": "pipeline",
   "symbol": "FastMCP",
   "updated": "2026-10-27T17:20:00+00:00",
   "url": "https://formachines.ai/errata/pypi/mcp/0005-context-client-id/",
   "variant_confirmations": 10,
   "variant_models": [
    "claude-sonnet-5-5",
    "gemini-3.8-flash",
    "gpt-6.1-sol"
   ],
   "verified": "sandbox",
   "versions": {
    "changed_in": ">1.26.0,<=2.3.0",
    "fails_on": "2.3.0",
    "works_on": "1.26.0"
   },
   "wrong": "from mcp.server.fastmcp import Context, FastMCP"
  }
 ],
 "fails_on": [
  "2.3.0"
 ],
 "license": "https://creativecommons.org/licenses/by/4.0/",
 "models": [
  {
   "checked": 12,
   "model": "claude-sonnet-5-5",
   "outdated": 10,
   "share": 0.83
  },
  {
   "checked": 12,
   "model": "gpt-6.1-sol",
   "outdated": 8,
   "share": 0.67
  },
  {
   "checked": 12,
   "model": "gemini-3.8-flash",
   "outdated": 5,
   "share": 0.42
  }
 ],
 "new_version": "2.3.0",
 "old_version": "1.26.0",
 "package": "mcp",
 "updated": "2026-10-27"
}