[BUG]
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?
MCP tools are consistently unavailable on the very first user prompt of a new Claude Code session, but work correctly on all subsequent prompts.
claude mcp listshows servers "✓ Connected"- First MCP tool call fails:
Error: No such tool available: mcp__<server>__<tool> - Any follow-up message, then retry same tool → works perfectly
This appears to be a race condition where the MCP tool registry isn't fully populated until after the first response cycle completes.
What Should Happen?
MCP tools should be available immediately when session starts, since claude mcp list confirms they're connected.
Error Messages/Logs
Error: No such tool available: mcp__ucis-kafka-mcp__get_recent_memories_temporal
Steps to Reproduce
Error: No such tool available: mcp__ucis-kafka-mcp__get_recent_memories_temporal Steps to Reproduce:
- Configure multiple MCP servers via
claude mcp add - Verify connection:
claude mcp listshows "✓ Connected" for all - Start fresh Claude Code session
- First message: request that requires MCP tool
- Observe: "No such tool available" error
- Send any follow-up message
- Retry exact same MCP tool call
- Observe: Tool now works correctly
Claude Model
Opus
Is this a regression?
Yes, this worked in a previous version
Last Working Version
No response
Claude Code Version
2.0.75
Platform
Anthropic API
Operating System
Ubuntu/Debian Linux
Terminal/Shell
Terminal.app (macOS)
Additional Information
Related issues that may be duplicates or related:
- #12164 - MCP servers connect but tools not exposed
- #2682 - MCP Tools Not Available in Conversation Interface
- #11175 - Tools visible but unavailable to assistant
- #14496 - Subagents fail to access MCP tools
Environment: 10+ custom Python MCP servers via stdio transport, Ubuntu Linux.
The pattern suggests MCP tool registration happens asynchronously and isn't complete before Claude begins processing the first user prompt.