mcpField
A
ATR: Automation for Token Reduction

ATR: Automation for Token Reduction

本地服务
github.com/JacobBhatt12AI 与智能体22 天前更新

关于 ATR: Automation for Token Reduction

ATR 是运行在 AI 应用与 MCP 服务之间的本地代理,通过按需搜索工具并压缩结果来减少传入上下文的内容。它面向使用大型工具结果或大量 MCP 工具的用户,并保留被裁剪的完整结果供后续查询。

主要功能

  1. 01按任务搜索并展示相关工具
  2. 02压缩工具结果并保留完整内容
  3. 03查询已裁剪结果的具体部分
  4. 04区分只读与会更改数据的调用
  5. 05提供代码读取、搜索和运行工具

适用场景

  1. 01精简 GitHub 列表或浏览器页面结果
  2. 02仅查看测试输出中的失败信息
  3. 03从大型日志或 diff 中提取相关内容

MCP 相关

ATR 作为 MCP 代理连接 AI 应用与其后端 MCP 服务,将搜索、读取和调用工具的接口提供给客户端。它也提供 MCP HTTP 服务模式。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"jacobbhatt12-atr": {
"command": "uvx",
"args": [
"atr-mcp"
]
}
}
}
启动命令uvx atr-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiatr-mcp1.0.0

工具

10

收录的工具列表 · 更新于 1 天前

参数类型必填说明
kinteger否工具数量(默认为 5)。
querystring是用几个词描述你想做什么。
detailboolean否同时返回参数架构。

详细介绍

ATR:缩减 Token 的自动化工具

ATR 让 AI 在使用工具时消耗更少的 token。 消耗更少的 token,意味着费用更低,也能减少“已达到使用限额”的提示。

它适用于 Claude Code、Codex、Claude Desktop、Cursor、Windsurf、claude.ai 和 ChatGPT。它免费,并在你的电脑上运行。

ATR 演示:1,000 个 GitHub issue 的 token 数从 329,732 降至 1,442,工具列表的 token 数从 12,376 降至 1,438

问题所在

AI 使用工具(GitHub、浏览器、数据库、测试运行器)时,有两件事会浪费 token:

  1. 每条消息都会发送所有工具的说明, 即使 AI 根本不会使用这些工具。十个 MCP 服务在你输入任何内容之前,就可能占用 10,000 多个 token。
  2. 工具返回的结果很庞大。 GitHub issue 列表、网页或测试运行结果可能包含数万个 token,而这些内容全都会进入聊天记录。

ATR 的作用

ATR 位于 AI 应用和工具之间:

  • 隐藏工具列表。 AI 只会看到几个精简的 ATR 工具,并在需要时搜索所需工具。
  • 缩减结果。 在 AI 看到结果之前,ATR 会去除冗余内容,保留重要信息。测试运行失败时会保留失败项并删除通过的测试;网页会保留文本和链接并去掉页面布局。
  • 不会丢失任何内容。 ATR 删除内容时,会保留完整结果,AI 可以随时请求查看其中任意部分。
  Your AI app (Claude Code, Codex, Claude Desktop, …)
          │  sees a few small ATR tools instead of every tool
          ▼
        ATR  ← finds the right tool, runs it, shrinks the result
          │
          ▼
  Your MCP servers (GitHub, Playwright, Postgres, Slack, …)

开始使用

你需要 Python 3.11 或更高版本。

pip install atr-mcp
atr setup

atr setup 会查找电脑上的 AI 应用,向你展示将进行的更改,并先征求你的同意。然后它会:

  1. 将 MCP 服务移到 ATR 后方;并且
  2. 将 ATR 添加到每个应用中。

重启应用即可完成。

命令作用
atr setup --dry-run显示计划,但不进行任何更改
atr setup --undo将所有应用恢复到原来的状态
pip install --upgrade atr-mcp更新 ATR

atr setup 更改的每个文件都会有一份备份(.atr-backup)。

只想试试看?

此演示会连接一个包含 50 个工具(GitHub、Slack、日志、数据库)的虚拟服务。任何数据都不会离开你的电脑。

claude mcp add atr -- atr serve --demo        # Claude Code
codex mcp add atr -- atr serve --demo         # Codex

让 AI “列出未关闭的 GitHub issue”,然后让它 “显示 ATR 统计信息”,即可查看它节省了多少 token。


节省效果

实测

我们让 AI Agent 分别在使用和不使用 ATR 的情况下执行相同的浏览器任务:打开 Hacker News,点击“new”,然后打开 GitHub issues 页面。每种配置运行 3 次,且每次回答都正确。

Agent不使用 ATR使用 ATR
Claude Code每项任务 $0.237,13 轮每项任务 $0.110,10 轮(便宜 54%)
Codex84k token(按全价计算为 33k)134k token(按全价计算为 18k)

Codex 的结果不一:使用 ATR 后,按全价计算的 token 数约减少了一半,但 token 总数更多。

单项结果

使用 python -m benchmarks.bench_atr 测量 AI 接收内容的 token 数:

