mcp超集
](https://pypi.org/project/mcp-superset/) ](https://pypi.org/project/mcp-superset/)    
      ](https://github.com/bintocher/mcp-superset)
全面的 模型上下文协议(MCP) 服务器 Apache超级集。通过137个工具,让AI助手(Claude、GPT等)完全控制您的Superset实例——仪表板、图表、数据集、SQL Lab、用户、角色、RLS等。
与其他超级MCP服务器的比较
|---------|:-:|:-:|:-:|:-:| | 工具总数 | 137 | 60 | 31 | 4 | |语言| Python | Python | TypeScript | TypeScript| |仪表板CRUD | 15个工具|5|8|-| |仪表板原生过滤器| 5工具 | - | - | - | |图表CRUD | 11个工具|5|7|-| |数据库工具|18工具|14|1|1| |数据集工具|11个工具|3|7|-| |SQL实验室| 5个工具|7|1|1| | 安全(用户/角色) | 26工具 | 2 | - | - | | 行级安全性 | 5工具 | - | - | - | | 群组 | 9工具 | - | - | - | | 权限审核 | 是 | - | - | - | | 仪表板访问权限授予/撤销 | 是 | - | - | - | | 自动数据源_访问同步 | 是 | - | - | - | |报告和注释|10个工具|-|-|-| |标签|7工具|7|-|-| |资产导出/导入|是|-|-|-| | 安全:确认标志 | 14种类型 | - | - | - | | 安全:DDL/DML阻塞 | 是 | - | - | - | | 安全:系统角色保护 | 是 | - | - | - | |传输|HTTP、SSE、stdio|stdio|std io|stdio| |身份验证方法|JWT+自动刷新+CSRF|用户名/密码+令牌文件|用户名/口令或令牌|LDAP| |超级集版本|6.0.1|4.1.1|未指定|未指定| |带参数的CLI| --host --port --transport | - | - | - | |PyPI包| mcp-superset | superset-mcp | superset-mcp (npm)|-| |uvx支持| 是 | - | - | - | |许可证|MIT |MIT |-|Apache 2.0| |GitHub之星|新| 170 | 21 | 5|
主要差异化因素:
- 仅MCP服务器具有 全面安全管理 (用户、角色、RLS、组、权限审核)
- 只有一个 内置安全验证 (确认标志,DDL/DML阻塞)
- 只有一个 仪表板本机筛选器管理
- 只有一个 自动数据源访问同步
- 只有一个 多种运输方式 (HTTP、SSE、stdio)
- 只有一个 可配置CLI (
--host,--port,--transport,--env-file)
特性
- 137个MCP工具 涵盖完整的Superset REST API
- 仪表板管理 --CRUD、复制、发布/取消发布、导出/导入、嵌入式模式、本机过滤器
- 图表管理 --CRUD、复制、数据检索、导出/导入、缓存预热
- 数据库管理 --CRUD、连接测试、模式/表自检、SQL验证
- 数据集管理 --CRUD、复制、模式刷新、导出/导入
- SQL实验室 --查询执行、格式化、成本估算、结果和CSV导出
- 安全 --用户、角色、权限、行级安全性(RLS)、组
- 门禁自动化 --通过自动数据源权限同步授予/撤销仪表板访问权限
- 审计 --综合权限矩阵(用户x仪表板x数据集x RLS)
- 标签、报告、注释、保存的查询 --完整CRUD
- 资产导出/导入 --完整实例备份和还原
- 内置安全 --破坏性操作的确认标志,SQL Lab中的DDL/DML阻塞
- JWT身份验证 具有自动令牌刷新和CSRF处理功能
- 可流式传输HTTP、SSE和stdio
快速开始
安装
# From PyPI
pip install mcp-superset
# With uv (recommended)
uv pip install mcp-superset
# Run without installing (uvx)
uvx mcp-superset配置
创建一个 .env 当前目录中的文件,或设置环境变量:
# Required
SUPERSET_BASE_URL=https://superset.example.com
SUPERSET_USERNAME=admin
SUPERSET_PASSWORD=your_password
# Optional
SUPERSET_AUTH_PROVIDER=db # db (default) or ldap
SUPERSET_MCP_HOST=127.0.0.1 # Server host (default: 127.0.0.1)
SUPERSET_MCP_PORT=8001 # Server port (default: 8001)
SUPERSET_MCP_TRANSPORT=streamable-http # streamable-http (default), sse, or stdio跑步
# Using CLI (after pip install)
mcp-superset
# Run without installing
uvx mcp-superset
# Using Python module
python -m mcp_superset
# With uv from source
uv run mcp-superset
# With custom settings
mcp-superset --host 0.0.0.0 --port 9000 --transport sse
# With custom .env file
mcp-superset --env-file /path/to/.env
# Using stdio transport (for Claude Desktop, Cursor, etc.)
mcp-superset --transport stdioCLI选项
| 选项 | 默认值 | 环境变量 | 描述 |
|---|---|---|---|
--host | 127.0.0.1 | SUPERSET_MCP_HOST | 服务器绑定地址 |
--port | 8001 | SUPERSET_MCP_PORT | 服务器绑定端口 |
--transport | streamable-http | SUPERSET_MCP_TRANSPORT | 运输: streamable-http, sse, stdio |
--env-file | 自动检测 | -- | 路径 .env 文件 |
--version | -- | -- | 显示版本并退出 |
连接到MCP客户端
克劳德代码
添加到您的项目 .mcp.json:
{
"mcpServers": {
"superset": {
"type": "http",
"url": "http://localhost:8001/mcp"
}
}
}然后启动服务器: mcp-superset 或 uvx mcp-superset.
克劳德桌面
添加 claude_desktop_config.json:
{
"mcpServers": {
"superset": {
"command": "uvx",
"args": ["mcp-superset", "--transport", "stdio"],
"env": {
"SUPERSET_BASE_URL": "https://superset.example.com",
"SUPERSET_USERNAME": "admin",
"SUPERSET_PASSWORD": "your_password"
}
}
}
}光标/风帆
{
"mcpServers": {
"superset": {
"command": "uvx",
"args": ["mcp-superset", "--transport", "stdio"],
"env": {
"SUPERSET_BASE_URL": "https://superset.example.com",
"SUPERSET_USERNAME": "admin",
"SUPERSET_PASSWORD": "your_password"
}
}
}
}其他MCP客户端
任何兼容MCP的客户端都可以通过以下方式连接:
- 可流式传输的HTTP: `http://:
/mcp`
- 上海证券交易所: `http://:
/sse`
- 标准:管道至
mcp-superset --transport stdio
可用工具(137)
仪表板(15个工具)
| 工具 | 说明 |
|---|---|
superset_dashboard_list | 列出具有过滤和分页功能的仪表板 |
superset_dashboard_get | 按ID获取仪表板详细信息 |
superset_dashboard_create | 创建新仪表板 |
superset_dashboard_update | 更新仪表板属性 |
superset_dashboard_delete | 删除仪表板(需要确认) |
superset_dashboard_copy | 复制仪表板 |
superset_dashboard_publish | 发布仪表板草稿 |
superset_dashboard_unpublish | 取消发布仪表板 |
superset_dashboard_charts | 在仪表板中列出图表 |
superset_dashboard_datasets | 列出仪表板使用的数据集 |
superset_dashboard_export | 将仪表板导出为ZIP(base64) |
superset_dashboard_import | 从ZIP文件导入仪表板 |
superset_dashboard_embedded_get | 获取嵌入式配置 |
superset_dashboard_embedded_set | 使用允许的域启用嵌入式模式 |
superset_dashboard_embedded_delete | 禁用嵌入式模式 |
仪表板过滤器(5个工具)
| 工具 | 说明 |
|---|---|
superset_dashboard_filter_list | 在仪表板上列出本机筛选器 |
superset_dashboard_filter_add | 添加本机筛选器(自动生成正确的ID格式) |
superset_dashboard_filter_update | 更新现有的本机筛选器 |
superset_dashboard_filter_delete | 删除本机筛选器(需要确认) |
superset_dashboard_filter_reset | 删除所有过滤器(需要确认) |
图表(11个工具)
| 工具 | 说明 |
|---|---|
superset_chart_list | 列出具有过滤和分页功能的图表 |
superset_chart_get | 按ID获取图表详细信息 |
superset_chart_create | 创建新图表 |
superset_chart_update | 更新图表属性 |
superset_chart_delete | 删除图表(需要确认) |
superset_chart_copy | 复制图表 |
superset_chart_data | 执行图表查询并获取数据 |
superset_chart_get_data | 从已保存的图表中获取数据 |
superset_chart_export | 将图表导出为ZIP(base64) |
superset_chart_import | 从ZIP文件导入图表 |
superset_chart_cache_warmup | 预热图表缓存 |
数据库(18个工具)
| 工具 | 说明 |
|---|---|
superset_database_list | 列出数据库连接 |
superset_database_get | 获取数据库详细信息 |
superset_database_create | 注册新的数据库连接 |
superset_database_update | 更新数据库设置 |
superset_database_delete | 删除数据库(需要确认) |
superset_database_test_connection | 测试数据库连接 |
superset_database_schemas | 列出数据库中的架构 |
superset_database_tables | 列出架构中的表 |
superset_database_catalogs | 列出目录(适用于多目录数据库) |
superset_database_connection_info | 获取连接字符串信息 |
superset_database_function_names | 列出可用的SQL函数 |
superset_database_related_objects | 使用此数据库查找图表/数据集 |
superset_database_validate_sql | 验证SQL语法 |
superset_database_validate_parameters | 验证连接参数 |
superset_database_select_star | 为表生成SELECT\*查询 |
superset_database_table_metadata | 获取表列和索引元数据 |
superset_database_export | 将数据库配置导出为ZIP |
superset_database_available_engines | 列出支持的数据库引擎 |
数据集(11个工具)
| 工具 | 说明 |
|---|---|
superset_dataset_list | 列出具有过滤功能的数据集 |
superset_dataset_get | 获取数据集详细信息,包括列和指标 |
superset_dataset_create | 从表或SQL查询创建数据集 |
superset_dataset_update | 更新数据集属性 |
superset_dataset_delete | 删除数据集(需要确认) |
superset_dataset_duplicate | 复制数据集 |
superset_dataset_refresh_schema | 从源刷新列 |
superset_dataset_related_objects | 使用此数据集查找图表 |
superset_dataset_export | 将数据集导出为ZIP |
superset_dataset_import | 从ZIP导入数据集 |
superset_dataset_get_or_create | 获取现有数据集或创建新数据集 |
SQL实验室和查询(13个工具)
| 工具 | 说明 |
|---|---|
superset_sqllab_execute | 执行SQL查询(仅限SELECT) |
superset_sqllab_format_sql | 格式化/美化SQL |
superset_sqllab_results | 获取已完成查询的结果 |
superset_sqllab_estimate_cost | 估算查询执行成本 |
superset_sqllab_export_csv | 将查询结果导出为CSV |
superset_query_list | 列出已执行的查询 |
superset_query_get | 获取查询详细信息和结果 |
superset_query_stop | 停止正在运行的查询 |
superset_saved_query_list | 列出已保存的查询 |
superset_saved_query_create | 保存新查询 |
superset_saved_query_get | 获取已保存的查询详细信息 |
superset_saved_query_update | 更新已保存的查询 |
superset_saved_query_delete | 删除已保存的查询(需要确认) |
安全和访问控制(26个工具)
| 工具 | 说明 |
|---|---|
superset_get_current_user | 获取当前经过身份验证的用户信息 |
superset_get_current_user_roles | 获取当前用户的角色 |
superset_user_list | 列出具有筛选功能的用户 |
superset_user_get | 获取用户详细信息 |
superset_user_create | 创建新用户 |
superset_user_update | 更新用户属性 |
superset_user_delete | 删除用户(需要确认) |
superset_role_list | 列出角色 |
superset_role_get | 获取角色详细信息 |
superset_role_create | 创建新角色 |
superset_role_update | 更新角色名称/描述 |
superset_role_delete | 删除角色(需要确认,阻止系统角色) |
superset_permission_list | 列出所有可用权限 |
superset_role_permissions_get | 获取分配给角色的权限 |
superset_role_permission_add | 设置角色权限(完全替换,需要确认) |
superset_role_copy_permissions | 将所有权限从一个角色复制到另一个角色 |
superset_dashboard_grant_role_access | 授予角色访问仪表板及其数据集的权限 |
superset_dashboard_revoke_role_access | 撤销角色对仪表板数据集的访问权限 |
superset_bulk_user_role_add | 为多个用户添加角色(按ID或按当前角色) |
superset_bulk_user_role_remove | 从多个用户中删除角色 |
superset_bulk_user_role_replace | 为所有匹配的用户替换一个角色 |
superset_rls_list | 列出行级安全规则 |
superset_rls_get | 获取RLS规则详细信息 |
superset_rls_create | 创建RLS规则 |
superset_rls_update | 更新RLS规则(需要角色和表) |
superset_rls_delete | 删除RLS规则(需要确认) |
组(9个工具)
| 工具 | 说明 |
|---|---|
superset_group_list | 列出组 |
superset_group_get | 获取包含成员和角色的组详细信息 |
superset_group_create | 创建新组 |
superset_group_update | 更新组名 |
superset_group_delete | 删除组 |
superset_group_add_users | 将用户添加到组 |
superset_group_remove_users | 从组中删除用户 |
superset_group_add_roles | 向组中添加角色 |
superset_group_remove_roles | 从组中删除角色 |
标签(7工具)
| 工具 | 说明 |
|---|---|
superset_tag_list | 列表标签 |
superset_tag_get | 获取标签详细信息 |
superset_tag_create | 创建标签(可选择绑定到对象) |
superset_tag_update | 更新标签 |
superset_tag_delete | 删除标签(需要确认) |
superset_tag_get_objects | 列出与标记关联的对象 |
superset_tag_bulk_create | 一次创建多个标签 |
系统和报告(21个工具)
| 工具 | 说明 |
|---|---|
superset_report_list | 列出计划报告 |
superset_report_get | 获取报告详细信息 |
superset_report_create | 创建计划报告 |
superset_report_update | 更新报告 |
superset_report_delete | 删除报告(需要确认) |
superset_annotation_layer_list | 列出注释图层 |
superset_annotation_layer_get | 获取注释层详细信息 |
superset_annotation_layer_create | 创建注释图层 |
superset_annotation_layer_update | 更新注释图层 |
superset_annotation_layer_delete | 删除注释图层(需要确认) |
superset_annotation_list | 列出图层中的注释 |
superset_annotation_get | 获取注释详细信息 |
superset_annotation_create | 创建注释 |
superset_annotation_update | 更新注释 |
superset_annotation_delete | 删除注释(需要确认) |
superset_recent_activity | 获取最近的用户活动 |
superset_log_list | 获取审核日志 |
superset_get_menu | 获取Superset菜单结构 |
superset_get_base_url | 获取配置的Superset基本URL |
superset_assets_export | 将所有Superset资产导出为ZIP |
superset_assets_import | 从ZIP文件导入资产 |
审计(1个工具)
| 工具 | 说明 |
|---|---|
superset_permissions_audit | 生成全面的权限矩阵 |
安全特性
该服务器包括广泛的内置保护,以防止意外数据丢失或配置错误。
确认标志
破坏性操作需要明确的确认参数:
| 操作 | 必填标志 | 显示内容 |
|---|---|---|
| 删除仪表板 | confirm_delete=True | 仪表板名称、段塞、图表计数 |
| 删除图表 | confirm_delete=True | 链接仪表板 |
| 删除数据集 | confirm_delete=True | 受影响的图表和仪表板 |
| 删除数据库 | confirm_delete=True | 受影响的数据集、图表 |
| 删除RLS规则 | confirm_delete=True | 条款、角色、数据集 |
| 删除角色 | confirm_delete=True | 阻止系统角色 |
| 删除用户 | confirm_delete=True | 阻止删除服务帐户 |
| 更新图表参数 | confirm_params_replace=True | — |
| 更新数据集列 | confirm_columns_replace=True | — |
| 更新数据库URI | confirm_uri_change=True | 受影响的图表/仪表板 |
| 更新用户角色 | confirm_roles_replace=True | 当前角色 |
| 设置角色权限 | confirm_full_replace=True | — |
| 授予仪表板访问权限 | confirm_grant=True | 试运行结果 |
| 撤销仪表板访问权限 | confirm_revoke=True | 试运行结果 |
| 批量向用户添加角色 | confirm=True | 用户数、样本列表 |
| 从用户中批量删除角色 | confirm=True | 用户计数,防止上次角色删除 |
| 批量替换角色 | confirm=True | 旧/新角色名称、用户数 |
| 复制角色权限 | confirm=True | 源/目标权限计数 |
自动保护
- DDL/DML阻塞 --SQL实验室拒绝
DROP,DELETE,UPDATE,INSERT,TRUNCATE,ALTER,CREATE,GRANT,REVOKE(检查前删除SQL注释) - 系统角色保护 --无法删除管理员、Alpha、Gamma、公共角色
- 服务帐户保护 --无法删除MCP服务用户
- RLS安全 —
rls_update两者都需要roles和tables防止无声数据擦除 - 本机筛选器ID --自动生成于
NATIVE_FILTER-格式 - 图表验证 --不接受图表
granularity_sqla(仪表板时间过滤器需要) - 自动同步 --当仪表板角色更改时,datasource_access权限会自动同步
建筑
superset-mcp/
├── pyproject.toml # Package configuration
├── .env.example # Environment variable template
├── LICENSE # MIT License
├── README.md # This file
├── README_RU.md # Russian documentation
├── CHANGELOG.md # Version history
└── src/mcp_superset/
├── __init__.py # Package init with __version__
├── __main__.py # CLI entry point with argparse
├── server.py # FastMCP server setup and configuration
├── auth.py # JWT authentication (login, refresh, CSRF)
├── client.py # HTTP client (auto-auth, retry, RISON pagination)
├── models.py # Pydantic models
└── tools/
├── __init__.py # register_all_tools()
├── helpers.py # Auto-sync datasource_access logic
├── dashboards.py # Dashboard + filter tools (20)
├── charts.py # Chart tools (11)
├── databases.py # Database tools (18)
├── datasets.py # Dataset tools (11)
├── queries.py # SQL Lab + saved query tools (13)
├── security.py # User, role, permission, RLS, bulk operations (26)
├── groups.py # Group management tools (9)
├── audit.py # Permissions audit tool (1)
├── tags.py # Tag tools (7)
└── system.py # Reports, annotations, logs, assets (21)超级集兼容性
- 经过测试:Apache超级集6.0.1
- 认证:JWT(推荐)-API密钥(
sst_*)未在Superset中实现 - 必需的Superset用户:管理员角色(用于完全访问API)
推荐的超级设置配置
添加到您的 superset_config.py:
from datetime import timedelta
# Increase JWT token lifetime (default is 15 min)
JWT_ACCESS_TOKEN_EXPIRES = timedelta(hours=1)
JWT_REFRESH_TOKEN_EXPIRES = timedelta(days=30)
# Max API page size
FAB_API_MAX_PAGE_SIZE = 100发展
设置
git clone https://github.com/bintocher/mcp-superset.git
cd superset-mcp
# Create virtual environment and install in editable mode
uv venv
uv pip install -e ".[dev]"
# Copy and configure .env
cp .env.example .env
# Edit .env with your Superset credentials本地运行
# Run from source
uv run python -m mcp_superset
# Or with CLI
uv run mcp-superset --port 8001运行测试
uv run python test_all_tools.py已知超级集合API测验
这些由MCP服务器自动处理,但在调试时了解这些信息很有用:
| Quirk | 详细信息 |
|---|---|
| RISON分页 | 超级集忽略 page/page_size 作为查询参数;必须使用RISON q 参数 |
| 需要CSRF | 所有POST/PUT/DELETE都需要 X-CSRFToken header+会话cookie |
| 需要引用器 | SQL Lab返回403,但没有 Referer 头球 |
标记API返回 {} | 标签创建不返回ID;必须查询列表 |
标签更新需求 name | 即使未更改,字段也是必填的 |
| 角色权限替换 | POST /security/roles/{id}/permissions 替换所有权限 |
| RLS更新替换 | PUT /rowlevelsecurity/{id} 替换所有提供的字段 |
| 数据集更新列 | PUT /dataset/{id} 和 columns 替换所有列 |
| 仪表板副本 | 需要 json_metadata (可以是 "{}") |
| 本机筛选器ID | 必须是 NATIVE_FILTER- 格式 |
filter_time 需求 granularity_sqla | 没有它的图表会默默地忽略时间过滤器 |
| 数字格式 | SMART_NUMBER 缩写;使用 ,d 或 ,.2f 为了准确 |
