What
An MCP server is an add-on that gives Claude extra tools. A program that embeds Claude Code through the SDK (the developer kit for building on Claude Code) can register its own in-process MCP servers, called sdk servers. Each of these servers can now carry a tools setting, a per-tool permission policy that says how each of its tools is treated:
always_ask: the host program is asked before every call to that tool, even where an allow rule already covers it.always_deny: calls to that tool are refused.always_allowandorg_max_permission: ignored onsdkservers. Onlyalways_askandalways_denytake effect for them.- Where it is read: from
initialize(insdkMcpServerConfigs) and frommcp_set_servers. initialize: each one that names the server adds ask and deny rules. Aninitializenever removes a rule. If the server is already registered, a different timeout ordisableAutoBackgroundis still ignored, but a newtools[]is applied, and the log says so.mcp_set_servers: replaces the rules. It now notices changes totoolson servers that are already registered, logs whether the policy was cleared or replaced, updates the live setting, and reports keys it does not support.- Malformed entries: entries in a
tools[]list that are malformed are dropped, and an invalidpermission_policyis read asalways_ask. Invalidtools[]entries get their own error message instead of the generic "ignoring invalid" log. - New log line:
[Query] MCP server '<name>': ignoring malformed <field> in its config, with a more specific reason when the field istools.
Before, the settings for an sdk server were applied only when it was first registered, and tools was never read.
Why
A host program can now restrict individual tools on its own MCP servers, and change those restrictions after a server is registered. A mistake in the tools setting leads to a warning in the log rather than the setting silently failing.
The entry above is what we published on the day. These lines were added later, as Anthropic's own pages caught up, and they sit beside the original rather than replacing it.
An SDK MCP server registered by an [`initialize` control request](/docs/en/agent-sdk/typescript#sdkcontrolinitializeresponse) begins connecting as soon as Claude Code processes the request.agent-sdk/mcp see the edit
Anthropic's documentation has since written up initialize, on Connect to external tools with MCP.