
ScoutWyze Compute
io.github.scoutwyze-max由 GitHub 账号 scoutwyze-max 发布v0.1.1更新于 Oct 24, 2026
Ranks current RunPod GPU offers by price and freshness. Supports x402/USDC-on-Base payments.
概览
一个本地 MCP 服务器,按价格和新旧程度对当前 RunPod GPU 报价排序,提供免费样例预览和按次计费的排序调用。
- 可以做什么
- 免费、匿名、限流地预览 GPU 报价样例,无需参数也不计费(scoutwyze_sample)。按工作负载对 GPU 报价排序,可选 GPU 型号、最低显存、区域、每小时最高价格和偏好(scoutwyze_rank)。每次匹配的实际价格从响应中实时读取,而非固定值。未认证时,排序调用会把真实的 x402 支付挑战作为工具结果返回。
- 适用场景
- 适合需要为某个工作负载比较当前 RunPod GPU 报价、按价格和新旧程度挑选的场景,也适合在按成功匹配付费前先免费预览。
- 运行要求
- 通过 stdio 在本地运行,通常用 npx 启动 npm 包,需要 Node.js。需要能访问 ScoutWyze API 端点的网络。可选 SCOUTWYZE_API_KEY(预付 Bearer 密钥)用于付费排序;不设置时排序调用会返回支付挑战。可选 SCOUTWYZE_BASE_URL 用于本地开发。
安装
在 SourceWeft 中
- 打开 控制台中的 ScoutWyze Compute,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
ScoutWyze Compute MCP server
A stateless MCP (Model Context Protocol) wrapper around ScoutWyze
Compute's GPU-offer-ranking API, for MCP-native agent hosts (Claude
Desktop, Cursor, custom agent frameworks). Ranks current RunPod GPU
offers by price and freshness — nothing else. Not part of the main
scoutwyze-compute app; this is a separate, independently
installable package, kept out of src/ on purpose.
Hard boundary — read this before extending this server
This server never holds a private key and never signs or settles an
x402 payment itself. If a call to scoutwyze_rank is unauthenticated
(no SCOUTWYZE_API_KEY configured, or the key is invalid), the real
x402 payment challenge from the API is returned as the tool's result
content, not swallowed or auto-paid — for example:
A wallet-capable calling agent — not this server — is responsible
for signing an EIP-3009 TransferWithAuthorization (EIP-712 typed
data, under the exact extra.name/extra.version domain above — real
x402 "exact" EVM scheme, no on-chain broadcast from the payer at all;
this server's own facilitator handles that) and retrying the same tool
call with the resulting X-PAYMENT proof. See examples/node-client.mjs
or examples/python_client.py in the main repo for a complete, tested
reference implementation of that signing flow. This server's only
credential is an optional prepaid Bearer key.
This isn't a style choice. A "lightweight package anyone can spin up locally" holding a real funded private key is a fundamentally different risk class than anything else in this codebase, and it contradicts the posture maintained everywhere else in it (the on-chain verification code reads the chain, it never sends transactions or holds keys). Do not add wallet/signing capability to this server.
Tools
scoutwyze_sample— free, anonymous, rate-limited preview (GET /v1/compute/sample). No arguments, never billed.scoutwyze_rank— ranks GPU offers for a workload (POST /v1/compute/rank).gpuClass,minVramGb,region,maxPricePerHour,preference— all optional. Billed per successful match; the real price is always read live from the response'sbilling.price_usd, never hardcoded here (server-side pricing can change; a static price in a tool description would just go stale the same way several other docs in this repo have before).
POST /v1/route/quote is deliberately not wrapped — it uses an older,
separate response schema, and compute/rank is the flagship,
actively-documented path (see SOT.md).
Configuration
Published on npm as @scoutwyze/compute-mcp and listed in the official
MCP Registry as io.github.scoutwyze-max/compute-mcp. Add to your MCP
host's config (e.g. Claude Desktop's mcp.json):
For local development, point at the built file directly instead:
SCOUTWYZE_API_KEY— optional. A prepaid Bearer key fromPOST /v1/signup+POST /v1/checkout-sessions. Omit it entirely to run unauthenticated —scoutwyze_rankwill then return a real x402 challenge instead of ranked results (see the boundary above).SCOUTWYZE_BASE_URL— optional, defaults tohttps://scoutwyze-compute.fly.dev. Override for local development against the main app'snpm run devserver.
Development
Publishing a new version
npm version <patch|minor|major> then npm publish from inside this
directory (prepublishOnly runs the build automatically, so dist/
is always fresh — never publish a stale build by hand-running
npm run build first and trusting it's still current). After
publishing to npm, also bump version in both server.json
(official MCP Registry) and manifest.json (MCPB bundle, below) to
match, and re-run mcp-publisher publish server.json — three separate
version strings that don't cross-check each other, easy for one to
drift silently otherwise.
tsc does not preserve or set the executable bit on its output, so
dist/index.js comes out of a plain npm run build as 644 — not
runnable via bin. The postbuild script (chmod +x dist/index.js)
fixes this on every build; don't remove it.
MCPB bundle (Smithery, Claude Desktop single-click install)
manifest.json is a real MCPB manifest (github.com/modelcontextprotocol/mcpb,
manifest_version: "0.3") — a different file from server.json
(the official MCP Registry's own manifest format; the two are
unrelated specs with overlapping-sounding names). npm run build:mcpb
stages a clean directory (dist/, manifest.json,
production-only node_modules, package.json — none of the repo's
own src/, tests, Dockerfile, or server.json) and packs it into
scoutwyze-compute-mcp.mcpb via the real mcpb CLI (@anthropic-ai/mcpb,
a local devDependency). The output .mcpb file is gitignored and
rebuilt on demand, same as dist/.
This is what Smithery's stdio publish path expects
(smithery mcp publish ./scoutwyze-compute-mcp.mcpb -n <org>/<name>,
per smithery.ai/docs/build/publish — verified against their live docs
2026-09-25, not the older smithery.yaml convention some example
repos still show) — requires a one-time smithery auth login (GitHub
OAuth, a human/browser step) before the CLI can publish; not
scriptable end-to-end without that. The same .mcpb file also works
for Claude Desktop's single-click local install (drag the file onto
the app).
Published live 2026-09-25 as scoutwyze/compute-mcp
(https://smithery.ai/servers/scoutwyze/compute-mcp). Real, hard-won
finding while getting there: manifest.json deliberately has no
top-level tools array, even though MCPB's own spec allows one and
mcpb validate accepts it fine. Smithery's stdio-bundle ingestion
throws a 400 ("Invalid input: expected object, received undefined",
once per declared tool) on any bundle that includes one — confirmed by
bisection: a manifest with tools fails every time, the identical
manifest without it publishes clean, user_config/env/every other
optional field included. Looks like a real gap in their ingestion
(their own docs describe a different, richer tool-schema format —
@modelcontextprotocol/sdk/types.js-shaped, with a required
inputSchema — used for hosted URL servers' static server cards, not
MCPB's plainer tools[]), not something on our end to fix. If you're
re-publishing and add tools back because it seems like the more
complete manifest, you will hit this again — check whether Smithery's
ingestion has been fixed before doing so, don't assume it's safe now
just because MCPB's own validator accepts it.
Other rules this server follows, not just documents
- Fails closed. A network failure to the real API returns a fixed, generic error — never a cached or fabricated result.
- Never echoes
SCOUTWYZE_API_KEYin any tool response or error message, including on network failure (the error path is a fixed string, not an interpolation of the underlying error object, which could in principle carry request details). schema_versionpasses through untouched — this server never restructures or reinterprets the upstream response body, so a calling agent can detect a future envelope change itself.
来源:mcp-server/README.md,提交 3c759ba
工具
0版本历史
1- v0.1.1最新Sep 25, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分
