diff --git a/src/mcp/server/mcpserver/server.py b/src/mcp/server/mcpserver/server.py index be77705da..d243aef86 100644 --- a/src/mcp/server/mcpserver/server.py +++ b/src/mcp/server/mcpserver/server.py @@ -36,7 +36,7 @@ from mcp.server.mcpserver.resources import FunctionResource, Resource, ResourceManager from mcp.server.mcpserver.tools import Tool, ToolManager from mcp.server.mcpserver.utilities.context_injection import find_context_parameter -from mcp.server.mcpserver.utilities.logging import configure_logging, get_logger +from mcp.server.mcpserver.utilities.logging import get_logger from mcp.server.sse import SseServerTransport from mcp.server.stdio import stdio_server from mcp.server.streamable_http import EventStore @@ -203,9 +203,6 @@ def __init__( self._token_verifier = ProviderTokenVerifier(auth_server_provider) self._custom_starlette_routes: list[Route] = [] - # Configure logging - configure_logging(self.settings.log_level) - @property def name(self) -> str: return self._lowlevel_server.name diff --git a/tests/server/mcpserver/test_server.py b/tests/server/mcpserver/test_server.py index 3457ec944..c9c7da025 100644 --- a/tests/server/mcpserver/test_server.py +++ b/tests/server/mcpserver/test_server.py @@ -1,4 +1,5 @@ import base64 +import logging from pathlib import Path from typing import Any from unittest.mock import AsyncMock, MagicMock, patch @@ -45,6 +46,15 @@ pytestmark = pytest.mark.anyio +async def test_create_server_does_not_configure_logging(monkeypatch: pytest.MonkeyPatch): + basic_config = MagicMock() + monkeypatch.setattr(logging, "basicConfig", basic_config) + + MCPServer() + + basic_config.assert_not_called() + + class TestServer: async def test_create_server(self): mcp = MCPServer( diff --git a/tests/server/mcpserver/utilities/test_logging.py b/tests/server/mcpserver/utilities/test_logging.py new file mode 100644 index 000000000..a84223709 --- /dev/null +++ b/tests/server/mcpserver/utilities/test_logging.py @@ -0,0 +1,27 @@ +import logging +from unittest.mock import MagicMock + +import pytest +from rich.logging import RichHandler + +from mcp.server.mcpserver.utilities.logging import configure_logging, get_logger + + +def test_get_logger_returns_named_logger(): + logger = get_logger("mcp.test") + + assert logger is logging.getLogger("mcp.test") + + +def test_configure_logging_uses_rich_handler(monkeypatch: pytest.MonkeyPatch): + basic_config = MagicMock() + monkeypatch.setattr(logging, "basicConfig", basic_config) + + configure_logging("DEBUG") + + basic_config.assert_called_once() + kwargs = basic_config.call_args.kwargs + assert kwargs["level"] == "DEBUG" + assert kwargs["format"] == "%(message)s" + assert len(kwargs["handlers"]) == 1 + assert isinstance(kwargs["handlers"][0], RichHandler)