{"version":"2.1.234","anchor":"built-in-mcp-server-gains-schema-validation-cancellation-and","canonical_anchor":"built-in-mcp-server-gains-schema-validation-cancellation-and","heading":"Built-in MCP server gains schema validation, cancellation, and an unreachable locked-down HTTP mode","tier":"notice","area":"MCP","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.234\/e\/built-in-mcp-server-gains-schema-validation-cancellation-and","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.234","markdown":"### Built-in MCP server gains schema validation, cancellation, and an unreachable locked-down HTTP mode\n\nThe MCP server you expose now validates tool arguments and aborts work when a client cancels.\n\n**What**\n\nThe MCP server Claude Code exposes to other tools now checks incoming tool calls against the tool's own schema before dispatch and refuses a mismatch with \"arguments failed schema validation\" rather than passing raw input through, and it aborts work already running when a client cancels or the server shuts down. The same code now takes a transport kind, and passing \"http\" turns on a heavily restricted profile. Nothing in this build passes \"http\": the `claude mcp serve` command hands the server the stdio transport, so the restricted profile is reachable only by importing the module directly.\n\n**Details**\n\n- A request's abort signal is wired to the tool's abort controller with reason \"remote-cancel\"; closing the server aborts in-flight work with reason \"shutdown\".\n- Validation and cancellation are live on both transports, so `claude mcp serve` gets them today.\n- The \"http\" profile disables background tasks and unsandboxed command execution, and exposes only a fixed allowlist of tools.\n- It also skips the CLAUDE_CODE_SIMPLE tool filter through a new option, so the allowlist rather than that filter decides what is offered.\n- Under that profile the `dangerouslyDisableSandbox`, `run_in_background` and `_simulatedSedEdit` fields are removed from the advertised tool schemas and stripped out of incoming arguments, with a note appended to the result when anything was stripped.\n\n**Evidence**\n\n`[serve-mode] Stripped client-supplied privilege field(s): `, `_simulatedSedEdit`\n\n- Area: MCP\n- Tier: You'll notice\n- Useful: 3\/5\n- Signal: 4\/5\n- Present in the build but not switched on"}