How do I check which MCP servers are connected?
claude mcp list From your shell. Inside a session, use /mcp.
Answer
Run claude mcp list in your shell for every configured server and its status. Inside a session, /mcp shows the same thing and can reconnect or authenticate without leaving the conversation. For the error behind a status, run claude mcp get <name>.
What it does
claude mcp list prints every server configured for the current directory, each with a status:
claude mcp list
| Status | Meaning |
|---|---|
✔ Connected | Ready to use |
! Connected · tools fetch failed | Connected but could not list its tools |
! Needs authentication | Reachable, wants a browser sign-in or a token |
✘ Failed to connect | Server did not respond |
✘ Connection error | The connection attempt threw an error |
⏸ Pending approval (run claude to approve) | A project-scoped server you have not approved yet |
Some legacy Windows consoles show √ and × instead of ✔ and ✘.
The pending one is the only status that waits on you rather than on the server. It appears for servers defined in a project's .mcp.json — someone committed them, and Claude Code will not start a program a repository asked for until you say so. Start a session and approve at the prompt, or run /mcp and approve there if you dismissed it.
Inside a session, /mcp shows the same servers and does more: select one to see its tool list, reconnect, or authenticate through the browser.
For the detail behind a status, claude mcp get <name> gives the HTTP status or error code, the full URL or command, and which scope holds the definition.
When to use it
Use claude mcp list right after adding a server. The Added confirmation only means the entry was written to a file — it says nothing about whether the server answers.
Use /mcp when you are already in a session and something is not working: it is the only one of the two that can fix the problem in place, by reconnecting or running the OAuth flow.
Use claude mcp get <name> when a status is not self-explanatory, which is most of the time for the two failure states.
Example
Check everything:
claude mcp list
Get the detail for one server, including its scope:
claude mcp get claude-code-docs
Inside a session:
/mcp
If a freshly added stdio server shows ✘ Failed to connect, wait and run the list again — the first run can be slow while npx downloads the package.
Common mistakes
Checking from a different project. Local-scoped servers are tied to the project they were added from. No MCP servers configured usually means you are somewhere else, not that the config is gone.
Reading Connected · tools fetch failed as working. The connection is up but Claude has nothing to call. Run claude mcp get <name> for the error detail — that status carries one.
Confusing it with an empty tool list. A server that connects and reports zero tools is the different symptom: it started, but without something it needed, usually an environment variable such as an API key. Open /mcp and select the server to see which of the two you have.
Expecting .mcp.json edits to show up immediately. Claude Code reads that file at session start. Restart the session.