AI for Work
Claude Code Connected to MCP but Shows No Tools? Use This Diagnostic
Cihan's view: Check the server definition, transport, scope, tool discovery, and requested permissions in that order. Stop before any write action when the returned tools do not match the task.
An MCP connection can look healthy and still be useless for the job you had in mind. A server may authenticate, expose a different set of tools, or load from a different scope than the one you edited.
Advanced builder lesson. Evidence label: documentation-based guide with fictional inputs and an illustrative output. No MCP server was connected or executed for this article.
What you need
- Claude Code on a supported surface such as the terminal, IDE extension, desktop app, or web. The official overview lists the current surfaces and access requirements.
- A disposable project folder.
- A trusted MCP provider with current setup instructions.
- Permission to inspect one harmless record. Do not begin with production data.
Claude Code’s MCP reference documents HTTP, SSE, stdio, and WebSocket setup. The provider’s instructions still win for its URL, command, authentication, and scopes.
1. Write the task map first
Use this fictional map before touching configuration:
Task: read the status of ticket DEMO-17
Source: approved issue tracker workspace
Read needed: ticket ID, title, status, owner
Write needed: none
Data excluded: comments with personal data, credentials, all other projects
Acceptance check: returned ticket ID and status match the approved source page
If you cannot describe the read boundary, stop. “Connect the issue tracker” is too broad to approve safely.
2. Check the server definition
For a remote HTTP server, the current Claude Code syntax is:
claude mcp add --transport http [SERVER_NAME] [SERVER_URL]
For a local stdio server, the command and its arguments come after --:
claude mcp add [SERVER_NAME] -- [COMMAND] [ARGS...]
These are syntax shapes, not runnable setup commands. Replace placeholders only after checking the provider’s official documentation. Never copy a package name or URL from an unverified directory entry. Never put a token in a project file or public repository.
If a JSON configuration has a URL but no type, Claude Code can treat it as a malformed stdio entry. Check that the transport matches the provider’s instructions.
3. Inspect discovery before using a tool
Ask Claude Code:
List the configured MCP server named [SERVER_NAME] and show the available tools.
Do not call a tool, change data, write a file, or send a request.
For every discovered tool, classify it as read, write, delete, or unknown.
Compare the tool names and descriptions with this task map:
[PASTE THE TASK MAP]
Stop if the server, scope, or tool descriptions do not match.
Record the result in this table:
| Tool | Action class | Inputs | Scope match | Human decision |
|---|---|---|---|---|
| get_ticket | read | project ID, ticket ID | yes | allow one read |
| update_ticket | write | ticket ID, status | not needed | do not use |
The table is an editor-defined acceptance artifact. It is not a captured MCP result.
4. Run one bounded read
Only after the server and tool list match the map, ask for one fictional record:
Use only the approved read tool for project DEMO and ticket DEMO-17.
Return the ticket ID, title, status, and owner exactly as received.
Do not update, comment on, create, delete, or fetch another record.
If the record is unavailable, say so without guessing.
Compare the returned fields with the approved source. A successful connection is not proof that the result is correct or that write access is safe.
5. Diagnose an empty tool list
- The server authenticates but no tools appear: check the configured transport, server name, account scope, and whether the provider exposes tools to this client.
- A tool appears with a vague description: classify it as unknown and stop. Ask the provider for current documentation.
- The result contains too much information: disconnect or narrow the scope. Do not solve overbroad access with a longer prompt.
- The local package asks for unexpected access: stop installation and inspect the provider’s official package documentation.
- The command differs from this example: follow the current provider and Claude Code documentation. This article deliberately avoids claiming a universal command.
No-code alternative
If you only need one ticket status, copy the approved ticket ID and status into Claude manually. Keep the same task map and acceptance table. Copy and paste is slower than an integration, but it avoids adding a new permission boundary while you decide whether the workflow deserves one.
Limits and safety
Anthropic warns that you should verify that you trust an MCP server, especially when it fetches external content. An authenticated server can still expose write-capable tools or more data than your task requires. Start with test data, least privilege, and a human approval step for consequential actions.
TRY: one trusted server, one fictional or disposable record, and one read-only tool.
SKIP: arbitrary server directories, production data, and write actions during the first connection.
USE: the integration only when the task map, tool list, scope, and returned record all pass review.
For a nontechnical starting point, review a draft against a written brief with ChatGPT, then decide whether an integration is worth the added setup.
For practical AI-for-work tasks with an honest TRY / SKIP / USE decision, get The Weekly Verdict.