mirror of
https://github.com/apache/superset.git
synced 2026-05-12 19:35:17 +00:00
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:
committed by
Michael S. Molina
parent
d8e346d52d
commit
d42caf744f
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user