Feature request: Show diffs for MCP tool calls that modify content
Resolved 💬 4 comments Opened Mar 3, 2026 by DanielPBak Closed Apr 1, 2026
Problem
When Claude Code makes MCP tool calls that update existing content — e.g. editing a Linear ticket, updating a Notion doc, or modifying a Grafana dashboard — the entire content blob is displayed in the tool call parameters. This makes it very difficult to review what's actually changing, especially for large documents.
For example, updating a Linear issue description shows the full new description text rather than highlighting what was added/removed. The same applies to Notion page updates, Slack canvas edits, etc.
Proposed Solution
Show a diff view for MCP tool calls that modify existing content, similar to how the built-in Edit tool displays changes. This could work by:
- Detecting update/edit operations: MCP tools that modify existing resources (as opposed to creating new ones) could show a diff between the previous content and the new content.
- Before/after comparison: When an MCP tool call includes a large text parameter that replaces existing content, fetch or cache the previous version and display a unified diff.
- MCP protocol support: Consider extending the MCP protocol to allow servers to annotate parameters as "content that replaces existing content" so the client knows when to show a diff. Servers could optionally return the previous value alongside the new value, or the client could call a corresponding "read" method before the "update" to compute the diff.
Why This Matters
- Reviewability: Users need to understand what Claude is changing before approving tool calls. A 500-line document with a 2-line change is effectively unreviewable as a raw blob.
- Safety: MCP tools that modify shared resources (tickets, docs, dashboards) are exactly the kind of actions that warrant careful review. Diffs make review practical.
- Consistency: The built-in
Edittool already provides excellent diff display. MCP-based edits should have parity.
Examples of MCP tools where this would help
linear.save_issue/linear.update_document— editing issue descriptions or documentsnotion.notion-update-page— updating Notion page contentgrafana.update_dashboard/grafana.update_alert_rule— modifying Grafana resourcesslack.slack_send_message(for canvas edits) — editing Slack canvases- Any custom MCP server with CRUD operations on text content
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