@@ -88,7 +88,7 @@ class Settings(BaseSettings, Generic[LifespanResultT]):
8888
8989 # Server settings
9090 debug : bool
91- log_level : Literal ["DEBUG" , "INFO" , "WARNING" , "ERROR" , "CRITICAL" ]
91+ log_level : Literal ["DEBUG" , "INFO" , "WARNING" , "ERROR" , "CRITICAL" ] | None
9292
9393 # HTTP settings
9494 host : str
@@ -152,7 +152,7 @@ def __init__( # noqa: PLR0913
152152 * ,
153153 tools : list [Tool ] | None = None ,
154154 debug : bool = False ,
155- log_level : Literal ["DEBUG" , "INFO" , "WARNING" , "ERROR" , "CRITICAL" ] = "INFO" ,
155+ log_level : Literal ["DEBUG" , "INFO" , "WARNING" , "ERROR" , "CRITICAL" ] | None = "INFO" ,
156156 host : str = "127.0.0.1" ,
157157 port : int = 8000 ,
158158 mount_path : str = "/" ,
@@ -224,8 +224,9 @@ def __init__( # noqa: PLR0913
224224 # Set up MCP protocol handlers
225225 self ._setup_handlers ()
226226
227- # Configure logging
228- configure_logging (self .settings .log_level )
227+ if self .settings .log_level is not None :
228+ # Configure logging
229+ configure_logging (self .settings .log_level )
229230
230231 @property
231232 def name (self ) -> str :
@@ -745,7 +746,7 @@ async def run_sse_async(self, mount_path: str | None = None) -> None:
745746 starlette_app ,
746747 host = self .settings .host ,
747748 port = self .settings .port ,
748- log_level = self .settings . log_level . lower (),
749+ ** self ._get_uvicorn_log_config (),
749750 )
750751 server = uvicorn .Server (config )
751752 await server .serve ()
@@ -760,11 +761,17 @@ async def run_streamable_http_async(self) -> None:
760761 starlette_app ,
761762 host = self .settings .host ,
762763 port = self .settings .port ,
763- log_level = self .settings . log_level . lower (),
764+ ** self ._get_uvicorn_log_config (),
764765 )
765766 server = uvicorn .Server (config )
766767 await server .serve ()
767768
769+ def _get_uvicorn_log_config (self ) -> dict [str , Any ]:
770+ """Map FastMCP log level to Uvicorn log level."""
771+ if self .settings .log_level is None :
772+ return {"log_level" : None , "log_config" : None }
773+ return {"log_level" : self .settings .log_level .lower ()}
774+
768775 def _normalize_path (self , mount_path : str , endpoint : str ) -> str :
769776 """
770777 Combine mount path and endpoint to return a normalized path.
0 commit comments