结果不使用 ATR使用 ATR节省比例
1,000 个 GitHub issue429,20387999.8%
2,000 行服务器日志61,07220899.7%
有锁文件更改的 git diff22,29420799.1%
浏览器中的网页(Hacker News)12,0234,04666%
每条消息中 50 个工具的说明12,0561,50887.5%
pytest -v,303 个测试,3 个失败6,68567590%
pip install,60 个包5,97769788%

每种情况下,重要内容都会保留下来:错误、失败的测试、更改过的代码行、页面文本和链接。

ATR 何时有用,何时无用
  • 效果最好: 你使用会返回大量结果的 MCP 服务,例如 GitHub、浏览器(Playwright)、数据库、日志或网页。
  • 有些效果: 不使用 MCP 服务,仅在 Claude Code 或 Codex 中进行常规编码。这些应用已经会精简自己的命令,因此在我们的测试中,ATR 在这种情况下没有效果。
  • 无法改善: 聊天记录和 AI 自己的回复。MCP 服务只能看到工具调用,无法看到对话内容。

ATR 的工具

AI 会使用这些工具。你无需亲自调用。

用于你的 MCP 服务

工具功能
atr_find_tools搜索你所有服务的工具,并返回少数适合当前任务的工具
atr_read运行只读工具,并精简结果
atr_call运行会更改内容的工具(你的应用可以先征求你的同意)
atr_query读取被截断结果的更多内容,例如某一页、某个字段或某次搜索

用于编码

工具替代操作
atr_repo_map逐个打开文件来了解项目
atr_search_code翻阅数页搜索结果
atr_read_file读取整个文件以查看某个函数。若 AI 两次读取同一部分,它还会提示“未更改”
atr_diff查看充斥着 lockfiles 的完整 git diff
atr_run查看数千行测试或构建输出
atr_stats显示 ATR 节省了多少 token

安全

  • **绝不会读取、搜索或显示机密信息,**包括 .env 文件、私钥、云凭据,以及类似 api_keys.json 这样的文件。这也适用于 ATR 后面的工具和 atr_diff。
  • **读取和更改是分开的。**只读工具通过 atr_read 运行。任何会更改内容的操作都通过 atr_call 运行,因此你的应用可以在运行前征求你的同意。atr_run(shell 命令)始终会征求同意。
  • **文件仅限于允许的文件夹。**文件工具只能访问设置中列出的文件夹。

在 claude.ai 或 ChatGPT 中使用 ATR

这些应用只能连接互联网中的服务,因此 ATR 需要一个公开链接。

pip install "atr-mcp[http]"
atr serve --http                               # prints a link with a secret in it
tailscale funnel --bg 8789                     # a permanent public https link (or: cloudflared tunnel --url http://127.0.0.1:8789)

添加 https://<your-link>/mcp/<secret> 作为连接器:

  • **claude.ai:**Settings → Connectors → Add custom connector(无需登录)
  • **ChatGPT:**Settings → Apps & Connectors → developer mode → create a connector(无需登录)

**请妥善保管此链接。**任何拥有此链接的人都可以使用你的工具。除非使用 --read-files 和 --allow-run 开启,否则通过互联网无法读取文件或运行 shell 命令。若要更改密钥,请删除 ~/.atr/http_token。


设置

atr setup 会为你写入这些内容。你也可以自行编辑 ~/.atr/config.json:

{
  "servers": {                          // the MCP servers ATR runs for you
    "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"] }
  },
  "budget": 1500,                       // most tokens one result may use
  "level": 2,                           // 1 = keep almost everything, 3 = shrink hard
  "pin": ["github__create_issue"],      // tools to always show (skips the search step)
  "read_only": ["github__list_*"],      // tools that only read, if a server doesn't say so itself
  "read_roots": ["~"]                   // folders the file tools may open
}

更多信息

完全不使用 MCP?atr compress 可以在你将文件或剪贴板内容粘贴到任意聊天中之前,先将其精简:

atr compress dump.json --copy
pbpaste | atr compress --copy

手动设置:atr init 会写入设置文件,atr snippet 会打印需要添加到应用 MCP 配置中的条目。

**macOS 上出现“No module named 'atr'”:**运行 chflags nohidden .venv*/lib/python*/site-packages/*.pth,或使用 atr snippet 输出的条目。

限制:

  • 需要登录(OAuth)的在线服务暂时无法接入 ATR,因此 atr setup 会将它们保留在你的应用中。
  • ATR 会降低每条消息的成本,但不会更改你方案的限额。

面向开发者

git clone https://github.com/JacobBhatt12/atr && cd atr
pip install -e ".[dev]"
python -m pytest atr/tests -c /dev/null       # 44 tests
python -m benchmarks.bench_atr                # the savings table above
文件内容
atr/server.py你的应用所连接的 MCP 服务
atr/remote.py通过互联网提供相同服务的版本(atr serve --http)
atr/downstream.py与 ATR 后面的 MCP 服务通信
atr/compress.py精简结果
atr/stash.py为 atr_query 保存完整结果
atr/router.py工具搜索
atr/code.py编码工具
atr/setup.pyatr setup

**接下来:**记住重复的工具调用,避免重复发送相同结果;支持在线服务登录;并提供一个小型本地模型,在截断长文本会导致语义丢失时对其进行摘要。

许可证:MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。