
context-doctor
io.github.KushalP1由 GitHub 账号 KushalP1 发布v0.48.0更新于 Nov 14, 2026
Cut LLM agent token use in Claude Code, Cursor, Codex, Gemini CLI. Local, no API key. gAI Ventures.
概览
本地 MCP 服务器,用于统计 AI 编程代理的 token 与费用去向,并在上下文被重复发送前削减浪费。
- 可以做什么
- 统计花费与节省:跨 Claude Code、Codex、Gemini CLI 和 Cursor 的费用报告,各项修复的节省、开销与缓存未命中分析
- 精简上下文:在 token 预算内只打包文档或代码库中问题所需的片段,并从会话记录中召回相关行
- 检查会话:针对会话、对话文件或代理轨迹给出 token 明细、浪费发现、仪表盘与报告
- 提示缓存建议:指出 Anthropic 请求应在何处设置缓存控制及其节省量
- 自动清理:在模型切换前提醒、预估子代理费用、指导压缩并执行花费预算
- 适用场景
- 适合在 Claude Code、Cursor、Codex 或 Gemini CLI 中进行长时间代理会话、想弄清上下文真实花费并削减浪费时使用,也适合避免把大文档和日志整段塞进提示词。
- 运行要求
- 以本地 Node.js 20+ 进程运行(npx context-doctor mcp),支持 macOS、Linux 和 Windows;无需 API 密钥或账号。部分功能会读取本地代理会话文件与设置,可选的代理会监听本地端口。
安装
在 SourceWeft 中
- 打开 控制台中的 context-doctor,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
context-doctor 🩺
[CI] [npm] [npm downloads] [MCP Registry] [AgentHub 已收录:context-doctor] [license: MIT] [macOS | Linux | Windows]
See where your AI agent's tokens go, and stop paying for the ones that do nothing.
AI agents re-send their whole context on every message: old tool output, pasted files, long instructions. A 500k-token session pays for all of it again each time, and at full price after a coffee break, when the prompt cache has expired. context-doctor measures that waste on your own sessions, in dollars, and removes it at the moments it pays: before it enters the context, while it sits there, and on every request. It runs on your machine, needs no API key, sends no telemetry, and works with Claude Code (terminal, IDE, desktop app), Claude Desktop, ChatGPT, Codex, Cursor, Gemini CLI, GitHub Copilot, any app on the Anthropic, OpenAI or Gemini API, and CI. MIT licensed, Node 20+, macOS, Linux and Windows.
[npx context-doctor savings: input billed, what /compact at cold resumes, autopilot and an earlier auto-compact window would have saved]Which context-doctor is this? Several projects share the name. This one is
context-doctoron npm andio.github.KushalP1/context-doctorin the official MCP Registry (see the entry). The registry is a service, not a list in a GitHub repo: themodelcontextprotocol/serversrepository holds only reference servers and points to the registry for the rest. Built and maintained by gAI Ventures.
Quick start
See it first, nothing installed: in a terminal, npx context-doctor reads your last 30 days of Claude Code sessions on this machine and shows what the fixes with no quality cost would have saved, as one total, then asks once: y applies them all, npx context-doctor fix undo puts them back. The fixes that trade something (compacting earlier, the subagents' model) are listed with their dollars and the command for each.
Pick where you work. Each takes about a minute and is fully reversible.
What it does
Measure, in dollars, on your own history (profiling)
spend: one bill across Claude Code (subagents and workflow agents included), Codex, Gemini CLI and Cursor, by tool, project, model and day, as billed at list rates (spend and budget).savings: what your recent Claude Code sessions cost and what each fix below would have saved, replayed request by request against what you were billed.overhead: what every request re-reads before your message (system prompt, tools, MCP servers, CLAUDE.md, rules, memory), each file priced per month.tasks,reads,subagents,compactions: cost per commit; files read into session after session; whether each subagent was cheaper than the same steps in the parent; whether sessions work worse after compacting.cache-misses: requests that re-wrote the prompt cache while it should still have been warm, priced, by model and context size, with the cause where the transcript shows one.limits: your plan's 5-hour and weekly windows (Claude Pro/Max, recorded by the status line) and Codex's, the pace and when each runs out, and what 1M tokens of each kind cost in % of the limit, fitted on your own readings with the error shown.cache-plan <request.json>: where an Anthropic API request should carrycache_control, and what it saves over N calls.session,watch,analyze,report,dashboard: token breakdown and wasted-context findings for any session, conversation file or agent trace.
Keep waste out of the context (pack and overhead)
pack(and thepack_contextMCP tool): only the chunks of a big document, PDF, log or codebase that a question needs, within a token budget, instead of the whole thing.recall(and therecallMCP tool): the few lines of this session's own transcript a question needs, including turns a compaction summarised away and tool output autopilot cleared, with their time and position; secrets masked.overhead split: turns a heavy CLAUDE.md or memory file into a lean one plus a reference file the agent opens when needed, word for word, nothing lost.ciand the GitHub Action: review memory-file growth like any other cost.
Remove waste automatically
- A model-switch warning (
PreModelSwitch, Claude Code 2.1.251+) shows what a/modelswitch costs before it happens: the whole context re-written into the new model's cache. - A subagent price (
PreToolUseon the Agent tool) shows what a subagent costs before it starts, at your own median for that type (the author's: $3.99 for general-purpose, $1.43 for Explore, 422 runs in 30 days), with the Sonnet price where it would run on Opus or Fable, and a total when launches bunch up. It never blocks. - A compaction hook (
PreCompact) tells each Claude Code compaction what the session cannot lose (files changed, open tasks, your instructions, failing tests), so compacting saves tokens without losing the thread. - An every-prompt hook (Claude Code, Codex, Gemini CLI; Cursor after each tool call) tells the model its real context size and the largest waste, and offers
/compactwhen you return to a big session after the cache expired. - A session's own price: once a session passes $25, $100 and $500 (subagents included), the every-prompt hook tells you what it has cost and what each message now costs, and that
/compactor a fresh session cuts it (docs). budget 50/day(or/week): the every-prompt hook in Claude Code, Codex and Gemini CLI says when today's spend passes 50%, 80% and 100% of it, and with--blockholds prompts over budget; the status line shows$12/$50 today.compact-window: sets Claude Code's own auto-compact window, measured on your history first. Works in the desktop app too.cache-ttl: replays your own pauses at a 5-minute and a 1-hour prompt cache and sets Claude Code'spromptCacheTtlto the cheaper one (the author's: 7% less main-conversation input at 1 hour; 22% less than the 5-minute default an API key gets). Same content either way, so no quality cost (fixes).- Autopilot: a local proxy (or SDK wrapper) that clears stale tool output only when the prompt cache is cold, so a request never costs more.
What it saves
Measured, not modelled, on every Claude Code session on the author's machine (mostly Opus 5 and Fable 5 with the 1M window), priced the way the prompt cache bills it (cached reads at each model's read rate, 2.5-10% of input; writes 1.25x input for the 5-minute cache, 2x for the hour) at API list prices. Re-measured on 2026-10-13 with each request at its own model and current prices (Opus 5.5 is $4 per million input tokens with $0.20 reads). context-doctor savings runs the same measurement on yours.
1. Compacting when you come back (every Claude Code surface, desktop app included). 133 days, 479 returns to a session over 150k tokens after its prompt cache expired (65 idle minutes on the 1-hour cache, 10 on the 5-minute one that Claude Code 2.1.295 often writes); median context at the return, 522k tokens.
Each return counts only the messages up to the next return, and the compaction request is charged as a cost. Not counted: files the model may re-read after compacting, and what the summary leaves out. That is why this is advice with the numbers attached, not something done for you.
2. Autopilot (Claude Code in a terminal or IDE, API apps). 133 days, 67 sessions, replayed through the shipped autopilot code with real timestamps:
30 of 67 sessions save something, the best 34.9%: long sessions that go idle are where the money is. These sessions ran in the desktop app, which autopilot cannot reach, so for the author this is what the same sessions would have saved in a terminal; context-doctor savings separates the two for you. How it works →
3. Compacting earlier (automatic, every Claude Code surface, desktop app included). The offer in 1 is advice, and on the author's machine it was followed 1 time in 33. Claude Code has a native setting that needs nobody to follow anything: autoCompactWindow in ~/.claude/settings.json makes it compact as if the window were that size. context-doctor compact-window replays each session request by request at several sizes, priced as the cache bills (each simulated compaction pays its own request and a 20k-token summary at the output rate), and changes nothing until you pick one:
41 sessions. The cost is real: each compaction replaces the session's history with a summary, so a smaller window trades detail for money. That is why the command shows the table first and sets a window only when you name one (context-doctor compact-window 400k; off undoes it, and a backup of settings.json is kept).
Also measured:
- pack: 9 of 10 questions about this repository answered from 0.6% of its tokens. How →
- Counting Claude correctly: current Claude models pack 2.75 characters per token on prose (2.4 on code), not the 4 most tools assume: Claude counts about 40% more tokens than the usual 4-characters rule (~45% on prose, ~33% on code).
context-doctor accuracyre-checks the ratio on your own sessions. Why →
On a Claude subscription you do not pay list price; the same tokens come out of your usage limit instead. Anthropic does not publish how limits weight cached tokens, so read the dollars as the size of the effect, not as your bill.
Where it works
Not claimed, because no process on your machine sends those requests: trimming inside Claude Desktop chat, claude.ai, ChatGPT, Cursor's own subscription models, or Codex signed in with ChatGPT. Those get the rules and the measurements above, not autopilot.
The MCP server hands these standing rules, verbatim, to every chat where it is enabled (Cursor and Claude Code put them in front of the model; for Claude Desktop's classic Chat that is unverified):
- When asked about tokens, cost, speed or limits, and once at ~30 turns or 3+ large pastes: call profile_context BEFORE answering; in a chat app pass a
sketch. Act on its top finding. Do not estimate token counts yourself.- When a chat grows long, offer a handoff once (save_handoff): only a new chat cuts its history.
- Summarize any paste or tool result over ~2k tokens into the points you need.
- Refer to earlier content by name; never re-quote it or inline base64.
- For a big file you won't edit, call pack_context with the question; don't read it whole.
- If optimize_context returns a pruned-turns digest, write its ≤150-token summary.
Rules 1-4 end exactly at character 512, the part ChatGPT's guide says must stand alone.
Commands
Privacy: everything runs on your machine. No API key is needed for anything core, nothing is sent anywhere, and no telemetry is collected; the proxy forwards your app's own credentials untouched and holds none of its own.
Speed: the history reports read each transcript once per run and keep what they took from it (token counts, times, ids, no message text) in ~/.cache/context-doctor, so a second fix or savings answers in under a second and later runs read only what was appended. CONTEXT_DOCTOR_NO_CACHE=1 keeps nothing; uninstall removes it (details).
What's new
- 0.48 Directory-ready, quality on your own plan, and MCP SDK v2: a build of the plugin for Anthropic's directory (strict-clean, with and without the mod);
ab --via claude-codemeasures the subagent lever on your own sign-in, no API key; the price check covers OpenAI, Google, Codex and Gemini CLI and warns before a price ends; the MCP server speaks protocol 2026-07-28 to Claude Code and the old handshake to everyone else. Fixed: installing the plugin from the marketplace no longer pulls 80 MB of build tools into Claude Code's cache (details). - 0.47 One keystroke to a saving, the mod through
install, a weekly live check, and an audit of 0.46: a barecontext-doctorin a terminal shows the fixes that cost no quality as one monthly total and asks once (the author's: $469 a month: long Bash output to a file, the 1-hour cache). On Claude Code 2.1.286+,installenables the plugin, so npm users get the mod too (limit readings and Claude Code's own cost after each turn, Compact first,/context-doctor-fix). A weekly canary runs the plugin and mod in the newest Claude Code against a local mock API.spendestimates compaction requests and, for terminal sessions, subagent progress summaries, andfixcan switch the summaries off. An audit fixed, among others, the GitHub Action's YAML (it could not load), programs planted in a cloned repository running on Windows,pack_contextopening network shares, a re-pricing gap after upgrades, and a test that would have failed from 2026-12-16 (details). - 0.46 Fable 5.2, the Desktop app, and an audit: Claude Fable 5.2 is priced (0.45 read it 1.5x too high); managed
modelPricingis honoured; a check catches new models without a price. The plugin's new mod brings limit readings, Claude Code's own cost and/context-doctor-fixwith Apply and Undo buttons to the Desktop app, VS Code and the terminal, and a cache-expiry band with Compact first to the Desktop app and the terminal (Claude Code draws a mod's band on no other surface) (Desktop, details). - 0.45 Price what is billed, and a security pass: fast mode, US-only inference, Haiku 5.5's long-prompt rates, web searches and OpenAI's and Gemini's long-prompt tiers are priced per request in every report, and prices that end on a known day say so. A security pass fixed a cloned repository approving its own MCP servers for
overhead --mcp, a PDF's name running as a command throughpackon macOS, the agents' API-key configs being packed, and the proxy answering a DNS-rebinding page (details). - 0.44 Workflow agents on the bill, current prices, and an audit: Claude Code's workflow agents were in no report: on the author's last 30 days $1,494 of $5,542.
spend, the budget, a session's price,subagentsandfixnow count them, andspendequals an independent sum of every transcript to the cent. Prices re-read from each provider (Sonnet 5.5's cache read $0.10, gpt-5.5 $5/$30, the gpt-6 family); estimates are labelled. An audit fixedoverhead --mcplaunching a cloned repository's unapproved MCP servers,pack_contextreturning the agents' sign-in files, and more (details). - 0.43 Long tool output,
fixfor Codex, and a session's price: every Bash result stays in the conversation and is re-read on every later message until a compaction;fixnow replays them at lower caps and, on a yes, sets Claude Code'sbashOutputMaxChars, so longer output goes to a file the model can still open after a 2,000-character preview (the author's 30 days: $323 less at 8k, 9% of input).fixalso works for Codex: it replays your rollouts at earlier auto-compact limits and setsmodel_auto_compact_token_limitinconfig.toml, on a machine with only Codex too. And the every-prompt hook now tells you once when a session passes $25, $100 and $500, with what each message costs from there (the author's: 15 sessions passed $25 in 30 days and spent $3,369 after). - 0.42 An audit of 0.41: each Codex request counts once (forks repeat their parent's), the budget no longer double-counts a reply streamed across midnight, unpriced models show as such instead of $0, Cursor is read after it quits, and
CODEX_HOMEis followed everywhere.fix's subagent lever reads agent files the way Claude Code merges them, and every writer ofsettings.jsontakes one lock, so concurrent runs lose nothing (details). - 0.41 One bill, a budget, and the subagents' model:
context-doctor spendputs Claude Code (subagents included), Codex, Gemini CLI and Cursor on one bill by tool, project, model and day.context-doctor budget 50/dayhas the every-prompt hook tell you at 50%, 80% and 100%, and with--blockholds prompts over budget; the status line shows$12/$50 today, at about 5 ms a prompt.fixgainssubagent-model: subagents run on your main conversation's model (Opus or Fable included), andCLAUDE_CODE_SUBAGENT_MODELset to Sonnet 5.5 would have cost the author $632 less in 30 days (38% of the subagents' $1,658); it changes the model, so it is applied only when you name it, andfix undoreverts it. - 0.40 Reports in under a second:
fix,savings,compact-window,cache-ttl,cache-missesandoverheadread each transcript once and keep what they took from it in~/.cache/context-doctor, so a second run reads only what was appended:fix23.5 s → 0.4 s,savings41 s → 0.6 s on the author's 2.7 GB history, every figure unchanged (details). Also from a QA pass on 0.39:installthenuninstallgives every config back byte for byte, anddoctorwarns about an out-of-date skill. - 0.39
fix, the cache lifetime, the cache clock, and Antigravity:context-doctor fixturns the measurements into changes: every lever ranked by what it would have saved on your own sessions, with what each costs in quality, applied only on a yes, undone withfix undo, and re-measured afterwards (/context-doctor:fixin the plugin).cache-ttlreplays your pauses at a 5-minute and a 1-hour prompt cache and sets Claude Code'spromptCacheTtlto the cheaper one, a price-only change. On Claude Code 2.1.251+ the status line says until when the cache is warm and what going cold costs,cache-missesexplains misses in Claude Code's own words, andinstallwires Google Antigravity. - 0.38 Your limits in their own unit, regressions after upgrades, recall, and a subagent price:
context-doctor limitsshows each plan window's %, pace and run-out time (Claude Pro/Max through the status line, Codex from its rollouts) and what 1M tokens cost in % of it, fitted on your readings with the error;savingsthen speaks in your limit too.cache-missesflags step changes after a Claude Code upgrade,recallsearches the session's own transcript (compacted turns included), a hook prices a subagent before it starts (never blocking), andoverhead pruneswitches off unused MCP servers and skills per project, reversibly. OpenAI caches count as warm for up to 24 hours. An independent QA pass's findings were fixed before the release. - 0.37 Desktop chat apps: a handoff, uploads, compact results, and a security pass: a chat app's history cannot be edited, so the
handoffprompt (Claude Desktop's + menu) has the model write a ≤400-token brief and save it withsave_handoff(secrets masked,handoff://latestto attach in the next chat, the per-turn saving reported: a 52k-token chat drops to ~600).ask_fileanswers from a big file throughpack_context, which over--httpalso takes ChatGPT uploads; ChatGPT gets compact results. An independent QA pass's eleven findings were fixed with tests; behind a tunnel,--httpnow needs--allowed-hosts <tunnel host>(handoff).
Every release, with the details: docs/whats-new.md.
Documentation
- What
installdoes: every file it writes, what runs in each session after, and when you need MCP - Autopilot: how it clears stale tool output, and why it never costs more
- Fixes:
fix(one plan, applied with consent, undone in one step, re-measured),cache-ttland the subagents' model - Spend and budget: one bill across every tool, and a budget the every-prompt hook applies
- The proxy: autopilot and the optimizing mode for your API apps,
/stats, cache advice, a public URL for Cursor - Chat apps: Claude Desktop, ChatGPT, claude.ai and the phone apps; what acts by itself and what only nudges; the MCP tools, prompts and resources
- Handoff: continue a long chat in a new one from a ≤400-token brief
- Profiling: sessions, prompt-cache economics, subagents,
tasks,reads,compactions,cache-misses,limits,report - Pack and overhead:
pack,recall,overhead,overhead splitandoverhead prune - Detectors and fixes: what the profiler finds and what each optimizer strategy changes
- Library:
profileConversation,optimizeConversation,packContext,withContextDoctor - Budgets and CI: the GitHub Action and
.contextdoctorrc - Privacy and the directory submission: what the plugin reads, writes and sends; the package for Anthropic's plugin directory
- Desktop app and VS Code: the plugin's mod: limit readings, Claude Code's own cost and
/context-doctor-fix(Desktop app, VS Code, terminal), and the cache band with Compact first (Desktop app and terminal only) - Editor and status line: the VS Code / Cursor extension and Claude Code's status bar
- Token counts: why counts are "~", how the Claude ratios were measured, exact counts
- Performance: what context-doctor itself costs (its six MCP tool definitions: at most ~2,344 tokens)
- Experiment and A/B suite: does a smaller context help, and does a lever cost quality? Measured on real tasks
- What's new, Roadmap, Python package
Contributing
Issues and PRs welcome — see CONTRIBUTING.md for the rules that keep this tool trustworthy, how to run the checks, and how releases are made. What comes next is in ROADMAP.md: the research items and the steps waiting on the owner's accounts (PyPI, the editor extension's marketplaces, a signed Desktop bundle, the Glama listing).
License
MIT © gAI Ventures
来源:README.md,提交 ea23562
工具
0版本历史
27- v0.48.0最新Nov 14, 2026
- v0.47.0Nov 14, 2026
- v0.46.0Nov 11, 2026
- v0.45.0Nov 8, 2026
- v0.44.0Nov 6, 2026
- v0.43.0Nov 4, 2026
- v0.42.0Nov 3, 2026
- v0.41.0Nov 3, 2026
- v0.40.0Oct 30, 2026
- v0.39.0Oct 29, 2026
- v0.37.0Oct 26, 2026
- v0.35.1Oct 23, 2026
- v0.35.0Oct 20, 2026
- v0.34.0Oct 18, 2026
- v0.33.0Oct 17, 2026
- v0.32.0Oct 13, 2026
- v0.31.1Oct 12, 2026
- v0.31.0Oct 12, 2026
- v0.29.0Oct 10, 2026
- v0.28.0Oct 9, 2026
- v0.27.0Oct 8, 2026
- v0.26.0Oct 6, 2026
- v0.25.0Oct 5, 2026
- v0.24.0Oct 3, 2026
- v0.23.1Oct 1, 2026
- v0.22.0Sep 29, 2026
- v0.21.0Sep 28, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分
