Repository navigation
Replies: 1 comment
|
I carried this forward on current main as draft #28739 and would like a maintainer decision on direction and scope. What has changed since this was proposed: Two choices only maintainers can make:
Would you take #28739 with those two choices, or prefer render-only until #380 lands? Credit to @broomva for the original design. |
Uh oh!
There was an error while loading. Please reload this page.
Problem
MCP Apps render only in Codex threads.
CodexAdapterV2implementsProviderAdapterV2McpApps;ClaudeAdapterV2does not. So in a Claude thread, a tool that declares_meta.ui.resourceUrishows up as a plain tool row, and the app never appears.Why it's small now
Claude Code already exposes everything the interface needs, through its own control channel. That means T3 doesn't need a second MCP client:
mcpServerStatus()returns each tool's_meta.ui(resourceUri,visibility).readMcpResource(server, uri)readsui://documents. The SDK documents it as being for hosts that render MCP Apps.mcp_callcontrol request withresult_not_for_model: trueruns a tool without a model turn. The CLI advertises it asmcp_call_result_not_for_model_v1.One gap remains: the SDK has no public method for
mcp_call, so the branch sends it through the query'srequest()channel. A public SDK method would remove that.The change
Branch: https://github.com/broomva/t3code/tree/claude-mcp-apps (2 commits on
729924af29, 7 files)ClaudeAdapterV2implementsmcpApps(listTools,callTool,readResource) against the live query.ui://resource, the adapter saves the document withsnapshotMcpApp, as Codex does. The row'stoolNamebecomesserver.tool, so the existing web and mobile clients match the app reference unchanged.cad.view→mcp__bits-and-bolts__cad_view).readOnlyis reported asreadOnlyHint.inputSchemadefaults to{ "type": "object" }, becausemcp_statusomits schemas and apps readhostContext.toolInfo.tool.@anthropic-ai/claude-agent-sdkto^0.3.303.Verification
tsc-rs --noEmitforapps/serveris clean.callToolandreadResource, plus unit tests for the name and metadata mapping.mcpAppspass 474/475. The one failure (moves the root's foreground subagents to the background before a steer) times out the same way on unpatchedmainwith the original SDK.bits-and-bolts:cad.libraryandcad.viewrender.cad.savePreviewscalls go through T3's confirmation and write to the server's catalog.Not covered yet
Question
Would you take this as a PR? I'm happy to adjust the scope, for example to rely only on capability detection, or to drop the
request()path until the SDK exposesmcp_call.All reactions