
datoon
io.github.andrii-su由 GitHub 账号 andrii-su 发布v1.9.1更新于 Oct 24, 2026
Smart structured-data to TOON gateway: converts to TOON only when it saves LLM tokens.
概览
把 JSON、CSV、YAML 等结构化数据转换为 TOON 格式供 LLM 提示使用,但仅在确实节省 token 时才转换。
- 可以做什么
- datoon 是一个本地 MCP 服务器,在结构化数据进入提示之前将其转换为紧凑的表格文本格式 TOON。它提供三个工具:convert_json 进行带策略门控的完整 JSON 转换,convert_text 处理 CSV、YAML、XML 或 JSONL 文本,analyze_json 仅做结构分析。决策层会检查数据是否为行数足够的统一对象数组,以及预估 token 节省是否超过阈值;不满足时返回原始数据。每次结果都附带包含决策、原因和 token 估算的报告。
- 适用场景
- 当提示中包含大量统一表格数据(如 CSV 导出、JSONL 事件日志或 API 响应),并希望在不冒转换反而变差风险的前提下减少 payload token 时使用。也适合需要在流水线中为每次格式决策留下明确可记录原因的场景。
- 运行要求
- 作为本地进程运行,通常通过 uvx 从 PyPI 包 datoon 加 mcp 附加组件启动。需要 Python 3.12 或更高版本。TOON 转换本身需要 PATH 中有 Node.js 和 npx;分析与格式读取无需 Node.js。可选附加组件支持 YAML、Excel、Parquet/ORC/Avro、Apple Numbers 以及基于 tiktoken 的 token 计数。未声明任何账号、API 密钥或环境变量。
安装
在 SourceWeft 中
- 打开 控制台中的 datoon,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
datoon
smart structured-data→TOON gateway — converts only when it actually saves tokens
[Tests] [Pre-commit] [Release] [PyPI] [Python] [License: MIT]
Before/After • Install • What You Get • How It Works • Benchmarks • Full install guide
Raw structured data is often verbose in LLM prompts. TOON can save tokens — but blind conversion can also make payloads worse. datoon adds a decision layer: convert when structure and savings justify it, skip when they don't, and always explain why.
Supports JSON, CSV, JSONL, YAML, XML, Parquet, Avro, ORC, Excel, and Apple Numbers — auto-detected from file extension.
Before / After
Same data. Right format. Always explained.
[!IMPORTANT] datoon saves payload tokens — the structured data portion of your prompt. Token savings depend on payload shape: uniform tabular data converts well; deeply nested or non-uniform structures are skipped. Every decision includes a reason so pipelines can log, debug, and trust the outcome.
Install
Requires Python 3.12+. TOON conversion requires Node.js with npx in PATH — analysis and format reading work without it.
For Claude Code plugin, Codex, and MCP config → INSTALL.md.
What You Get
Supported input formats
How It Works
- Detect format — from
--formatflag, file extension, or default to JSON for stdin - Read + normalize — parse source into list of row dicts; serialize to compact JSON
- Analyze structure — uniform object arrays? acceptable depth? minimum rows?
- Gate early — non-candidates skip before any CLI call; no Node.js overhead
- Convert + estimate — TOON CLI runs, token savings calculated
- Gate savings — below threshold → return JSON; above → return TOON with report
Every path returns a ConversionReport with decision, reason, and token estimates. Pipelines never get silent surprises.
Quick Start
JSON (stdin):
CSV (auto-detected from extension):
JSONL:
YAML (requires datoon[yaml]):
Parquet (requires datoon[columnar]):
Explicit format override:
Force conversion (bypass gating — for experiments):
Python API
JSON conversion:
Any format via read_tabular:
Structure-only analysis (no Node.js required):
MCP Server
datoon ships an MCP server with three tools:
Claude Desktop / Cursor / Windsurf config:
Run locally:
Listed on the MCP Registry, Smithery, and Glama. See MARKETPLACES.md.
Claude Code Plugin
Install directly from GitHub:
Trigger in-session:
CLI Reference
Format is auto-detected from file extension. Use --format to override or when reading from stdin.
Benchmarks
Why auto mode outperforms forced conversion
Auto mode avoids low-benefit and high-risk payloads (orders-nested, mixed-non-uniform) while matching forced TOON's average token count on suitable ones. Every decision comes with a reasoned report.
Forced conversion succeeded for 5/5 payloads.
Format conversion benchmark
Token savings when converting from common structured formats (CSV, JSONL, XML, YAML). Baseline is the JSON representation of the same data — what an LLM would receive without datoon.
Forced conversion succeeded for 4/4 payloads.
Agent skill evaluation
Artifact-based subagent comparison — identical analysis tasks, two modes:
with_skill: agent received thedatoonskill and followed the conversion workflow.without_skill: agent used JSON directly, no TOON ordatoon.
3 payload sizes × 3 iterations = 18 total agent runs. Both modes: 100% correct answers.
Full report and raw outputs: benchmarks/agent_skill_eval/. Savings are payload-token estimates, not full end-to-end model-token usage.
Development
Contributor workflow: CONTRIBUTING.md. Maintainer/agent notes: CLAUDE.md.
Setup:
Tests:
Skill sync + plugin metadata:
Links
- INSTALL.md — full install matrix, all targets, per-agent detail
- CONTRIBUTING.md — contributor workflow
- CLAUDE.md — maintainer guide for agents
- CHANGELOG.md — release history
- SECURITY.md — vulnerability reporting
- Live docs —
docs/ - Issues — bugs, features, questions
License
MIT
来源:README.md,提交 1579e24
工具
0版本历史
1- v1.9.1最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分