Claude Code MCP server not connecting, or its tools not showing: the fixes
By Jake Marsh, who builds Taskhold. Updated 2026-10-30. Facts about other tools checked 2026-10-30. 6 min read.
Short answer: Run claude mcp list in the project folder. Failed to connect prints the error after the status; Pending approval means a .mcp.json server you haven't approved; a missing server was probably added in local scope from another folder. Connected with zero tools: reconnect from /mcp, then read the log from claude --debug=mcp.
You added an MCP server, Claude Code says nothing about it, and the tools never show up. Most cases come down to five causes: the wrong scope, a project server waiting for approval, a server that fails to start, a sign-in problem, or a server that connects with zero tools. This guide shows the command that tells you which one you have, and the fix for each.
The last section covers Taskhold's own server, the one that feeds its live board. Its error codes are in Taskhold troubleshooting.
Start with claude mcp list
Run claude mcp list from the project folder, or /mcp inside a session. Each server shows a status, and the status points at the fix:
| Status | What it means | Fix |
|---|---|---|
| Connected | Claude Code reached the server | If the tools are still missing, see Connected, but no tools below |
| Failed to connect | Claude Code couldn't start or reach it. The HTTP status or error code follows on the same line | Read that detail; claude mcp get <name> shows it on an Issue: line |
| Needs authentication | The server wants an OAuth sign-in | In /mcp pick the server and choose Authenticate, or run claude mcp login <name> |
| Pending approval | A .mcp.json server you haven't approved yet | Run claude in the folder, accept the workspace trust dialog and approve the server |
| Disabled for this project | Named in the project's disabledMcpServers list | Turn it back on from /mcp |
| Not listed | Added in another folder's local scope, or defined where Claude Code doesn't look | See the scope section below |
Checked 2026-10-30 against code.claude.com/docs/en/mcp.
The server is missing: check the scope
Local scope is the default for claude mcp add. A local server loads only in the folder where you added it, so it disappears when you open another repo. For a server you want in every project, add it with --scope user:
claude mcp add --transport http --scope user <name> <url>- .mcp.json goes at the repository root with servers under an mcpServers key. A file inside .claude/, or a top-level servers key copied from VS Code's mcp.json, never loads.
- settings.json doesn't read an mcpServers key. Use .mcp.json or claude mcp add.
- The same name in two scopes with different URLs shows a warning in claude mcp list. Claude Code uses the highest-precedence definition whole, without merging fields, so remove the extra one with claude mcp remove <name> --scope <scope>.
- A cloned repo can't approve its own servers: approvals committed in its .claude/settings.json are ignored until you trust the folder.
The server fails to start
- Relative paths in command or args resolve against the folder you launched Claude Code from, not the folder holding .mcp.json. Use absolute paths for local scripts; npx and uvx on your PATH work as they are.
- Variables the server needs belong in its env block. A ${VAR} reference that isn't set shows a Missing environment variable warning and reaches the server unexpanded.
- A pasted key with a trailing newline shows a hidden whitespace warning naming the field, such as headers.Authorization. Claude Code doesn't trim it, so edit the value.
- A slow server can hit the startup timeout. MCP_TIMEOUT sets it in milliseconds (30000 by default): MCP_TIMEOUT=60000 claude.
- After a fix, choose Reconnect on the server in /mcp, or run /mcp reconnect all (Claude Code v2.1.284 or later) to retry every failed server.
Connected, but no tools
A server that shows Connected with zero tools started fine but returned no tool list. The /mcp panel shows each server's tool count and flags servers that advertise tools but expose none. Choose Reconnect in /mcp. If the count stays at zero, start Claude Code with claude --debug=mcp and read the server's stderr in the log at ~/.claude/debug/<session-id>.txt.
- Run /context to see whether any MCP tools are in the session at all. They have their own line in the breakdown.
- A subagent whose definition has a tools list gets only the MCP tools it names. mcp__<server>__* gives it all of one server's tools.
- A remote server that drops mid-session gets five reconnect attempts. After that Claude Code shows MCP server "<name>" disconnected; reconnect from /mcp.
- Right after a resume, a call to a tool whose server is still connecting can fail with No such tool available. Calls work once the server is up.
Taskhold-specific checks
Taskhold is a remote server at https://taskhold.com/api/mcp. Add it with --transport http, which is Streamable HTTP. When the taskhold tools don't appear, check these in order:
- claude mcp list shows taskhold. If not, add it again with --scope user, or paste a fresh setup URL from Settings and say "set this up".
- The header is Authorization: Bearer followed by a key that starts with atd_sk_. A 401 names the problem: missing_key, bad_header, not_a_taskhold_key or unknown_key.
- Added without a key? Run /mcp, pick taskhold and choose Authenticate to sign in through the browser.
- A 402 means the key works but the trial ended or the plan was canceled. Restarting the plan fixes it with no config change.
- Settings in Taskhold shows Connected once the first call arrives. Ask Claude to call taskhold_list to test; in Claude Code the tools are named mcp__taskhold__*.
Once the tools load, every task the agent starts, its steps and its questions show on the live board. Setup for other clients: Cursor, Codex, VS Code and Gemini CLI. Subagents and their tools are covered in tracking Claude Code subagents.
See how far along your coding agents are.
$12/month or $120/year after the trial. Card up front. Cancel before day 7 and you pay nothing. Every agent you run is included.
Questions
- Where does Claude Code store MCP servers?
- Local and user scope servers are in ~/.claude.json; local ones sit under the project's path there. Project scope servers are in .mcp.json at the repository root, which you can commit for your team.
- Why does claude mcp list say Failed to connect when Claude Code itself works?
- The status is about that one server, not the list command. Claude Code couldn't connect to it, and the detail after the status, or the Issue: line from claude mcp get <name>, says why.
- Can a cloned repository turn on its own MCP servers?
- No. Approvals committed to the repo's .claude/settings.json are ignored until you trust the folder, so a .mcp.json server stays Pending approval until you run claude there and approve it.
Sources
- Claude Code docs: MCP (managing servers, scopes, reconnection), checked 2026-10-30
- Claude Code docs: debug your configuration, checked 2026-10-30
- Claude Code docs: environment variables (MCP_TIMEOUT), checked 2026-10-30
- Claude Code docs: subagent tool access, checked 2026-10-30
Related
- Claude Code task list over MCP: see progress live
- Claude Code waits for input silently: the fix
- Claude Code subagents: see what each one is doing
- Claude Code task list empty? Why, and the fix
- Claude Code forgets after compaction: the fix
- Cursor task list over MCP: watch every task live
- Cursor MCP server not showing tools: the fix
- Codex CLI MCP server not loading: the fix
Updated 2026-10-30. Something wrong or out of date? Email hello@greatwork.company.