🧩 MCP生态

轻量级MCP Server降低Claude Code上下文token消耗98%实战方案

发布时间:2026-04-15 分类: MCP生态
摘要:利用轻量级MCP Server将Claude Code的上下文token消耗降低98%问题在哪Claude Code 的上下文开销高得离谱。一个中等长度的代码审查对话,轻松吃掉 2000+ token——其中 90% 是重复的文件路径、函数签名、注释块和之前几轮已确认的结论。小团队没预算为每条请求支付高昂的上下文费用,又不能砍掉上下文,否则模型立刻“失忆”,给出脱离上下文的错误建议。这不是模...

封面

利用轻量级MCP Server将Claude Code的上下文token消耗降低98%

问题在哪

Claude Code 的上下文开销高得离谱。一个中等长度的代码审查对话,轻松吃掉 2000+ token——其中 90% 是重复的文件路径、函数签名、注释块和之前几轮已确认的结论。小团队没预算为每条请求支付高昂的上下文费用,又不能砍掉上下文,否则模型立刻“失忆”,给出脱离上下文的错误建议。

这不是模型能力问题,是工作流设计问题。

Hacker News 上那个跑通的方案

有人在 HN 发帖:用不到 200 行 Python 搭了个 MCP Server,把 Claude Code 的上下文 token 压到了原来的 2%。不是靠压缩,也不是丢信息,而是让上下文真正“有用”。

背景很实在

团队做 AI 辅助的前端组件生成工具。用户上传一个 React 组件文件,再提几个修改需求(比如“加 loading 状态”“支持 dark mode”)。原始流程是:每次请求都把整个文件 + 所有历史修改指令 + 上一轮生成的代码全塞给 Claude。3 轮交互后,上下文就膨胀到 3500 token,成本翻倍,响应还变慢。

他们试过摘要、滑动窗口、向量检索——效果都不稳定。最后转向 MCP(Model Context Protocol),不是因为它“新”,而是它定义了明确的上下文生命周期:context → action → result → update

技术怎么落地

MCP 不是跨云协议。它是 Anthropic 提出的、专为 LLM 工作流设计的轻量通信规范,核心就三点:

  • 上下文按语义分块(file, diff, requirement, feedback)
  • 每块带 idversion,支持增量更新
  • Agent 和模型之间只传 id 引用,不传原始内容

他们的轻量级 MCP Server 就干三件事:

  1. 结构化预处理
    把用户输入拆成标准 MCP 块:源码存进 file://src/Button.tsx@v1,需求转成 requirement://add-loading-state,上一轮反馈标记为 feedback://v2
  2. 上下文裁剪
    不传全部块,只传当前任务强依赖的块 ID 列表。比如“加 loading”这步,只引用 file://src/Button.tsx@v1requirement://add-loading-state,跳过前两轮关于 dark mode 的讨论。
  3. 结果缓存与版本联动
    每次 Claude 返回新代码,Server 自动创建 file://src/Button.tsx@v2,并把旧块 v1 标记为 deprecated。后续请求自动切换引用。
import mcp
from mcp.server import StdioServer
from claude_code import Client

class ClaudeMCPServer:
    def __init__(self):
        self.claude = Client()
        self.context_db = {}  # {id: content}

    def handle_context_request(self, req: mcp.ContextRequest):
        # 只加载 req.referenced_context_ids 对应的内容
        context = []
        for cid in req.referenced_context_ids:
            if cid in self.context_db:
                context.append(mcp.ContextItem(
                    id=cid,
                    content=self.context_db[cid]
                ))
        return mcp.ContextResponse(context_items=context)

    def handle_action_request(self, req: mcp.ActionRequest):
        # 构造精简 prompt:只含 referenced_context_ids 对应的语义块
        prompt = self.build_prompt(req)
        response = self.claude.chat(prompt)
        
        # 提取新生成的文件块,存入 context_db 并返回 versioned id
        new_file_id = self.save_new_file(response)
        return mcp.ActionResponse(
            result=mcp.Result(
                status="success",
                output={"new_file_id": new_file_id}
            )
        )

# 启动:mcp run --server python:main.py

部署就是一行命令:

pip install mcp-server claude-code && python server.py

不需要 Kubernetes,不连 Redis,单进程跑满 CPU 也能撑住日均 5000 请求。

实测数据

场景原始上下文 tokenMCP Server 后下降
单次代码修复12403897%
三轮迭代修改36807298%
多文件关联重构41209598%

响应时间平均快 1.8 秒——因为 Claude 不再花 3 秒解析重复的 node_modules 路径和无用的 console.log 示例。

这东西为什么能直接用

  • 零训练成本:不碰模型权重,不调超参,纯工作流层改造
  • 不改业务逻辑:现有 Agent 只需把 send_to_claude() 替成 mcp_client.action()
  • 天然兼容:LangChain、LlamaIndex、AutoGen 都已支持 MCP Action 调用
  • 可审计:所有上下文块存本地 JSON 文件,随时查哪次用了哪个版本的文件

怎么自己搭一个

  1. pip install mcp-server
  2. server.py,继承 mcp.Server,实现 handle_context_requesthandle_action_request
  3. handle_action_request 里调 Claude,但只拼接 req.referenced_context_ids 对应的内容
  4. 把生成结果按语义存成新 context item(比如 file://...@v2
  5. mcp run --server python:server.py

缓存用 dict 就够,要持久化就写 JSON 文件。别一上来就上 Redis——90% 的小团队根本用不到。

MCP 的价值不在协议本身,而在于它逼你把“上下文”从一坨文本,变成可标识、可版本、可裁剪的资源。Claude 不是变便宜了,是你终于不再喂它吃垃圾。

返回首页