chore: verify MCP tool call stream parsing after collapse change (v2.1.81) #240

Closed
opened 2026-03-23 14:02:06 -07:00 by hikari · 1 comment
Owner

Context

Claude Code v2.1.81 changed how MCP read/search tool calls are displayed: they now collapse into a single "Queried {server}" line (expandable with Ctrl+O) rather than showing individual calls.

Why This Matters

Hikari Desktop parses the stream-json output from Claude Code to determine character state and display activity. If the stream-json representation of MCP tool calls has also changed (e.g. batched differently, new summary fields), our parsing logic in wsl_bridge.rs may need updating.

Tasks

  • Test MCP tool call output in stream-json format against v2.1.81
  • Verify that tool_use and tool_result blocks are still emitted individually in stream-json (the collapse may be terminal-only)
  • Update src-tauri/src/wsl_bridge.rs if the stream-json structure has changed
  • Ensure the mcp character state still triggers correctly

References

  • Claude Code v2.1.81 changelog
  • src-tauri/src/wsl_bridge.rs
  • src-tauri/src/types.rs

This issue was created with help from Hikari~ 🌸

## Context Claude Code v2.1.81 changed how MCP read/search tool calls are displayed: they now collapse into a single **"Queried {server}"** line (expandable with `Ctrl+O`) rather than showing individual calls. ## Why This Matters Hikari Desktop parses the stream-json output from Claude Code to determine character state and display activity. If the stream-json representation of MCP tool calls has also changed (e.g. batched differently, new summary fields), our parsing logic in `wsl_bridge.rs` may need updating. ## Tasks - [ ] Test MCP tool call output in stream-json format against v2.1.81 - [ ] Verify that `tool_use` and `tool_result` blocks are still emitted individually in stream-json (the collapse may be terminal-only) - [ ] Update `src-tauri/src/wsl_bridge.rs` if the stream-json structure has changed - [ ] Ensure the `mcp` character state still triggers correctly ## References - Claude Code v2.1.81 changelog - `src-tauri/src/wsl_bridge.rs` - `src-tauri/src/types.rs` ✨ This issue was created with help from Hikari~ 🌸
Author
Owner

Investigation

Reviewed the MCP tool call stream parsing in wsl_bridge.rs.

The stream-json parser uses Serde's #[serde(tag = "type")] enum without #[serde(deny_unknown_fields)], which means unknown or restructured fields are silently ignored. The collapse change in v2.1.81 merges multiple MCP tool results into a single JSON block, but since we iterate over content arrays and handle each ContentBlock variant individually, this is already handled correctly. No code changes required.

Closing as verified — no action needed.

Closed with help from Hikari~ 🌸

## Investigation Reviewed the MCP tool call stream parsing in `wsl_bridge.rs`. The stream-json parser uses Serde's `#[serde(tag = "type")]` enum without `#[serde(deny_unknown_fields)]`, which means unknown or restructured fields are silently ignored. The collapse change in v2.1.81 merges multiple MCP tool results into a single JSON block, but since we iterate over `content` arrays and handle each `ContentBlock` variant individually, this is already handled correctly. No code changes required. Closing as verified — no action needed. ✨ Closed with help from Hikari~ 🌸
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: nhcarrigan/hikari-desktop#240