From b13f8f3b54d1a230f2fe277b38b453098fc62783 Mon Sep 17 00:00:00 2001 From: Dayna Blackwell Date: Mon, 4 May 2026 18:52:56 -0700 Subject: [PATCH] fix: chain exceptions in get_prompt and read_resource handlers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two raise statements discarded the causal exception chain: - Line 1112: raise ValueError(str(e)) → raise ValueError(str(e)) from e - Line 451: raise ResourceError(...) → raise ResourceError(...) from exc The same file already uses `from exc` correctly at line 459. Without `from`, callers lose the original traceback and cannot programmatically inspect the root cause via __cause__. Fixes #2541 --- src/mcp/server/mcpserver/server.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mcp/server/mcpserver/server.py b/src/mcp/server/mcpserver/server.py index be77705da..b3471163b 100644 --- a/src/mcp/server/mcpserver/server.py +++ b/src/mcp/server/mcpserver/server.py @@ -447,8 +447,8 @@ async def read_resource( context = Context(mcp_server=self) try: resource = await self._resource_manager.get_resource(uri, context) - except ValueError: - raise ResourceError(f"Unknown resource: {uri}") + except ValueError as exc: + raise ResourceError(f"Unknown resource: {uri}") from exc try: content = await resource.read() @@ -1109,4 +1109,4 @@ async def get_prompt( ) except Exception as e: logger.exception(f"Error getting prompt {name}") - raise ValueError(str(e)) + raise ValueError(str(e)) from e