因为一直关注Apache Superset, 就想着可否将Superset 和MCP相结合呢?然后找到了这么一个有趣的项目,Superset MCP Integration[1]。
Superset MCP 集成服务器允许AI代理通过自然语言编程方式连接并控制Apache Superset实例,实现自动化仪表盘管理、图表创建、数据探索等功能。
超简入门指南
安装Apache Superset
• Windows 用户使用Apache Superset开箱即用版 私信回复superset即可获得下载链接。 默认用户名和密码分别为admin/qwert • 其它系统可以考虑Docker 或者自己下载安装
下载安装Superset MCP
git clone https://github.com/aptro/superset-mcp
cd superset-mcp
python -m venv .venv
source .venv/bin/activate
pip install uv
uv pip install .
配置.env
SUPERSET_BASE_URL=http://localhost:8088 # 替换为你的Superset地址
SUPERSET_USERNAME=你的用户名
SUPERSET_PASSWORD=你的密码
运行 Superset MCP
python main.py
使用MCP Client探索 Superset MCP
推荐使用Gradio开发个MCP Client里介绍的Gradio Chatbot版本MCP Client。
⚠️ server_url
server_url = "http://127.0.0.1:8000/sse"
比如当你问该MCP 服务器提供了哪些工具?并举例说明,用中文回复,可能得到的回复如下:
MCP 服务器提供了丰富的工具,主要支持 Superset 的管理、查询和交互操作。以下是主要工具分类及示例:
1. 身份验证工具
• 功能:处理用户认证和令牌管理。 • 示例: • superset_auth_check_token_validity
:检查当前访问令牌是否有效,确保用户已登录。• superset_auth_refresh_token
:在令牌过期时刷新令牌,无需重新输入账号密码。• superset_auth_authenticate_user
:用户登录认证,获取初始访问令牌。
2. 仪表盘管理
• 功能:管理 Superset 仪表盘(Dashboard)的增删改查。 • 示例: • superset_dashboard_list
:列出用户可访问的所有仪表盘。• superset_dashboard_create
:创建新仪表盘并指定标题和布局配置。• superset_dashboard_delete
:根据 ID 删除指定仪表盘。
3. 图表(Chart)操作
• 功能:管理可视化图表的配置和生命周期。 • 示例: • superset_chart_create
:创建一个柱状图(bar chart),指定数据源、指标和样式参数。• superset_chart_get_by_id
:根据图表 ID 获取详细的配置和数据。• superset_chart_update
:更新图表的标题或可视化类型(如从柱状图改为折线图)。
4. 数据库连接管理
• 功能:配置和测试数据库连接,支持数据集成。 • 示例: • superset_database_create
:添加 PostgreSQL 数据库连接,需提供 SQLAlchemy URI(如postgresql://user:pass@host:port/db
)。• superset_database_test_connection
:验证数据库连接是否正常,检查 URI 和密码是否正确。
5. SQL 实验室(SQL Lab)
• 功能:执行和管理 SQL 查询,支持数据分析。 • 示例: • superset_sqllab_execute_query
:在指定数据库上运行 SQL 查询并获取结果。• superset_sqllab_format_sql
:自动格式化 SQL 语句以提高可读性。• superset_sqllab_export_query_results
:将查询结果导出为 CSV 文件。
6. 用户与权限
• 功能:管理用户信息和权限角色。 • 示例: • superset_user_get_current
:获取当前登录用户的信息(如用户名、所属角色)。• superset_user_get_roles
:列出当前用户的所有权限角色(如 “Admin” 或 “Viewer”)。
7. 标签(Tag)管理
• 功能:为资源(如图表、仪表盘)添加标签,便于分类。 • 示例: • superset_tag_create
:创建标签 “年度报告”,用于标记与季度数据相关的图表。• superset_tag_object_add
:将标签 “高优先级” 附加到某个关键仪表盘上。
8. 高级功能
• 功能:支持复杂操作和配置管理。 • 示例: • superset_explore_permalink_create
:保存一个临时分析链接,供团队成员共享和协作。• superset_advanced_data_type_convert
:将 JSON 数据转换为 Superset 支持的复杂数据类型(如地理坐标点)。
实际场景示例
假设用户需要创建一个销售数据仪表盘:
1. 使用 superset_database_create
连接销售数据库。2. 通过 superset_chart_create
生成两个图表:销售额柱状图和区域分布地图。3. 调用 superset_dashboard_create
将这两个图表整合到名为 “Q3 Sales Report” 的仪表盘中。4. 最后用 superset_tag_object_add
为该仪表盘添加 “Sales” 标签,方便后续查找。
这些工具共同为用户提供了一站式的数据管理和可视化解决方案。
可能碰到的问题
Subject must be a string
HTTP Request: GET http://localhost:8088/api/v1/security/csrf_token/ "HTTP/1.1 422 UNPROCESSABLE ENTITY" _client.py:1740
Failed to get CSRF token: 422 - {"msg":"Subject must be a string"}
这个是Apache Superset 依赖包PyJWT 2.10.0
的bug, 换成PyJWT 2.9.0
问题解决
pip install PyJWT==2.9.0
中文或者英文为登录
提问题的时候,让MCP自动登录
实现原理
就是对Apache Superset API做了二次封装, 当然这次代码用的不是借助MCP,在聊天框里轻松实现增删改查 里面介绍的FastAPI-MCP, 是另外一个项目 FastMCP[2]
下面是基于FastMCP的hello world
,
from fastmcp import FastMCP
mcp = FastMCP("Demo 🚀")
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers"""
return a + b
if __name__ == "__main__":
mcp.run()
引用链接
[1]
Superset MCP Integration: https://github.com/aptro/superset-mcp[2]
FastMCP: https://gofastmcp.com/
文章转载自alitrack,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




