feat(mcp): register GlobalErrorHandlerMiddleware and LoggingMiddleware (#38523)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 0533ca9941)
This commit is contained in:
Amin Ghadersohi
2026-03-10 09:48:38 +01:00
committed by Michael S. Molina
parent d8e346d52d
commit d42caf744f

View File

@@ -30,7 +30,11 @@ import uvicorn
from superset.mcp_service.app import create_mcp_app, init_fastmcp_server
from superset.mcp_service.mcp_config import get_mcp_factory_config, MCP_STORE_CONFIG
from superset.mcp_service.middleware import create_response_size_guard_middleware
from superset.mcp_service.middleware import (
create_response_size_guard_middleware,
GlobalErrorHandlerMiddleware,
LoggingMiddleware,
)
from superset.mcp_service.storage import _create_redis_store
logger = logging.getLogger(__name__)
@@ -224,16 +228,24 @@ def run_server(
auth_provider = _create_auth_provider(flask_app)
# Build middleware list
# FastMCP wraps handlers so that the LAST-added middleware is
# outermost. Order here is innermost → outermost.
middleware_list = []
# Add caching middleware (innermost runs closest to the tool)
caching_middleware = create_response_caching_middleware()
if caching_middleware:
middleware_list.append(caching_middleware)
# Add response size guard (protects LLM clients from huge responses)
if size_guard_middleware := create_response_size_guard_middleware():
middleware_list.append(size_guard_middleware)
# Add caching middleware
caching_middleware = create_response_caching_middleware()
if caching_middleware:
middleware_list.append(caching_middleware)
# Add logging middleware (logs all tool calls with duration tracking)
middleware_list.append(LoggingMiddleware())
# Add global error handler (outermost catches all exceptions)
middleware_list.append(GlobalErrorHandlerMiddleware())
mcp_instance = init_fastmcp_server(
auth=auth_provider,