11"""
22Middleware configuration and setup for the MCP framework.
33"""
4- import logging
4+
55from typing import Any , Dict , Optional
66
77from fastapi .middleware .cors import CORSMiddleware
@@ -12,6 +12,7 @@ class MiddlewareConfig:
1212 """
1313 Configuration class for setting up middleware in the MCP server.
1414 """
15+
1516 def __init__ (
1617 self ,
1718 cors : Optional [Dict [str , Any ]] = None ,
@@ -26,7 +27,10 @@ def __init__(
2627 "allow_methods" : ["*" ],
2728 "allow_headers" : ["*" ],
2829 }
29- self .logging = logging or {"level" : "INFO" , "format" : "%(asctime)s %(levelname)s %(message)s" }
30+ self .logging = logging or {
31+ "level" : "INFO" ,
32+ "format" : "%(asctime)s %(levelname)s %(message)s" ,
33+ }
3034 self .error_handling = error_handling or {}
3135 self .compression = compression or {"enabled" : False }
3236 self .custom = custom or []
@@ -44,12 +48,13 @@ def setup_middleware(app, config: MiddlewareConfig):
4448 allow_methods = config .cors ["allow_methods" ],
4549 allow_headers = config .cors ["allow_headers" ],
4650 )
47- # Logging
48- logging .basicConfig (level = config .logging ["level" ], format = config .logging ["format" ])
51+
4952 # Compression
5053 if config .compression .get ("enabled" , False ):
5154 app .add_middleware (GZipMiddleware )
5255 # Custom middleware
5356 for mw in config .custom :
57+ if not hasattr (mw , "__call__" ):
58+ raise ValueError (f"Custom middleware { mw } is not callable" )
5459 app .add_middleware (mw )
55- # Error handling can be added here as needed
60+ # Error handling can be added here as needed
0 commit comments