mcpField
C
Compute Finance Oracle

Compute Finance Oracle

本地服务
compute.financeAI 与智能体0今天更新

关于 Compute Finance Oracle

Compute Finance Oracle 是面向开发者和 Agent 的 stdio MCP 服务,提供实时 AI 模型价格。它还提供历史数据、模型可用性及本地 Claude Code 会话成本分析。

主要功能

  1. 01跨供应商查询实时模型价格
  2. 02SCU 与价格指数数据
  3. 03历史价格查询
  4. 04模型可用性数据
  5. 05本地 Claude Code 成本分析

适用场景

  1. 01比较当前模型价格
  2. 02估算模型计算成本
  3. 03路由前检查模型可用性
  4. 04查看 Claude Code 会话成本

MCP 相关

该 stdio 服务向 MCP 客户端提供 Compute Finance Oracle 公共数据和本地会话分析工具。连接应用授权后才会提供账户工具,其范围取决于授权内容。

配置

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

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

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

安装包
npm@compute-finance/mcp0.12.2

工具

22

收录的工具列表 · 更新于 今天

此工具无需参数。

详细介绍

@compute-finance/mcp

npm version npm downloads license

实时 AI 计算定价预言机——通过 Compute Finance Oracle 获取九家供应商的 LLM 模型实时价格(Anthropic、OpenAI、Google、DeepSeek、xAI 及其他四家)。

一个基于 stdio 的 MCP 服务。可在任何 MCP 客户端中使用。还可选装用于会话成本分析的 Claude Code 技能。

快速开始

Claude Code(推荐)
npx @compute-finance/mcp setup

这条命令会:

  1. 在用户级别注册 MCP 服务(claude mcp add)
  2. 安装 Claude Code 技能(/cf-session-management、/cf-session-consumption、/cf-active-sessions、/cf-account)
  3. 安装成本钩子——一个 UserPromptSubmit 钩子,会将会话成本注入 Claude 的上下文,让每条回复都能显示你的花费

完成设置后,重启 Claude Code。

若要查询你自己的 Compute Finance 账户,也只需连接一次——请参阅你的账户。

也可以不安装技能和钩子,手动注册:

claude mcp add --scope user compute-finance -- npx @compute-finance/mcp
Cursor / VS Code / 任何 MCP 客户端

将以下内容添加到 MCP 配置(.cursor/mcp.json、VS Code 设置等):

{
  "mcpServers": {
    "compute-finance": {
      "command": "npx",
      "args": ["@compute-finance/mcp"]
    }
  }
}
从源码安装
git clone https://github.com/compute-finance/mcp.git
cd mcp
npm install && npm run build
npx . setup

工具

工具按层级前缀命名,分为三组。公共组和本地组无需 API 密钥或账户。

组别前缀工具访问的内容
公共数据data_get_*、compute_*通过未经身份验证的 GET 请求读取 Compute Finance Oracle 实时数据
本地会话render_*、analyze_*、telemetry_get_*读取此计算机上的 Claude Code 对话记录,按预言机实时费率计算价格,并将测量结果追加到 ~/.compute-finance/ 下的会话日志中;telemetry_get_history 可读取这些日志;不会上传任何内容
你的账户account_*仅在连接应用授权后注册,且仅包含该授权允许使用的工具。获得读取权限后,这些工具可读取账户余额、支出、密钥和历史记录;获得操作权限后,其中一些工具可操作账户——创建 API 密钥、冻结或解冻密钥、设置预算上限、配置自动充值

下文不会列出 account_* 工具:这些工具由交易所发布,本软件包不会复制其中任何工具。请参阅你的账户。

