From 76d2e78b0ee90fb03bd071a9cc54adc20cccec55 Mon Sep 17 00:00:00 2001 From: Samuel Colvin Date: Sun, 1 Jun 2025 22:00:05 +0100 Subject: [PATCH 1/3] improve server logging --- src/mcp/server/lowlevel/server.py | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/mcp/server/lowlevel/server.py b/src/mcp/server/lowlevel/server.py index b98e3dd1a..4a77da1aa 100644 --- a/src/mcp/server/lowlevel/server.py +++ b/src/mcp/server/lowlevel/server.py @@ -147,7 +147,7 @@ def __init__( } self.notification_handlers: dict[type, Callable[..., Awaitable[None]]] = {} self.notification_options = NotificationOptions() - logger.debug(f"Initializing server '{name}'") + logger.debug("Initializing server %r", name) def create_initialization_options( self, @@ -510,7 +510,7 @@ async def run( async with anyio.create_task_group() as tg: async for message in session.incoming_messages: - logger.debug(f"Received message: {message}") + logger.debug("Received message: %s", message) tg.start_soon( self._handle_message, @@ -543,7 +543,9 @@ async def _handle_message( await self._handle_notification(notify) for warning in w: - logger.info(f"Warning: {warning.category.__name__}: {warning.message}") + logger.info( + "Warning: %s: %s", warning.category.__name__, warning.message + ) async def _handle_request( self, @@ -553,10 +555,9 @@ async def _handle_request( lifespan_context: LifespanResultT, raise_exceptions: bool, ): - logger.info(f"Processing request of type {type(req).__name__}") - if type(req) in self.request_handlers: - handler = self.request_handlers[type(req)] - logger.debug(f"Dispatching request of type {type(req).__name__}") + logger.info("Processing request of type %s", type(req).__name__) + if handler := self.request_handlers.get(type(req)): # type: ignore + logger.debug("Dispatching request of type %s", type(req).__name__) token = None try: @@ -602,16 +603,13 @@ async def _handle_request( logger.debug("Response sent") async def _handle_notification(self, notify: Any): - if type(notify) in self.notification_handlers: - assert type(notify) in self.notification_handlers - - handler = self.notification_handlers[type(notify)] - logger.debug(f"Dispatching notification of type {type(notify).__name__}") + if handler := self.notification_handlers.get(type(notify)): # type: ignore + logger.debug("Dispatching notification of type %s", type(notify).__name__) try: await handler(notify) except Exception as err: - logger.error(f"Uncaught exception in notification handler: {err}") + logger.error("Uncaught exception in notification handler: %s", err) async def _ping_handler(request: types.PingRequest) -> types.ServerResult: From 802896f3f0aa63a28b51b5e7373be86708bd8bd8 Mon Sep 17 00:00:00 2001 From: Samuel Colvin Date: Mon, 2 Jun 2025 08:56:13 +0100 Subject: [PATCH 2/3] Update src/mcp/server/lowlevel/server.py Co-authored-by: Marcelo Trylesinski --- src/mcp/server/lowlevel/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mcp/server/lowlevel/server.py b/src/mcp/server/lowlevel/server.py index 4a77da1aa..c969a0159 100644 --- a/src/mcp/server/lowlevel/server.py +++ b/src/mcp/server/lowlevel/server.py @@ -609,7 +609,7 @@ async def _handle_notification(self, notify: Any): try: await handler(notify) except Exception as err: - logger.error("Uncaught exception in notification handler: %s", err) + logger.exception("Uncaught exception in notification handler") async def _ping_handler(request: types.PingRequest) -> types.ServerResult: From ed7ca7c81981bf072352aceb07a01197fd135fb5 Mon Sep 17 00:00:00 2001 From: Marcelo Trylesinski Date: Mon, 2 Jun 2025 10:01:16 +0200 Subject: [PATCH 3/3] Update src/mcp/server/lowlevel/server.py --- src/mcp/server/lowlevel/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mcp/server/lowlevel/server.py b/src/mcp/server/lowlevel/server.py index c969a0159..f6d390c2f 100644 --- a/src/mcp/server/lowlevel/server.py +++ b/src/mcp/server/lowlevel/server.py @@ -608,7 +608,7 @@ async def _handle_notification(self, notify: Any): try: await handler(notify) - except Exception as err: + except Exception: logger.exception("Uncaught exception in notification handler")