【服务器】Apache Superset MCP接入与使用

1. 概述

Apache Superset MCP 集成(superset-mcp)是一个基于 Model Control Protocol(MCP)的服务器工具,旨在实现 AI 代理与 Apache Superset 的程序化交互。该项目通过提供标准化的工具接口,使 AI 助手(如 Claude)能够连接并控制 Superset 实例,实现数据可视化、报表生成、SQL 查询等操作的自动化。

项目仓库:https://github.com/aptro/superset-mcp

在这里插入图片描述

2. 核心功能与架构

2.1 核心定位

superset-mcp 作为 Superset 与 AI 代理之间的中间层,主要解决以下问题:

  • 提供标准化接口,使 AI 代理能够理解和操作 Superset
  • 处理认证与权限管理
  • 封装 Superset API 为更适合 AI 调用的工具集
  • 实现令牌自动刷新与会话管理

2.2 技术架构

  • 基础框架:基于 FastAPI 构建的 MCP 服务器
  • 通信层:使用 httpx 处理与 Superset 的 HTTP 通信
  • 认证机制:基于令牌的认证系统,支持自动刷新
  • 工具抽象:将 Superset 功能封装为可调用的 MCP 工具
  • 配置管理:通过环境变量和 .env 文件管理连接参数

3. 安装与配置

3.1 安装方式

方式 1:通过 Smithery 安装(推荐用于 Claude 桌面端)
npx -y @smithery/cli install @aptro/superset-mcp --client claude
方式 2:手动安装
# 克隆仓库
git clone https://github.com/aptro/superset-mcp.git
cd superset-mcp# 安装依赖
uv pip install .

3.2 环境配置

创建 .env 文件配置 Superset 连接信息:

SUPERSET_BASE_URL=http://localhost:8088  # Superset 实例地址
SUPERSET_USERNAME=admin                  # Superset 用户名
SUPERSET_PASSWORD=admin                  # Superset 密码

3.3 启动 Superset 实例

推荐使用 4.1.1 版本(经测试兼容):

git clone --branch 4.1.1 --depth 1 https://github.com/apache/superset && \
cd superset && \
docker compose -f docker-compose-image-tag.yml up

4. 核心工具集

superset-mcp 提供了丰富的 MCP 工具,覆盖 Superset 主要功能领域,以下是分类说明:

4.1 认证相关工具

  • superset_auth_check_token_validity - 验证当前访问令牌有效性
  • superset_auth_refresh_token - 刷新访问令牌
  • superset_auth_authenticate_user - 用户认证

4.2 仪表盘操作

  • superset_dashboard_list - 列出所有仪表盘
  • superset_dashboard_get_by_id - 获取特定仪表盘详情
  • superset_dashboard_create - 创建新仪表盘
  • superset_dashboard_update - 更新现有仪表盘
  • superset_dashboard_delete - 删除仪表盘

4.3 图表管理

  • superset_chart_list - 列出所有图表
  • superset_chart_get_by_id - 获取特定图表详情
  • superset_chart_create - 创建新图表
  • superset_chart_update - 更新现有图表
  • superset_chart_delete - 删除图表

4.4 数据库与数据集

  • superset_database_list - 列出所有数据库连接
  • superset_database_get_tables - 获取数据库中的表
  • superset_dataset_list - 列出所有数据集
  • superset_dataset_create - 创建新数据集

4.5 SQL 实验室功能

  • superset_sqllab_execute_query - 执行 SQL 查询
  • superset_sqllab_format_sql - 格式化 SQL 语句
  • superset_sqllab_get_results - 获取查询结果
  • superset_sqllab_estimate_query_cost - 估算查询成本
  • superset_sqllab_export_query_results - 导出查询结果为 CSV