数据(实时预言机)
工具描述
data_get_basket当前 SCU 指数中的所有模型,包含提供商、系列(例如 openai.gpt、anthropic.claude)、每百万个 token 的 base_* 和 billed_* 美元价格、各缓存组件的价格(读取、写入-5m、写入-1h)、推理输出价格和长上下文价格阶梯
data_get_price单个模型的价格(例如 anthropic/claude-opus-4.8)——指数成员和仅目录条目适用相同条款,包含相同的各缓存组件价格、推理价格和长上下文价格阶梯
data_get_scu当前标准计算单元——数值以及按方法论版本标注的 breakdown,其中列出每个系列的代表模型
data_get_breakdown仅包含各系列的混合成本明细——按方法论版本标注的判别联合类型,每个系列代表模型对应一个条目
data_get_cpi链上最近一次认证的完整计算价格指数——scuUsd、revisionVersion,以及该修订版本发布的原始价格和加价后价格
data_get_reconstitutions指数的历史变更——模型替换、SCU 变更前后数值
data_get_methodology方法论变更日志——每个版本及其公式摘要和规范链接,以及当前生效的版本
data_get_history指定日期范围内的 SCU 指数时间序列——粒度可选 per-revision、daily 或 weekly;对于空桶,日/周桶会沿用上一修订版本的值
data_get_model_price_historyOracle 跟踪的任意模型的输入/输出美元价格时间序列——粒度语义与 data_get_history 相同,并在 unavailableRevisions 中显示追赶数据时的缺口
data_get_catalog所有有记录价格的模型,包括指数成员和非指数条目——indexMember 标志、带来源信息的当前价格、缓存和推理组件,以及上游原始 contextTiers / maxInputTokens
data_get_model_price_at指定时间戳生效的单个模型输入/输出美元价格——如果模型当时代表其系列参与该修订版本,则来源为 manifest;否则为 catalog
data_get_baselinecomputeIndex 背后的冻结 SCU 分母——首次确认的修订版本中的 SCU,仅设置一次,之后永不重新计算
data_get_scu_at通过阶梯函数获取指定时间戳生效的 SCU 值——不进行插值,创世修订版本之前返回 null
data_get_model_availability当前可提供服务的模型——列出目录中的所有模型及其 routable 标志、auto 指向的模型,以及结果的有效时间 computedAt / ttlSeconds

模型通过其规范的供应商前缀 ID 标识——anthropic/claude-opus-4.8、openai/gpt-5.5、qwen/qwen-3.5-flash。所有接受模型参数的工具也接受不带前缀的名称(gpt-5.5),并使用规范 ID 返回结果。供应商标识不总是提供商键(alibaba → qwen、xai → x-ai、moonshot → moonshotai),因此应复用 API 返回的 ID,而不是自行拼接。data_get_scu、data_get_breakdown 和 data_get_reconstitutions 除外:它们会原样传递已认证的清单,因此报告不带前缀的模型键,因为 / 不是合法的清单键。

缓存价格来自 Compute Finance Oracle。当 Oracle 发布了相关缓存组件时,会话和用量报告会显示有效成本(考虑缓存);否则会显示名义成本(将输入价格应用于每种输入变体),并将该模型的有效成本标记为不可用。

除了缓存之外,Oracle 还会发布推理输出价格——reasoning.reasoningOutput,与其他所有组件采用相同的计价基准;对于没有可用推理价格的模型,整个 reasoning 区块为 null。这是目录数据。会话和用量报告不会按此收费:Claude Code 转录记录的是思考区块,而不是推理 token,且这些 token 已包含在 output_tokens 中。 每种价格都会以两种口径报告:base_* 是提供方的标价,Oracle 跟踪的所有模型都相同;billed_* 是 compute.finance 收取的价格,即 base × (1 + routing_fee_rate)。比较模型时看 base_*,编制预算时看 billed_*。每次响应只附带一次费率;当 Oracle 未发布该费率时,billed_* 为 null。会话和用量报告始终采用基础价格口径。

所有当前价格的答案都来自同一个地方:交易所据以计费的实时目录。索引成员资格决定 data_get_basket 和 compute_compare 会列出哪些模型,但不决定模型的价格,因此,只要目录对两个模型定价相同,它们的报价就相同。data_get_cpi 则是有意设计的例外——它提供最新链上修订所证明的价格;只有运营方发布下一次修订时,这些价格才会变化,因此可能滞后于目录。应将其视为证明记录,而不是报价。

