Token优化MCP服务器

一个高性能的模型上下文协议(MCP)服务器,通过结构代码摘要、智能文件分块和语义向量搜索,减少LLM令牌消耗和API开销,确保AI代理以最小负载获得高保真上下文。

  • by Tjpatel16
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Tjpatel16/token-optimizer-mcp

使用说明

🚀 Token Optimizer MCP

A high-performance Model Context Protocol (MCP) server that slashes LLM token consumption and API overhead. Using structural code summarization, intelligent file chunking, and semantic vector search, it ensures your AI agent receives high-fidelity context with minimal payload—maximizing both speed and cost-efficiency.


📖 介绍

使用代理LLM和大型代码库通常意味着烧穿大量上下文窗口,导致API成本过高,响应时间缓慢。

令牌优化器MCP 通过提供一套高度优化的工具来拦截请求并确保LLM,从而解决了这个问题 _只收到它需要的东西_它利用结构分块、代码骨架提取、统一的Git差异化和严格的字符限制来压缩有效载荷,同时保持LLM运行所需的语义上下文。

此外,内置 令牌跟踪器 持续计算您在每次请求中节省的令牌(和估计的美元)数量。


🛠️ 安装

要求: Python 3.10+。您可以通过以下方式安装该软件包 pip。根据是否需要语义搜索功能来选择安装方法。

1.基础安装(推荐)

这将安装核心MCP服务器和所有标准令牌优化工具。它重量轻,对大多数用户来说足够了。

pip install token-optimizer-mcp

2.预埋件安装

如果要启用 语义搜索(矢量存储) 功能。此安装包括其他依赖项,如 faiss-cpu 和 numpy.

[!提示] 已经安装了基础软件包? 没问题运行此命令将通过添加缺失的嵌入相关依赖项来“升级”您的安装。

pip install "token-optimizer-mcp[embeddings]"

⚡ 特性

  • 智能文件分块:永远不要再发送10000行文件。用大写字母读取精确的行范围。
  • 结构概述:提取类、导入和函数签名,为LLM提供文件的拓扑图,而不需要原始代码的有效载荷。
  • 修剪搜索:递归代码库搜索,仅返回文件路径和微片段。
  • 德尔塔迪芬:仅返回修改后的行(git diff),确保未修改的代码永远不会被重新处理。
  • 内存总结:LLM的持久JSON存储,用于存储压缩的会话上下文,防止需要重放巨大的历史记录。
  • 语义代码搜索(嵌入):
    • 即时索引:自动将代码库分块并索引到向量空间中。
    • 相似性检索:允许LLM使用优化的FAISS向量存储,按含义而不仅仅是关键字查找相关代码段。
    • 高效上下文:弥合了“知道文件存在”和“在不阅读整个仓库的情况下找到确切的相关代码段”之间的差距。

🚀 用法

安装后,CLI工具既充当MCP服务器入口点,又充当管理界面。

1.MCP客户端配置

要将优化器连接到您的代理(例如,Claude Desktop、Cursor或Codex、Antigravity),只需定义环境变量并将命令指向 token-optimizer-mcp:

{
  "mcpServers": {
    "token-optimizer": {
      "command": "token-optimizer-mcp",
      "args": ["run"],
      "env": {
        "ENABLE_TOKEN_TRACKING": "true",
        "TOKEN_COST_PER_1K": "0.003"
      }
    }
  }
}

2.管理CLI命令

您可以在终端中手动运行这些命令来管理服务器的缓存并查看您的节省。

命令 描述
token-optimizer-mcp run 通过启动MCP服务器 stdio (标准)。
token-optimizer-mcp run --sse 通过SSE(HTTP)启动MCP服务器。
token-optimizer-mcp stats 打印您的终身代币和货币储蓄。
token-optimizer-mcp reset-stats 擦除历史令牌跟踪器数据。
token-optimizer-mcp clear-memory 清除持久的LLM内存存储。

[!注意] 这 run 命令通常在配置后由MCP客户端(如Claude Desktop)自动处理。除非您正在测试或调试,否则通常不需要手动运行它们。

示例:检查您的储蓄

$ token-optimizer-mcp stats

📊 Lifetime Token Savings
======================================
Total Requests:      24
Tokens Used:         8,421
Tokens Saved:        114,290
Estimated Savings:   $0.3428
Tracking Since:      2024-05-12T10:00:00Z
--------------------------------------

⚙️ 配置文件(环境变量)

优化器完全通过环境变量配置。在您的 mcpServers 配置块来调整标记器的攻击性。

变量 默认值 描述
PROJECT_ROOT . 您正在分析的存储库的绝对路径。
MAX_FILE_LINES 300 文件读取工具返回的行数的硬上限。
MAX_OUTPUT_CHARS 8000 全局截止限制适用于 全部 工具响应。
MAX_PREVIEW_CHARS 200 片段长度与搜索结果一起返回。
MAX_SUMMARY_CHARS 2000 结构文件摘要的截断限制。
ENABLE_TOKEN_TRACKING true 切换持久 ~/.cache 令牌跟踪器打开/关闭
TOKEN_COST_PER_1K 0.003 对成本估算至关重要。 该值表示以下各项的成本(单位:美元) 1000个输入令牌 对于您正在使用的模型。跟踪器使用它来计算您的货币储蓄。

💡 理解 TOKEN_COST_PER_1K

令牌节省是使用标准启发式方法计算的: 1个令牌≈4个字符。要获得准确的美元节省,您应该将此值与特定型号的定价相匹配:

  • 克劳德·十四行诗4.6: 0.003 (默认)
  • 克劳德作品4.6: 0.015
  • 谷歌双子座3 Pro: 0.0025
  • GPT-5编码: 0.0020

[!重要] 检查您的提供商的当前定价。 上述数值仅供参考,模型定价经常发生变化。始终从您的AI提供商的官方文件中验证最新的“输入令牌”价格。

[!注意] 使用的度量始终是 输入/提示令牌,因为这就是优化(和节省)发生的地方。

可选嵌入变量

(仅在通过以下方式安装时才相关 [embeddings])

  • EMBEDDING_CHUNK_SIZE (默认值: 50):矢量化时每个块的行数。
  • FAISS_INDEX_PATH:存储FAISS的绝对路径 .faiss 数据库。

🧠 在引擎盖下面

因为Claude、chatGPT和大多数代理框架不知道它们有无限的上下文,所以它们经常要求提供整个上下文 app.js 文件只是为了检查导入。 令牌优化器MCP 拦截此行为:

  1. 工具调用:LLM电话 read_file_chunk(path="app.js", start_line=1, end_line=5000).
  2. 上限执行:服务器拦截请求,将其限制为 MAX_FILE_LINES (例如300)。
  3. 储蓄计算: token_tracker.py 使用行业标准启发式方法计算发送5000行与返回300行之间的令牌增量(len(str) / 4).
  4. 猪背统计:服务器返回有效负载 旁边 这 _token_stats 对象。LLM可以准确地看到它刚刚通过约束节省了多少令牌。

🐛 Bug报告和功能请求

如果您遇到错误或意外行为,请 打开一个问题 报告它。

同样,如果你需要一个新功能或有改进的想法,你可以通过在GitHub上打开功能请求来请求它。


📝 许可证

根据MIT许可证分发。看 LICENSE 了解更多信息。