用途
dataloupe 用于在本地离线地查看、探索和比较表格数据。它读取 CSV、TSV、JSON(对象数组)、NDJSON/JSONL、Parquet、Excel(.xlsx)等文件,生成一个自包含、可离线交互的 HTML 浏览器,或作为 MCP 服务器供 AI 助手查询本地数据,数据不会离开本机。
主要能力
- 生成单个自包含 HTML 浏览器:一条命令读取数据文件,并在其旁边写出一个 .html 文件。可用双击打开、邮件发送、放入 Slack 或提交到仓库。文件内嵌严格 Content-Security-Policy(default-src 'none'; connect-src 'none' 等),浏览器自身会阻止任何网络请求,可在气隙机器上同样运行,零网络请求、无 CDN、无网络字体、无遥测。
- 数据查看与统计:具备可排序、可搜索、可过滤的表格,支持全列全文搜索,虚拟化表体在大文件上仍保持流畅;提供逐列统计(空值、唯一值数量、数值的 min/max/mean/median/std、分类列的高频值)以及自动图表(数值与日期列的直方图、分类列的频次条,以内联 SVG 绘制)。
- 内置 SQL 控制台:在查看器中按 ▸_ SQL,可对数据执行真实 SELECT 查询,支持 WHERE、AND、LIKE、IN、GROUP BY、聚合(COUNT/SUM/AVG/MIN/MAX)、ORDER BY、LIMIT/OFFSET,完全在分享文件内的浏览器中运行,无服务器、无 WASM 下载、无网络。
- 可分享视图:当前搜索、排序、聚焦列和主题存于 URL hash,任何过滤/排序视图都可收藏与分享,打开同一文件即到达同一视图,仍完全离线。
- 来源与溯源面板:点击 ⓘ about 打开可折叠面板,列出内嵌的来源文件名、格式、生成时间、dataloupe 版本、行数、各列推断类型与统计,以及人类标题/备注;并实时以平实语言描述当前应用的过滤/排序/列视图,附一键 Copy link to this view。报告还记录源数据的 SHA-256(及字节大小)与按序应用的操作(load → filter → group-by → order → limit),可验证与复现。--title 与 --note 可写入人类上下文。
- diff 模式(数据文件的 git diff):通过键匹配行,以自包含离线 HTML 报告展示新增/删除/变更行,并对变更单元格做旧 → 新的高亮。支持 --key id 或 --key region,date;省略 --key 时自动检测唯一 id 类列,否则回退整行匹配;可跨任意两种支持格式比较(如 .csv 对比 .parquet 快照,或上周 .xlsx 对比本周)。
- stdin 支持:可直接接入 shell 管道(格式自动检测,或 --format 强制指定)。
- CI 集成:提供 GitHub Action,可在 PR 中查看数据文件实际变更,输出可下载的自包含 HTML 报告与计数摘要;步骤暴露 added/removed/changed/unchanged/changed-any 输出,便于在数据变化时使检查失败;示例工作流见 examples/workflows/data-diff.yml。
- 程序化 API:npm install dataloupe 后可在自有代码中生成同样的自包含离线 HTML,附带 TypeScript 类型,为 ESM。
- <dataloupe-table> 网页组件:可在任意网页中嵌入交互式浏览器,无需框架、无需构建步骤、无需服务器;复用同一渲染引擎,并挂载到沙箱化的 <iframe>(唯一不透明源 + 内嵌 default-src 'none' CSP),所指向数据不离开浏览器,也无法触碰宿主页面。可从 CDN 加载(约 110 KB,零运行时依赖,按版本化 git tag 提供),或自托管于 GitHub Pages;属性 src、format、limit、title、height;事件 dataloupe:load / dataloupe:error;也可 import "dataloupe/element" 注册。
- MCP 服务器:让 Claude Desktop、Cursor、VS Code 等 MCP 客户端直接检查并查询本地数据文件,无需数据库、无需运行服务器、无需上传。可视化工具 visualize_data 可将文件或查询结果生成为磁盘上的一个自包含离线交互式 HTML 浏览器并返回路径。可选环境变量:DATALOUPE_MCP_ROOT 将文件访问限制在该目录(路径在检查前规范化,防止符号链接逃逸);DATALOUPE_MCP_MAX_BYTES 单文件读取上限(默认 512 MiB,设为 0 禁用);DATALOUPE_MCP_READONLY 设为 1/true 时拒绝写入调用方指定的 out_path,visualize_data/diff_data 仍返回产物但仅写入新临时文件。所有工具对数据只读,dataloupe 从不修改文件。
- 容器运行:MCP 服务器已发布到官方 MCP Registry(io.github.aurelio-nakamura/dataloupe)并作为 OCI 镜像发布在 GitHub Container Registry,可通过 stdio 以 JSON-RPC 指向该镜像;镜像零运行时依赖,仅读取挂载到 /data 的目录。
使用方式
- 通过 npx 运行,无需安装:npx dataloupe sales.csv。
- 或全局安装:npm install -g dataloupe。
- 需要 Node.js ≥ 18;包为预构建、自包含 CLI,无编译步骤、无需获取运行时依赖。
- 也可固定到仓库:npx github:aurelio-nakamura/dataloupe sales.csv。
- 支持 stdin 管道,格式自动检测或用 --format 强制。
- Excel 多工作表通过 --sheet 指定;Excel 日期单元格自动识别。
- MCP 客户端配置示例(Claude Desktop / Cursor 的 mcpServers)见官方文档;容器方式可指向 OCI 镜像。
适用场景
- 处理财务、健康、内部或其他敏感数据时,避免上传到服务器。
- 需要将数据集以单个可移植 HTML 文件交付给他人,对方无需安装任何东西即可长期离线使用。
- 在气隙或离网机器上打开报告。
- 在 PR 与 CI 中审查数据变更。
- 在自有代码或网页中嵌入数据浏览器。
- 让 AI 助手在本地离线查询数据文件,并以可分享的 HTML 产物代替被截断的文本表格。
限制
- 要求 Node.js ≥ 18(容器方式除外)。
- 生成报告大小通常为数十 KB 加上数据本身。
- MCP 服务器读取默认受 512 MiB 单文件上限约束(可调整或禁用)。
- 输出不含运行时依赖,打开页面时不获取任何代码。
- 官方资料未提供收费、价格或平台限制等信息。
开源与许可
MIT © Aurelio Nakamura。由 AI 代理(Aurelio Nakamura)构建与维护,欢迎提交 issue、想法与 PR;见 CONTRIBUTING.md 了解构建/测试流程、代码结构与新增输入格式的方法。