Superset MCP服务器

Superset MCP Server是一个基于Node.js的服务器,用于Apache Superset的模型上下文协议(MCP),支持通过HTTP流式传输与Superset集成,实现自动化仪表板、图表管理和SQL查询执行。

  • by okybaguslukmana
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 okybaguslukmana/superset-mcp

使用说明

🚀 超级设置MCP服务器(可流式HTTP)

Apache Superset 的 MCP(模型上下文协议)服务器,允许聊天机器人与 Superset 集成,以编程方式创建仪表板、图表和执行 SQL 查询。

✨ 特点

  • 📊 仪表板管理 - 列表,获取,创建仪表板并将图表添加到仪表板
  • 📈 图表管理 - 列表,获取,创建图表与自动检测方案
  • 🗃️ 数据集管理 - 列出数据集和得到列架构
  • 🔍 SQL执行 - 直接执行SQL查询到超集数据库
  • 🔄 无状态HTTP - 使用流式HTTP传输与Open WebUI兼容
  • 🔐 自动身份验证 - 自动登录和刷新令牌到超集

🛠️ 技术

  • 运行时:Node.js+TypeScript
  • 运输:Express.js+JSON-RPC 2.0
  • 协议:MCP(模型上下文协议)
  • 客户Axios HTTP 请求

📋 先决条件

  • Node.js v18 或更高版本
  • Apache Superset 正在运行
  • NPM 或 Yarn

⚡ 快速开始

1.克隆和安装依赖项

git clone <repository-url>
cd superset-mcp
npm install

2. 环境配置

翻译文件 .env.example 可 .env 并调整配置:

cp .env.example .env

在文件中填写配置 .env:

# Superset Configuration
SUPERSET_URL=http://localhost:8088
SUPERSET_USERNAME=admin
SUPERSET_PASSWORD=admin

# MCP Server Configuration
MCP_PORT=3000

3.构建和运行

# Build TypeScript
npm run build

# Jalankan server
npm start

或者使用hot-reload进行开发:

npm run dev

4. 服务器验证

Akses健康检查终点:

curl http://localhost:3000/health

预期的回应:

{
  "status": "ok",
  "server": "superset-mcp",
  "version": "1.0.0",
  "mode": "stateless",
  "tools": ["list_dashboards", "get_dashboard", "create_dashboard", ...]
}

🔌 与 Open WebUI 集成

在Open WebUI中配置

  1. 打开 管理面板 → 工具 → 工具连接
  2. 添加新的 MCP 服务器:
    • 名字:超级设置MCP
    • 类型:MCP(流式HTTP)
    • 统一资源定位符: http://YOUR_SERVER_IP:3000/mcp
  3. 保存并测试连接

🔧 可用工具

仪表板工具

工具 描述
list_dashboards 获取所有可用的仪表板。
get_dashboard 仪表板的详细信息包括其中的图表。
create_dashboard 创建一个新的 Dashboard
add_chart_to_dashboard 将图表添加到仪表板
add_charts_to_dashboard 将多个图表添加到仪表板 (推荐)

图表工具

工具 描述
list_charts 获取所有可用的图表。
get_chart 图表配置详情
get_chart_data 从图表中获取数据
create_chart 创建新图表(手动配置)
create_chart_auto 使用自动检测方案创建图表

数据集工具

工具 描述
list_datasets 获取所有数据集/表
get_dataset_schema 从数据集获取列定义

SQL工具

工具 描述
list_databases 获取所有数据库连接
execute_sql 执行SQL查询到数据库

📚 使用范例

自动检测图表

"Buatkan bar chart untuk dataset sales_data yang menampilkan total revenue per bulan"

AI将使用 create_chart_auto 用于 :

  1. 分析数据集架构
  2. 检测时间列 (x_axis)
  3. 检测指标的数字列
  4. 创建具有最佳配置的图表

创建多个图表的仪表板

"Buatkan dashboard Sales Overview dengan 3 chart: line chart revenue, pie chart by category, dan table top products"

AI将:

  1. create_dashboard 创建一个新的仪表板
  2. create_chart_auto (3x) - 创建每个图表
  3. add_charts_to_dashboard - 以最佳布局同时添加所有图表

🏗️ Struktur项目

superset-mcp/
├── src/
│   ├── index.ts          # Entry point
│   ├── server.ts         # Express server & MCP tools
│   └── superset-client.ts # Superset API client
├── dist/                  # Compiled JavaScript
├── .env                   # Environment variables
├── .env.example           # Example environment
├── package.json
├── tsconfig.json
└── README.md

🔗 API终点

Endpoint 方法 描述
/health GET 健康检查
/mcp POST MCP JSON-RPC请求
/mcp GET SSE流媒体(保持活动)
/mcp DELETE 会话清理

⚙️ 环境变量

变量 默认 描述
SUPERSET_URL http://localhost:8088 URL超级集实例
SUPERSET_USERNAME admin 用户名登录。
SUPERSET_PASSWORD admin 登录的密码。
MCP_PORT 3000 MCP服务器端口

🐛 故障排除

1.身份验证失败

请确保 credentials 在 .env 没错服务器将在过期时自动刷新令牌。

2.CORS错误

服务器已配置为接受来自所有来源的请求。如果仍然有错误,请确保防火墙没有阻止端口。

3. 图表不显示数据

使用 create_chart_auto 从 create_chart 用于自动检测指标和维度。

📄 许可证

MIT许可证

🤝 贡献

欢迎投稿!请随时打开问题或拉取请求。