mcpField
P
promptbudget-mcp

promptbudget-mcp

本地服务
github.com/MukundaKattaAI 与智能体020 周前更新

关于 promptbudget-mcp

promptbudget-mcp 是用于按 LLM 令牌预算处理文本的 MCP 服务,提供计数、截断和分块功能,适合整理提示词、聊天记录及长文档。

主要功能

  1. 01估算令牌数与超出量
  2. 02使用四种策略截断文本
  3. 03将文本拆分为预算内的块
  4. 04为文本块添加重叠内容

适用场景

  1. 01检查文本是否符合提示词上限
  2. 02在有限预算内保留最新聊天记录
  3. 03分块处理长文档

MCP 相关

通过 stdio 向 MCP 客户端提供 count_tokens、truncate_to_token_budget 和 chunk_to_budget 工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"mukundakatta-promptbudget": {
"command": "npx",
"args": [
"-y",
"@mukundakatta/promptbudget-mcp"
]
}
}
}
启动命令npx -y @mukundakatta/promptbudget-mcp

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

安装包
npm@mukundakatta/promptbudget-mcp0.2.0

工具

3

收录的工具列表 · 更新于 3 周前

参数类型必填说明
textstring是
max_tokensinteger否可选。如果提供,响应会包含 'fits' 和 'overflow_tokens'。
chars_per_tokeninteger否每个 token 的近似字符数。默认值为 4(OpenAI 经验法则)。

详细介绍

@mukundakatta/promptbudget-mcp

用于按令牌预算处理文本的 MCP 服务。包含三个工具:count、truncate、chunk。适用于 LLM 准备上下文、调整聊天历史,或通过提示词输入较长的源文档时。

工具

工具功能
count_tokens(text, max_tokens?, chars_per_token?)预检。返回 tokens。指定 max_tokens 后,还会返回 fits 和 overflow_tokens。
truncate_to_token_budget(text, max_tokens, strategy?, ...)裁剪文本,使其符合预算。提供 4 种策略:head、tail、head_tail、smart_cut。
chunk_to_budget(text, max_tokens, overlap_tokens?, ...)将长文本拆分为多个符合预算的文本块,并可选择设置重叠内容。

裁剪策略

策略丢弃内容适用场景
head尾部想从开头开始总结的长源文档
tail(默认)头部最新内容最重要的聊天历史
head_tail中间指令和最新一轮都很重要
smart_cut中间,并显示标记与 head_tail 相同,但会让模型知道内容已被截断

实际工作流

###“这段内容能放进我的提示词吗?”

// Tool call from your agent
{
  "name": "count_tokens",
  "arguments": { "text": "<...long text...>", "max_tokens": 4096 }
}
// Returns:
{ "tokens": 5230, "max_tokens": 4096, "fits": false, "overflow_tokens": 1134, "chars_per_token": 4 }

如果 fits: true,则原样发送。如果 fits: false,则在 truncate_to_token_budget(丢失信息)和 chunk_to_budget(多次调用 LLM)之间做出选择。

###“让这段内容符合预算,并保留最新内容”

{
  "name": "truncate_to_token_budget",
  "arguments": { "text": "<chat history>", "max_tokens": 4096, "strategy": "tail" }
}
// Returns:
{ "truncated": "...", "original_tokens": 5230, "truncated_tokens": 4096, "strategy_used": "tail" }

###“将这份 50k-token 文档导入我的 RAG”

{
  "name": "chunk_to_budget",
  "arguments": { "text": "<long doc>", "max_tokens": 512, "overlap_tokens": 50 }
}
// Returns:
{
  "chunks": ["...", "...", "..."],
  "chunk_count": 110,
  "total_tokens": 50000,
  "chunk_max_tokens": 512,
  "overlap_tokens": 50
}

overlap_tokens 值可让分块边界处的句子在下一个文本块中仍保留上下文,这对 RAG 检索质量很重要。

令牌计数准确性

默认值 chars_per_token = 4 是 OpenAI 的经验法则。对英文而言,准确度在约 10–15% 以内。要针对特定模型准确计数,可代入实际分词器的每令牌字符数比值:

分词器每令牌字符数(英文)
cl100k_base(GPT-4、GPT-3.5)~4
o200k_base(GPT-4o)~4.5
Claude 分词器~3.5
Llama 3~3.8

对于非英文文本,需要进一步调低比值(中文约为 1 个字符/令牌,代码约为 3 个字符/令牌)。

安装 — Claude Desktop

{
  "mcpServers": {
    "promptbudget": {
      "command": "npx",
      "args": ["-y", "@mukundakatta/promptbudget-mcp"]
    }
  }
}

Cursor / Cline / Windsurf / Zed 的配置格式相同。

直接运行(无需 MCP 客户端)

npx -y @mukundakatta/promptbudget-mcp

该服务通过 stdio 使用 MCP 通信。可搭配 mcptools 或你选择的客户端使用。如果终端没有任何输出,这是正常的:stdio 服务会静默等待 MCP 客户端连接。

同系列库

Rust crate promptbudget 使用纯 Rust 实现了相同逻辑,适合希望将算法链接到非 MCP 环境中的场景。

更新日志

  • 0.2.0(2026-05-10)— 新增 count_tokens(预检)和 chunk_to_budget(拆分并重叠)。README 新增工作流示例和分词器比值表。
  • 0.1.1(2026-05-09)— 新增 mcpName 字段,以兼容 MCP Registry。
  • 0.1.0(2026-05-09)— 首次发布,包含 truncate_to_token_budget。

许可证

MIT OR Apache-2.0。

评论

支持 Markdown

第一次接触 MCP?

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

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