Atlas fails to attach an MCP resource with "Resource not found: <client>/<uri>" because Session.prompt reads the resource through mcp.readResource for the named client, and when that call succeeds but returns no content, prompt building throws rather than silently sending an empty attachment. Fix it by running `atlas mcp` to confirm the client is connected rather than failed or needs_auth, re-listing the server's resources, checking the URI is complete including its scheme, and reconnecting the server so its resource list refreshes.
Why Atlas says Resource not found when attaching an MCP resource
Atlas throws "Resource not found: <client>/<uri>" during prompt building because Session.prompt reads the resource through mcp.readResource for the named client, and that call returned 0 bytes of content. Atlas refuses to send an empty attachment silently, so it fails the prompt rather than quietly dropping the resource.
The design choice matters here. An empty MCP resource attachment would reach the model as nothing at all, and the model would answer as if the file or document you attached did not exist, without either of you noticing. Atlas surfaces the failure instead. The error names both halves of the lookup, the client and the URI, which tells you exactly where to start: either the client is not in a state to serve resources, or the URI no longer resolves to content on that server. Atlas connects to Model Context Protocol servers and exposes their tools and resources to the agent, and both depend on a healthy client.
How to fix an MCP Resource not found error in Atlas
Fix the Atlas "Resource not found" error in 4 steps: run `atlas mcp` and confirm the client is connected rather than failed or needs_auth, re-list the server's resources, check the pasted URI is complete including its scheme, then reconnect the server to refresh its resource list and re-attach.
Check the client first, because a client that is not connected cannot serve any resource at all. `atlas mcp` shows the status row, and anything other than connected, whether failed or needs_auth, explains the error immediately and points you at a different fix. If the client is genuinely connected, the problem is the URI. Re-list the server's resources and compare what comes back to what you pasted. Resource URIs get renamed between server versions and are sometimes scoped dynamically, so a URI that worked last week can resolve to nothing today.
Check the MCP client status before debugging the URI
Run `atlas mcp` as check 1, before touching the URI. A client sitting at failed or needs_auth cannot serve resources through mcp.readResource, so "Resource not found: <client>/<uri>" is the expected outcome and no amount of URI correction will help. Only a connected client is worth debugging further.
Ordering the checks this way in Atlas saves real time. failed means the transport never came up and the fix lives in the server's command or url. needs_auth means the server demanded a login and the fix is `atlas mcp auth <name>`. Neither of those has anything to do with the resource URI you pasted, and both produce the same downstream Resource not found error the moment Session.prompt tries to read through that client. Confirm connected in the status row, and only then treat the URI as the suspect.
Why an MCP resource URI stops resolving in Atlas
An MCP resource URI stops resolving in Atlas for 3 ordinary reasons: the server renamed the URI in a newer version, the resource is dynamically scoped and no longer exists in your current context, or the URI you pasted is incomplete and is missing its scheme.
Re-listing the server's resources settles all three at once, because the listing is the server's own current answer about what exists. Compare the URI in the listing to the one you attached, character for character, including the scheme prefix. A URI copied out of documentation, a chat message, or a wrapped terminal line very often loses its scheme or picks up a truncation. Dynamically scoped resources are the subtler case: the server generates them per project, per session, or per user, so a URI that resolved in one context legitimately resolves to nothing in another.
How to verify the MCP resource attaches in Atlas
Verify the Atlas fix in 2 moves: reconnect the server so its resource list is refreshed, then re-attach the resource to a message. A prompt that builds and sends means mcp.readResource returned content for that client and URI. A repeated "Resource not found" means the lookup is still empty.
Reconnecting the MCP server in Atlas is the step people skip, and it is the one that refreshes a stale resource list. A client that has been connected for hours may be holding an old view of what the server offers. After reconnecting, re-attach and send. If the prompt goes through, Session.prompt read the resource successfully and the attachment is in the message. If the error returns unchanged, take the URI straight from the fresh listing rather than from your clipboard, since that removes the last place a typo or a truncation could be hiding.
How to fix it
- 01Run `atlas mcp` and confirm the client is connected, not failed or needs_auth.
- 02Re-list the server's resources; the URI may have been renamed or may be dynamically scoped.
- 03Check that the resource URI you pasted is complete, including its scheme.
- 04Reconnect the server so its resource list is refreshed, then re-attach.
Frequently asked questions
- What does "Resource not found: <client>/<uri>" mean in Atlas?
- It means Session.prompt read the resource through mcp.readResource for that client and got no content back. Atlas throws during prompt building rather than silently sending an empty attachment.
- Why can't Atlas attach my MCP resource to a message?
- Either the MCP client is not connected, or the URI no longer resolves to content. Run `atlas mcp` to confirm the client is connected, not failed or needs_auth, then re-list the server's resources and compare the URI.
- How do I list MCP resources in Atlas?
- Re-list the server's resources from the MCP server itself and compare the result to the URI you pasted. Resource URIs can be renamed between versions or scoped dynamically, so an old URI may no longer exist.
- Does the MCP resource URI need a scheme in Atlas?
- Yes. Check that the resource URI you pasted is complete, including its scheme. A URI copied from documentation or a wrapped terminal line often loses its scheme prefix and then resolves to nothing.
- Why does Atlas throw instead of sending an empty attachment?
- Because an empty attachment would reach the model as nothing, and the model would answer as if the resource did not exist. Atlas fails prompt building instead, so the missing resource is visible rather than silent.
- Do I need to reconnect the MCP server after a Resource not found error?
- Reconnect the server so its resource list is refreshed, then re-attach. A long-lived client can hold a stale view of what the server offers, which produces Resource not found even for a resource that now exists.
- Can needs_auth cause a Resource not found error in Atlas?
- Yes. A client at needs_auth cannot serve resources through mcp.readResource, so the attachment fails. Run `atlas mcp auth <name>` to complete the login, confirm the status is connected, then re-attach.
Try Atlas in your terminal
The terminal-native AI coding agent. Free core, single binary.
Install AtlasRelated guides
Atlas with Gemini 3 Flash (2026): The $0.5 Default for All Day Agent Loops
Gemini 3 Flash gives Atlas a 1,048,576 token context and 65,536 token output at $0.5 per Mtok input and $3 per Mtok output. The economical default for agent loops.
Atlas with IBM Granite 4 Small-H (Ollama): a 1M-Token Local Window in 2026
IBM Granite 4 Small-H (Ollama) is a hybrid Mamba model with 1M tokens (1,048,576) of context from a 19GB download, Free (self-hosted). Atlas setup and memory notes.
Atlas for Kotlin in 2026
In 2026, Atlas empowers Kotlin developers with terminal-native AI coding. It integrates with Gradle and coroutines, offering secure, privacy-focused code assistance with local embeddings and granular control.
Atlas with OpenCoder 8B (Ollama): the Auditable Local Coder in 2026
OpenCoder 8B (Ollama) runs Atlas on a fully open code LLM: open data, open recipe, 4.7GB, 8K tokens (8,192) of context, Free (self-hosted). Setup and tradeoffs.
Atlas with Hugging Face Inference in 2026: 51 Models Behind One HF_TOKEN
Atlas with Hugging Face Inference in 2026: 51 routed models behind one HF_TOKEN, GLM-4.7-Flash free at $0/$0 per Mtok, and the router margin on popular rows.
Atlas with Gemma 4 E4B (Ollama): the Default Gemma 4 Tag in 2026
Gemma 4 E4B (Ollama) is the :latest tag of Google's newest Gemma line: 9.6GB, 128K tokens (131,072), Free (self-hosted), with qat, mlx, mxfp8 and nvfp4 quants.
Atlas vs OpenAI Codex CLI: Terminal AI Coding Agents in 2026
Comparing Atlas and OpenAI Codex CLI for terminal AI coding in 2026. Atlas offers a TUI, permission-gated tools, and BYO models, while OpenAI Codex CLI provides sandboxed execution and OpenAI model integration.
Atlas with IBM Granite 4.0 H Micro in 2026
IBM Granite 4.0 H Micro in Atlas, 2026: a hybrid Mamba-Transformer model at $0.017/$0.112 per Mtok on Cloudflare Workers AI, the cheapest input in the registry.