描述它,不要画它:通过 MCP 和 ES|QL 实现 AI-native Kibana dashboards
作者:来自 Elastic Stratoula Kalafateli

从 prompt 到 dashboard。学习如何使用自然语言构建 Kibana dashboards,使用 example-mcp-dashbuilder:一个开源 MCP 应用,它可以编写 ES|QL 查询,创建交互式图表,并将完全可用的 dashboards 直接导出到 Kibana。
通过单一解决方案观察、防护并搜索你的数据。从应用监控到威胁检测,Kibana 是你面向关键用例的多功能平台。立即开始你的 14 天免费试用。
example-mcp-dashbuilder 是一个开源 MCP 应用,它可以将纯英文 prompt 转换为一个实时的、交互式的 Kibana dashboard,并完全在你的编辑器聊天窗口中完成。你只需要描述你想要的 dashboard,AI 就会发现你的 index 结构,为每个可视化编写正确的 ES|QL 聚合,并在生成过程中以内联方式渲染预览。当你完成后,只需一个命令即可导出一个完整可用的 Kibana dashboard:真实的 Lens visualizations、精确的 grid layout、以及保留的自定义颜色。目前支持六种图表类型,完整的 Kibana Lens 图表集合也在 roadmap 中。
什么是 Kibana dashboard builder?
如果你可以用简单的 English 描述你想要的 dashboard,然后看着它出现,包含交互式 charts、drag-and-drop 布局,以及一键导出到 Kibana,会怎样?
这正是 example-mcp-dashbuilder 所做的事情。它是一个开源的 Model Context Protocol (MCP) 应用,用于将 AI assistants 连接到 Elasticsearch,让你通过对话创建完整的 Kibana Dashboards。无需点击菜单,无需手动编写 visualization 配置,只需描述你的需求,AI 就会探索你的数据,编写 Elasticsearch Query Language (ES|QL) 查询,构建 charts,并交付一个实时的、交互式的 dashboard,全部在你的 editor chat window 中完成。
从 prompt 到 dashboard,仅需几秒
下面是实际使用时的样子。你输入类似这样的内容:
“Build me a web traffic dashboard from logstash-* with total requests, bytes transferred over time, top geographic sources, and a response code breakdown/从 logstash-* 构建一个 web traffic dashboard,包含总请求数、随时间变化的 bytes transferred、top geographic sources,以及 response code breakdown”
然后 AI 会:
- 发现你的数据:列出 indices,检查 field mappings。
- 编写 ES|QL 查询:根据你的 schema 定制,使用正确的 aggregations。
- 创建可视化:bar charts、line charts、带 sparklines 的 metrics、heatmaps、pie charts。
- 组织整体结构:可折叠分区、有意义的标题、合理的布局。
- 渲染交互式预览:直接在 chat 中展示,包含 tooltips、time picker 和 drag-and-drop。
每个 chart 在生成时都会以内联方式逐步出现,让你实时看到进度。随后 view_dashboard 会展示完整 dashboard,所有 panels 按 Kibana 的 48-column grid 完整排布。
由 ES|QL 驱动
所有数据检索都使用 ES|QL,这是 Elasticsearch 的管道式查询语言。AI 不只是简单传递原始查询,它还结合对 ES|QL 语法的内置理解,以及对你数据结构的分析,为每个可视化类型编写正确且高效的查询。
服务器提供了一个完整的 ES|QL reference,作为 MCP resource。在编写任何查询之前,AI 会先读取这个 reference,以理解可用的 commands、functions 和 patterns。结合一个 dataviz best-practices guide(同样作为 resource 提供),AI 不仅知道如何查询,还知道什么是好的可视化设计:
- 使用 BUCKET(@timestamp, 1 day) 做时间序列;始终按时间字段 SORT。
- pie charts 限制为最多六个 slices,并使用 | SORT value DESC | LIMIT 6。
- category 对比使用 bar charts,趋势使用 line charts,关键指标(KPI)使用 metrics。
基于 AI 的数据探索:开放式分析
构建一个你已经在脑海中设计好的 dashboard 是一回事,而提出“这个 index 里有什么有趣的东西?”并得到有用答案则更难;这要求 AI 不只是会画图,还要会探索。
example-mcp-dashbuilder 提供了一个 analysis://guidelines resource,它定义了一套结构化的探索流程:数据 profile、运行有针对性的 aggregations、发现值得关注的 patterns、为最有价值的发现构建 charts,并提出用户可能想要的 drill-down queries。当触发类似 “analyze my logs” 或 “find patterns in this index” 这样的 prompt 时,AI 会先读取这份 playbook,再开始执行,因此开放式输入不会变成随意拼凑的图表,而是一个连贯的分析过程。
结果是:你可以把一个陌生的 index 交给 AI,然后得到一个起点——一个 dashboard,以及一组类似“我注意到这些现象,要不要继续深入其中某一个?”的 follow-up prompts。
Kibana dashboard 的导出与导入:完整闭环
export/import round trip 是 example-mcp-dashbuilder 真正对团队有价值的地方。example-mcp-dashbuilder 本身是一个运行在 editor 内的对话式 dashboard 工具,但它不会把你的工作锁死在这里。这里构建的 dashboards 可以在需要时导出到 Kibana,而已有的 Kibana dashboards 也可以导入回来进行 AI 辅助编辑。
导出到 Kibana
当你对 dashboard 满意时,只需要一个命令即可导出:
“Export this dashboard to Kibana/将这个 dashboard 导出到 Kibana”
每一个 panel 都会被转换为真实的 Kibana Lens visualization。这个转换会保留以下内容:
- ES|QL queries:直接作为 Lens 的 ES|QL data sources 传递。
- grid positions:使用 Kibana 相同的 48-column 系统,因此布局看起来完全一致。
- custom colors:series palettes、metric backgrounds、heatmap color ramps。
最终结果是一个完全可用的 Kibana dashboard。不是截图,不是嵌入,而是真正的 dashboard,你可以在 Kibana 中共享并继续编辑。
从 Kibana 导入
这个往返流程也支持反向操作:
“Import the Kibana dashboard with ID abc-123、导入 ID 为 abc-123 的 Kibana dashboard”
它会获取现有的 Kibana dashboard,将其中的 Lens visualizations 转换回可编辑的 chart configs,保留 grid layout 和 sections,并将所有内容加载到 example-mcp-dashbuilder 中。之后,你就可以通过自然语言修改它,并重新导出。
这使得 AI 成为你现有 Kibana workflow 中的协作者,而不是替代品。
自定义主题与颜色
想要一个带品牌风格的 dashboard?只需要这样说:
“Create a pink-themed dashboard with custom colors/创建一个粉色主题的 dashboard,并使用自定义颜色”
每种 visualization 类型都支持自定义颜色配置:
- Charts:palette 接受一组 hex colors,用于 series 和 slices。
- Metrics:color 用于设置背景颜色。
- Heatmaps:colorRamp 用于定义从低值到高值的渐变色。
AI 会自然理解主题请求。比如说 “Ocean theme”,它会选择蓝色和青绿色;如果你说“匹配我们的品牌颜色”并提供 hex values,这些颜色会在导出到 Kibana 时完整保留。
example-mcp-dashbuilder 的工作原理:MCP 架构
example-mcp-dashbuilder 基于 MCP 构建,MCP 是一种用于将 AI assistants 连接到外部工具与数据的开放标准。下面是其高层架构:

