MCP Toplist
<p align="center">
<img src="https://raw.githubusercontent.com/ooples/token-optimizer-mcp/HEAD/docs/assets/logo-400.png" alt="Token Optimizer" width="96" height="96">
</p>
<h1 align="center">Token Optimizer MCP</h1>
<p align="center">
<strong>바이트 수를 최적화하는 것이 아니라 청구서를 최적화하는 압축 방식이며, 검증을 위해 벤치마크를 제공합니다.</strong>
</p>
<p align="center">
<a href="https://www.npmjs.com/package/@ooples/token-optimizer-mcp"><img src="https://img.shields.io/npm/v/%40ooples%2Ftoken-optimizer-mcp?logo=npm" alt="npm version"></a>
<a href="https://github.com/ooples/token-optimizer-mcp/actions/workflows/ci.yml"><img src="https://github.com/ooples/token-optimizer-mcp/actions/workflows/ci.yml/badge.svg?branch=master" alt="CI"></a>
<a href="./LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT license"></a>
<a href="https://nodejs.org/"><img src="https://img.shields.io/badge/node-%3E%3D22-339933?logo=node.js&logoColor=white" alt="Node.js 22+"></a>
</p>
<p align="center">
<img src="https://img.shields.io/badge/measured-on%20two%20harnesses-2ea043" alt="두 개의 독립적인 하네스에서 측정됨">
<img src="https://img.shields.io/badge/clients-16-8b5cf6" alt="16개 클라이언트">
<img src="https://img.shields.io/badge/direct%20savings-before%20%2F%20actual%20return-3b82f6" alt="이전 및 실제 수익 측정된 직접 절감액">
<img src="https://img.shields.io/badge/telemetry-opt--in-2ea043" alt="텔레메트리는 선택 사항이며 기본적으로 비활성화됨">
<img src="https://img.shields.io/badge/commercial%20use-MIT%2C%20allowed-0d9488" alt="MIT, 상업적 사용 허용">
</p>
HeadRoom과 비교하는 방법
제공업체들은 프롬프트 접두사(prompt prefix)를 캐시합니다. 캐시된 토큰은 0.1배로 재읽히고, 다시 작성된 토큰은 1.25배로 청구됩니다. 대부분의 압축기는 제거되는 바이트를 최적화하고 이러한 배율을 무시합니다. 이 도구는 청구서 자체를 최적화합니다.
이것은 그들 자신의 장치(fixtures)에서 실제 구현을 기준으로 측정되었습니다. 재구현도 아니고 우리 장치를 사용한 것도 아닙니다: 그들의 하네스(harness)가 페이로드(payload)를 압축하고 덤프하며, 그들의 리졸버(resolver)가 자체 마커(markers)를 해제하고, 우리의 도구는 동일한 바이트를 받습니다. 그들의 열은 홀드(holds)를 포착하는 아홉 가지 구성 중 가장 좋은 것을 행별로 보여줍니다.
우리의 두 개의 기능이 표에 있으며, 각각 다른 질문에 답합니다. **ours**는 블록을 옮길 곳이 없는 블록 엔진이며, MCP 도구와 후크(hooks)가 실행되는 방식입니다: 제거하는 모든 것은 압축하여 제거하며, 요청에서 아무것도 빠져나가지 않습니다. **ours, proxy**는 Claude Code 세션이 통과하는 프록시로, 또한 압축할 수 없어 파일로 옮길 수 있는 블록을 이동시키고 경로를 명명하는 마커를 남깁니다. 이는 그들의 콘텐츠 캐시 참조(content-cache reference)가 하는 것과 같은 종류의 트레이드오프입니다. **ours, preset**은 spillWholeBlockBelow: 0.9로 해당 이동 기능이 켜진 블록 엔진입니다.
<!-- HEADROOM-TABLE:START -- 아래의 모든 그림은 `bench/compression/headroom/results/head-to-head.json`에 나타나야 합니다. `node bench/compression/readme-headroom.render.mjs`가 작성했으며, `node bench/compression/readme-headroom.check.mjs`가 보호합니다. 수동으로 편집하지 마십시오. 각 그림 셀은 '문자 / 토큰'을 제거한 값이며, 토큰 수는 Anthropic의 토크나이저를 사용하여 양쪽 팔(arms)의 실제 출력에 대해 계산되었습니다. 'zero-turn ids'는 해당 워크로드에 심어진 식별자 중 에이전트가 턴을 소비하지 않고 가질 수 있는 개수—텍스트 내에서, 또는 텍스트만으로 재구성할 수 있는 개수입니다.
| workload | payload | theirs | ours | ours, proxy | ours, preset | zero-turn ids |
| :--- | :---: | :---: | :---: | :---: | :---: | :---: |
| agentic-conversation | 244,908 | 37.3% / 33.4% | 42.9% / 30.8% | 52.4% / 49.0% | 100.0% / 100.0% | 2099 / 2099 / 0 |
| ... |
Recorded 2026-10-17 at `b1231a8c`, by the command in the record's `regenerate` field, over HeadRoom 0.37.0's own fixtures and harness. That arm runs HeadRoom itself, so CI does not re-derive it -- it checks these figures and this provenance against the record instead.
<!-- HEADROOM-TABLE:END -->
<!-- HEADROOM-CORPUS:START -- CORPUS:START와 CORPUS:END 사이의 모든 그림은 `bench/compression/headroom/results/head-to-head.json`의 `totals`에 나타나야 합니다. `node bench/compression/readme-headroom.check.mjs`가 보호합니다. 수동으로 편집하지 마십시오. -->
코퍼스 전체를 기준으로 프록시는 문자(character)의 82.5%와 토큰(token)의 91.5%를 제거합니다. 최적 구성은 각각 51.5%와 61.4%를 제거합니다. 아무것도 가져오지 않을 때(nothing is ever fetched back), 프록시는 18개 중 18개 행에서 이들의 최고 성능보다 저렴하며, 이는 마커가 설계된 범위의 끝 지점입니다. 모든 이동된 블록을 가져올 때(when every moved block is fetched back)도 18개 중 17개 행에서 더 저렴합니다. 블록 엔진만으로도 문자 기준으로 72.0%, 토큰 기준으로 55.9%를 제거하는데, 이는 이들보다 많은 문자를, 적은 토큰을 제거하는 수치입니다.
<!-- HEADROOM-CORPUS:END -->
여전히 그들이 우위를 점하는 부분과 그 이유. codebase-exploration, grep-output, raw-build-log, sre-debugging 및 네 개의 원본 데이터 행에서, 이들의 최고 성능은 토큰을 83.2-99.8% 제거하고 블록 엔진은 12.7-62.4%를 제거합니다. 그들이 사용하는 방식은 **콘텐츠 캐시 참조(content-cache reference)**입니다. 즉, 블록을 작게 만드는 것이 아니라 요청에서 빼내어 스토어에 넣고 <<ccr:hash,kind,size>> 마커로 대체하는 것입니다. 블록을 저장할 곳이 없는 엔진은 이를 매칭할 수 없으므로, 해당 행들에서는 'ours' 열이 축소량(reduction)과 아무것도 가져오지 않을 때의 비용(cost) 모두에서 뒤처집니다. 프록시 역시 같은 방식으로 작동합니다. 8개 행 중 5개 행에서는 그들보다 앞서고, grep-output과 raw-build-log에서는 동등하며, codebase-exploration에서는 0.1 포인트 정도 뒤처집니다. 프록시의 비용이 그들보다 더 많이 드는 유일한 행은 agentic-conversation이며, 이는 이동된 모든 블록을 가져올 때만 해당합니다. 그들은 해당 대화 내용을 전혀 빼내지 않으므로 양쪽 끝에서 비용이 동일하지만, 프록시는 일부를 옮기고 원하는 각 부분에 대해 검색(retrieval) 비용을 지불해야 합니다.
<!-- HEADROOM-CORPUS:START -->
다른 열은 턴(turn)입니다. 마커는 내용물이 아닙니다: 이것이 무엇을 의미하는지 읽으려면 에이전트가 요청(request)을 사용합니다. 코퍼스에 심어진 13,792개의 리텐션 유닛 중, 블록 엔진은 5,223개를 텍스트에 유지하고 8,569개는 텍스트만으로 재구축할 수 있어, 이들 모두 추가적인 턴 없이 그 자리에 있습니다. 반면, 상대방은 6,711개를 텍스트에, 그리고 저장소(store) 뒤에 7,075개를 배치하여 단 한 번의 검색 호출(retrieval call)만으로 접근할 수 있게 합니다.** 우리 쪽에서는 복구 불가능한 것이 0개이고, 상대방은 6개입니다.** 상대방이 최선의 방법으로 코퍼스 전체를 가로지르는 17번의 왕복(round trips)을 하여 콘텐츠를 되찾는 반면, 블록 엔진은 0회에 그칩니다. 프록시(proxy) 역시 상대방처럼 이동하는 모든 블록마다 하나의 턴을 교환하며, 이 턴이 비용 모델의 페치율(fetch-rate) 측면에서 가격이 매겨지는 부분입니다.
<!-- HEADROOM-CORPUS:END -->
상대방 마커가 비용을 지불하는 것은 단순히 크기 때문만이 아니라 그 비용 자체가 책정되기 때문입니다. 상대방의 마커는 프록시가 요청과 함께 headroom_retrieve 도구(tool)를 전송하기 때문에만 사용 가능합니다. 이 도구는 기본적으로 활성화되어 있으며(ccr_inject_tool), 세션이 이를 사용한 후의 모든 요청에 대해 마찬가지입니다. 따라서 상대방의 최적 경로가 마커를 남기는 모든 행(row)에는 해당 도구 정의 비용도 청구되며, 이는 bench/compression/headroom/ccr-tool.py에 의해 상대방 자체 패키지에서 기록됩니다. 이 도구를 처음 추가하는 턴은 뒤따르는 전체 캐시 접두사(cached prefix)를 재작성하기도 하지만, 이는 청구되지 않아 상대방에게 유리합니다. 반면, 우리 방식은 도구가 필요 없습니다: 우리의 마커는 에이전트가 이미 가지고 있는 Read 도구를 사용하여 열 경로(path)를 지정하며, 이 경로는 짧게 꾸며낸 길이보다 프록시가 실제로 작성하는 길이(<home>/.tok/<pid>/<15 digits>, src/compress/spill-path.ts)로 가격이 매겨집니다.
browser-session은 주로 fixture입니다. 이 페이로드에는 4개의 이미지가 포함되어 있으며, 그중 2개는 구별되며, 여기에 들어있는 base64는 사진을 찍어서 생성된 것이 아니라 생성(generated)된 것입니다. 별도의 이미지 하나만으로도 160,032자에서 5,572자로 줄어들는데, 이는 실제 PNG 파일로는 불가능한 수치입니다. 실제 세션에 전달되는 것은 중복성입니다. 즉, 이미지 바이트의 절반이 이미 요청에 포함된 이미지의 두 번째 복사본이며, 이는 전체 페이로드의 44.3%를 차지합니다. run-theirs 마커 이름은 여전히 위 출력에 있으므로, 독자는 아무것도 요청하지 않고도 이를 재구성할 수 있습니다. 이것이 바로 캐릭터 수가 토큰 수보다 훨씬 더 많이 떨어지는 이유입니다. 이미지 토큰은 양쪽 팔의 픽셀에서 모두 계산되기 때문입니다.
전체 표를 재현합니다:
python bench/compression/headroom/run-theirs.py <headroom-clone> <out-dir>
python bench/compression/headroom/resolve-theirs.py <headroom-clone> <out-dir>
...
그들이 발표한 디자인에 반하여
두 번째 팔은 자체 벤치마크 생성기의 정의(opaque hash markers, history compressed, a retrieval tool and system message injected)를 사용하여 그들의 발표된 설계를 재구현했습니다. 따라서 네 가지 워크로드와 공개 비교기가 있는 경우, 클론 없이도 확인할 수 있습니다. node bench/compression/proof.mjs 실행:
<!-- PROOF-TABLE:START -- 아래의 모든 수치는 반드시 `node bench/compression/proof.mjs` 출력에 나타나야 합니다. `node bench/compression/readme-table.check.mjs`가 보호합니다. 임의로 수정하지 마십시오. -->
| workload | payload | theirs | ours | verdict |
|---|
| code-search | 17765 | 92.1% | 97.8% | ours |
| ... | | | | |
<!-- PROOF-TABLE:END -->
네 가지 워크로드입니다. 왜냐하면 이 팔이 네 가지에 대해 공개 비교기를 가지고 있기 때문입니다. head-to-head 하네스는 18개를 점수화했으며, 나머지 14개는 이 팔에는 없고 위 표에서 그들의 실제 구현과 비교하여 점수화되었습니다.
**codebase-exploration**은 원래 그들의 것이었지만 이제 우리의 것이 되었으며, 이로써 7.3점의 점수를 얻었습니다. 이전 버전의 표에서는 해당 행에 대해 우리에게 61.3%를 주장했고, 이후 동률을 기록했으며, 나중에는 46.0%가 발표되어 그들의 47.4%와 비교되었습니다. 처음 두 수치는 여기(현재)가 아닌 브랜치에서 나온 수치였고, 세 번째 수치는 작성되었을 당시 이 트리에서는 사실이었습니다. 이후 log 엔진 커밋 네 번으로 인해 54.2%로 이동했고, 내부의 해시뱅크를 가리는 방식으로 연결된 블록이 여전히 파싱되면서 64.9%로 이동했으며, 모든 마커를 여섯 글자 스탬프로 인증하는 것이 0.2점을 되돌렸고, 프록시 싱크가 실제로 이름을 지정하는 방식(카운터의 위치가 아닌 내용물의 다이제스트로)으로 임시 파일을 이름 지은 것이 또 반 점을 얻어 64.2%에 도달했습니다. 그러자 이 화폐 단위는 더 이상 추정치가 아니게 되었습니다. 위 표의 모든 수치는 이제 Anthropic 자체 토크나이저가 해당 텍스트에 대해 반환하는 카운트이며, 이는 커밋된 고정값(fixture)으로 기록되어 오프라인 상태를 유지합니다. 그리고 그 아래 행은 **53.7%**를 나타내고, 프록시 싱크가 실제로 작성하는 경로의 가격 책정—콘텐츠 주소 지정 방식이고 소수점 형태이며, 여기서 이 팔(arm)이 32자리 16진수 이름을 발명했던 곳—은 **54.7%**로 이동했습니다. 이것이 역사상 가장 큰 변화이며 엔진에 관한 것이 아닌 유일한 변화입니다. 문자를 네 개로 나누는 방식은 컨트롤의 16진수 마커에도 너무 많은 비용을 부과했고, 우리 자신의 스탬프에는 너무 적게 부과했습니다. 원래 스탬프는 닿소리가 없는 31진법 알파벳의 여섯 글자였으며, 광범위한 알파벳에 대한 무작위 문자열은 BPE 토크나이저가 가질 수 있는 최악의 경우와 유사하므로 측정된 비용은 5.52 토큰이었는데, 이는 chars/4 방식이 청구하는 2보다 높았습니다. 이 세 가지는 잘못 움직인 유일한 수치들이며, 그중 어느 것도 회귀(regression)가 아닙니다. 각각은 하네스가 우리에게 빠뜨리고 있던 것에 대해 비용을 부과하고 있는 것입니다. 이러한 비용을 볼 수 있게 된 것이 다음 변화에 대한 대가를 지불했습니다: 스탬프는 이제 아홉 자리 십진수이며, 이는 여섯 글자가 가지고 있던 것보다 약간 더 많은 엔트로피를 담고 있으며, 평균 5.52가 범위상 4에서 7이었던 것에 비해 매번 추출 시 4 토큰을 비용으로 지불합니다.
이 행의 기존 스탬프와 비교했을 때 — 같은 나무에, 같은 고정 장치에, 단지 베이스-31 형태로 다시 핀된 스탬프만 다를 뿐인데 — 그것은 0.1점을 구매했고, 0.1점이 그 정직한 크기입니다: 마커가 4분의 1보다 저렴해졌지만, 마커는 엔진이 방출하는 것 중 작은 부분에 불과하므로 헤드라인의 변화는 마커당 절감액이 시사하는 것보다 훨씬 적습니다. 산문 속 숫자는 측정된 나무에 대한 사실이며, 이것이 바로 bench/compression/readme-table.check.mjs가 위 블록의 모든 수치를 신뢰하기보다는 하네스에서 재도출하는 이유입니다.