From c8e75624c7f6072dbe38a697a40f602fc989cdbd Mon Sep 17 00:00:00 2001 From: siddhirajkatkar Date: Tue, 12 May 2026 21:39:02 +0530 Subject: [PATCH] fix: chain exceptions with 'from' in missed raise sites Follow-up to #2564 which fixed 12 sites. These 4 were missed: - resources/templates.py: add 'from e' to preserve exception chain - in_memory_task_store.py: add 'from None' (same type, better message) - prompts/base.py: add 'from None' and 'from e' to two raise sites --- src/mcp/server/mcpserver/prompts/base.py | 4 ++-- src/mcp/server/mcpserver/resources/templates.py | 2 +- src/mcp/shared/experimental/tasks/in_memory_task_store.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mcp/server/mcpserver/prompts/base.py b/src/mcp/server/mcpserver/prompts/base.py index e5b2af7d8..d6e5d1639 100644 --- a/src/mcp/server/mcpserver/prompts/base.py +++ b/src/mcp/server/mcpserver/prompts/base.py @@ -182,8 +182,8 @@ async def render( content = pydantic_core.to_json(msg, fallback=str, indent=2).decode() messages.append(Message(role="user", content=content)) except Exception: # pragma: no cover - raise ValueError(f"Could not convert prompt result to message: {msg}") + raise ValueError(f"Could not convert prompt result to message: {msg}") from None return messages except Exception as e: # pragma: no cover - raise ValueError(f"Error rendering prompt {self.name}: {e}") + raise ValueError(f"Error rendering prompt {self.name}: {e}") from e diff --git a/src/mcp/server/mcpserver/resources/templates.py b/src/mcp/server/mcpserver/resources/templates.py index f1ee29a37..edde0c4c4 100644 --- a/src/mcp/server/mcpserver/resources/templates.py +++ b/src/mcp/server/mcpserver/resources/templates.py @@ -130,4 +130,4 @@ async def create_resource( fn=lambda: result, # Capture result in closure ) except Exception as e: - raise ValueError(f"Error creating resource from template: {e}") + raise ValueError(f"Error creating resource from template: {e}") from e diff --git a/src/mcp/shared/experimental/tasks/in_memory_task_store.py b/src/mcp/shared/experimental/tasks/in_memory_task_store.py index 42f4fb703..625f96027 100644 --- a/src/mcp/shared/experimental/tasks/in_memory_task_store.py +++ b/src/mcp/shared/experimental/tasks/in_memory_task_store.py @@ -169,7 +169,7 @@ async def list_tasks( cursor_index = all_task_ids.index(cursor) start_index = cursor_index + 1 except ValueError: - raise ValueError(f"Invalid cursor: {cursor}") + raise ValueError(f"Invalid cursor: {cursor}") from None page_task_ids = all_task_ids[start_index : start_index + self._page_size] tasks = [Task(**self._tasks[tid].task.model_dump()) for tid in page_task_ids]