Back to MCP directory
publicPublicdnsLocal runtime

skinny-jeans

一个MCP服务器,通过自动压缩JSON、Markdown和代码文件来优化Claude Code的令牌使用,减少文件读取时的令牌消耗。

article

README

令牌优化 (skinny-jeans)

对于超过50行的文件,优先使用 toon_read_file 而非内置的读取函数。 对于任何JSON/数据文件,使用 toon_read_json。 使用 toon_list_files 代替ls/Bash进行目录列表操作。 在读取大文件之前,使用 toon_estimate_tokens


### 验证是否正常工作
启动Claude Code会话并运行 `/mcp`,你应该会看到 `skinny-jeans` 列出了5个工具。

## ✨ 主要特性
在Claude Code中,每次读取文件都会消耗API配额中的令牌。Markdown文件冗长(包含前页内容、徽章、空行),JSON文件在每个对象中都会重复字段名,代码中的注释对人类有帮助,但对已经理解代码的大语言模型(LLM)来说是噪音。

skinny-jeans作为一个MCP服务器,位于Claude和你的文件系统之间,可实时压缩内容:

Claude Code ──> skinny-jeans (MCP) ──> 从磁盘读取文件 │ ├── .json/.jsonl → TOON编码 节省约40 - 60% ├── .md/.mdx → Markdown压缩 节省约15 - 30% ├── .ts/.js/.py → 去除注释 节省约10 - 20% └── 其他文本 → 清理空白 节省约5%


## 💻 使用示例

### 基础用法
#### toon_read_file
这是主要工具,可读取任何文件并自动应用正确的优化:

toon_read_file({ path: "data.json" }) → [skinny-jeans: 缩小47%, 约51个令牌(原为约96个)] → TOON编码的内容

toon_read_file({ path: "README.md" }) → [skinny-jeans: 缩小22%, 约145个令牌(原为约186个)] → 压缩后的Markdown文件(无徽章、前页内容、多余空行)

toon_read_file({ path: "app.ts" }) → [skinny-jeans: 缩小15%, 约171个令牌(原为约201个)] → 去除注释后的代码

**参数:**
- `path`(字符串,必需) — 文件路径
- `maxTokens`(数字,可选) — 在指定的令牌数处截断输出
- `raw`(布尔值,可选) — 跳过优化,返回原始内容

#### toon_read_json
专门用于JSON文件,具有编码选项:
- `delimiter` — `"tab"`(默认)、`"comma"` 或 `"pipe"` 用于表格行
- `keyFolding` — `"safe"`(默认)将 `{"a": {"b": 1}}` 折叠为 `a.b: 1`

#### toon_estimate_tokens
在进行完整读取之前进行快速检查:

toon_estimate_tokens({ path: "big-dataset.json" }) → 文件: big-dataset.json → 大小: 245891字节,4521行 → 估计令牌数: 约52340 → 类别: json → 使用skinny-jeans的预期节省: 40 - 60%


#### toon_batch_estimate
分析整个项目:

toon_batch_estimate({ paths: ["src/", "data/"] }) → 令牌节省报告 (47个文件) → json: 12个文件,约45200个令牌 → 节省约20340个令牌 (45%) → 代码: 28个文件,约31000个令牌 → 节省约4650个令牌 (15%) → Markdown: 7个文件,约8900个令牌 → 节省约1780个令牌 (20%) → 总计: 约85100个令牌 → 估计节省: 约26770个令牌 (31%)


### 高级用法
skinny-jeans还可以作为独立的命令行工具使用:
```bash
# 读取文件并进行优化
skinny-jeans read data.json

# 估计文件的令牌数
skinny-jeans estimate large-file.ts

# 批量节省报告
skinny-jeans batch src/ data/ docs/

📚 详细文档

MCP工具

| 工具 | 用途 | |------|------| | toon_read_file(path) | 以优化形式读取任何文件。自动检测文件类型,应用正确的转换,并报告节省情况。 | | toon_read_json(path) | 将JSON/JSONL转换为TOON,并提供编码选项(分隔符、键折叠)。 | | toon_estimate_tokens(path\|text) | 在不读取整个文件的情况下估计令牌数。 | | toon_list_files(path) | 以缩进树的形式提供紧凑的目录列表(无冗长的元数据)。 | | toon_batch_estimate(paths) | 跨文件/目录的批量令牌节省报告。 |

转换方式

JSON/JSONL → TOON

使用 @toon-format/toon 编码器。对象数组变为带有共享标题的表格行,嵌套键折叠为点分路径。制表符分隔符比逗号更适合令牌化。

Markdown压缩

逐行状态机,去除:YAML前页内容、HTML注释、徽章图像、标题末尾的 #、多余的空行、行尾的空白。保留:代码块(从不修改)、表格、链接、块引用。

代码注释去除

去除全行的 ///* */ 注释(C风格语言)以及 # 注释(Python、Ruby、shell)。保留内联注释(它们包含上下文)和包含类似注释语法的字符串字面量。

通用压缩

作为其他文本文件的备用方法:将3个或更多连续的空行合并为1个,去除行尾的空白。

预期令牌节省

| 文件类型 | 典型节省 | |------|------| | JSON(表格/数组数据) | 40 - 60% | | JSON(嵌套配置) | 20 - 35% | | Markdown(带有徽章的README) | 15 - 30% | | TypeScript/JavaScript | 10 - 20% | | Python | 10 - 25% | | 其他文本 | 5 - 10% |

🔧 技术细节

本地运行

# 直接测试MCP服务器
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | node dist/index.js

# 注册以进行开发
claude mcp add --scope user --transport stdio skinny-jeans -- node $(pwd)/dist/index.js
help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client