4.6 其他工具

  • 探索工具(superset_explore_*)- 图表探索与 permalink 管理
  • 标签管理(superset_tag_*)- 标签的创建、删除与关联
  • 用户信息(superset_user_*)- 获取当前用户信息与角色
  • 系统信息(superset_menu_get, superset_config_get_base_url

5. 使用示例

5.1 基础使用流程

from mcp.server.fastmcp import Context
from superset_mcp.main import mcp, superset_dashboard_list, superset_sqllab_execute_query# 初始化上下文(实际使用中由 MCP 服务器管理)
class MockContext:def __init__(self, lifespan_context):self.request_context = type('', (), {'lifespan_context': lifespan_context})()# 列出所有仪表盘
async def list_dashboards(ctx: Context):result = await superset_dashboard_list(ctx)print("所有仪表盘:", result)# 执行 SQL 查询
async def run_sql_query(ctx: Context, database_id: int, sql: str):result = await superset_sqllab_execute_query(ctx,database_id=database_id,sql=sql)print("查询结果:", result)# 运行示例(需在异步环境中执行)
if __name__ == "__main__":import asyncioasyncio.run(list_dashboards(MockContext(mcp.lifespan_context)))asyncio.run(run_sql_query(MockContext(mcp.lifespan_context), 1, "SELECT * FROM users LIMIT 10"))

5.2 与 Claude 交互示例

通过自然语言指令使用 Superset 功能:

  • “列出我所有的仪表盘”
  • “运行这个 SQL 查询:SELECT COUNT(*) FROM orders”
  • “格式化这段 SQL:SELECT id,name,age FROM users WHERE age>21”
  • “创建一个新的柱状图,展示每月销售额”

6. 安全性考量

  • 凭据存储:Superset 用户名和密码仅存储在本地 .env 文件中
  • 令牌管理:访问令牌存储在项目目录的 .superset_token 文件中
  • 通信安全:所有认证操作直接在 MCP 服务器与 Superset 实例之间进行
  • 第三方隔离:不会向 Claude 或其他第三方传输任何凭据信息
  • 生产建议:生产环境中应使用更安全的认证方法,而非基本用户名/密码认证

7. 故障排除

  • 认证问题:检查 .env 文件中的凭据是否正确
  • 连接问题:确认 Superset 实例正在运行且 URL 正确
  • 版本兼容:确保使用兼容的 Superset 版本(推荐 4.1.1)
  • 端口冲突:检查 MCP 服务器端口是否被其他应用占用

8. 许可证与贡献

  • 许可证:项目采用 MIT 许可证,允许自由使用、复制、修改和分发
  • 贡献方式:欢迎通过提交 Pull Request 参与项目开发

9. 总结

superset-mcp 为 Apache Superset 提供了强大的 AI 集成能力,通过标准化的 MCP 工具集,使 AI 代理能够以自然语言交互的方式操作 Superset。该项目降低了数据分析与可视化的技术门槛,特别适合需要快速生成报表、执行查询和管理数据资产的场景。

未来发展方向可能包括扩展更多 Superset 功能、优化 AI 交互体验,以及增强安全性和企业级特性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/94853.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/94853.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Postman接口测试:postman设置接口关联,实现参数化

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快postman设置接口关联在实际的接口测试中,后一个接口经常需要用到前一个接口返回的结果, 从而让后一个接口能正常执行,这个过程的…

第一个,QT版本问题:no member named SkipEmptyParts‘in namespace ‘Qt

这是我朋友给我发过来的代码,但是在我电脑上报错了,遇到的问题是 Qt 版本兼容导致的编译错误。这是因为我的是5.12版本,他的是6.4版本,Qt::SkipEmptyParts只能在6版本使用,无法在5.12甚至更早的版本使用,具…

【PostgreSQL内核学习:通过 ExprState 提升哈希聚合与子计划执行效率(二)】

PostgreSQL内核学习:通过 ExprState 提升哈希聚合与子计划执行效率(二)引言ExecBuildHash32FromAttrs示例 SQL 查询函数运行流程与代码解释最终 ExprState 结构执行示例总结ExecComputeSlotInfo示例 SQL 查询函数注释与解释作用参数返回值执行…

技术分析 | Parasoft C/C++test如何突破单元测试的隔离难题

单元测试是保证软件质量的第一道防线,但其推行往往面临两大阻力:一是编写和维护测试用例耗时费力,二是难以与现有项目和团队习惯无缝集成。Parasoft C/Ctest 通过其强大的图形化测试创建能力、自动桩函数技术以及卓越的生态集成性&#xff0c…

K8S架构与组件完全解析

目录 K8S-组件介绍 一、概述 K8S的由来 K8S的功能 K8S解决的问题 K8S的特性 二、K8S架构与组件 K8S架构 K8S组件 master 节点组件 Kube-apiserver Kube-controller-manager Kube-scheduler etcd node节点组件 Kubelet Kube-Proxy Controller Runtime Pod 三…

Jenkins 执行器(Executor)并发数量修改

Jenkins 执行器(Executor)并发数量修改一、什么是 Jenkins 执行器(Executor)?二、为什么默认是 2?三、如何修改 Jenkins 执行器数量?1. 进入 Jenkins 管理页面2. 找到节点配置3. 选择需要修改的…

vue3使用reactive和ref

<script setup>import { ref } from vueconst count ref(0) console.log(count.value)</script><template></template>ref需要注意&#xff0c;在script脚本区域需要加上.value&#xff0c;然后在template模板区域使用不需要带.value

(笔记)InputChannel跨进程传输机制深度分析

概述 InputChannel是Android输入系统中负责跨进程事件传输的核心组件&#xff0c;它建立了InputDispatcher&#xff08;SystemServer进程&#xff09;与应用程序&#xff08;App进程&#xff09;之间的高效通信通道。本文深入分析InputChannel的实现机制&#xff0c;包括socket…

AI实时故障诊断系统(实时采集信号)

1.摘要 本文设计了一套“基于Labview的旋转机械信号分析与故障诊断系统&#xff08;可部署AI模型和实时监测设备运行状态&#xff09;”。首先&#xff0c;LabVIEW 端构建了信号采集与设备状态实时监测模块和本地数据故障诊断模块。该系统实现了“数据采集、数据处理、时频域特…

【51单片机】【protues仿真】基于51单片机篮球计时计分器数码管系统

目录 一、主要功能 二、使用步骤 三、硬件资源 四、软件设计 五、实验现象 一、主要功能 1、数码管显示 1、比赛时间为15&#xff1a;00&#xff0c;甲乙队比分默认000&#xff0c;通过按键修改 3、比赛运行的状态下&#xff0c;按开始暂停键&#xff0c;比赛暂停&#…

[读论文]Hunyuan 3D 系列

1.0&#xff1a; &#xff08;adaptive clasisfier guidance&#xff0c;input 输入一个没cam的branch&#xff1b;提高triplane分辨率&#xff09; 总结&#xff1a; 大规模再train zero123&#xff0c;但角度设置不同&#xff1b;adaptive clasisfier guidance&#xff08;f…

深入理解文本向量嵌入(Vector Embeddings):原理、实践与应用场景

深入理解文本向量嵌入&#xff08;Vector Embeddings&#xff09;&#xff1a;原理、实践与应用场景 1. 什么是向量嵌入&#xff1f; 文本向量嵌入&#xff08;Vector Embedding&#xff09;是一种将文本转化为数值向量的技术&#xff0c;使得字符串之间的关联性可以通过数值…

微论-神经网络中记忆的演变

从微突触到宏认知&#xff1a;论神经网络中记忆的生成、固化与演化人脑的智能&#xff0c;并非源于单个神经元的孤立活动&#xff0c;而是诞生于由万亿突触连接所构成的庞大而复杂的网络动态之中。在这个网络中&#xff0c;连接权重的强度分布——即强的约束与弱的变数——共同…

机器视觉学习-day07-图像镜像旋转

图像的镜像旋转分为三种&#xff0c;分别使用filpcode的参数表示&#xff1a;flipcode0&#xff0c;垂直翻转&#xff08;x轴为中线&#xff09; 垂直翻转可以把src沿着x轴翻转&#xff0c;坐标从&#xff08;x,y&#xff09;翻转为(x,-y)。flipcode>0&#xff0c;水平翻转&…

Python备份实战专栏第2/6篇:30分钟搭建企业级API认证系统,安全性吊打90%的方案

30分钟搭建企业级API认证系统&#xff0c;安全性吊打90%的方案 专栏导语&#xff1a;《从零到一&#xff1a;构建企业级Python Web自动化备份系统实战指南》第2篇 作者简介&#xff1a;madechango架构师&#xff0c;负责设计零安全事故的API认证系统&#xff0c;拦截100%非法请…

第6篇:链路追踪系统 - 分布式环境下的请求跟踪

项目地址&#xff1a;https://github.com/nemoob/atlas-log 开箱即用。前言 在微服务架构中&#xff0c;一个用户请求往往会经过多个服务的协作处理。本章将实现一个轻量级的链路追踪系统&#xff0c;让日志具备分布式追踪能力。 分布式链路追踪基础概念 链路追踪的核心价值 #m…

ubuntu25.04编译最新版本qgroundcontrol

编译系统版本: 编译器版本: 编译成功效果

如何在 Docker 和AKS上使用 IIS

前言 在我们的一个客户项目中,我们有一个混合 Swarm 集群,其中包含 Linux 和 Windows 节点。在 Windows 节点上,我们运行了许多 IIS 容器,这些容器运行着多个 Web 应用程序。在这篇博文中,我想向您展示在 Docker 容器中将网站部署到 IIS 上是多么简单。 Internet 信息服…

uniapp 页面favicon.ico文件不存在提示404问题解决

1. uniapp 页面favicon.ico文件不存在提示404问题解决 1.1. 场景 在uniapp中经常出现的&#xff0c;因为找不到 favicon.ico 而报404错误的问题。 GET http://localhost:5174/favicon.ico 404 (Not Found)1.2. 问题原因 在document.ejs中使用link标签相对路径引入文件。 <…

Magicodes.IE.Pdf 生成导出PDF文件 bytes Stream FileStreamResult 下载

1、ExporterAttribute&#xff1a;导出特性 Name&#xff1a;名称 HeaderFontSize&#xff1a;头部字体大小 FontSize&#xff1a;正文字体大小 MaxRowNumberOnASheet&#xff1a;一个Sheet最大允许的行数&#xff0c;设置了之后将输出多个Sheet AutoFitAllColumn&#xff1a;自…