有些模型在上下文长度超过一定值后会变贵。data_get_basket 和 data_get_price 会通过 context_tiers 发布这些价格阶梯,按 from_input_tokens 从小到大排列,并且始终至少有一级:第一级从 0 开始,并重申统一费率;因此,所有输入规模的价格都相同的模型恰好只有一级,无需判断模型是否分级定价。每一级都像其他价格一样包含 base_* 和 billed_*;只有统一费率会计入 SCU 指数。compute_estimate 和 compute_compare 根据请求的整个输入部分选择对应级别——包括提示词、缓存读取和缓存写入;这两种工具都不提供缓存折扣,因此这些部分在此都按完整输入费率计费。级别采用左闭右开的范围,因此输入量恰好达到阈值时会采用该级别。两者都会通过 applied_context_tier 返回选定级别,使价格所依据的费率一目了然。data_get_catalog 会原样传递 Oracle 文档,因此对于统一定价的模型,其中的 contextTiers 会缺省,而不是包含只有一级的阶梯。

价格阶梯来自目录端点;当端点无法提供某个模型的信息时——读取失败,或读取成功但目录中没有该模型(这是上游数据不同步,而非统一定价)——这两类工具会采用不同处理方式。data_get_basket 和 data_get_price 仍会提供价格,并将 context_tiers 设为 null,表示阶梯未知,而不是用只有一级的阶梯冒充未读取的阶梯。compute_estimate 和 compute_compare 则会报错:按统一费率报价会低估价格,而阶梯定价正是为了给较长上下文定价。

max_input_tokens 是模型接受的最大输入量;当模型未声明自身的上下文窗口时,该值为 null——这不表示没有上限:请求正文的大小上限仍然适用,只是没有针对该模型的限制。超过模型声明的窗口时,Oracle 会直接拒绝请求,因此 compute_estimate 和 compute_compare 会设置 exceeds_max_input_tokens。它们仍会给出价格估算:这些工具是只读的,需要调整上下文的 Agent 必须先知道价格;但该标记会明确指出,照当前提供的请求内容发送将会被拒绝。 价格还带有 provenance 标记,用于说明该数值经过了何种程度的核实:verified——运营人员记录了该价格的供应商来源;inferred——根据同类数值或供应商默认值推算得出,未记录来源;promotional——预计会结束的折扣标价。**所有数值均按所示价格计费;标记说明的是可信度,而非价格。**标记由人工设置,以运营人员上次检查时的情况为准,并非对供应商进行实时核查。每个缓存和推理组件在每处出现时都带有自己的标记,每个基础价格也一样:data_get_catalog 会为每个模型(无论是否为索引成员)标记 currentPrice.provenance;data_get_basket、data_get_price 和 compute_estimate 则使用 base_price_provenance 携带相同的一对值。档位遵循同一规则:首档沿用基础价格的标记,更高档位始终是目录中的价格,并在两个方向上都标记为供应商报价时使用的同一个标记。会话和用量报告会打印每个缓存乘数及其标记;当 oracle 未发布某个模型的缓存价格时,报告会说明这一点,且不打印标记。

价格说明模型的成本,绝不代表它是否能够提供服务。data_get_model_availability 回答的是后一个问题:公共池的路由列表——包含所有使用规范 ID 的目录模型及其 routable 标志,以及 auto 指向的模型。确定模型前请先调用它,以便在发出请求前排除无法提供服务的模型,而不是等到请求后才收到 503。此信号仅供参考:它在 computedAt 时刻有效,且仅在此后的 ttlSeconds 内有效;容量会自行变化,即使报告显示某模型可路由,发送请求仍可能失败——调用方仍需自行处理请求错误。该响应由交易所自身提供,并原样返回,不在此处计算存活状态,因此不会与必须遵从该响应的路由器产生分歧;响应缓存时间严格等于随其发布的 ttlSeconds,若该数值缺失或不可用,则完全不缓存,而不是采用其他读取操作使用的缓存时长。

