[BUG] Sonnet sees only 4 of 10 MCP tools while Opus sees all 10 — same server, same project, same Desktop config

Resolved 💬 2 comments Opened Mar 21, 2026 by stevekang416 Closed Mar 24, 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?

[BUG] Sonnet sees only 4 of 10 MCP tools while Opus sees all 10 — same server, same project, same Desktop config

Environment

  • Claude Desktop: 1.1.7714 (3bd6f6), 2026-03-19
  • macOS: MacBook Air (Apple Silicon)
  • MCP server: Python FastMCP, stdio transport, 10 registered tools
  • MCP SDK: Latest via pip

Summary

When an MCP server registers 10 tools, Claude Opus can see and use all 10, but Claude Sonnet can only access 4. Both models are running in the same Claude Desktop app, same project, same MCP server config, same connectors panel (all 10 tools enabled with checkmarks). The MCP server log confirms all 10 tools are sent in the tools/list response.

This is not a Claude Desktop or MCP transport issue — Desktop is delivering all 10 tools correctly. The limitation is model-specific.

Which tools survive

Sonnet consistently sees these 4:

  1. search_posts
  2. get_thread
  3. find_threads
  4. db_stats

Sonnet does not see these 6:

  • get_post
  • search_manual
  • get_manual_section
  • search_club
  • get_club_page
  • color_availability

Opus sees all 10.

What I've verified

  • MCP server logs: Server sends all 10 tools in tools/list response ✅
  • Connectors panel: All 10 tools show as enabled (checkmarked) for both models ✅
  • Opus in same project: Sees and can call all 10 tools ✅
  • Multiple full restarts (Cmd+Q, 10-second wait, relaunch): No change
  • Cleared caches: ~/Library/Caches/Claude and ~/Library/Application Support/Claude/tool_cache
  • Reduced docstring length: No effect on Sonnet's tool count

Diagnosis

The original assumption was that Claude Desktop was truncating the tools/list response before passing tools to the model (MCP log showed [5851 chars truncated]). However, testing with Opus in the identical environment confirmed that Desktop delivers all 10 tools correctly. The 4-tool limit is specific to Sonnet's handling of the tool list.

Actual behavior

Sonnet silently drops 6 of 10 tools. No error is surfaced to the user. The connectors UI gives no indication that Sonnet will only use a subset.

What Should Happen?

Expected behavior

Both Opus and Sonnet should see all 10 tools when all 10 are enabled in the connectors panel and confirmed sent by the MCP server.

Error Messages/Logs

Steps to Reproduce

Steps to reproduce

  1. Create a FastMCP server (stdio transport) with 10 registered tools
  2. Add it to claude_desktop_config.json
  3. Launch Claude Desktop, enable all tools in Settings → Connectors
  4. Create a project and open a conversation using Opus — ask it to list all available tools from the server → 10/10 tools visible
  5. In the same project, open a new conversation using Sonnet — ask it to list all available tools → 4/10 tools visible

Claude Model

Sonnet (default)

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

1.1.7714

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

_No response_

View original on GitHub ↗

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