这是一个提供编码和解码**TOON(面向令牌的对象表示法)**工具的模型上下文协议(MCP)服务器。
TOON是一种紧凑且易于人类阅读的格式,旨在使用显著更少的令牌来表示JSON数据,使其非常适合LLM提示和上下文优化。
👉 在 toonformat.dev 了解更多关于该格式的信息
此服务器向MCP客户端(特别是经过Gemini CLI测试)提供了两个核心工具:
encode_toon:将JSON字符串转换为TOON格式以节省令牌。decode_toon:将TOON格式化的文本转换回标准JSON。要使用此服务器与Gemini CLI,请按照以下步骤操作:
安装Gemini CLI(如果尚未安装):
npm install -g @google/gemini-cli@latest
配置MCP服务器:
您可以通过创建或编辑您的Gemini设置文件来注册服务器,通常位于~/.gemini/settings.json(全局)或.gemini/settings.json(项目本地)。
添加以下配置:
{
"mcpServers": {
"toon": {
"command": "npx",
"args": ["-y", "git+https://github.com/kweinmeister/toon-mcp.git"]
}
}
}
运行Gemini CLI: 启动CLI界面。现在工具应该对模型可用。
gemini
encode_toon将JSON数据转换为紧凑的TOON格式。
参数:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
json | string | 必需 | 要编码的JSON数据(作为字符串序列化)。 |
indent | number | 2 | 缩进的空格数。 |
delimiter | string | , | 数组/行的分隔符。选项:,(逗号),\t(制表符),|(竖线)。 |
keyFolding | string | "off" | 压缩单键包装链(例如,a.b.c)。选项:"off","safe"。 |
flattenDepth | number | Infinity | 应用键折叠的最大深度。 |
Gemini CLI中的示例提示:
"使用
encode_toon工具将此JSON转换为TOON格式:{"users": [{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]}"
输出:
users[2]{id,name}:
1,Alice
2,Bob
decode_toon将TOON格式化的文本解析回标准JSON。
参数:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
toon | string | 必需 | 要解码的TOON格式化的字符串。 |
strict | boolean | true | 强制执行严格验证(例如,检查声明的数组长度)。 |
expandPaths | string | "off" | 将点分隔的键重构为嵌套对象。选项:"off","safe"。 |
此服务器支持HTTP服务器发送事件(SSE)和标准IO(stdio)。
适用于远程部署(如Cloud Run)或基于Web的MCP客户端。
# 默认在端口8080启动
npm start
# 自定义端口
npm start -- --port 3000
由本地客户端如Gemini CLI使用。
npm run start:stdio
git clone https://github.com/kweinmeister/toon-mcp
cd toon-mcp
npm install
运行单元测试以确保服务器工具正常工作:
npm test
您可以使用MCP Inspector通过Web界面交互式地检查和测试服务器的工具。
npx fastmcp inspect index.ts
# 代码检查
npx biome check .
# 类型检查
npx tsc --noEmit