MCP: nested array/object tool parameters serialized as strings for claude.ai connector tools (Windows desktop)

Status Open
Maintainer reply None cached
Activity 1 comment · opened Aug 17, 2026

Summary

When calling claude.ai MCP connector tools from Claude Code (Windows desktop app), nested array/object parameters are serialized as JSON strings by the time they reach the MCP server, so the server's schema validation rejects calls whose payloads the model shaped correctly. Scalar type fidelity is also lost intermittently (numbers/booleans arriving as strings).

Environment

  • Claude Code desktop app on Windows 11 Pro (10.0.26200)
  • claude.ai MCP connectors (observed on the Airtable connector and the n8n connector; two independent server integrations, same failure shape)
  • Reproduced across multiple sessions and weeks (2026-08-02 through 2026-08-17), with schemas freshly re-fetched via ToolSearch between attempts

Observed failures

Airtable connector:

  • create_table: [{"code":"invalid_type","expected":"array","received":"string","path":["fields"],...}]
  • create_field: invalid_type, expected object, received string, path ["field"] (4 calls in one 15-day window, 4 failures, 0 successes)
  • get_table_schema: expected "array", received "string", path ["tables"]
  • list_records_for_table: pageSize Expected number, received string; fieldIds expected "array", received "string"

n8n connector:

  • update_workflow: "Expected array, received string", path ["operations"] on payloads authored as real JSON arrays
  • Multiple tools: MCP error -32602: Input validation error with string-where-number/array/boolean across list_credentials, update_workflow, get_node_types, get_execution

Why we believe it is the client/harness, not the model or the server

  1. Re-fetching the tool schema between attempts shows the correct parameter shape (e.g. fields documented as an array with a detailed items schema), and a byte-different, correctly-shaped retry fails identically.
  2. The identical logical payload succeeds when sent to the same service over plain REST from the same machine.
  3. Two unrelated connectors (Airtable, n8n) fail with the same "expected array/object, received string" signature, which points at the shared call path rather than either server.

Impact

The affected write/schema tools are effectively unusable from Claude Code; sessions fall back to raw REST calls. In our transcripts this bug produced ~30 verified tool errors and 9 throwaway user-run diagnostic sessions over 15 days.

Ask

Serialize nested MCP tool-call parameters as their native JSON types (arrays/objects/numbers/booleans) rather than strings when forwarding to claude.ai connector MCP servers, or surface the coercion so the model can compensate.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