An MCP server for Apache Superset to manage dashboards and execute SQL queries.
š Superset MCP Server (Streamable HTTP)
MCP (Model Context Protocol) Server untuk Apache Superset yang memungkinkan integrasi chatbot dengan Superset untuk membuat dashboard, chart, dan mengeksekusi query SQL secara programatis.
⨠Fitur
- š Dashboard Management - List, get, create dashboard dan tambahkan chart ke dashboard
- š Chart Management - List, get, create chart dengan auto-detection schema
- šļø Dataset Management - List datasets dan get schema kolom
- š SQL Execution - Eksekusi query SQL langsung ke database Superset
- š Stateless HTTP - Menggunakan Streamable HTTP transport untuk kompatibilitas dengan Open WebUI
- š Auto Authentication - Otomatis login dan refresh token ke Superset
š ļø Teknologi
- Runtime: Node.js + TypeScript
- Transport: Express.js + JSON-RPC 2.0
- Protocol: MCP (Model Context Protocol)
- Client: Axios untuk HTTP requests
š Prasyarat
- Node.js v18 atau lebih baru
- Apache Superset yang sudah running
- NPM atau Yarn
ā” Quick Start
1. Clone & Install Dependencies
git clone <repository-url>
cd superset-mcp
npm install
2. Konfigurasi Environment
Salin file .env.example ke .env dan sesuaikan konfigurasinya:
cp .env.example .env
Isi konfigurasi di file .env:
# Superset Configuration
SUPERSET_URL=http://localhost:8088
SUPERSET_USERNAME=admin
SUPERSET_PASSWORD=admin
# MCP Server Configuration
MCP_PORT=3000
3. Build & Run
# Build TypeScript
npm run build
# Jalankan server
npm start
Atau untuk development dengan hot-reload:
npm run dev
4. Verifikasi Server
Akses health check endpoint:
curl http://localhost:3000/health
Response yang diharapkan:
{
"status": "ok",
"server": "superset-mcp",
"version": "1.0.0",
"mode": "stateless",
"tools": ["list_dashboards", "get_dashboard", "create_dashboard", ...]
}
š Integrasi dengan Open WebUI
Konfigurasi di Open WebUI
- Buka Admin Panel ā Tools ā Tool Connections
- Tambahkan MCP Server baru:
- Name: Superset MCP
- Type: MCP (Streamable HTTP)
- URL:
http://YOUR_SERVER_IP:3000/mcp
- Save dan test koneksi
š§ Available Tools
Dashboard Tools
| Tool | Deskripsi |
|---|---|
list_dashboards |
Mendapatkan semua dashboard yang tersedia |
get_dashboard |
Detail dashboard termasuk chart-chart di dalamnya |
create_dashboard |
Membuat dashboard baru |
add_chart_to_dashboard |
Menambahkan satu chart ke dashboard |
add_charts_to_dashboard |
Menambahkan multiple charts ke dashboard (recommended) |
Chart Tools
| Tool | Deskripsi |
|---|---|
list_charts |
Mendapatkan semua chart yang tersedia |
get_chart |
Detail konfigurasi chart |
get_chart_data |
Fetch data dari chart |
create_chart |
Membuat chart baru (manual config) |
create_chart_auto |
Membuat chart dengan auto-detection schema |
Dataset Tools
| Tool | Deskripsi |
|---|---|
list_datasets |
Mendapatkan semua datasets/tables |
get_dataset_schema |
Mendapatkan definisi kolom dari dataset |
SQL Tools
| Tool | Deskripsi |
|---|---|
list_databases |
Mendapatkan semua koneksi database |
execute_sql |
Eksekusi query SQL ke database |
š Contoh Penggunaan
Membuat Chart dengan Auto-Detection
"Buatkan bar chart untuk dataset sales_data yang menampilkan total revenue per bulan"
AI akan menggunakan create_chart_auto untuk:
- Menganalisis schema dataset
- Mendeteksi kolom waktu (x_axis)
- Mendeteksi kolom numeric untuk metrics
- Membuat chart dengan konfigurasi optimal
Membuat Dashboard dengan Multiple Charts
"Buatkan dashboard Sales Overview dengan 3 chart: line chart revenue, pie chart by category, dan table top products"
AI akan:
create_dashboard- Membuat dashboard barucreate_chart_auto(3x) - Membuat setiap chartadd_charts_to_dashboard- Menambahkan semua chart sekaligus dengan layout optimal
šļø Struktur Project
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 Endpoints
| Endpoint | Method | Deskripsi |
|---|---|---|
/health |
GET | Health check |
/mcp |
POST | MCP JSON-RPC requests |
/mcp |
GET | SSE streaming (keepalive) |
/mcp |
DELETE | Session cleanup |
āļø Environment Variables
| Variable | Default | Deskripsi |
|---|---|---|
SUPERSET_URL |
http://localhost:8088 |
URL Superset instance |
SUPERSET_USERNAME |
admin |
Username untuk login |
SUPERSET_PASSWORD |
admin |
Password unt |
Tools (14)
list_dashboardsGet all available dashboards.get_dashboardGet detail of a dashboard including its charts.create_dashboardCreate a new dashboard.add_chart_to_dashboardAdd a single chart to a dashboard.add_charts_to_dashboardAdd multiple charts to a dashboard.list_chartsGet all available charts.get_chartGet detail configuration of a chart.get_chart_dataFetch data from a chart.create_chartCreate a new chart with manual configuration.create_chart_autoCreate a chart with auto-detection schema.list_datasetsGet all datasets or tables.get_dataset_schemaGet column definitions of a dataset.list_databasesGet all database connections.execute_sqlExecute a SQL query against a database.Environment Variables
SUPERSET_URLrequiredURL of the Superset instanceSUPERSET_USERNAMErequiredUsername for Superset authenticationSUPERSET_PASSWORDrequiredPassword for Superset authenticationMCP_PORTPort for the MCP serverConfiguration
{"mcpServers": {"superset": {"command": "node", "args": ["/path/to/superset-mcp/dist/index.js"], "env": {"SUPERSET_URL": "http://localhost:8088", "SUPERSET_USERNAME": "admin", "SUPERSET_PASSWORD": "admin"}}}}