ECharts ChartPage MCP Server
ECharts ChartPage
echarts-chartpage 是一个 TypeScript 工具包,可将结构化 JSON 数据、可视化目标和字段映射转换为由 Apache ECharts 驱动的安全、可运行的 HTML 图表页面。
它以以下形式提供:
用于程序化使用的 npm 包
用于本地自动化的 CLI
用于智能体工作流的 MCP 服务器
该项目旨在实现确定性输出、受控选项生成、严格验证以及公共开源可维护性。
特性
生成包含 Apache ECharts CDN 的完整单文件 HTML 图表页面
在源代码中依赖官方
echartsnpm 包以确保类型和集成的正确性接受结构化数据以及
goal(目标)、theme(主题)和字段映射输入从受控白名单中推荐安全的图表类型
构建受控的 ECharts 选项,无需注入任意 JS 格式化程序
验证模式、字段映射、图表兼容性以及生成的 HTML 基础结构
修补现有图表规范并重新生成输出
在 npm API、CLI 和 MCP 服务器之间复用一个共享核心
附带测试、CI、示例、贡献文档和可发布包
支持的目标
trend(趋势)compare(比较)composition(构成)distribution(分布)ranking(排名)correlation(相关性)
支持的图表类型
line(折线图)bar(柱状图)stacked_bar(堆叠柱状图)pie(饼图)donut(环形图)scatter(散点图)area(面积图)table(表格)
安装
npm install echarts-chartpage用于本地开发:
npm install快速入门
CLI
npx echarts-chartpage generate \
--input examples/inputs/line-chart.json \
--output revenue-trend.htmlnpm API
import { generateChartPage } from "echarts-chartpage";
const result = generateChartPage({
title: "Monthly Revenue Trend",
goal: "trend",
theme: "light",
outputMode: "single_html",
data: [
{ month: "2025-01", revenue: 120 },
{ month: "2025-02", revenue: 132 },
{ month: "2025-03", revenue: 148 }
],
fields: {
x: "month",
y: "revenue"
}
});
console.log(result.chartType);
console.log(result.html);MCP 服务器
先构建,然后启动 stdio 服务器:
npm run build
npm run mcp:start输入模型
type GenerateChartPageInput = {
title: string;
description?: string;
goal: "trend" | "compare" | "composition" | "distribution" | "ranking" | "correlation";
data: Array<Record<string, string | number | boolean | null>>;
fields: {
x: string;
y: string | string[];
series?: string;
category?: string;
};
theme?: "light" | "dark";
outputMode?: "single_html";
chartType?: "line" | "bar" | "stacked_bar" | "pie" | "donut" | "scatter" | "area" | "table";
};输出
generateChartPage() 返回:
规范化后的规范
解析后的图表类型
警告信息
受控的 ECharts 选项,或在表格回退时返回
null完整的可运行 HTML
CLI 使用
CLI 二进制名称为 echarts-chartpage。
generate
从 JSON 输入生成单个 HTML 页面:
echarts-chartpage generate \
--input examples/inputs/line-chart.json \
--output examples/generated/line-chart.htmlrecommend
推荐图表类型:
echarts-chartpage recommend \
--input examples/inputs/bar-chart.jsonvalidate
验证输入,并可选择验证生成的 HTML:
echarts-chartpage validate \
--input examples/inputs/pie-chart.json \
--html examples/generated/pie-chart.htmlpatch
修补基础图表规范并重新生成 HTML:
echarts-chartpage patch \
--base examples/inputs/patch-base.json \
--patch examples/inputs/patch-update.json \
--output examples/generated/patch-example.htmlMCP 使用
服务器公开了以下工具:
recommend_chart_typegenerate_chart_pagevalidate_chart_pagepatch_chart_page
所有工具的输入和输出均为结构化 JSON。典型的 MCP 客户端配置指向已构建的 stdio 服务器:
{
"mcpServers": {
"echarts-chartpage": {
"command": "node",
"args": ["dist/mcp/server.js"]
}
}
}请参阅 examples/mcp-usage.md 获取请求负载示例。
编程 API
公共 API 接口:
generateChartPagerecommendChartTypevalidateChartInputvalidateChartPageRequestvalidateGeneratedHtmlpatchChartPagebuildChartOptionbuildChartHtml
运行时模式也已导出:
generateChartPageInputSchemapatchChartPageChangesSchemapatchChartPageInputSchemavalidateChartPageInputSchema
输入/输出示例
输入:
{
"title": "Traffic Source Mix",
"goal": "composition",
"theme": "light",
"outputMode": "single_html",
"data": [
{ "source": "Organic", "sessions": 4200 },
{ "source": "Paid", "sessions": 2100 },
{ "source": "Referral", "sessions": 1100 }
],
"fields": {
"x": "source",
"y": "sessions",
"category": "source"
}
}输出摘要:
{
"chartType": "donut",
"warnings": [],
"html": "<!doctype html>..."
}示例
该仓库包含:
使用以下命令生成所有示例 HTML 文件:
npm run examples:generate生成的 HTML 文件将写入 examples/generated/。
智能体技能
此仓库还包含一个可重用的 Codex 风格技能,供需要持续调用 MCP 服务器的智能体使用:
它记录了:
何时触发此 MCP
如何在推荐/验证/生成/修补之间进行选择
结构化调用规则
用于模型提示的少样本示例
使用以下命令将捆绑的技能安装到本地 Codex 技能目录中:
npm run build
npm run skill:install架构
项目布局:
src/
core/
chart-recommender.ts
option-builder.ts
html-builder.ts
validator.ts
patcher.ts
generator.ts
cli/
index.ts
commands/
mcp/
server.ts
schemas/
types/
utils/设计规则:
核心逻辑在所有接口间共享
输出受控且确定
不接受任意格式化函数
仅发出白名单内的图表类型
在可行的情况下优先使用 dataset + encode
另请参阅:
开发命令
npm install
npm run lint
npm run typecheck
npm run test
npm run build
npm run examples:generate构建命令
npm run build输出将发送到 dist/。
测试命令
npm run test发布说明
发布前:
更新
package.json中的仓库 URL。确保 npm 账户
daqiang901003已在发布机器上完成身份验证。查看
CHANGELOG.md。运行
npm run verify。使用
npm publish发布。
该包配置了:
exports生成的
.d.tsbinfiles优先使用 ESM 输出并兼容 CommonJS
路线图
更丰富的排名特定排序控件
面向仪表板的多面板 HTML 模板
更多的图表推荐启发式算法
可配置的设计预设
更丰富的 MCP 元数据和追踪
常见问题解答
这会执行任意用户 JavaScript 吗?
不会。生成器不接受任意格式化函数、脚本片段或自定义 JS 注入。
为什么某些输入会回退到 table?
构建器使用保守的白名单。如果映射或数据类型与受控图表输出不兼容,它将回退到稳定的表格渲染。
生成的 HTML 需要构建步骤吗?
不需要。它是一个旨在直接在浏览器中打开的单个 HTML 文件。
我可以强制指定图表类型吗?
可以。在输入中设置 chartType。如果请求的图表与数据映射不兼容,将返回验证警告,生成过程可能会回退到 table。
安全性
无任意脚本注入
除固定的 ECharts CDN 外,无任意外部 JS 注入
无格式化函数注入
受控的 HTML 模板形状
生成前进行模式验证
本项目旨在用于受信任的结构化数据流水线。如果您接受来自外部用户的不可信输入,请同时在您的边界处对其进行验证和清理。
有关完整的仓库策略,请参阅 SECURITY.md。
ECharts 集成说明
本项目在两处使用 ECharts:
源代码依赖官方
echartsnpm 包进行类型化选项生成生成的 HTML 使用固定的 Apache ECharts CDN 运行时,以便输出文件无需打包工具即可直接在浏览器中打开
贡献
请参阅 CONTRIBUTING.md。
许可证
MIT。请参阅 LICENSE。
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/RiverThrimp/echarts-chartpage'
If you have feedback or need assistance with the MCP directory API, please join our Discord server