暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

开源BI Apache Superset 秒变MCP Server

alitrack 2025-05-20
532

 

因为一直关注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. 1. 使用 superset_database_create
     连接销售数据库。
  2. 2. 通过 superset_chart_create
     生成两个图表:销售额柱状图和区域分布地图。
  3. 3. 调用 superset_dashboard_create
     将这两个图表整合到名为 “Q3 Sales Report” 的仪表盘中。
  4. 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论