快速了解
它能做什么
一个将结构化数据渲染为 DSH 对话内联图表的原生 DSH 插件。
本站提供的是中文说明,不代表该项目或 Plugin 自身提供中文界面;语言支持请以上游文档为准。
Web Profile
Not declared in supplied evidence
证据已验证
核对日期 2026/9/6 UTC 13:52
有代码证据的贡献
它为 DSH 增加什么
将结构化数据转换为 DSH 对话中的内联图表。
机制证据 ↗选择前先看
dsh-chart 是 search2chart-mcp 中面向原生 DSH 的部分。它以 DSH bundle 形式提供,并向 web profile 添加图表插件;其声明用途是将结构化数据转换为对话内联图表。
适合谁
希望在 web profile 对话中直接获得图表输出的 DeepSeek Harness 用户。
常见任务
- 在对话中将表格或结构化数据转换为内联图表。
- 将原生图表插件添加到 DSH 的 web profile。
- 以图形而非纯文本展示分类和数值序列。
权限与数据
插件说明提及 localhost HTTP 服务。原生 DSH bundle 未声明凭证要求。
权限- 可能按插件清单描述使用 localhost HTTP 服务。
- 提供的证据未说明图表输入数据的保留、传输或删除行为。
局限
- 未声明 Harness 版本范围。
- 没有成功安装或运行时执行的证据。
- 仓库还介绍了 MCP 和 CDN 功能,但此处未验证这些行为是否适用于原生 DSH bundle。
DSHub 已核对
- 已验证固定 Git 源及 DSH bundle 结构。
- bundle 清单声明 dsh-chart 包,并依赖 @deepseek-ai/dsh-tools。
- patch 提供了添加到 web profile 的命令。
DSHub 未核对
- 尚未在真实 DSH 环境中执行安装。
- 未对渲染、localhost 行为和数据处理进行运行时测试。
固定版本安装
安装 dsh-chart
这个Plugin Bundle没有 DSH Plugin 安装操作,请根据源码文档使用真实交付方式。
维护者原文
项目 README
search2chart-mcp
Turn any tabular data into inline charts directly inside agent conversations. Zero runtime dependencies, multi-client adaptive.
把「任意表格数据」变成直接内联在 agent 对话流里的图表。零运行时依赖,多端自适应。
<img width="1912" height="948" alt="image" src="https://github.com/user-attachments/assets/676c42c7-dfa0-48ff-8ec9-9f1d51a2e7b2" />安装
# 方式一: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. 首次接入:测试你的 Agent 能渲染哪种图片
不同 Agent 渲染器对图片格式支持各异。先用 all 模式一次性测试:
临时配置(在 MCP 配置里加环境变量):
{
"env": {
"ECHARTS_INLINE_MODE": "all"
}
}
发给 Agent 的测试 prompt:
用 chart_from_data 生成一个简单柱状图。
数据:[["城市","销量"],["北京",120],["上海",200],["广州",150]]
标题:城市销量对比
chartType:bar
Agent 返回 3-4 行图,分别标记为:
- 【1·data URI】 — 自包含 base64,无需联网
- 【2·localhost http】 — 本地 HTTP 服务
- 【3·file://】 — 本地文件路径
- 【4·CDN 公网 https】 — GitHub + jsDelivr 公网地址
哪个在对话框里真正渲染成了图片,你的 Agent 就支持哪种。
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 自动检测
工具结果里已内置 Agent 指令,告诉模型如何根据用户反馈自动设置模式:
[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
有意识地管理
安装与管理
前置条件与目标 Profile
目标: Web Profile
交付方式: Git Bundle — iqingyoung/search2chart-mcp#701f3e019bd5dd98c1843a1f7ea381d6468a3b7a。
验证、更新与移除
显示生命周期命令
dsh plugin --profile web list兼容性与访问范围
Requires the @deepseek-ai/dsh-tools peer dependency: Not declared in supplied evidence。
风险事实
The plugin description states that it uses a localhost HTTP service.
证据 ↗证据与编辑审查Manifest、Bundle patch、分发与新鲜度
不可变证据
审查状态与源码活动
请使用固定 Git bundle 路径;npm 包的仓库元数据与提供的源不一致。
AI 审查于 2026/9/10 UTC 11:36。GitHub 事实核对日期: 2026/9/10 UTC 11:36。
自当前证据基线以来,没有记录到重要源码变化。