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.

已驗證STDIO僅桌面雲端與基礎設施金融

概覽

AI 產生的概覽

一個本機 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 供本機開發使用。
安裝前請注意
排序按成功媒合計費,價格從回應即時讀取。未設定 SCOUTWYZE_API_KEY 時,scoutwyze_rank 會回傳 x402/USDC-on-Base 付款挑戰,須由具備錢包能力的呼叫方代理(而非本伺服器)簽章並以 X-PAYMENT 憑證重試。本伺服器不持有私鑰,也不簽章或結算付款。它不會回顯 SCOUTWYZE_API_KEY。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 ScoutWyze Compute,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

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:

json
{  "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" }  }]}

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's billing.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):

json
{  "mcpServers": {    "scoutwyze-compute": {      "command": "npx",      "args": ["-y", "@scoutwyze/compute-mcp"],      "env": {        "SCOUTWYZE_API_KEY": "sw_live_..."      }    }  }}

For local development, point at the built file directly instead:

json
{  "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 — optional. A prepaid Bearer key from POST /v1/signup + POST /v1/checkout-sessions. Omit it entirely to run unauthenticated — scoutwyze_rank will then return a real x402 challenge instead of ranked results (see the boundary above).
  • SCOUTWYZE_BASE_URL — optional, defaults to https://scoutwyze-compute.fly.dev. Override for local development against the main app's npm run dev server.

Development

npm installnpm run build   # -> dist/index.jsnpm run dev     # runs directly from src/ via tsx, no build step

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_KEY in 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_version passes 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
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.1最新Sep 25, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分