关于 ScoutWyze Compute
ScoutWyze Compute 是面向 MCP 原生 Agent 环境的 GPU 报价查询服务,用于按价格和新鲜度排列 RunPod GPU 供给。它提供免费预览和按成功匹配计费的排序;未认证时会原样返回 x402 支付挑战,不代为付款。
主要功能
- 01按价格和新鲜度排列 GPU 报价
- 02免费匿名预览
- 03按工作负载筛选报价
- 04返回 x402 支付挑战
适用场景
- 01预览当前 RunPod GPU 报价
- 02按显存、区域和预算筛选
- 03由具备钱包能力的 Agent 完成支付重试
MCP 相关
作为 MCP 服务,它向 Agent 主机提供 `scoutwyze_sample` 和 `scoutwyze_rank` 工具。未配置有效 API key 时,排序工具返回 x402 挑战;服务本身不持有私钥或签署支付。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @scoutwyze/compute-mcpSCOUTWYZE_API_KEY密钥Prepaid Bearer API key from POST /v1/signup + POST /v1/checkout-sessions. Optional — omit to run unauthenticated, in which case scoutwyze_rank returns a real x402 payment challenge instead of ranked results.SCOUTWYZE_BASE_URLOverrides the default API base URL (https://scoutwyze-compute.fly.dev) — for local development only.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
2收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
ScoutWyze Compute MCP 服务
一个无状态 MCP(Model Context Protocol)封装,适用于 ScoutWyze
Compute 的 GPU 报价排序 API,面向原生支持 MCP 的 Agent 宿主(Claude
Desktop、Cursor、自定义 Agent 框架)。按价格和新鲜度对当前 RunPod GPU
报价排序,仅此而已。它不是主
scoutwyze-compute 应用的一部分,而是一个独立、可单独安装的
软件包,特意放在 src/ 之外。
严格边界——扩展此服务前请先阅读
此服务绝不持有私钥,也绝不自行签署或结算
x402 付款。 如果对 scoutwyze_rank 的调用未经身份验证
(未配置 SCOUTWYZE_API_KEY,或密钥无效),API 返回的真实
x402 付款质询会作为工具结果内容返回,而不会被吞掉或自动支付——例如:
{
"x402Version": 1,
"error": "payment_required",
"accepts": [{
"scheme": "exact", "network": "base", "maxAmountRequired": "150000",
"resource": "/v1/compute/rank",
"payTo": "0xc132a315a05541a4b72c272de539eb86de977fb9",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"maxTimeoutSeconds": 120,
"extra": { "name": "USD Coin", "version": "2" }
}]
}
负责签署 EIP-3009 TransferWithAuthorization(EIP-712 类型化数据,使用上方
完全一致的 extra.name/extra.version 域——真实的
x402 “exact” EVM 方案,付款方完全不会在链上广播交易;
由此服务自己的协调器处理)并使用生成的 X-PAYMENT 证明重试同一工具调用的,
应当是具备钱包能力的调用 Agent,而不是此服务。完整且经过测试的签署流程参考实现,请参阅主仓库中的
examples/node-client.mjs
或 examples/python_client.py。此服务唯一的凭据是可选的预付费 Bearer 密钥。
这不是风格上的选择。一个“任何人都能在本地快速启动的轻量软件包”若持有真实且有资金的私钥,其风险级别与本代码库中的其他任何内容都截然不同, 而且与本代码库其他部分始终遵循的原则相矛盾(链上验证代码只读取区块链,绝不发送交易或 持有密钥)。不要为此服务添加钱包或签署功能。
工具
scoutwyze_sample— 免费、匿名、限流的预览 (GET /v1/compute/sample)。无参数,永不收费。scoutwyze_rank— 根据工作负载对 GPU 报价排序 (POST /v1/compute/rank)。gpuClass、minVramGb、region、maxPricePerHour、preference均为可选。每次成功匹配收费; 实际价格始终从响应的billing.price_usd实时读取,绝不在此处硬编码 (服务端定价可能会变;工具描述中的静态价格也会像此仓库中其他几份文档过去那样很快过时)。
POST /v1/route/quote 刻意不作封装——它使用较旧的独立响应架构,
而 compute/rank 是核心且有持续文档支持的路径(参见 SOT.md)。
配置
已在 npm 上发布为 @scoutwyze/compute-mcp,并已列入官方
MCP Registry,名称为 io.github.scoutwyze-max/compute-mcp。将其添加到 MCP
宿主的配置中(例如 Claude Desktop 的 mcp.json):
{
"mcpServers": {
"scoutwyze-compute": {
"command": "npx",
"args": ["-y", "@scoutwyze/compute-mcp"],
"env": {
"SCOUTWYZE_API_KEY": "sw_live_..."
}
}
}
}
本地开发时,改为直接指向构建后的文件:
{
"mcpServers": {
"scoutwyze-compute": {
"command": "node",
"args": ["/absolute/path/to/scoutwyze-compute/mcp-server/dist/index.js"],
"env": {
"SCOUTWYZE_API_KEY": "sw_live_..."
}
}
}
}
SCOUTWYZE_API_KEY— 可选。通过POST /v1/signup+POST /v1/checkout-sessions获取的预付费 Bearer 密钥。完全省略即可 以未认证模式运行——此时scoutwyze_rank会返回真实的 x402 质询,而不是排序结果(参见上文的边界说明)。SCOUTWYZE_BASE_URL— 可选,默认为https://scoutwyze-compute.fly.dev。在本地开发时,可覆盖此项以连接主应用的npm run dev服务。
开发
npm install
npm run build # -> dist/index.js
npm run dev # runs directly from src/ via tsx, no build step
发布新版本
在此目录中执行 npm version <patch|minor|major>,然后执行 npm publish(prepublishOnly 会自动运行构建,因此 dist/ 始终是最新的——切勿先手动运行 npm run build,再凭感觉认为构建结果仍是最新的,然后发布过时的构建)。发布到 npm 后,还要将 server.json(官方 MCP Registry)和 manifest.json(下文的 MCPB 捆绑包)中的 version 都更新为相同版本,然后重新运行 mcp-publisher publish server.json——这三个版本字符串彼此不会交叉校验,否则很容易有一个悄悄地与其他版本不一致。
tsc 不会保留或设置输出文件的可执行位,因此,直接运行 npm run build 后生成的 dist/index.js 权限为 644,无法通过 bin 运行。postbuild 脚本(chmod +x dist/index.js)会在每次构建时修复这一点;不要移除它。
MCPB 捆绑包(Smithery、Claude Desktop 单击安装)
manifest.json 是真正的 MCPB 清单(github.com/modelcontextprotocol/mcpb,manifest_version: "0.3")——它与 server.json 是不同的文件(后者采用官方 MCP Registry 自有的清单格式;两者是彼此无关、名称却容易混淆的规范)。npm run build:mcpb 会准备一个干净的目录(包含 dist/、manifest.json、仅用于生产环境的 node_modules、package.json——不包含仓库自己的 src/、测试文件、Dockerfile 或 server.json),然后通过真正的 mcpb CLI(@anthropic-ai/mcpb,本地开发依赖)将其打包为 scoutwyze-compute-mcp.mcpb。输出的 .mcpb 文件已加入 gitignore,按需重新构建,与 dist/ 一样。
这是 Smithery 的 stdio 发布流程所需的格式(根据 smithery.ai/docs/build/publish,使用 smithery mcp publish ./scoutwyze-compute-mcp.mcpb -n <org>/<name>——已于 2026-09-25 对照其在线文档核实,不是某些示例仓库仍在展示的旧版 smithery.yaml 约定)。CLI 发布前需要一次性运行 smithery auth login(GitHub OAuth,需要人工在浏览器中完成),因此无法在没有这一步的情况下端到端脚本化。同一个 .mcpb 文件也可用于 Claude Desktop 的单击本地安装(将文件拖到应用上即可)。
已于 2026-09-25 正式发布为 scoutwyze/compute-mcp
(https://smithery.ai/servers/scoutwyze/compute-mcp)。发布过程中一个来之不易的真实发现:manifest.json 特意不包含顶层的 tools 数组,尽管 MCPB 自身的规范允许这样做,而且 mcpb validate 也能正常接受。Smithery 对包含 tools 的任何捆绑包进行 stdio 导入时都会返回 400(每个声明的工具都会报一次 "Invalid input: expected object, received undefined")——通过二分测试已确认:带有 tools 的清单每次都会失败,不带它的相同清单则可顺利发布;即使包含 user_config、env 和所有其他可选字段也一样。这看起来是他们导入流程中的实际缺陷(他们自己的文档描述了另一种更丰富的工具架构格式——形状与 @modelcontextprotocol/sdk/types.js 相同,且要求 inputSchema——该格式用于托管 URL 服务的静态服务卡片,而不是 MCPB 更简单的 tools[]),不是我们这边需要修复的问题。如果你重新发布时觉得加回 tools 能让清单更完整,就再次添加了它,那么还会遇到这个问题——请先检查 Smithery 的导入流程是否已修复,不要仅仅因为 MCPB 自己的校验器接受它,就认为现在可以放心添加。
此服务遵循的其他规则,而不只是文档中记录的内容
- 失败时采取关闭策略。 连接真实 API 时发生网络故障,会返回固定的通用错误——绝不返回缓存或伪造的结果。
- 绝不在任何工具响应或错误消息中回显
SCOUTWYZE_API_KEY,包括发生网络故障时(错误路径使用固定字符串,而非对底层错误对象进行插值;原则上,该对象可能包含请求详情)。 schema_version原样透传——此服务绝不会重构或重新解读上游响应正文,因此调用它的 Agent 可以自行检测未来信封格式的变化。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。