The Agent SDK lets programs drive Claude Code from code. MCP servers are add-ons that give Claude extra tools, and some of them run inside your own program ("in-process"). The SDK's Query class has a new step, captureSdkMcpServerManifests().
This step runs on the first initialize when captureSdkMcpManifests is set and SDK MCP servers exist. It asks each in-process server to start (initialize) and to list its tools (tools/list), all within a time limit. It then sends the results to the CLI inside the initialize request, in a new field sdkMcpServerManifests. That field sits next to sdkMcpServers and sdkMcpServerConfigs.
Servers that are not captured before the time limit fall back to the older handshake over the control channel, which is a back-and-forth exchange of messages. The result is logged to telemetry (usage data sent back) as sdk_mcp_manifest_capture, with one of these outcomes:
closeddeadlinepartialsuccess
The CLI can learn what tools your in-process servers offer without a separate exchange for each one. The capture is controlled by captureSdkMcpManifests, which depends on the environment variable CLAUDE_AGENT_SDK_DISABLE_MCP_MANIFESTS. Setting that variable turns the capture off.