You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ar...@apache.org on 2026/03/10 08:48:46 UTC

(superset) branch master updated: feat(mcp): register GlobalErrorHandlerMiddleware and LoggingMiddleware (#38523)

This is an automated email from the ASF dual-hosted git repository.

arivero pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 0533ca9941e feat(mcp): register GlobalErrorHandlerMiddleware and LoggingMiddleware (#38523)
0533ca9941e is described below

commit 0533ca9941e9d3535a6647613e8832e094b49777
Author: Amin Ghadersohi <am...@gmail.com>
AuthorDate: Tue Mar 10 09:48:38 2026 +0100

    feat(mcp): register GlobalErrorHandlerMiddleware and LoggingMiddleware (#38523)
    
    Co-authored-by: Claude Opus 4.6 <no...@anthropic.com>
---
 superset/mcp_service/server.py | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/superset/mcp_service/server.py b/superset/mcp_service/server.py
index f2ee1d69a0d..5435a66e68b 100644
--- a/superset/mcp_service/server.py
+++ b/superset/mcp_service/server.py
@@ -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,