MCP server 暴露了 25 个可供 AI 直接调用的 tools,从运行 ES|QL 查询到导出 dashboards 一应俱全,同时还包含一些内部“app-only” tools,供内联预览使用,用于获取数据、持久化 layout 变更,以及检测时间字段。它提供三个 resources:一个 dataviz best-practices guide、一个 ES|QL reference,以及一个 deep-analysis playbook,用于处理开放式 prompts(例如 “analyze my logs” 或 “what's interesting in this index”)。它既支持 stdio,也支持 HTTP;其中 HTTP transport 支持流式响应与 session 管理,因此多个 clients 可以连接到同一个 server。
MCP App 是交互式预览层。它基于 React、Elastic Charts 和 Elastic UI 构建,并被打包为一个独立的 HTML 文件。当 AI 调用 view_dashboard 或创建 chart 时,host 会在 sandboxed iframe 中渲染这个 HTML。app 完全通过 MCP Apps protocol 与 server 通信,使用基于 postMessage 的 callServerTool() 来获取数据、保存 layouts 以及检测时间字段。这里没有 localhost server、没有需要配置的端口,也没有外部网络依赖。
这意味着它可以与任何兼容 MCP 的 client 一起工作:Cursor、Claude Desktop、Claude.ai、带 Copilot 的 VS Code 等等。
example-mcp-dashbuilder 支持哪些 chart 类型?
在撰写本文时,它已经支持六种覆盖最常见 dashboard 场景的 chart 类型:
example-mcp-dashbuilder 支持哪些 chart 类型?
在撰写本文时,它已经支持六种覆盖最常见 dashboard 场景的 chart 类型:
| 类型 | 最适合 | 示例 |
|---|---|---|
| Bar | 对比分类数据 | 按 geographic source 统计 requests |
| Line | 时间趋势 | 每小时 bytes transferred |
| Area | 随时间变化的总量 | 随时间变化的 request volume |
| Pie | 整体占比(最多六个 slices) | response code 分布 |
| Metric | 带 sparkline 的单一 KPI | 带小时趋势的总 requests |
| Heatmap | 两个维度之间的模式分析 | 按星期与小时统计的 requests |
Dashboards 支持可折叠 sections 以便组织内容,支持带自动时间字段检测的 time picker,并支持保存与切换多个 dashboards;并行 chat sessions 之间通过在每次 tool 调用中传递的 dashboardId 实现彼此隔离。
如何安装并运行 example-mcp-dashbuilder
example-mcp-dashbuilder 是开源的,并且已经可以直接使用。你需要 Node.js 22+、一个 Elasticsearch 实例(本地或 Elastic Cloud),以及一个兼容 MCP 的 client。
Claude Desktop:从 GitHub Releases 下载最新的 .mcpb 文件,然后双击它。Claude Desktop 会提示你输入 Elasticsearch credentials。
Cursor / Claude Code / VS Code Copilot:将你的 MCP 配置指向发布版 tarball;无需 clone,无需 npm install:
{
"mcpServers": {
"example-mcp-dashbuilder": {
"type": "stdio",
"command": "npx",
"args": ["https://github.com/elastic/example-mcp-dashbuilder/releases/latest/download/example-mcp-dashbuilder.tgz"]
}
}
}
将 ES_NODE、ES_API_KEY(或 ES_USERNAME / ES_PASSWORD)以及 KIBANA_URL 设置为环境变量。如果你更倾向于从源码运行,可以 clone 这个 repo,然后运行 npm run setup,启动一个交互式向导,它会帮助你配置本地 Elasticsearch 或 Elastic Cloud(Cloud ID + API key)。
然后开始构建:
“Explore the logs index and build me the most insightful dashboard you can/探索 logs index,并帮我构建一个你认为最有洞察力的 dashboard”
接下来 AI 就会接管一切。😉
Roadmap:example-mcp-dashbuilder 接下来会有什么
这是一个早期版本,我们正在积极开发中。目前重点关注的方向包括:
- 更多 chart 类型:Gauge、donut、treemap、data table 和 tag cloud,以匹配 Lens 的完整能力。
- 将 dashboards 推送到 Git:把 dashboard 配置写入 repository,以支持版本控制与 code-review workflow。
- 更好的错误体验:当 ES|QL 查询失败时,提供更详细的反馈,以及常见问题修复建议。
- 更丰富的分析流程:扩展 deep-analysis playbook,以支持更多数据形态(logs、metrics、traces)。
我们非常期待看到你用它构建出的内容。欢迎试用、提交 issues,并告诉我们哪些 visualizations 与 workflows 对你的团队最有帮助。
GitHub:elastic/example-mcp-dashbuilder
致谢
感谢 Walter Rafelsberger与 Tim Schnell 对实现工作的贡献。
FAQ
什么是 example-mcp-dashbuilder?
example-mcp-dashbuilder 是一个开源 MCP(Model Context Protocol)应用,它将 AI assistants 连接到 Elasticsearch。你可以用自然语言描述一个 Kibana dashboard,它会自动生成 ES|QL 查询、创建 visualizations,并在 editor chat window 中交付一个实时交互式 dashboard。
example-mcp-dashbuilder 使用什么查询语言来获取数据?
所有数据获取都使用 ES|QL,即 Elasticsearch 的管道式查询语言。MCP server 内置了一个 ES|QL reference,AI 会在编写查询前先读取它,以确保每种 visualization 类型都能使用正确语法与高效 aggregation。
我可以将 example-mcp-dashbuilder 构建的 dashboards 导出到 Kibana 吗?
可以。运行 “Export this dashboard to Kibana” 后,每个 panel 都会被转换成真实的 Kibana Lens visualization,同时保留 ES|QL 查询、48-column grid layout、自定义颜色与 series palettes。最终得到的是一个真正可用的 Kibana dashboard,而不是 screenshot 或 embed。
我可以把现有 Kibana dashboard 导入 example-mcp-dashbuilder 进行 AI 辅助编辑吗?
可以。提供一个 Kibana dashboard ID 后,系统会获取现有 dashboard,将其中的 Lens visualizations 转换为可编辑的 chart configurations,并加载到 example-mcp-dashbuilder 中。之后你可以使用自然语言修改它,并重新导出到 Kibana。
哪些 MCP clients 与 example-mcp-dashbuilder 兼容?
example-mcp-dashbuilder 可以与任何兼容 MCP 的 client 一起工作,包括 Cursor、Claude Desktop、Claude.ai,以及带 Copilot 的 VS Code。它支持 stdio 与 HTTP transport,并且不需要 localhost server 或端口配置。
example-mcp-dashbuilder 支持哪些 chart 类型?
当前版本支持六种 chart 类型:bar、line、area、pie、metric(带 sparkline)以及 heatmap。未来计划增加 gauge、donut、treemap、data table 与 tag cloud,以匹配 Kibana Lens 的完整能力。
运行 example-mcp-dashbuilder 需要什么?
你需要 Node.js 22 或更高版本、一个 Elasticsearch 实例(本地或 Elastic Cloud),以及一个兼容 MCP 的 client。需要设置环境变量 ES_NODE、ES_API_KEY(或 ES_USERNAME / ES_PASSWORD)以及 KIBANA_URL。对于 Claude Desktop,可以从 GitHub Releases 下载 .mcpb 文件并双击安装。
这篇内容对你有多大帮助?
原文:https://www.elastic.co/search-labs/blog/kibana-dashboard-builder-mcp-esql
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)