Fix Claude Desktop MCP Tools Failing with 'Required' Parameter Error — Missing arguments in JSON-RPC tools/call (July 2025 Regression)
On July 23, 2025, all MCP tools in Claude Desktop suddenly stopped working with parameter validation errors. Every tools/call JSON-RPC request was sent WITHOUT the required 'arguments' field, causing all MCP servers to reject tool calls with: 'expected: object, received: undefined' / 'Required' / 'Cannot convert undefined or null to object'. The first tool call in a fresh conversation would work, but all subsequent calls failed because the arguments parameter was stripped from the JSON-RPC params. Affected ALL MCP servers — local filesystem, remote proxies, first-party connectors (Atlassian/Jira, Asana, Slack), and custom MCP servers alike. Root cause: upstream Anthropic API failure on July 23, 2025 that emitted malformed tool-use content blocks without arguments, which Claude Desktop relayed directly to MCP servers. Anthropic staff (ollie-anthropic) confirmed the issue as an 'upstream API failure affecting all MCP tool calls' and deployed a server-side fix within hours, requiring only a Claude Desktop restart. Status page incident: https://status.anthropic.com/incidents/9px1qykyb9w4. Impact: 59 community reactions, 66 comments — a global MCP outage affecting all Claude Desktop users. Agent Decision Tree: (1) Check if this is a historical event — the bug occurred July 23, 2025 and was fixed same day. If user reports are from July 23, 2025, verify with dates. (2) If symptoms match but date is different, this may be a new incident — check https://status.anthropic.com/ for current outages. (3) First diagnostic: inspect MCP server logs for tools/call params. If params contain only '"name":"tool_name"' without '"arguments":{...}', this is the bug. (4) If first call works and subsequent calls fail, this is the classic signature. (5) Apply Solution 1 (restart + fresh conversation). (6) If problem persists after restart, escalate to Anthropic support with MCP server log excerpts.
Symptoms
- All MCP tool calls fail with parameter validation error: 'expected: object, received: undefined' on the 'arguments' field
- MCP server logs show tools/call requests missing the arguments parameter entirely: {"method":"tools/call","params":{"name":"list_directory"}} (no arguments key)
- First MCP tool call in a fresh conversation works correctly — all subsequent calls in the same conversation fail
- Error message variants: 'Cannot convert undefined or null to object', 'Field X is required but was missing', 'Invalid arguments: Required'
- MCP servers themselves run correctly (connection established, server responds) — the issue is in how Claude Desktop constructs the tool call request
- Both local MCP servers (npx-based) and remote MCP connectors (Atlassian, Asana, custom) are affected identically
- Restarting Claude Desktop temporarily resets the issue — first call works again, then subsequent calls break
Error signatures
expected: object, received: undefined
Required
Cannot convert undefined or null to object
Field 'X' is required for type with serial name but it was missing
Invalid arguments for tool_name: Required
Possible causes
- Upstream Anthropic API failure on July 23, 2025 caused the API to emit tool_use content blocks with missing or stripped 'arguments' payloads — Claude Desktop faithfully relayed these malformed instructions to MCP servers via JSON-RPC tools/call, but without the required arguments field, every MCP server rejected the call with 'Required' validation errors
- The 'first call works, subsequent calls fail' pattern reveals a session-level corruption mechanism: the initial tool_use in a conversation was generated from cached/valid state (first turn had correct arguments), but mid-conversation tool calls were generated by the affected API endpoint that dropped the arguments block during response assembly — the arguments existed in the model's reasoning but were stripped during API response serialization
- This was NOT a Claude Desktop client bug — the Desktop app was functioning correctly as a JSON-RPC relay. The failure was entirely server-side: the Anthropic API's tool-use response schema regression caused the API to emit incomplete MCP tool instructions. This explains the simultaneous global impact across all operating systems and Claude Desktop versions
Solutions
First-Call-Only Workaround During API Outage (Historical — July 23, 2025)
During the July 23, 2025 outage, MCP tools only worked on the FIRST call of a fresh conversation because the initial tool_use had valid cached arguments. Users could work around the outage by starting a new conversation for every MCP operation or batching all MCP work into the first tool call of a session. This is a historical workaround — the API fix was deployed within hours, making this unnecessary post-July 23.
- Start a brand new conversation in Claude Desktop (Cmd+N / Ctrl+N)
- Make ONE complex MCP tool call that accomplishes as much as possible in a single operation
- If you need another MCP operation, start another new conversation — do NOT reuse the same conversation
- Monitor https://status.anthropic.com/ for resolution — the incident was resolved same day
Commands
curl -s https://status.anthropic.com/api/v2/incidents.json | python3 -c "import json,sys; d=json.load(sys.stdin); [print(i['name'],i['status']) for i in d.get('incidents',[])]"Risks
- Extremely inefficient — each new conversation has zero context from previous ones
- Only works for stateless MCP tools; session-dependent tools will not function across separate conversations
- Historical workaround only — the outage was resolved July 23, 2025. If experiencing similar symptoms on a different date, this is likely a DIFFERENT issue
Verification
- Step 1: Start a new conversation → expect: Claude displays fresh greeting
- Step 2: Make first MCP tool call → expect: tool executes successfully with arguments present
- Step 3: Try a second MCP tool call in the SAME conversation → expect: second call fails with 'Required' / 'undefined' error, confirming the workaround pattern (first-only works)
Server-Side Fix Deployed (July 23, 2025) — Restart Claude Desktop + Fresh Conversation
Anthropic deployed a server-side fix to the upstream API within hours of the incident on July 23, 2025. The fix restored correct tool_use argument propagation from the API. No Claude Desktop version upgrade is required — restart Claude Desktop and open a fresh conversation. Confirmed by ollie-anthropic (Anthropic staff): 'this was due to an upstream API failure affecting all MCP tool calls. This should be resolved now (perhaps with a Claude Desktop restart).' Status page incident confirming outage and resolution: https://status.anthropic.com/incidents/9px1qykyb9w4.
- Check https://status.anthropic.com/ for any active incidents — if July 23, 2025 incident is marked 'Resolved', proceed
- Completely quit Claude Desktop (Cmd+Q on macOS, Alt+F4 on Windows, kill the process)
- Restart Claude Desktop and open a NEW conversation (do NOT continue any conversation that was active during the outage)
- Test with two consecutive MCP tool calls in the same conversation to confirm both succeed
- Inspect MCP server logs to verify arguments field is present in tools/call requests
Commands
pkill -f 'Claude Desktop' 2>/dev/null; sleep 2; open -a 'Claude Desktop'
tail -f ~/Library/Logs/Claude/mcp*.log 2>/dev/null | grep -A2 'tools/call'
grep -c '"arguments"' ~/Library/Logs/Claude/mcp*.log 2>/dev/null
Risks
- Conversations active during the July 23, 2025 outage may have corrupted tool state — always start a fresh conversation after restart
- If issue persists after restart on a DIFFERENT date, this may be a new incident — do NOT assume the same fix; check status.anthropic.com first
Verification
- Step 1: Run `pkill -f 'Claude Desktop' 2>/dev/null; sleep 2; open -a 'Claude Desktop'` → expect: Claude Desktop launches to home screen, no crash dialogs. Exit code from pkill is 0 or 1 (both OK — process may not have been running).
- Step 2: Open a NEW conversation (Cmd+N / Ctrl+N) — do NOT use an existing conversation → expect: Claude displays a fresh greeting (not continuing a previous conversation)
- Step 3: Make first MCP tool call, e.g., 'list files in my home directory using the filesystem MCP' → expect: tool executes and returns file listing, no 'Required' or 'undefined' error in Claude's response
- Step 4: Make second MCP tool call in the same conversation, e.g., 'read the contents of ~/.bashrc using the filesystem MCP' → expect: tool executes successfully WITHOUT parameter validation errors. If you see 'Cannot convert undefined or null to object', the fix is not yet applied or you need to restart again.
- Step 5: Run `tail -100 ~/Library/Logs/Claude/mcp*.log 2>/dev/null | grep 'tools/call' | tail -5` → expect: each tools/call line includes '"arguments":{' in the params section (not just '"params":{"name":"tool_name"}'). If arguments key is missing, restart Claude Desktop and try again.
- Step 6: Run `grep -c '"arguments"' ~/Library/Logs/Claude/mcp*.log 2>/dev/null; echo exit=$?` → expect: stdout shows a positive integer (count of tool calls with arguments present), exit code 0. If count is 0 and tools/call is present without arguments, the fix has not been applied.
Agent JSON
Canonical machine-readable representation of this issue:
{
"issue_id": "5c456522-3255-4aa8-9bce-ab72a3f92248",
"slug": "fix-claude-desktop-mcp-tools-failing-with-required-parameter-error-missing-arguments-in-json-rpc-tools-call-july-2025-re-kchyyc",
"verification_status": "unverified",
"canonical_json": "https://codekb.dev/v1/issues/fix-claude-desktop-mcp-tools-failing-with-required-parameter-error-missing-arguments-in-json-rpc-tools-call-july-2025-re-kchyyc"
}