Token导航 LogoToken导航TokenDH.com
Preset MCP logo
AI代理stdio官方级别未说明来源级核验

Preset MCP

MCP Server

一款用于管理Preset(托管Apache Superset)仪表板、图表和数据集的工具,支持与Claude Code等LLM代理集成。

工具数

36

提示词数

0

GitHub Stars

1

资源数

0
工作流自动化PythonClaude数据可视化Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Evan-Kim2028

提供方

Evan-Kim2028

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run scripts/export_golden_templates.py \

详细介绍

预设mcp

MCP服务器 预设 (管理Apache Superset)。管理来自Claude Code和其他LLM代理的仪表板、图表和数据集。

Claude Code ──STDIO──> preset-mcp ──> Preset API

Claude代码的设置

1.获取您的预设API证书

  1. 登录到 app.preset.io
  2. 首选 设置>API密钥
  3. 创建新的令牌/秘密对
  4. 复制这两个 令牌秘密

2.从PyPI安装

uv tool install preset-mcp --with preset-cli --with fastmcp --with sqlglot --with pydantic

3.用克劳德代码注册

claude mcp add --scope user -e PRESET_API_TOKEN= \
  -e PRESET_API_SECRET= \
  preset-mcp -- preset-mcp

要在启动时自动连接到特定工作区,请执行以下操作:

claude mcp add --scope user -e PRESET_API_TOKEN= \
  -e PRESET_API_SECRET= \
  -e PRESET_WORKSPACE="Your Workspace Title" \
  preset-mcp -- preset-mcp

4.验证

claude mcp list
# Should show: preset-mcp  ... 63 tools

然后在Claude Code会话中,尝试:

> list my preset workspaces

替代方案:从源代码安装

git clone https://github.com/Evan-Kim2028/preset-mcp.git
cd preset-mcp
uv sync

claude mcp add --scope user -e PRESET_API_TOKEN= \
  -e PRESET_API_SECRET= \
  preset-mcp -- uv run --directory /path/to/preset-mcp preset-mcp

工具(63)

工作区导航

工具目的
list_workspaces列出您有权访问的所有工作区
use_workspace按标题切换到工作区

阅读

工具目的
list_dashboards列出仪表板(逐步披露)
get_dashboard获取单个仪表板的详细信息(支持 response_mode)
list_charts列出图表
get_chart获取单个图表的详细信息(支持 response_mode)
list_datasets列出数据集
get_dataset获取单个数据集(列、指标、SQL)的详细信息
list_databases列出数据库连接
get_database获取单个数据库连接的详细信息
workspace_catalog关系感知拓扑图

创建

工具目的
create_dashboard创建新的空仪表板
create_dataset将SQL查询注册为虚拟数据集
create_chart从数据集构建图表

更新

工具目的
update_dataset更改数据集的SQL、名称或描述
update_chart更改图表的标题,即类型或参数
update_dashboard重命名或发布/取消发布仪表板

仪表板生命周期

工具目的
export_dashboard导出仪表板ZIP包以进行备份或迁移
import_dashboard导入仪表板ZIP包并报告受影响的仪表板ID
delete_dashboard导出备份ZIP后删除仪表板

SQL查询

工具目的
run_sql通过Preset的连接执行只读SQL查询
query_dataset使用Superset的度量/维度抽象查询数据集

验证与审核

工具目的
validate_chart通过图表数据执行验证单个图表
validate_dashboard验证仪表板上的所有图表
validate_chart_render通过无头浏览器探测器验证图表渲染
validate_dashboard_render跨仪表板图表验证渲染状态
verify_chart_workflow单镜头图表→仪表板查询/呈现验证
verify_dashboard_structure验证仪表板布局图和图表参考
verify_dashboard_workflow一键式仪表板结构/查询/渲染验证
repair_dashboard_chart_refs修复过时的仪表板图表ID引用
list_mutations检查本地突变审计日记账分录
list_dashboard_snapshots列出本地突变前仪表板快照
restore_dashboard_snapshot从本地快照还原仪表板布局/设置
capture_dashboard_template捕获可重用的仪表板+图表模板JSON
capture_golden_templates从仪表板ID批量导出模板
snapshot_workspace完整库存转储以供审计

典型工作流程

预期的工作流程将预设的mcp与数据仓库mcp(如 冰屋mcp 雪花):

1. Explore data in Snowflake          (igloo-mcp)
2. Write and validate your SQL         (igloo-mcp)
3. workspace_catalog                   (preset-mcp) — understand what exists
4. list_databases                      (preset-mcp) — find the database_id
5. create_dataset                      (preset-mcp) — register the SQL
6. create_chart + create_dashboard     (preset-mcp) — build the viz
7. update_dataset / update_chart       (preset-mcp) — iterate

特性

渐进式披露

所有列表和详细信息工具都接受 response_mode 用于控制令牌使用的参数:

  • compact --仅限ID和名称(令牌减少约80%)
  • standard --关键元数据字段(列表工具的默认值)
  • full -原始API响应(详细信息工具的默认响应)
list_dashboards(response_mode="compact")
→ {"count": 42, "data": [{"id": 1, "dashboard_title": "Revenue"}, ...]}

get_dashboard(dashboard_id=80, response_mode="standard")
→ key fields only, no position_json or json_metadata blobs

