Skip to content

Commit 81335fb

Browse files
fix: avoid exposing server exception details to clients
Send generic "Internal Server Error" message to clients instead of exposing exception types, values, and tracebacks. This prevents leaking sensitive implementation details while still logging full exception information server-side for debugging.
1 parent e713784 commit 81335fb

File tree

2 files changed

+2
-8
lines changed

2 files changed

+2
-8
lines changed

src/mcp/server/lowlevel/server.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -613,11 +613,7 @@ async def _handle_message(
613613
raise message
614614
await session.send_log_message(
615615
level="error",
616-
data={
617-
"exception_type": type(message).__name__,
618-
"exception_value": str(message),
619-
"exception_traceback": None,
620-
},
616+
data="Internal Server Error",
621617
logger="mcp.server.exception_handler",
622618
)
623619

tests/server/test_lowlevel_exception_handling.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,7 @@ async def test_exception_handling_with_raise_exceptions_false(exception_class: t
4949
call_args = session.send_log_message.call_args
5050

5151
assert call_args.kwargs["level"] == "error"
52-
assert call_args.kwargs["data"]["exception_type"] == exception_class.__name__
53-
assert call_args.kwargs["data"]["exception_value"] == str(test_exception)
54-
assert call_args.kwargs["data"]["exception_traceback"] is None
52+
assert call_args.kwargs["data"] == "Internal Server Error"
5553
assert call_args.kwargs["logger"] == "mcp.server.exception_handler"
5654

5755

0 commit comments

Comments
 (0)