From 63a0410778a533322d83bf32568f6e428b3386ff Mon Sep 17 00:00:00 2001 From: Dominik Jain Date: Tue, 25 Mar 2025 00:21:16 +0100 Subject: [PATCH] Fix fastmcp's broken logging configuration --- scripts/mcp_server.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/scripts/mcp_server.py b/scripts/mcp_server.py index c440403..03da4a4 100644 --- a/scripts/mcp_server.py +++ b/scripts/mcp_server.py @@ -12,6 +12,7 @@ from dataclasses import dataclass from typing import Any, cast import yaml +from mcp.server.fastmcp import server from mcp.server.fastmcp.prompts.base import Message, UserMessage from mcp.server.fastmcp.server import Context, FastMCP, Settings from sensai.util import logging @@ -25,6 +26,17 @@ from serena.util.file_system import scan_directory log = logging.getLogger(__name__) +def configure_logging(*args, **kwargs) -> None: + # log to stderr (will be captured by Claude Desktop); stdio is the MCP communication stream and cannot be used! + logging.basicConfig( + level=logging.DEBUG, stream=sys.stderr, format="%(levelname)-5s %(asctime)-15s %(name)s:%(funcName)s:%(lineno)d - %(message)s" + ) + + +# patch the logging configuration function in fastmcp, because it's hard-coded and broken +server.configure_logging = configure_logging + + @dataclass class SerenaMCPRequestContext: language_server: SyncLanguageServer @@ -194,7 +206,5 @@ def onboarding(ctx: Context) -> str: if __name__ == "__main__": - logging.basicConfig( - level=logging.DEBUG, stream=sys.stderr, format="%(levelname)-5s %(asctime)-15s %(name)s:%(funcName)s:%(lineno)d - %(message)s" - ) + log.info("Starting server") mcp.run()