https://github.com/yang1bai/claw-tsaver
A token-saving MCP proxy for OpenClaw users. Cuts tool call payloads by 90%+ via lazy expansion.
https://github.com/yang1bai/claw-tsaver
mcp openai python token-optimization
Last synced: 10 days ago
JSON representation
A token-saving MCP proxy for OpenClaw users. Cuts tool call payloads by 90%+ via lazy expansion.
- Host: GitHub
- URL: https://github.com/yang1bai/claw-tsaver
- Owner: Yang1Bai
- License: mit
- Created: 2026-04-25T22:15:27.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-20T00:30:15.000Z (22 days ago)
- Last Synced: 2026-05-20T03:30:51.348Z (22 days ago)
- Topics: mcp, openai, python, token-optimization
- Language: Python
- Size: 73.2 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# claw-tsaver
> A token-saving MCP proxy for OpenClaw users. Cuts tool call payloads by 90%+ via lazy expansion.
## Why
MCP tool calls often return thousands of tokens of HTML or JSON in a single response — but the model typically uses only 5% of it. The remaining 95% silently burns context window and increases cost. claw-tsaver sits between OpenClaw and your downstream MCP servers, intercepts oversized responses, and hands the model a compact preview + an on-demand handle instead.
## How
```mermaid
sequenceDiagram
participant U as OpenClaw (Claude)
participant C as claw-tsaver proxy
participant F as fetch / puppeteer / etc.
U->>C: call_tool("fetch", url)
C->>F: forward call
F-->>C: 11,507 tokens of HTML
Note over C: tiktoken count > threshold
C->>C: store full content in SQLite
C-->>U: {preview_head, preview_tail, expand_handle}
(only 104 tokens)
Note over U: model decides if it needs full text
U->>C: expand_content(handle)
C-->>U: full 11,507 tokens
```
## Real measurement
| Test | Original tokens | Returned tokens | Saved |
|---|---|---|---|
| fetch Wikipedia "Tokenization (data security)" | 11,507 | 104 | **99.1%** |
Tested on OpenClaw + Claude Sonnet 4.6 + mcp-server-fetch, 2026-04-25.
Raw data: `benchmarks/mvp-day1-fetch.jsonl`.
## Quick Start
### 1. Prerequisites
Install [uv](https://docs.astral.sh/uv/) (one-time setup):
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```
No claw-tsaver install needed — `uvx` will fetch and run it on demand.
### 2. Configure downstream MCP servers
Edit `~/.claw-tsaver/config.json` (first run of `claw-tsaver-mcp` will auto-create a template):
```json
{
"downstream_servers": [
{"name": "fetch", "command": "uvx", "args": ["mcp-server-fetch"]}
],
"compression_threshold_tokens": 500
}
```
### 3. Register with OpenClaw
Add this block at the top level of `~/.openclaw/openclaw.json`:
```json
"mcp": {
"servers": {
"claw-tsaver": {
"command": "uvx",
"args": ["--from", "git+https://github.com/Yang1Bai/claw-tsaver",
"claw-tsaver-mcp"]
}
}
}
```
Then restart OpenClaw gateway: `openclaw gateway restart`
## Dashboard
Optional: a local web UI for real-time token savings stats.
```bash
uvx --from git+https://github.com/Yang1Bai/claw-tsaver claw-tsaver-dashboard
```
Open in your browser.
## Roadmap
- [x] **Module A**: lazy expansion proxy (this release)
- [x] **Module D**: local dashboard (this release)
- [ ] **Module B**: tool routing (auto-load only relevant MCPs per turn)
- [ ] **Module C**: conversation history compression (atomic fact cards)
## License
MIT — see LICENSE file.
## Contributing
Issues and PRs welcome.
---
## 🇨🇳 中文说明
### 什么是 claw-tsaver?
**claw-tsaver** 是一个为 OpenClaw 用户设计的 MCP 代理,通过懒加载扩展机制将工具调用的 token 消耗削减 **90%+**。
### 问题背景
MCP 工具调用(如 fetch、puppeteer)经常在单次响应中返回数千个 token 的 HTML 或 JSON,但模型通常只使用其中约 5% 的内容。剩余 95% 悄悄消耗上下文窗口并增加费用。
### 解决方案
claw-tsaver 作为 OpenClaw 与下游 MCP 服务器之间的代理:
1. 拦截过大的响应(超过可配置的 token 阈值)
2. 将完整内容存储到本地 SQLite 数据库
3. 返回给模型一个**紧凑预览 + 按需扩展句柄**
4. 模型需要更多内容时,调用 `expand_content` 工具按需获取
### 快速安装
```bash
npm install -g claw-tsaver
# 在 OpenClaw 配置中添加为 MCP 服务器
```
### 开源协议
MIT License