Skip to content

Commit c6499ee

Browse files
committed
fix: preserve direct resource read errors
1 parent 0a1c933 commit c6499ee

2 files changed

Lines changed: 8 additions & 5 deletions

File tree

src/mcp/server/mcpserver/server.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,12 @@ async def _handle_read_resource(
342342
self, ctx: ServerRequestContext[LifespanResultT], params: ReadResourceRequestParams
343343
) -> ReadResourceResult:
344344
context = Context(request_context=ctx, mcp_server=self)
345-
results = await self.read_resource(params.uri, context)
345+
try:
346+
results = await self.read_resource(params.uri, context)
347+
except ResourceError as exc:
348+
if isinstance(exc.__cause__, UnknownResourceError):
349+
raise MCPError(RESOURCE_NOT_FOUND, str(exc)) from exc
350+
raise
346351
contents: list[TextResourceContents | BlobResourceContents] = []
347352
for item in results:
348353
if isinstance(item.content, bytes):
@@ -449,7 +454,7 @@ async def read_resource(
449454
try:
450455
resource = await self._resource_manager.get_resource(uri, context)
451456
except UnknownResourceError as exc:
452-
raise MCPError(RESOURCE_NOT_FOUND, f"Unknown resource: {uri}") from exc
457+
raise ResourceError(f"Unknown resource: {uri}") from exc
453458
except ValueError as exc:
454459
logger.exception(f"Error getting resource {uri}")
455460
raise ResourceError(f"Error reading resource {uri}") from exc

tests/interaction/mcpserver/test_resources.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,7 @@ def user_profile(user_id: str) -> str:
167167
with pytest.raises(MCPError) as exc_info:
168168
await client.read_resource("users://42/profile")
169169

170-
assert exc_info.value.error == snapshot(
171-
ErrorData(code=0, message="Error reading resource users://42/profile")
172-
)
170+
assert exc_info.value.error == snapshot(ErrorData(code=0, message="Error reading resource users://42/profile"))
173171

174172

175173
@requirement("mcpserver:resource:duplicate-name")

0 commit comments

Comments
 (0)