私有报价不会列出。供应商向私有池提供的模型使用 handle/alias ID,永远不会进入公共目录:只有池所有者接受报价后才会列出,而且仅对绑定到该池的 API 密钥可见——无论是否连接账户,本服务都不会发送此类密钥。若要查看这些模型,请使用绑定到该池的 ct_live_* 密钥调用 GET /v1/models。

计算
工具描述
compute_estimate根据输入/输出 token 数量计算模型的名义 USD 成本——base_usd_cost、routing_fee_usd、billed_usd_cost,按输入大小所选档位报价
compute_compare按工作负载成本对当前 SCU 索引中的所有模型进行排名,并按系列分组——每行显示相同的三项成本数据,每个模型均采用自身档位
渲染(Claude Code 技能)
工具描述
render_session_report预先格式化的会话成本报告——供 /cf-session-management 使用
render_consumption_report预先格式化的单次推理明细——供 /cf-session-consumption 使用
render_active_sessions跨项目的近期会话概览——供 /cf-active-sessions 使用

报告会显示三个互不相关的计数:提示词(你输入的内容)、推理次数(助手回复——使用工具循环的会话中,每条提示词会产生多次推理)和工具调用次数(tool_use 块)。对于同一会话,这三个报告中的这组计数完全相同。

分析
工具描述
analyze_session原始 JSON 会话分析(用于自定义 UI,不用于技能)
analyze_inferences原始 JSON 推理逐项细分(用于自定义 UI,不用于技能)

analyze_session 的反事实报价采用每个模型的基础费率,绝不会采用长上下文档位。每个请求都会单独选择档位,而一个会话的输入总量并不是一个超大的请求——一百个 5k-token 调用并不等于一个 500k-token 调用——因此按更高档位计算总价会导致多收费。对于上下文长度增加后价格更高的模型,这些行的数值预计会低于 compute_compare。

历史记录
工具描述
telemetry_get_history已记录会话的汇总统计数据——累计费用、各配置文件的中位数、洞察

你的账户

以上内容都是公开数据或本地文件。要查询你的 Compute Finance 账户已花费的金额、哪些密钥处于启用状态,或距离限额还剩多少空间,请通过应用授权关联账户。

连接
  1. 在 compute.finance 中打开 设置 → 已连接的应用,点击授予访问权限,为应用命名并选择它可以执行的操作:读取(查看账户余额、用量和历史记录)和/或操作(管理账户密钥和限额)。如果你在组织中工作,请选择授权所针对的账户——授权会固定绑定到该账户,其他位置的任何会话都无法将其重定向。
  2. 复制 cfa_live_… 令牌。它只会显示一次。
  3. 存储令牌:
npx @compute-finance/mcp setup --account

设置过程会通过标准输入请求令牌——输入内容会隐藏,而且令牌不会作为参数传入,因此不会进入 shell 历史记录或 MCP 配置文件。之后,令牌会存储在操作系统自带的凭据存储中:macOS 钥匙串(security)、Windows DPAPI(%APPDATA% 下只有你的 Windows 用户才能解密的 blob),或 Linux 上的 Secret Service(secret-tool,来自 libsecret)。这些平台均无需添加原生 npm 依赖。

存储前,设置过程会向交换服务验证令牌:交换服务拒绝的令牌不会被存储。如果无法连接交换服务,设置过程会发出警告,但仍会存储令牌,因此离线时输入的令牌会在服务端首次启动时再进行验证。在没有这些存储方式的系统上,设置过程不会存储任何内容,并会提示你使用 CF_APP_GRANT_COMMAND(见下文)。

重启 MCP 客户端。此时会出现 account_* 工具;如果没有凭据,这些工具不会注册,预言机和会话工具的行为则与之前完全相同。

服务从何处查找令牌

启动时按以下顺序查找,并在找到第一个可用来源后停止:

来源用途
CF_APP_GRANT_COMMAND会在标准输出中打印令牌的 shell 命令——op read op://Private/compute-finance/token、pass show compute-finance、bw get password …。适用于任何操作系统上的任何机密管理器。此软件包不会存储任何内容。
操作系统凭据存储setup --account 写入的位置。
CF_APP_GRANT环境变量。适用于没有交互式存储方式的 CI。

