docs(mcp): fix guest-tool config name to MCP_GUEST_ALLOWED_TOOLS

The doc referenced a nonexistent MCP_GUEST_DENIED_TOOLS setting; guest
tool access is actually governed by the default-deny MCP_GUEST_ALLOWED_TOOLS
allow-list.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
rusackas
2026-08-27 22:59:23 -07:00
co-authored by Claude Opus 4.8
parent 6189a443df
commit f2fe66e1dd
+11 -3
View File
@@ -278,11 +278,19 @@ curl -X POST http://localhost:5008/mcp \
- A dedicated guest-token verifier validates the token against the same `GUEST_TOKEN_JWT_SECRET` / `GUEST_TOKEN_JWT_ALGO` / `GUEST_TOKEN_JWT_AUDIENCE` config used by embedded dashboards, replays the embedded structural checks, and enforces revocation (global version bumps and per-dashboard `guest_token_revoked_before` cutoffs). It runs *before* the JWT verifier described above, since guest tokens are signed with a different key/algorithm and would otherwise be rejected at the transport.
- A verified guest resolves to a Superset guest user as the highest-priority identity, so it's never downgraded to API-key / `MCP_DEV_USERNAME` / dev-mode resolution. Data access is scoped by the same checks (dataset allowlist, dashboard access, row-level security) that apply to embedded dashboard views.
- Sensitive enumeration tools (`find_users`, `get_instance_info` by default) are hidden and denied to guests via `MCP_GUEST_DENIED_TOOLS`, regardless of `MCP_RBAC_ENABLED`.
- Guests are restricted to a default-deny allow-list, `MCP_GUEST_ALLOWED_TOOLS`, regardless of `MCP_RBAC_ENABLED`. Sensitive enumeration tools like `find_users` and `get_instance_info` are denied simply by being absent from the default list.
```python
# superset_config.py
MCP_GUEST_DENIED_TOOLS = {"find_users", "get_instance_info"} # default
MCP_GUEST_ALLOWED_TOOLS = {
"get_dashboard_info",
"get_dashboard_layout",
"list_dashboards",
"list_charts",
"get_chart_info",
"get_chart_data",
"get_chart_preview",
} # default
```
**Deployment requirements**
@@ -567,7 +575,7 @@ All MCP settings go in `superset_config.py`. Defaults are defined in `superset/m
| `MCP_AUTH_FACTORY` | `None` | Custom auth provider factory `(flask_app) -> auth_provider`. Takes precedence over built-in JWT |
| `MCP_USER_RESOLVER` | `None` | Custom function `(app, access_token) -> username` to extract a Superset username from a validated JWT token. When `None`, the default resolver checks `preferred_username`, `username`, `email`, and `sub` claims in that order. |
| `MCP_EMBEDDED_GUEST_AUTH_ENABLED` | `False` | Accept embedded [guest tokens](#embedded-guest-authentication) as Bearer auth. Also requires the `EMBEDDED_SUPERSET` feature flag. |
| `MCP_GUEST_DENIED_TOOLS` | `{"find_users", "get_instance_info"}` | Tool names hidden and denied to embedded guests, regardless of `MCP_RBAC_ENABLED`. |
| `MCP_GUEST_ALLOWED_TOOLS` | see [default list](#embedded-guest-authentication) | The only tool names callable by embedded guests (default-deny), regardless of `MCP_RBAC_ENABLED`. |
### Response Size Guard