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

rusackas 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 85ea6e900a4 docs(mcp): document MCP_STATELESS_HTTP and its multi-pod 
tradeoff (#43902)
85ea6e900a4 is described below

commit 85ea6e900a45f937c1796e4e77514672602892ec
Author: Evan Rusackas <[email protected]>
AuthorDate: Tue Sep 8 13:29:51 2026 -0700

    docs(mcp): document MCP_STATELESS_HTTP and its multi-pod tradeoff (#43902)
    
    Co-authored-by: Claude Sonnet 5 <[email protected]>
---
 docs/admin_docs/configuration/mcp-server.mdx | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/docs/admin_docs/configuration/mcp-server.mdx 
b/docs/admin_docs/configuration/mcp-server.mdx
index 1bb9c0d9685..847961b6bae 100644
--- a/docs/admin_docs/configuration/mcp-server.mdx
+++ b/docs/admin_docs/configuration/mcp-server.mdx
@@ -540,6 +540,8 @@ MCP_STORE_CONFIG = {
 
 When `CACHE_REDIS_URL` is set, the MCP server uses a Redis-backed EventStore 
for session management, allowing replicas to share state. Without Redis, each 
pod manages its own in-memory sessions and stateful MCP interactions may fail 
when requests hit different replicas.
 
+`MCP_STATELESS_HTTP` (default `True`) controls whether requests get a fresh, 
ephemeral transport per HTTP round trip or a transport that stays alive for the 
session's lifetime. The default suits multi-pod deployments because it doesn't 
require session affinity -- any pod can handle any request. Its tradeoff: a 
client disconnecting mid-tool-call can crash not just its own session but other 
concurrent sessions on the same worker. Setting it to `False` avoids that, but 
it requires session-a [...]
+
 ---
 
 ## Configuration Reference
@@ -555,6 +557,7 @@ All MCP settings go in `superset_config.py`. Defaults are 
defined in `superset/m
 | `MCP_SERVICE_URL`    | `None`        | Public base URL for MCP-generated 
links (set this when behind a reverse proxy)                                    
                                                                                
                                                                           |
 | `MCP_DEBUG`          | `False`       | Enable debug logging                  
                                                                                
                                                                                
                                                                       |
 | `MCP_DEV_USERNAME`   | --            | Superset username for development 
mode (no auth)                                                                  
                                                                                
                                                                           |
+| `MCP_STATELESS_HTTP` | `True`        | Streamable-HTTP session mode. `True` 
gives each request a fresh, ephemeral transport, torn down as soon as that 
request completes; a client disconnecting mid-tool-call can crash not just its 
own session but other concurrent sessions on the same worker. `False` keeps the 
transport alive for the session's lifetime, avoiding that crash, but requires 
session-affinity routing on `Mcp-Session-Id` for multi-pod deployments (see 
[Multi-Pod (Kubernetes)](# [...]
 | `MCP_RBAC_ENABLED`   | `True`        | Enforce Superset's role-based access 
control on MCP tool calls. When `True`, each tool checks that the authenticated 
user has the required FAB permission before executing. Disable only for testing 
or trusted-network deployments.                                         |
 | `MCP_DISABLED_TOOLS` | `set()`       | Set of tool names to remove from the 
MCP server at startup. Disabled tools are never advertised to AI clients during 
tool discovery. Useful when a custom extension tool should replace a built-in 
Superset tool. See [Disabling built-in tools](#disabling-built-in-tools). |
 | `MCP_DISABLED_CHART_PLUGINS` | `frozenset()` | Set of chart type plugin 
names (e.g. `"handlebars"`) to hide from `generate_chart`. Does not affect 
`get_chart_type_schema`. See [Disabling chart type 
plugins](#disabling-chart-type-plugins). |

Reply via email to