superset-mcp
# superset-mcp
MCP (Model Context Protocol) server for Apache Superset. Gives AI assistants full access to your Superset instance — dashboards, charts, datasets, databases, and SQL execution.
## Prerequisites
- [uv](https://docs.astral.sh/uv/getting-started/installation/) — Python package manager
- Access to a running Apache Superset instance
## Setup (takes ~1 minute)
### 1. Clone the repo
```bash
git clone <repo-url>
cd superset-mcp
```
### 2. Configure credentials
```bash
cp .env.example .env
```
Edit `.env`:
```env
SUPERSET_URL=http://your-superset-host:8088
SUPERSET_USERNAME=your-username
SUPERSET_PASSWORD=your-password
```
### 3. Test it works
```bash
uv run superset-mcp
```
You should see the MCP server start without errors. Press `Ctrl+C` to stop.
---
## Connect to your AI client
Replace `/ABSOLUTE/PATH/TO/superset-mcp` with the actual path where you cloned the repo.
### Claude Code
Add to `~/.claude/settings.json` (or project-level `.claude/settings.json`):
```json
{
"mcpServers": {
"superset": {
"command": "uv",
"args": ["--directory", "/ABSOLUTE/PATH/TO/superset-mcp", "run", "superset-mcp"],
"env": {
"SUPERSET_URL": "http://your-superset-host:8088",
"SUPERSET_USERNAME": "your-username",
"SUPERSET_PASSWORD": "your-password"
}
}
}
}
```
Or run in terminal:
```bash
claude mcp add superset -- uv --directory /ABSOLUTE/PATH/TO/superset-mcp run superset-mcp
```
### Claude Desktop
Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
```json
{
"mcpServers": {
"superset": {
"command": "uv",
"args": ["--directory", "/ABSOLUTE/PATH/TO/superset-mcp", "run", "superset-mcp"],
"env": {
"SUPERSET_URL": "http://your-superset-host:8088",
"SUPERSET_USERNAME": "your-username",
"SUPERSET_PASSWORD": "your-password"
}
}
}
}
```
### Cursor
Add to `.cursor/mcp.json` in your project or `~/.cursor/mcp.json` globally:
```json
{
"mcpServers": {
"superset": {
"command": "uv",
"args": ["--directory", "/ABSOLUTE/PATH/TO/superset-mcp", "run", "superset-mcp"],
"env": {
"SUPERSET_URL": "http://your-superset-host:8088",
"SUPERSET_USERNAME": "your-username",
"SUPERSET_PASSWORD": "your-password"
}
}
}
}
```
---
## Available Tools
### Dashboards
| Tool | Description |
|---|---|
| `list_dashboards` | List all dashboards (with optional search) |
| `get_dashboard` | Get a dashboard by ID or slug |
| `get_dashboard_charts` | Get all charts in a dashboard |
| `get_dashboard_datasets` | Get all datasets used by a dashboard |
| `create_dashboard` | Create a new dashboard |
| `update_dashboard` | Update title, layout, metadata |
| `publish_dashboard` | Publish a draft dashboard |
| `copy_dashboard` | Duplicate a dashboard |
| `delete_dashboard` | Delete a dashboard |
### Charts
| Tool | Description |
|---|---|
| `list_charts` | List all charts (with optional search) |
| `get_chart` | Get a chart by ID or UUID |
| `get_chart_data` | Fetch the latest data for a chart |
| `create_chart` | Create a new chart |
| `update_chart` | Update chart properties |
| `delete_chart` | Delete a chart |
### Datasets
| Tool | Description |
|---|---|
| `list_datasets` | List all datasets |
| `get_dataset` | Get a dataset by ID or UUID |
| `create_dataset` | Create from a table or SQL query |
| `get_or_create_dataset` | Get existing or create new |
| `refresh_dataset` | Sync columns from source table |
| `update_dataset` | Update dataset properties |
| `get_dataset_related_objects` | See which charts/dashboards use it |
| `delete_dataset` | Delete a dataset |
### Databases
| Tool | Description |
|---|---|
| `list_databases` | List all database connections |
| `get_database` | Get a database connection by ID |
| `list_schemas` | List schemas in a database |
| `list_tables` | List tables in a schema |
| `get_table_metadata` | Get column info for a table |
| `get_select_star` | Get a SELECT * template for a table |
### SQL
| Tool | Description |
|---|---|
| `execute_sql` | Run a SQL query and get results |
| `format_sql` | Pretty-print a SQL query |
| `estimate_query_cost` | Estimate query cost (if supported) |
| `list_saved_queries` | List saved SQL queries |
| `save_query` | Save a SQL query |
---
## Example prompts
Once connected to your AI assistant:
- *"List all published dashboards"*
- *"Create a new dashboard called 'Sales Overview'"*
- *"Show me all charts in dashboard 11"*
- *"Run a SQL query on database 2: SELECT count(*) FROM orders"*
- *"What datasets are used by the 'Revenue' dashboard?"*
- *"Create a bar chart using dataset 5 showing sales by region"*
TDQS
Scored across 34 tools
Every tool has a clearly distinct purpose targeting specific resources (charts, dashboards, datasets, databases, queries) and actions (create, get, list, update, delete, execute, format, etc.), with no apparent overlap or ambiguity. For example, get_chart, get_chart_data, and list_charts serve different functions without confusion.
Tool names follow a highly consistent verb_noun pattern throughout, such as create_chart, delete_dashboard, list_datasets, and update_dataset, with no deviations in style or convention. This predictability makes the tool set easy to navigate and understand.
With 34 tools, the count is borderline high for typical MCP server scopes, which often range from 3-15 tools. While it covers a comprehensive Superset domain, it may feel heavy and potentially overwhelming for agents, though not extreme like 50+ tools.
The tool surface provides complete CRUD/lifecycle coverage for charts, dashboards, datasets, and queries, along with execution, formatting, and metadata operations. There are no obvious gaps; agents can perform all core workflows from creation to deletion and analysis without dead ends.