🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

表格转图表 iqingyoung/search2chart-mcp

DeepSeek Harness
iqingyoung56 天前有提交已提供中文文档扫描:含敏感能力

把表格数据直接变成对话里的内联图表

25.2/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/26 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add iqingyoung/search2chart-mcp
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · search
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 56 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 12 处,展示前 12 条)
  • 发起网络请求
    dsh/test.js:11
    http.get(url, (res) => {
  • 读取本地文件
    mcp/lib/html.js:20
    vendorCache = fs.existsSync(vendor) ? fs.readFileSync(vendor, 'utf8') : false;
  • 读取本地文件
    mcp/lib/parse.js:34
    try { stat = fs.statSync(filePath); }
  • 读取本地文件
    mcp/lib/parse.js:42
    const text = fs.readFileSync(filePath, 'utf8').replace(/^ FEFF/, '');
  • 读取密钥环境变量
    mcp/lib/upload.js:8
    const TOKEN = process.env.ECHARTS_CDN_TOKEN || '';
  • 发起网络请求
    mcp/lib/upload.js:26
    const req = https.request({
  • 读取本地文件
    mcp/server.js:112
    try { files = fs.readdirSync(dir).filter(f => /^chart_/.test(f)).map(f => {
  • 读取本地文件
    mcp/server.js:115
    try { m = fs.statSync(full).mtimeMs; } catch (e) { }
  • 删除本地文件
    mcp/server.js:119
    if (now - f.m > CHART_TTL_MS) { try { fs.unlinkSync(f.full); } catch (e) { } }
  • 删除本地文件
    mcp/server.js:123
    try { fs.unlinkSync(kept[i].full); } catch (e) { }
  • 写入本地文件
    mcp/server.js:129
    try { fs.mkdirSync(dir, { recursive: true }); } catch (e) { }
  • 写入本地文件
    mcp/server.js:133
    fs.writeFileSync(file, content, 'utf8');
扫描于 2026/11/2(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

search2chart-mcp:面向智能体的图表工具,把搜索、调研、表格数据变成智能体对话里的内联图表。原生 DSH 插件(真内联)+ 跨智能体 MCP 服务器(文件链接 + 交互式 HTML)。

README

由 DeepSeek 最新模型翻译生成
DSH Market search2chart-mcp 把任意表格数据变成直接内联在智能体对话里的图表。零运行时依赖,多客户端自适应。 把「任意表格数据」变成直接内联在智能体对话流里的图表。零运行时依赖,多端自适应。 安装 方式一:DSH 原生插件(DeepSeek Harness 用户推荐,真·内联) dsh plugin --profile web add dsh-chart 方式二:npx(通用 MCP server,无需 clone) npx search2chart-mcp 方式三:git clone git clone https://github.com/iqingyoung/search2chart-mcp.git 两条路径 | 路径 | 目录 | 适用 | | 通用 MCP server | mcp/ | ZCode / Claude Desktop / Cursor / WorkBuddy / Trae / Codex / DSH 通用 | | 原生 DSH 插件 | dsh/ | DeepSeek Harness(真·内联,图片直接进对话) | - 用 MCP 客户端 → 用 mcp/,对话框直接出图 - 用 DSH 且想要原生体验 → 用 dsh/;DSH 里也能用 mcp/(走文件链接) - 两者可并存 快速开始
展开完整文档(README 剩余 1 节)
DSH Market

search2chart-mcp

把任意表格数据变成直接内联在智能体对话里的图表。零运行时依赖,多客户端自适应。

把「任意表格数据」变成直接内联在智能体对话流里的图表。零运行时依赖,多端自适应。

安装

方式一:DSH 原生插件(DeepSeek Harness 用户推荐,真·内联)
dsh plugin --profile web add dsh-chart

方式二:npx(通用 MCP server,无需 clone)
npx search2chart-mcp

方式三:git clone
git clone https://github.com/iqingyoung/search2chart-mcp.git

两条路径

| 路径 | 目录 | 适用 |
| 通用 MCP server | mcp/ | ZCode / Claude Desktop / Cursor / WorkBuddy / Trae / Codex / DSH 通用 |
| 原生 DSH 插件 | dsh/ | DeepSeek Harness(真·内联,图片直接进对话) |

- 用 MCP 客户端 → 用 mcp/,对话框直接出图
- 用 DSH 且想要原生体验 → 用 dsh/;DSH 里也能用 mcp/(走文件链接)
- 两者可并存

快速开始

1. 在你的 MCP 配置里加入

{
"mcpServers": {
"search2chart-mcp": {
"command": "npx",
"args": ["search2chart-mcp"],
"env": {}
}
}
}

如果 npx 拉不到,用 clone 后的绝对路径:"command": "node", "args": ["<仓库>/mcp/server.js"]

2. 首次接入:测试你的智能体能渲染哪种图片

不同智能体渲染器对图片格式支持各异。先用 all 模式一次性测试:

临时配置(在 MCP 配置里加环境变量):

{
"env": {
"ECHARTS_INLINE_MODE": "all"
}
}

发给智能体的测试提示词:

用 chart_from_data 生成一个简单柱状图。
数据:[["城市","销量"],["北京",120],["上海",200],["广州",150]]
标题:城市销量对比 chartType:bar

智能体返回 3-4 行图,分别标记为:
- 【1·data URI】 — 自包含 base64,无需联网
- 【2·localhost http】 — 本地 HTTP 服务
- 【3·file://】 — 本地文件路径
- 【4·CDN 公网 https】 — GitHub + jsDelivr 公网地址

哪个在对话框里真正渲染成了图片,你的智能体就支持哪种。

3. 固定模式

| 能渲染的格式 | 设置 |
| data URI ✅ | ECHARTS_INLINE_MODE=inline(默认) |
| file:// ✅ | ECHARTS_INLINE_MODE=file |
| localhost http ✅ | ECHARTS_INLINE_MODE=inline |
| CDN 公网 https ✅ | ECHARTS_INLINE_MODE=cdn |
| MCP image block ✅ | inline + 调用时 returnImage:true |
| 都显示不了 | ECHARTS_INLINE_MODE=none,用 .html 交互图 |

智能体自动检测

工具结果里已内置智能体指令,告诉模型如何根据用户反馈自动设置模式:

[Agent]: 返回 4 行图片,哪张正常显示?
[User]: 3正常 [Agent]: 确认了。file:// 可渲染 → 请设置 ECHARTS_INLINE_MODE=file

已知客户端实测:ZCode → file,OpenCode → inline(data URI),WorkBuddy → cdn,DSH → inline(localhost http),Claude/Cursor → inline + returnImage:true。

核心能力

多客户端内联适配

通过 ECHARTS_INLINE_MODE 环境变量控制内联行为:

| 模式 | 行为 | 适用客户端 |
| inline(默认) | data URI → localhost http → file:// 自动 fallback | OpenCode / DSH / 通用 |
| file | 只输出 file:// 本地路径 | ZCode |
| cdn | 上传 GitHub+jsDelivr,输出公网 https | WorkBuddy |
| all | 测试模式:一次返回所有格式 | 首次接入时测试 |
| none | 纯文本(.html 路径 + 数据),无内联 | 纯文本模型 / 终端 |

CDN 公网图床

- SVG → PNG 栅格化(@resvg/resvg-js,可选依赖)
- GitHub Contents API 上传 + jsDelivr CDN 加速
- GitHub Actions 定时清理(默认保留 3 天)

清洗数据留存

结果附带完整数据(JSON,代码块包裹),让纯文本模型在上下文里继续做占比/趋势/对比分析,无需看图。returnData: false 可关。

自包含可交互 HTML

图表同时写入 .html 文件,浏览器打开即支持 hover / 缩放 / 类型切换 / 配色调整。

工具

| 工具 | 作用 |
| chart_from_data | 结构化数据 → 图表 HTML + 内联图片 |
| chart_from_file | CSV/XLSX 路径 → 图表 HTML + 内联图片 |
| list_chart_types | 列出支持的类型 / 配色与字段约定 |

字段约定:第一列 = 类别轴;其余列 = 数值序列(多列即多序列);chartType: auto 按数据自动选 饼/柱。

接入各客户端

详见 mcp/README.md。

目录

search2chart-mcp/
├── mcp/ # 跨端 MCP server(内联 SVG + 可交互 HTML) │ ├── server.js # MCP stdio 协议 + 工具入口 │ ├── lib/ │ │ ├── chart.js # 数据归一化 + ECharts option │ │ ├── html.js # 自包含可交互 HTML │ │ ├── svg.js # 零依赖 SVG 渲染器 │ │ ├── httpserver.js # 本地 HTTP 服务 │ │ ├── rasterize.js # SVG→PNG │ │ ├── upload.js # GitHub + jsDelivr CDN │ │ └── parse.js # CSV/XLSX 解析 │ └── scripts/ │ ├── selftest.js # 端到端自检 │ └── verify_cdn.cjs # CDN 端到端验证 ├── dsh/ # 原生 DSH 内联插件 ├── LICENSE └── README.md

License

MIT
预览分享卡片长什么样 ↓iqingyoung/search2chart-mcp
分享 · DeepSeek Harness Hub
iqingyoung/search2chart-mcp

把表格数据直接变成对话里的内联图表

回到顶部