详细工具(get_dashboard, get_chart, get_dataset, get_database)默认为 full 为了向后兼容性。使用 standardcompact 为了避免大的有效负载,具有20多个图表的仪表板在完整模式下可以返回50-100K个字符。

SQL安全

run_sql 用途 sqlglot 对于基于AST的验证:

  • 块写入操作(INSERT、UPDATE、DELETE、DROP、ALTER、MERGE、TRUNCATE、GRANT、REVOKE)
  • 检测多语句注入(SELECT 1; DROP TABLE x)
  • 处理评论包装绕过(-- comment\nDELETE FROM x)
  • 捕获CTE封装的写入(WITH x AS (...) DELETE FROM y)

结构化错误

错误包括 error_typehints[] 因此LLM可以自我恢复:

{
  "error": "No workspace selected.",
  "error_type": "no_workspace",
  "hints": [
    "Call list_workspaces to see available workspaces.",
    "Then call use_workspace('Title') to select one."
  ]
}

结构化日志记录

stderr上的JSON日志(stdout保留用于STDIO传输):

{"ts":"2025-02-11 12:00:00","level":"INFO","msg":"tool=list_dashboards status=ok duration_ms=234"}

配置

所有设置都可以通过环境变量覆盖:

变量默认值用途
PRESET_API_TOKEN(必需)预设API令牌
PRESET_API_SECRET(必需)预设API机密
PRESET_WORKSPACE(可选)自动连接到此工作区
PRESET_MCP_SQL_ROW_LIMIT1000SQL查询的最大行数
PRESET_MCP_SQL_SAMPLE_ROWS5以标准模式显示的行
PRESET_MCP_TRUNCATION_THRESHOLD50全模式截断截止
PRESET_MCP_TRUNCATION_TAIL5截断时保留尾排
PRESET_MCP_LOG_LEVELINFO记录冗长

Python库

preset mcp也可以作为一个独立的Python库使用(不需要mcp):

from preset_py import connect

ws = connect("My Workspace")
dashboards = ws.dashboards()
df = ws.run_sql("SELECT * FROM revenue LIMIT 10", database_id=1)

ws.create_dataset("daily_revenue", "SELECT ...", database_id=1)
ws.create_chart(dataset_id=5, title="Revenue", viz_type="echarts_timeseries_bar")

高级配方:带有特殊指标的饼图

使用 params_json 用于高级图表参数,如ad-hoc过滤器。

{
  "dataset_id": 868,
  "title": "USDSUI Distribution",
  "viz_type": "pie",
  "metrics": "[{\"expressionType\":\"SQL\",\"sqlExpression\":\"AVG(AMOUNT_USD)\",\"label\":\"AVG(AMOUNT_USD)\"}]",
  "groupby": "[\"CATEGORY\",\"SOURCE_NAME\"]",
  "params_json": "{\"adhoc_filters\":[{\"col\":\"TOKEN_SYMBOL\",\"op\":\"==\",\"val\":\"USDSUI\"}]}"
}

笔记:

  • create_chart.metrics 接受已保存的度量名称或特殊度量对象。
  • create_chart.template="auto" 对缺失的字段应用viz特定的默认值。
  • params_json 在飞行前根据数据集列/指标进行验证。
  • params_json 不能包含数据源重新绑定键,如 viz_typedatasource_id.
  • create_chart.repair_dashboard_refs 默认为 false 因此,除非明确要求,否则图表创建不会改变仪表板布局。

严格参数语义

  • update_chart(params_json=...) 使用严格的验证语义并处理 params_json 作为与viz完全兼容的params有效载荷。
  • 对于具有必填字段的viz类型(例如 pie 和时间序列图),仅部分有效载荷 {"color_scheme":"..."} 被拒绝。
  • 使用 get_chart(chart_id=, response_mode="full") 当您需要精确更新时,可以复制/编辑现有的参数JSON。

黄金模板工作流

使用经过验证的仪表板(例如BTC Fight、海象、DeepBook)作为模板源:

  1. 查找仪表板ID:
list_dashboards(response_mode="compact")
  1. 在模板化之前验证布局/查询/呈现运行状况:
verify_dashboard_workflow(dashboard_id=, include_render=true, response_mode="standard")
  1. 导出单个可重用模板:
capture_dashboard_template(
  dashboard_id=,
  portable=true,
  include_query_context=false,
  include_dataset_schema=true,
  output_path="~/.preset-mcp/golden-templates/.json"
)
  1. 一次运行导出多个仪表板:
capture_golden_templates(
  dashboard_ids="[80,97,162]",
  output_dir="~/.preset-mcp/golden-templates",
  portable=true,
  include_dataset_schema=true
)

CLI替代方案:

uv run scripts/export_golden_templates.py \
  --workspace "Mysten Labs--General" \
  --dashboard-ids 80,103,102 \
  --output-dir ~/.preset-mcp/golden-templates \
  --overwrite

可选的活烟测试(默认跳过):

PRESET_MCP_ENABLE_LIVE_TESTS=1 \
PRESET_MCP_LIVE_DASHBOARD_IDS=80,103,102 \
uv run --with pytest pytest -q tests/test_live_dashboard_smoke.py

许可证

麻省理工学院

目录标签

目录标签

工作流自动化PythonClaude数据可视化仪表板管理本地部署API集成SQL验证

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

36

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP