Agent Skill
2/7/2026

mcp-stub-to-ground-truth

This skill should be used when MCP stubs or broken control_request flows need to be replaced with ground-truth implementations aligned to extension.js and cli.js, or when MCP-related UI behavior (missing tool outputs, spinner stuck, empty MCP list) needs debugging.

T
tankygranny05
0GitHub Stars
1Views
npx skills add tankygranny05/agent-box

SKILL.md

Namemcp-stub-to-ground-truth
DescriptionThis skill should be used when MCP stubs or broken control_request flows need to be replaced with ground-truth implementations aligned to extension.js and cli.js, or when MCP-related UI behavior (missing tool outputs, spinner stuck, empty MCP list) needs debugging.

name: mcp-stub-to-ground-truth description: This skill should be used when MCP stubs or broken control_request flows need to be replaced with ground-truth implementations aligned to extension.js and cli.js, or when MCP-related UI behavior (missing tool outputs, spinner stuck, empty MCP list) needs debugging.

Mcp Stub To Ground Truth

[Created by Codex: 019bd6fe-9c71-7c43-aa42-b69a3ceb5a46]

Overview

Provide a repeatable workflow for replacing MCP stubs with compliant control_request handling and for diagnosing broken MCP UI behavior. Use extension.js and cli.js as ground truth, and treat webview behavior as a secondary constraint.

When To Use

Use when any of these occur:

  • MCP panels show empty or stale server lists.
  • Tool permission prompts never appear.
  • Spinner never stops or assistant output never renders.
  • MCP tools run in the CLI but the webview does not update.
  • Control_request/control_response traffic is stubbed, dropped, or faked.

Workflow: Stub → Ground Truth

1) Load Ground Truth

  • Read ~/.vscode/extensions/anthropic.claude-code-*/extension.js.
  • Read ~/swe/claude-code-*/cli.js.
  • Read src/public/webview/index.js for request/response shapes and channel expectations.
  • Extract exact request/response subtypes and schemas.

2) Inventory Stubs And Drops

  • Search for any shim logic that returns {success: true} without a CLI control_request.
  • Search for control_request, control_response, control_cancel_request drops.
  • Identify MCP requests stubbed in the webview-to-extension request handler.
  • Identify channel/session routing that broadcasts to the wrong client.

3) Implement Bidirectional Control Plane

  • Route CLI → shim control_request to webview request handlers.
  • Route webview responses back to CLI as control_response.
  • Route CLI control_cancel_request to cancel webview prompts.
  • Replace stubbed webview request handlers with real CLI control_request forwarding.

4) Implement MCP Control Surface

  • Map get_mcp_servers → CLI control_request subtype mcp_status.
  • Map mcp_set_servers (if surfaced) → CLI control_request subtype mcp_set_servers.
  • Map mcp_message round-trip: CLI control_request subtype mcp_message ↔ SDK transport.
  • Always forward CLI errors back to the webview response.

5) Enforce Channel/Session Correctness

  • Create channels only on launch_claude.
  • Do not auto-spawn on io_message for unknown channel IDs.
  • Route io_message only to the client that launched that channel.
  • Remove channel registration on close_channel.

6) Validate With Logs

  • Confirm control_request and control_response appear in both extension_to_cli.jsonl and cli_to_extension.jsonl.
  • Confirm webview receives tool_permission_request when CLI emits can_use_tool.
  • Confirm message_stop and result arrive for assistant output.
  • Confirm no Session not found warnings for the active channel.

Mapping Table: Webview ↔ CLI Control Requests

Webview request typeCLI control_request subtypeResponse type
get_mcp_serversmcp_statusget_mcp_servers_response
set_modelset_modelset_model_response
set_permission_modeset_permission_modeset_permission_mode_response
set_thinking_levelset_max_thinking_tokensset_thinking_level_response
rewind_coderewind_filesrewind_code_response

Sequence Diagrams (MCP Control Requests)

A) MCP Status Query (Webview → CLI → Webview)

Webview            Shim/Extension              CLI
   |  get_mcp_servers  |                        |
   |------------------>| handleRequest          |
   |                   | control_request:mcp_status
   |                   |----------------------->|
   |                   |<-----------------------| control_response:success {mcpServers}
   |<------------------| get_mcp_servers_response

B) MCP Message Round-Trip (CLI → Extension → SDK → CLI)

CLI                  Shim/Extension          SDK MCP Server
 | control_request:mcp_message                 |
 |------------------------->| locate transport |
 |                          |----------------->| JSON-RPC request
 |                          |<-----------------| JSON-RPC response
 |<-------------------------| control_response:success {mcp_response}

C) MCP-Related Permission Prompt (CLI → Webview → CLI)

CLI                  Shim/Extension            Webview
 | control_request:can_use_tool                 |
 |------------------------->| request:tool_permission_request |
 |                          |------------------------------->|
 |                          |<-------------------------------| response:tool_permission_response
 |<-------------------------| control_response:success {behavior,...}

Debug Checklist (Failure → Likely Cause)

  • Spinner stuck, no assistant output
    • Check for missing message_stop or result in webview logs.
    • Check for Session not found warnings (wrong channel routing).
  • MCP list empty
    • Verify mcp_status control_request is sent and control_response returned.
  • Tool prompts missing
    • Verify can_use_tool reaches webview as tool_permission_request.
  • MCP tool runs in CLI but webview shows nothing
    • Verify control_response is not dropped and is routed back to webview.

Required Log Files

Check these files side-by-side:

  • ~/centralized-logs/claude-vscode-shim/extension_to_cli.jsonl
  • ~/centralized-logs/claude-vscode-shim/cli_to_extension.jsonl
  • ~/centralized-logs/claude-vscode-shim/extension_to_webview.jsonl
  • ~/centralized-logs/claude-vscode-shim/webview_to_extension.jsonl
Skills Info
Original Name:mcp-stub-to-ground-truthAuthor:tankygranny05