MCP成本跟踪器和路由器
npm mcp-cost-tracker-router 包
MCP代理工作流的本地优先成本意识。令牌计数是使用js-tiktoken离线计算的-没有代理,没有API往返,没有花费数据离开您的机器。当成本攀升时,在发票到达之前,路由建议会把你指向更便宜的型号。
关键特性
- 每件刀具成本细目查看哪些工具调用消耗了最多的令牌和预算。
- 预算警报设置一个会话消费阈值,并在超过阈值之前收到80%和100%的警告。
- 离线令牌计数:使用js-tiktoken进行准确计数-不需要API调用。
- 模型路由建议:为当前任务类型推荐更便宜的模型(建议,没有选择加入就不会强制执行)。
- Multi-provider定价:从单个可配置的价格表跟踪Claude、OpenAI和Gemini模型的成本。
- 花的历史:按模型或工具查询每日、每周和每月的总数。
- 项目费用分摊:将会话标记为指定项目并生成退款报告。
- HTML支出报告:导出带有图表和预算状态的单文件、自包含HTML报告。
- 审计日志:每个预算执行决定的附加日志。
为什么不选择基于代理的成本跟踪?
大多数成本跟踪工具通过将所有API流量路由到它们的服务器并在服务器端测量令牌来工作。这意味着您的提示和响应传输第三方服务,您依赖于他们的正常运行时间。
| mcp-cost-tracker-router | 基于代理的跟踪器(Helicone, LLMonitor等) | |
|---|---|---|
| 令牌数 | 通过js-tiktoken离线-没有网络呼叫 | 代理流量后服务器端计数 |
| 数据居住 | 仅本地SQLite | 提示+响应通过供应商服务器传递 |
| 模型的路由 | 内置的 suggest_model_routing 工具 | 很少包括;通常是一个单独的付费层 |
| Multi-provider | Claude, OpenAI, Gemini在一个价格表中 | 通常是单个提供者或需要单独设置 |
| 正常运行时间依赖性 | 无-完全脱机 | 如果代理宕机,则中断 |
如果您的提示包含敏感信息,或者您不能通过第三方路由流量,那么这就是正确的工具。如果您需要具有团队共享功能的托管仪表板,那么基于代理的服务可能更适合您。
免责声明
mcp-cost-tracker-router 在SQLite中本地存储工具调用元数据(令牌计数、模型名称、时间戳)。它不存储提示或响应内容。成本计算是根据当地价格表估算的,可能与供应商的发票不完全匹配。
需求
- Node.js v20.19或更新版本。
- npm。
开始
在MCP客户端中添加以下配置:
{
"mcpServers": {
"cost-tracker": {
"command": "npx",
"args": ["-y", "mcp-cost-tracker-router@latest"]
}
}
}
设置会话预算警报。
{
"mcpServers": {
"cost-tracker": {
"command": "npx",
"args": ["-y", "mcp-cost-tracker-router@latest", "--budget-alert=5.00"]
}
}
}
MCP客户端配置
Amp·Claude Code·Cline·Cursor·VS Code·Windsurf·Zed
你的第一个提示
在您的MCP客户端中输入以下内容以验证一切正常:
How much has this session cost so far?
您的客户端应该返回当前会话的令牌和美元成本摘要。
工具
会话(4个工具)
get_session_cost-返回当前会话的令牌总数和美元成本估算。只读的。get_tool_costs-返回会话的每个工具成本分解,按成本递减排序。只读的。reset_session-开始一个新的成本跟踪会话。以前的会话数据将保留在历史记录中。record_usage—记录工具调用令牌的使用情况。需要tool_name,model(可选),input_tokens,output_tokens. 如果达到阈值的80%,则发出预算警告通知。
预算和路线(3个工具)
set_budget_alert—设置预算阈值,单位为美元(threshold_usd). 在阈值的80%和100%发出警告。使用--enforce-budget阻止超出限制的呼叫。suggest_model_routing-根据任务类型进行启发式模型推荐。需要task_description和可选的constraints.max_cost_usd. 返回推荐模型的推理和估计成本。check_routing_policy—检查路由策略下的某个任务类型是否允许使用某个模型。需要task_type和model。
历史记录和报告(4个工具)
get_spend_history—按统计方式查询历史支出period(day/week/month). 按模型和工具返回细分。只读的。estimate_workflow_cost-多步骤工作流程的预运行成本估算。需要一个steps数组tool_name,estimated_input_tokens,estimated_output_tokens,可选model. 只读的。export_spend_report生成单文件的HTML支出报告,其中包含会话细分、历史支出、模型成本比较和预算状态。只读的。export_budget_audit—导出预算执行决策的审计日志。接受可选from_date,to_date,format(json/csv). 只读的。
项目分配(4个工具)
set_project创建或更新项目budget_usd. 需要project_name。tag_session—用a标记当前会话project_name用于成本分配。get_project_costs获取项目成本报告。需要project_name和可选的since(ISO日期)。只读的。export_chargeback-为内部账单生成退款报告。需要from_date,to_date、可选group_by(project/session),可选format(json/csv). 只读的。
配置
--budget-alert
会话花费阈值(以美元计算)。当会话成本达到该阈值的80%和100%时,将返回警告。
类型: number
--db / --db-path
用于存储成本历史记录的SQLite数据库文件的路径。
类型: string
默认值: ~/.mcp/costs.db
--pricing-table
包含自定义模型定价($/1K令牌)的JSON文件的路径。与内置表合并;缺失的模型会回到默认值。
类型: string
--default-model
当不能从上下文中推断出任何模型时,属性成本的模型名称。
类型: string
默认值: claude-sonnet-4-6
--enforce-budget
阻止可能导致会话超出预算警报阈值的工具调用。需要 --budget-alert 待设置。
类型: boolean
默认值: false
--http-port
以HTTP模式启动,使用Streamable HTTP传输而不是stdio。对于跨团队共享单个成本跟踪实例非常有用。
类型: number
默认值:禁用(使用stdio)
传递标志 args 属性在JSON配置中:
{
"mcpServers": {
"cost-tracker": {
"command": "npx",
"args": [
"-y",
"mcp-cost-tracker-router@latest",
"--budget-alert=2.00",
"--enforce-budget"
]
}
}
}
支持的型号和定价
内置价格表(每1K代币美元):
| 模型 | 输入 | 输出 |
|---|---|---|
| claude-opus-4-6 | 0.0150美元 | 0.0750美元 |
| claude-sonnet-4-6 | 0.0030美元 | 0.0150美元 |
| claude-haiku-4-5 | 0.0008美元 | 0.0040美元 |
| gpt-4o | 0.0025美元 | 0.0100美元 |
| gpt-4o-mini | 0.000150美元 | 0.000600美元 |
| 双子座- 1.5 - pro | 0.001250美元 | 0.005000美元 |
| 双子座- 1.5 - flash | 0.000075美元 | 0.000300美元 |
| 双子座- 2.0 - flash | 0.000100美元 | 0.000400美元 |
覆盖单个型号的价格 --pricing-table. 所有费用都是估算。
验证
在发布新版本之前,请使用MCP Inspector验证服务器,以确认所有工具都正确公开并且协议握手成功。
交互式用户界面 (打开浏览器):
npm run build && npm run inspect
CLI模式 (脚本/ ci友好):
# List all tools
npx @modelcontextprotocol/inspector --cli node dist/index.js --method tools/list
# List resources and prompts
npx @modelcontextprotocol/inspector --cli node dist/index.js --method resources/list
npx @modelcontextprotocol/inspector --cli node dist/index.js --method prompts/list
# Call a read-only tool
npx @modelcontextprotocol/inspector --cli node dist/index.js \
--method tools/call --tool-name get_session_cost
# Call record_usage with arguments
npx @modelcontextprotocol/inspector --cli node dist/index.js \
--method tools/call --tool-name record_usage \
--tool-arg tool_name=my_tool --tool-arg input_tokens=500 --tool-arg output_tokens=200
在发布之前运行,以在工具注册和运行时启动时捕获回归。
贡献
更新 src/pricing.ts 当新型号发布时。所有成本计算更改必须包括具有已知令牌计数和预期美元值的单元测试。路由建议参见 src/tools/routing.ts。
npm install && npm test
MCP注册和市场
此插件可用于:
搜索 mcp-cost-tracker-router。