From afe1c0913a6692bd202882b938cc9b3046e28aae Mon Sep 17 00:00:00 2001 From: David Soria Parra Date: Fri, 22 Nov 2024 22:21:10 +0000 Subject: [PATCH 1/2] When any handler raises an McpError, we pass it as a response --- src/mcp/server/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mcp/server/__init__.py b/src/mcp/server/__init__.py index ae78f367c..1f77c196e 100644 --- a/src/mcp/server/__init__.py +++ b/src/mcp/server/__init__.py @@ -12,6 +12,7 @@ from mcp.server.session import ServerSession from mcp.server.stdio import stdio_server as stdio_server from mcp.shared.context import RequestContext +from mcp.shared.exceptions import McpError from mcp.shared.session import RequestResponder logger = logging.getLogger(__name__) @@ -367,6 +368,8 @@ async def run( ) ) response = await handler(req) + except McpError as err: + response = err.error except Exception as err: if raise_exceptions: raise err From f7e47f39c2f66e294c071e86806f74a52600a46e Mon Sep 17 00:00:00 2001 From: David Soria Parra Date: Fri, 22 Nov 2024 22:22:30 +0000 Subject: [PATCH 2/2] Correct comment --- src/mcp/server/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mcp/server/__init__.py b/src/mcp/server/__init__.py index 1f77c196e..de155ac81 100644 --- a/src/mcp/server/__init__.py +++ b/src/mcp/server/__init__.py @@ -332,8 +332,8 @@ async def run( read_stream: MemoryObjectReceiveStream[types.JSONRPCMessage | Exception], write_stream: MemoryObjectSendStream[types.JSONRPCMessage], initialization_options: InitializationOptions, - # When True, exceptions are returned as messages to the client. - # When False, exceptions are raised, which will cause the server to shut down + # When False, exceptions are returned as messages to the client. + # When True, exceptions are raised, which will cause the server to shut down # but also make tracing exceptions much easier during testing and when using # in-process servers. raise_exceptions: bool = False,