无论令牌来自何处,都只会将其发送到 https 源,或回环主机上的 http 源,以便本地 API 正常工作。如果 CF_API_BASE 指向其他地址,启动时会拒绝该地址,且不会发送令牌。

授权可以和不可以做什么
  • 授权仅限于创建时勾选的操作,并且仅适用于绑定的那个账户。它永远无法从账户中取出资金——不能提款、转账,也不能执行任何需要钱包签名的操作。这些操作仍由你的钱包掌控。
  • **操作权限并非无害。**持有该权限的应用可以创建会花费账户余额的 API 密钥、更改或清除限制此类支出的预算上限,以及配置自动充值。即使授权绑定到组织,自动充值也始终适用于你自己的个人账户。只有在你愿意信任某个应用执行这三项操作时,才勾选操作权限;否则只授予读取权限。
  • 由交易所决定每项授权可以调用哪些工具。GET /v1/account-tools 只会返回该授权有权访问的工具及其描述和输入架构;调用则通过 POST /v1/account-tools/call 发起。此软件包不会复制这些接口约定,因此交易所一旦更改,你无需在此处发布新版本即可获得更新。
  • 拒绝就是拒绝。当交易所拒绝请求——授权被冻结、已撤销,或缺少工具所需的访问权限——工具会返回交易所给出的原文,指出缺少什么。它绝不会将其改写为空余额、空密钥列表或猜测结果。如果授权在启动时遭到拒绝,系统会注册一个包含该原文的 account_status 工具,而不是报告没有账户。
撤销

请在创建授权的位置撤销:设置 → 已连接的应用 → 撤销。撤销是永久性的,会立即生效;你自己的会话和其他应用均不受影响。冻结则会暂停授权,并且可以解除。

之后请移除令牌的本地副本:

npx @compute-finance/mcp setup --forget-account

这只会清除操作系统凭据存储。通过 CF_APP_GRANT_COMMAND 或 CF_APP_GRANT 提供的令牌会保存在你放置它的位置;请在那里将其移除。

成本钩子

setup 命令会在 ~/.claude/settings.json 中安装一个 UserPromptSubmit 钩子。每次你发送消息时,钩子都会读取当前会话记录,根据实时预言机进行计价,并通过 additionalContext 将成本摘要注入 Claude 的上下文。随后 Claude 会在回复末尾追加一行 💰 Compute.Finance · …。

触发条件——只有同时满足以下三个条件时,钩子才会触发:

  • 会话成本超过 $1
  • 会话至少有 5 条用户提示词
  • 距离上次触发已至少 10 分钟(按会话计算)

遇到任何错误(预言机不可用、缺少会话记录、解析错误)时,钩子都会静默退出——绝不会阻止你提交提示词。

手动安装

如果 setup 无法写入 settings.json,请手动添加钩子:

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "npx @compute-finance/mcp hook-prompt"
          }
        ]
      }
    ]
  }
}
卸载

从 ~/.claude/settings.json 中移除 UserPromptSubmit 条目。

隐私

所有数据都保留在你的机器上。未连接账户时,唯一的网络请求是对 api.compute.finance 发出的未认证 GET 请求——包括 /v1/oracle/* 下的预言机端点,以及在启动时读取一次、用于说明预言机响应格式的 OpenAPI 文档 /openapi.json。会话日志(~/.compute-finance/sessions.jsonl、~/.compute-finance/inferences.jsonl)绝不会上传。

连接账户后,授权令牌只会作为 Authorization: Bearer 标头发送到 api.compute.finance 上的 /v1/account-tools 和 /v1/account-tools/call,不会发送到其他任何地方。令牌绝不会写入配置文件、作为进程参数传递,也绝不会输出到 stdout、stderr 或工具答复中——包括诊断信息;诊断信息会在写入前进行脱敏。会话日志仍只包含本地测量数据,也仍绝不会上传。

链接

评论

支持 Markdown

第一次接触 MCP?

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

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