
Your MCP server is running fine. Claude just isn't calling it.
When you connect an MCP server to Claude Code, there's a failure mode nobody warns you about: the tools load, the connection handshake succeeds, and Claude still never calls them. It just uses Bash or grep or works out its own approach. I've hit this probably six times now. The root cause is almost always the tool description, parameter names, or return format — not the implementation. Why Claude routes around your tools Claude doesn't pick tools randomly. It reads the schema and decides whether calling your tool is clearer than doing it directly. A vague description and it won't recognize when to use it. An unpredictable return format and it'll try once, fail silently, and fall back to Bash. The description problem { "name" : "get_customer" , "description" : "Gets customer data from the database" } vs: { "name" : "get_customer" , "description" : "Retrieve a customer record by ID. Use when you need billing info, account status, or contact details. Returns name, email, plan, and created
Continue reading on Dev.to
Opens in a new tab



