一个MCP(模型上下文协议)服务器,能够自动提供TOON格式的上下文给编码代理,使得在不改变工作流程的情况下,结构化数据的token减少透明地达到30-60%。
此MCP服务器拦截来自编码代理的文件请求,并在有益时自动将数据文件转换为TOON格式。当你引用一个JSON文件时,服务器会:
神奇之处? 你无需考虑这些。正常引用文件,自动获得token优化。
cd toon-context-mcp
./setup.sh
或手动安装:
cd toon-context-mcp
npm install
npm run build
添加到你的Cline MCP配置中:
{
"mcpServers": {
"toon-context": {
"command": "node",
"args": ["/绝对路径/to/toon-context-mcp/build/index.js"],
"env": {
"TOON_THRESHOLD": "0.7",
"AUTO_CONVERT": "true"
}
}
}
}
添加到~/.config/zed/settings.json:
{
"context_servers": {
"toon-context": {
"command": "node",
"args": ["/绝对路径/to/toon-context-mcp/build/index.js"]
}
}
}
该服务器遵循标准MCP协议。使用:
node["/路径/to/toon-context-mcp/build/index.js"]# 交互式测试工具
cd toon-context-mcp
npm run inspector
# 或运行测试套件
cd ..
./TEST_MCP_SERVER.sh
只需像平常一样使用你的编码代理!当你引用一个数据文件时:
"分析data/users.json并找到非活跃用户"
服务器会自动优化为TOON(如果有益),透明地为你节省30-60%的token。
之前(JSON - 220个token):
{
"users": [
{ "id": 1, "name": "Alice", "email": "alice@example.com", "role": "admin", "status": "active" },
{ "id": 2, "name": "Bob", "email": "bob@example.com", "role": "user", "status": "active" },
...
]
}
之后(TOON - 84个token,节省61.8%):
users[5]{id,name,email,role,status,created}:
1,Alice Johnson,alice@example.com,admin,active,2024-01-15
2,Bob Smith,bob@example.com,user,active,2024-02-20
...
你的工作流: 没有变化。服务器自动处理一切。
服务器分析每个文件并选择最优格式:
| 数据结构 | 格式 | 原因 |
|---|---|---|
| 统一的对象数组 | TOON | 节省30-60%的token |
| 纯平面表 | CSV | 对简单表格最有效 |
| 深度嵌套(≥4层) | JSON | 对复杂结构更好 |
| 非统一数据 | JSON | 更灵活的格式 |
.toon文件.toon文件(如果是最新的)系统文件自动被排除:
package.json, tsconfig.json, 配置文件服务器提供了4个MCP工具:
主要工具用于透明优化。
返回优化后的文件内容(如果有益则为TOON,否则为原始内容)及token节省统计。
分析TOON转换是否有益。
返回关于数据结构和预计token节省的详细指标。
转换目录中的所有符合条件的文件。
一次处理多个文件并返回转换摘要。
获取格式比较的详细指标。
提供token比较而不实际进行转换。
详见MCP_SERVER.md获取详细的工具文档。
在你的MCP客户端配置中设置这些变量:
| 变量 | 默认值 | 描述 |
|---|---|---|
TOON_THRESHOLD | 0.7 | 转换为TOON的最小表格资格(0-1) |
AUTO_CONVERT | true | 是否自动转换文件 |
CACHE_DIR | ./.toon-cache | 缓存TOON文件的目录 |
./TEST_MCP_SERVER.sh
运行17项测试覆盖:
cd toon-context-mcp
npm run inspector
使用自己的文件与服务器工具进行交互式测试。
| 指标 | 值 |
|---|---|
| 转换时间 | 典型JSON文件10-50毫秒 |
| 缓存查找 | 已缓存TOON文件<1毫秒 |
| 内存使用 | 最小(不需要流式处理) |
| token节省 | 对统一表格数据节省30-60% |
从样本数据测试中:
| 文件 | 原始token数 | TOON token数 | 节省 |
|---|---|---|---|
| users.json (5条目) | 220 | 84 | 61.8% |
| users.json (100条目) | 3,171 | 1,245 | 60.7% |
| products.json (50条目) | 1,856 | 798 | 57.0% |
toon-context-mcp/
├── src/
│ ├── index.ts # 主MCP服务器
│ ├── inspector.ts # 交互式测试工具
│ ├── file-handler.ts # 文件操作及转换逻辑
│ ├── data-analyzer.ts # 数据结构分析
│ └── toon-utils.ts # TOON编码/解码
├── build/ # 编译后的JavaScript
├── examples/ # 测试数据
├── config/ # 示例配置
├── setup.sh # 设置脚本
├── README.md # 服务器文档
└── package.json # 依赖项
✅ 统一的对象数组 - 相同字段,基本值
✅ 大型表格数据集 - 用户列表、产品目录、分析数据
✅ API响应 - 一致的结构化数据
✅ 数据库导出 - 类似表格的数据结构
❌ 深度嵌套对象 - 复杂层次数据
❌ 非统一数据 - 混合结构
❌ 小型数据集 - 开销不值得(<10条目)
❌ 配置文件 - 自动排除
cd toon-context-mcp
rm -rf node_modules package-lock.json
npm install
npm run build
TOON_THRESHOLD=0.7npm run inspector → 选项2当源文件更改时,缓存会自动失效。要强制刷新:
rm 路径/to/file.toon
TOON(面向token的对象表示法)是一种针对LLM token效率优化的格式。对于统一的表格数据,它消除了重复的键,与JSON相比减少了30-60%的token数量。
关键优势:
MIT许可证 - 查看LICENSE文件