Resource not found (-32602, formerly -32002)
- Spec
2025-11-25 → 2026-07-28- Evidence
- E2Reproducedarm64
- TypeScript SDK (server)
@modelcontextprotocol/server@2.4.0- TypeScript SDK v1
@modelcontextprotocol/sdk@1.32.2- Python SDK
mcp@2.3.0- Verified
What it means
Section titled “What it means”The client asked to read a resource URI the server does not know. We read greeting://nope from servers that only have greeting://hello:
| Server | Error |
|---|---|
| TypeScript SDK v2 2.4.0 | {"code":-32602,"message":"Resource not found: greeting://nope","data":{"uri":"greeting://nope"}} |
| TypeScript SDK v1 1.32.2 | MCP error -32602: Resource greeting://nope not found |
| Python SDK 2.3.0 | {"code":-32602,"message":"Unknown resource: greeting://nope","data":{"uri":"greeting://nope"}} |
The 2025-11-25 specification recommended -32002 for this case. The 2026-07-28 changelog changes it to -32602 (Invalid Params) “to align with JSON-RPC specification”. All three current SDKs we tested already return -32602, on both 2025 and 2026 connections.
The URI is not one the server serves
Section titled “The URI is not one the server serves”- Compare the URI character by character with
resources/listorresources/templates/list. Schemes, trailing slashes and percent-encoding matter. - For a template such as
file:///{path}, check that the server’s handler accepts the value the client filled in. - A URI the model made up, rather than one from the list, is common. Describe resources clearly so the host offers real ones.
Your code checks for -32002
Section titled “Your code checks for -32002”Client code written for 2025 that treats only -32002 as “not found” misses the new code and may show a generic error or retry. Check for both while servers of both generations are around, and prefer the error’s data.uri over parsing the message.
Related
Section titled “Related”Sources
MCPDev is community documentation. It is not affiliated with the Model Context Protocol project or with the vendors of the clients it covers.