[BUG] Claude in Chrome MCP: tabId coerced from number to string in tool invocation layer, breaking navigate

Resolved 💬 3 comments Opened Apr 8, 2026 by acwil88 Closed Apr 12, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

The tool invocation layer between the model and the Chrome MCP server coerces numeric parameters to strings before forwarding. The server's Zod schema then rejects tabId with a type validation error.

tabs_context_mcp returns tabId as a JSON number. The model passes it back to navigate as a JSON number. But the server receives it as a string.

What Should Happen?

tabId passed as a JSON number should arrive at the MCP server as a number.

Error Messages/Logs

*Call: `navigate` with `tabId: 785895690` (JSON number in the tool call):**
MCP error -32602: Input validation error: Invalid arguments for tool navigate: [
{
"code": "invalid_type",
"expected": "number",
"received": "string",
"path": ["tabId"],
"message": "Expected number, received string"
}
]

**For reference — `tabs_context_mcp` response (tabId is a number here):**
{"availableTabs":[{"tabId":785895690,"title":"New Tab","url":"chrome://newtab/"}],"tabGroupId":2063123329}

Steps to Reproduce

  1. Open Cowork with Claude in Chrome extension connected
  2. Call tabs_context_mcp with createIfEmpty: true — succeeds, returns tabId as a JSON number
  3. Call navigate passing that tabId as a number
  4. Fails with "expected": "number", "received": "string"

Claude Model

Opus

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

2.1.63 (Claude Code)

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

Other

Additional Information

This is distinct from the connection-failure family of Chrome MCP issues (#21796, #23082, #27073, #40637). The extension connects fine and tabs_context_mcp succeeds. The bug is specifically type coercion in the invocation layer between model output and MCP server input.

Environment

  • Model: Claude Opus 4.6
  • Interface: Cowork
  • Chrome: 147.0.7727.56
  • Extension: Claude in Chrome 1.0.66
  • OS: Windows
  • Reproducible across sessions (confirmed April 7 and April 8, 2026)

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