Kylin Offline ECharts
БесплатноНе проверенAn MCP server for generating offline charts using Apache ECharts SVG SSR and rsvg-convert, optimized for Kylin ARM64 with 64KB page size.
Описание
An MCP server for generating offline charts using Apache ECharts SVG SSR and rsvg-convert, optimized for Kylin ARM64 with 64KB page size.
README
离线图表 MCP 服务,面向 Kylin ARM64 + 64KB PAGE_SIZE。它使用 Apache ECharts 的纯 JS SVG SSR 能力,再调用系统 rsvg-convert 生成 PNG,不走 @napi-rs/canvas / canvas PNG 渲染路径。
渲染链路
MCP SSE tool call
-> ECharts option
-> echarts.init(null, theme, { renderer: "svg", ssr: true, width, height })
-> chart.renderToSVGString()
-> rsvg-convert --zoom 2 -f png -o chart.png chart.svg
-> /charts/chart_xxx.png
-> JSON text with chartUrl/imageFile/imageFormat/size
本机 Docker 测试
docker build -t kylin-offline-mcp-echarts:local .
docker run --rm -p 7003:7003 -v "$PWD/charts:/app/charts" kylin-offline-mcp-echarts:local
curl http://127.0.0.1:7003/health
SSE 地址:
http://127.0.0.1:7003/sse
同一端口提供:
/sse
/messages
/health
/charts
/api/tools/:toolName
curl 直连 HTTP 测试
除了 MCP SSE 外,也支持直接通过 HTTP 调用图表工具,适合 curl、脚本和容器冒烟测试。
先检查服务:
curl http://127.0.0.1:7003/health
生成柱状图:
curl -X POST http://127.0.0.1:7003/api/tools/generate_bar_chart \
-H 'Content-Type: application/json' \
-d '{
"data": [
{ "category": "人员A", "value": 9.70 },
{ "category": "人员B", "value": 8.52 },
{ "category": "人员C", "value": 7.37 },
{ "category": "人员D", "value": 6.97 },
{ "category": "人员E", "value": 6.41 },
{ "category": "人员F", "value": 5.01 }
],
"title": "示例金额排名前六名人员",
"axisXTitle": "人员姓名",
"axisYTitle": "报销金额(万元)"
}'
成功时会直接返回:
{
"status": "success",
"chartUrl": "/charts/generate_bar_chart_1780000000000_abcd1234ef.png",
"imageFile": "/app/charts/generate_bar_chart_1780000000000_abcd1234ef.png",
"imageFormat": "png",
"size": {
"width": 800,
"height": 600,
"bytes": 30000,
"zoom": 2
}
}
然后就可以直接访问图片:
curl -O http://127.0.0.1:7003/charts/<上一步返回的png文件名>
测试用例
工具:generate_bar_chart
{
"data": "[{\"category\": \"人员A\", \"value\": 9.70}, {\"category\": \"人员B\", \"value\": 8.52}, {\"category\": \"人员C\", \"value\": 7.37}, {\"category\": \"人员D\", \"value\": 6.97}, {\"category\": \"人员E\", \"value\": 6.41}, {\"category\": \"人员F\", \"value\": 5.01}]",
"title": "示例金额排名前六名人员",
"axisXTitle": "人员姓名",
"axisYTitle": "报销金额(万元)"
}
data 既支持数组,也支持上面这种 JSON 字符串。
成功返回文本内容类似:
{
"status": "success",
"chartUrl": "/charts/generate_bar_chart_1780000000000_abcd1234ef.png",
"imageFile": "/app/charts/generate_bar_chart_1780000000000_abcd1234ef.png",
"imageFormat": "png",
"size": {
"width": 800,
"height": 600,
"bytes": 30000,
"zoom": 2
}
}
Kylin ARM64 Release tar
GitHub Actions 工作流:
.github/workflows/release-kylin-arm64.yml
.github/workflows/release-kylin-arm64-page64k.yml
release-kylin-arm64.yml 使用 GitHub 托管 ubuntu-24.04-arm runner 生成 linux/arm64 tar。GitHub 官方文档列出的 ARM64 runner label 包括 ubuntu-24.04-arm,但托管 runner 不能指定 64K page-size 内核。
release-kylin-arm64-page64k.yml 用 [self-hosted, Linux, ARM64, page64k],会先检查:
test "$(uname -m)" = "aarch64"
test "$(getconf PAGE_SIZE)" = "65536"
面向 Kylin ARM64 + 64KB PAGE_SIZE 的最终发布,推荐使用 self-hosted 64K runner workflow。
Kylin 打包默认参考 54dabang/gpt-vis-mcp 的 Kylin 基础镜像:
ARG KYLIN_BASE_IMAGE=macrosan/kylin:v10-sp3-2403
FROM ${KYLIN_BASE_IMAGE}
GitHub Actions 的 kylin_base_image 输入可以覆盖为 kylin-server-arm64:v10。无论使用哪个 Kylin/vendor 基础镜像,都必须先通过 yum 安装 nodejs、npm、gcc、gcc-c++、make、pkgconfig、cairo-devel、libjpeg-turbo-devel、libpng-devel、pango-devel、giflib-devel、librsvg2-devel、librsvg2-tools 等系统依赖,再执行 npm ci。
手动运行时输入 tag,例如 v0.1.0。成功后 Release asset 名称:
kylin-offline-mcp-echarts-v0.1.0-linux-arm64.tar.gz
下载链接模板:
https://github.com/<owner>/<repo>/releases/download/v0.1.0/kylin-offline-mcp-echarts-v0.1.0-linux-arm64.tar.gz
https://gh.llkk.cc/https://github.com/<owner>/<repo>/releases/download/v0.1.0/kylin-offline-mcp-echarts-v0.1.0-linux-arm64.tar.gz
64K 自托管 runner 产物模板:
https://github.com/<owner>/<repo>/releases/download/v0.1.0-page64k/kylin-offline-mcp-echarts-v0.1.0-page64k-linux-arm64-page64k.tar.gz
https://gh.llkk.cc/https://github.com/<owner>/<repo>/releases/download/v0.1.0-page64k/kylin-offline-mcp-echarts-v0.1.0-page64k-linux-arm64-page64k.tar.gz
目标机加载:
docker load -i kylin-offline-mcp-echarts-v0.1.0-linux-arm64.tar.gz
docker image inspect kylin-offline-mcp-echarts:v0.1.0-arm64 --format '{{.Os}}/{{.Architecture}}'
docker run -d --name kylin-offline-mcp-echarts -p 7003:7003 -v "$PWD/charts:/app/charts" kylin-offline-mcp-echarts:v0.1.0-arm64
64KB 页面大小最终仍建议在真实 Kylin ARM64 目标机上确认:
getconf PAGE_SIZE
docker exec kylin-offline-mcp-echarts rsvg-convert --version
curl http://127.0.0.1:7003/health
关键约束
本项目没有运行时依赖 mcp-echarts npm 包,因为 [email protected] 直接依赖 @napi-rs/canvas。这里保留兼容的工具定义和 ECharts option 生成方式,但渲染路径完全替换为 SVG SSR + 系统 rsvg-convert。
Dockerfile.kylin 仍设置 64K 链接和 npm 源码编译约束:
ENV LDFLAGS="-Wl,-z,max-page-size=65536"
ENV npm_config_build_from_source=true
ENV npm_config_canvas_build_from_source=true
当前业务路径不调用 canvas,这两个环境变量是为了防止未来依赖变化时误拉 4KB page-size 预编译原生包。
Установка Kylin Offline ECharts
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/54dabang/kylin-arm64-64kb-page-size-mcpFAQ
Kylin Offline ECharts MCP бесплатный?
Да, Kylin Offline ECharts MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Kylin Offline ECharts?
Нет, Kylin Offline ECharts работает без API-ключей и переменных окружения.
Kylin Offline ECharts — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Kylin Offline ECharts в Claude Desktop, Claude Code или Cursor?
Открой Kylin Offline ECharts на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Kylin Offline ECharts with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
