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). |