Skip to content

Commit bb6cfa9

Browse files
committed
Add tests for MCPServer.read_resource exception handling
Cover the two exception paths in read_resource that were previously excluded from coverage: unknown resource errors and resource read failures. The tests verify that both cases properly raise MCPError with appropriate messages. Also improve exception chaining by using 'from exc' syntax and simplify the error message format.
1 parent 1e3e62f commit bb6cfa9

File tree

3 files changed

+155
-245
lines changed

3 files changed

+155
-245
lines changed

src/mcp/server/lowlevel/server.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -795,12 +795,7 @@ async def _handle_request(
795795

796796
await message.respond(response)
797797
else: # pragma: no cover
798-
await message.respond(
799-
types.ErrorData(
800-
code=types.METHOD_NOT_FOUND,
801-
message="Method not found",
802-
)
803-
)
798+
await message.respond(types.ErrorData(code=types.METHOD_NOT_FOUND, message="Method not found"))
804799

805800
logger.debug("Response sent")
806801

src/mcp/server/mcpserver/server.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -348,15 +348,14 @@ async def read_resource(self, uri: AnyUrl | str) -> Iterable[ReadResourceContent
348348

349349
context = self.get_context()
350350
resource = await self._resource_manager.get_resource(uri, context=context)
351-
if not resource: # pragma: no cover
351+
if not resource:
352352
raise ResourceError(f"Unknown resource: {uri}")
353353

354354
try:
355355
content = await resource.read()
356356
return [ReadResourceContents(content=content, mime_type=resource.mime_type, meta=resource.meta)]
357-
except Exception as e: # pragma: no cover
358-
logger.exception(f"Error reading resource {uri}")
359-
raise ResourceError(str(e))
357+
except Exception as exc:
358+
raise ResourceError(f"Error reading resource {uri}") from exc
360359

361360
def add_tool(
362361
self,

0 commit comments

Comments
 (0)