Isco Tec

io.github.isco-tec由 GitHub 帳號 isco-tec 發布v0.4.5更新於 Oct 29, 2026

Official Scorezilla MCP: add a global leaderboard to your game by asking Claude Code or Cursor.

已驗證STDIO僅桌面開發者工具商業與電商

概覽

AI 產生的概覽

Scorezilla 官方 MCP 伺服器,讓 AI 程式助理在編輯器內建立遊戲與排行榜,並產生 SDK 串接程式碼。

可以做什麼
  • 列出並檢視帳號下的遊戲及其排行榜,包含排名方向、分數類型、保留策略與分數上下限
  • 讀取排行榜前幾名,確認測試分數是否成功送出
  • 產生可直接貼上的 SDK 串接程式碼,可選反作弊、OAuth 玩家身分與伺服器語言
  • 一次呼叫建立新遊戲及其第一個排行榜,或為既有帳號新增遊戲與排行榜
  • 簽發公鑰/密鑰組,檢視公鑰明文與密鑰前綴
  • 修改排行榜的分數上下限與保留策略,並設定遊戲允許瀏覽器送分的來源白名單
適用情境
適合在開發遊戲時,想不離開 Claude Code、Cursor 等 MCP 用戶端就把託管的全球排行榜接進程式碼。適用於首次建置、驗證分數送出是否正常,以及日後調整計分規則或來源限制。
執行需求
透過 npx 在本機執行,需要 Node 20 以上版本,並能連線到 Scorezilla API。需要免費的 Scorezilla 帳號,以及在 SCOREZILLA_TOKEN 環境變數中提供的 MCP 權杖(於儀表板建立)。另有只讀模式與自訂 API 位址等選用參數。
安裝前請注意
此權杖是 bearer 憑證,部分用戶端會以明文儲存,請勿提交到版本控制或同步到公開位置,外洩時應立即撤銷。有六個工具會建立或變更資源,共用或 CI 環境建議啟用只讀模式。簽發的密鑰只顯示一次;建立遊戲與排行榜會佔用方案額度,但不會自動扣款。

安裝

在 SourceWeft 中

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

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

scorezilla-mcp

[npm version] [license: MIT] [scorezilla-mcp MCP server]

Add a global leaderboard to your game by asking Claude Code or Cursor. The SDK it wires in is ~5 KB gzipped, with zero runtime dependencies.

Official Model Context Protocol (MCP) server for Scorezilla. Connect it to your AI coding assistant (Claude Code, Cursor, Continue.dev, …) and ship a working leaderboard without leaving your editor.

What you can ask the AI to do

  • "Add a leaderboard to my game" → it bootstraps a game + board and pastes ready-to-run TypeScript SDK code into your project
  • "What did my last test score rank?" → it reads your live leaderboard
  • "List my games" / "show me the boards on X" → it inspects what you already have

Eleven tools total — five read-only, and six that write: four that create resources (bootstrap_leaderboard, create_game, create_board, mint_key) plus two that update config (update_board_config — score bounds + retention, e.g. an anti-cheat maxScore; update_game_config — the browser-submit origin allowlist).

Install + configure

Access — open to every Scorezilla account. Sign up free at dashboard.scorezilla.dev, create a token, and go. Creating games and boards counts toward your plan's limits (Free: 2 games × 3 boards each); when you hit one, the tool error includes a direct upgrade link. See pricing.

1. Get a token

Sign in at dashboard.scorezilla.dev, open MCP tokens, click Create token. Copy the mcp_live_* value once — it's not shown again.

2. Add the server to your AI coding assistant

Claude Code — one command (--scope user makes it available in every project):

bash
claude mcp add scorezilla --scope user -e SCOREZILLA_TOKEN=mcp_live_… -- npx -y @scorezilla/mcp

Cursor — add this to ~/.cursor/mcp.json (or Settings → MCP → Add new MCP server):

json
{  "mcpServers": {    "scorezilla": {      "command": "npx",      "args": ["-y", "@scorezilla/mcp"],      "env": {        "SCOREZILLA_TOKEN": "mcp_live_…"      }    }  }}

🔒 Keep your MCP config private. Both clients store the token in plaintext (~/.claude.json for Claude Code, ~/.cursor/mcp.json for Cursor). Don't commit it to git, sync it to a public dotfiles repo, or back it up to a shared location. On macOS/Linux, chmod 600 the file so only your user can read it. If a token leaks, revoke it at dashboard.scorezilla.dev/account/tokens.

Claude Desktop — one click: download scorezilla-mcp.mcpb from the latest release, double-click it, and paste your mcp_live_… token when Claude Desktop asks. The token is kept in your system's secure credential store.

Anything else MCP-compatible — point your client at npx -y @scorezilla/mcp with SCOREZILLA_TOKEN set in the environment.

3. Ask away

In Claude Code or Cursor: "Add a Scorezilla leaderboard to this game."

Tools

ToolWhat it does
list_gamesLists your games. Use this first to orient.
list_boardsLists leaderboards under a game, with each board's ranking, score kind, retention, bounds and period (all-time or daily).
get_keysReturns the public key (safe to embed) and the secret-key prefix. The full secret never leaves the dashboard.
get_board_top_nReturns the top entries on a board. The "is my integration working?" tool.
get_sdk_snippetReturns ready-to-paste integration code for a board. Optional axis args tailor it: anonymous/OAuth identity, client-only vs. server-validated anti-cheat, and the server language (TS/Python/Go/C#).
bootstrap_leaderboardCreates a new game + first board in one call, then returns the widget embed + SDK snippet + a plain-English recommendation. Same optional axis args (anti-cheat, OAuth, server language). The 90-second-demo path.
create_gameCreates a new (empty) game. Use when a game already exists (so bootstrap_leaderboard would conflict) or you want another.
create_boardAdds a leaderboard board to an existing game (by gameId), with full options (sortDir, scoreKind, retention, bounds, period). Pass period: "daily_utc" for a Daily Challenge board that starts empty every UTC day (past days stay readable); the default none is one all-time ranking. The period is fixed at creation.
mint_keyMints a fresh public/secret key pair for an existing game. The secret is shown once.
update_board_configChanges a board's score bounds (e.g. an anti-cheat maxScore) and retention. Partial updates; null clears a bound. A board's period can't be changed; create a new board instead.
update_game_configSets a game's browser-submit origin allowlist (e.g. https://yourgame.com, *.yourgame.com). An empty list allows all origins.

Retries

The create tools (bootstrap_leaderboard, create_game, create_board, mint_key) send an Idempotency-Key derived from their arguments. If a call times out and your assistant retries it with the same arguments within 5 minutes, the API returns the original result instead of creating a duplicate: the same game and board for bootstrap_leaderboard, the same key pair for mint_key.

After that window, or if bootstrap_leaderboard returns partial_failure or slug_taken_active, don't bootstrap again. Call list_games (and list_boards) to see what exists, then finish with create_board or mint_key.

Plan limits

Creating games and boards counts toward your Scorezilla plan's limits (Free: 2 games × 3 boards each; see pricing). When a write would go past a limit, the tool returns a plan_limit error with the limit and a direct upgrade link, which your assistant can pass on. Nothing is ever billed automatically. Requests are also rate-limited per token and per account; a rate_limited error says when to retry.

Flags

bash
scorezilla-mcp [--read-only] [--base-url=<url>] [--version] [--help]
  • --read-only — refuse to register the write tools (bootstrap_leaderboard, create_game, create_board, mint_key, update_board_config, update_game_config). Use this on shared/CI configs to guarantee the AI can't create or change resources.
  • --base-url=<url> — override the API origin. Defaults to https://api.scorezilla.dev. Useful for self-hosted or staging environments.

Env vars

  • SCOREZILLA_TOKEN — required. Bearer token issued at dashboard.scorezilla.dev/account/tokens.
  • SCOREZILLA_BASE_URL — same as --base-url, but via env. CLI flag wins if both are set.
  • SCOREZILLA_BETA_TOKEN — no longer needed; the MCP is open to every account. Kept for compatibility (sent as X-MCP-Beta when set).

Tokens: how they work

  • Tokens are scoped to the developer who issued them and see every game associated with their account.
  • The MCP server never returns the secret-key plaintext for a game — for that, copy from the dashboard.
  • Revoke a token any time at dashboard.scorezilla.dev/account/tokens. Revocations propagate within a few seconds.
  • Tokens are bearer credentials: anyone with the value can call the API on your behalf. Don't commit them to source; don't paste them into shared chats. Keep them in env blocks, password managers, or secret stores.

Runtime requirements

  • Node ≥ 20
  • A network path to https://api.scorezilla.dev

Releasing

Releases are CI-driven and require an approval click in the npm-publish GitHub Environment. The full flow:

  1. Author a changeset locally: pnpm changeset — describes what changed and the bump type. Commit the file under .changeset/.
  2. Merge to main. .github/workflows/release.yml runs and opens a "chore(release): version @scorezilla/mcp" PR that bumps package.json, syncs server.json (the MCP Registry manifest) via scripts/sync-server-json-version.mjs, and updates CHANGELOG.md.
  3. Merge the version PR. The same workflow then publishes:
    • npm tarball with --provenance (verifiable build attestation via GH OIDC + sigstore), plus a @scorezilla/mcp@<version> git tag and GitHub release (notes from CHANGELOG.md)
    • Post-publish smoke test that installs the published tarball and runs the binary
    • MCP Registry record via mcp-publisher login github-oidc → mcp-publisher publish, only after the smoke test passes; it waits for npm to serve the version and retries while the Registry can't see it yet
  4. Pre-flight guards that run before publish: typecheck, test, build, bin smoke (node dist/index.js --version), and release:check (asserts package.json and server.json versions agree).

Manual publishes from a developer terminal still work (bash scripts/publish.sh) but aren't the path CI takes — they skip provenance and approval gates. Use only for one-off recovery.

Issues / feedback

GitHub Issues.

License

MIT.

來源:README.md,提交 c7e5efc

工具

11

list_games

List all games owned by the authenticated developer. Returns each game with id, slug, name, and createdAt. Use this first to orient before creating new resources or inspecting an existing game. If the result is an empty list and the developer wants to add a leaderboard, call bootstrap_leaderboard next.

無需輸入參數。

list_boards

List all leaderboards (boards) under a given game. Each board has its own id, slug, ranking (sortDir: desc = high-score-wins, asc = lowest-time-wins), score kind (integer / duration_ms / float), retention policy, and optional min/max score bounds. Call this to find a board's id before generating a snippet (get_sdk_snippet) or reading standings (get_board_top_n), or to show the developer what boards already exist under a game returned by list_games.

輸入參數gameId必填

get_keys

Get a game's API keys. Returns, per key: kind ('public' | 'secret'), prefix, createdAt, and rotation/revocation timestamps. The PUBLIC key includes its full plaintext (it's safe to embed in client code). The SECRET key's plaintext is ALWAYS null over MCP — only its prefix is shown, for identification. Use this to retrieve the public key for a client_only integration, or to check which keys exist / have been revoked. If the developer needs the full SECRET key (for a client_with_server / server_only anti-cheat setup), direct them to https://dashboard.scorezilla.dev — the Keys section under their game — since it never leaves the dashboard.

輸入參數gameId必填

get_board_top_n

Get the top-ranked entries on a leaderboard. Call this after the developer submits a test score to confirm the integration is wired correctly — they will see their own test entry appear. Also useful for displaying current standings.

輸入參數nboardId必填

get_sdk_snippet

Call this whenever the developer asks how to submit a score, initialize the SDK, or integrate a leaderboard into their code — INCLUDING when they want a setup other than the default: anti-cheat (server-validated scores), OAuth player identity, or a non-TypeScript server. Returns a ready-to-paste integration snippet (the `snippet` field) tailored to the axis arguments. Omit the axis args for the simplest anonymous + client-only TypeScript setup; set hostingPattern='client_with_server' (+ a serverLanguage and/or auth provider) for the secure anti-cheat path. Use it right after bootstrap_leaderboard, or any time the developer needs the integration code again or wants to switch approach. (For the drop-in widget HTML embed, bootstrap_leaderboard returns it as snippets.widget.)

輸入參數gameId必填boardId必填authProviderhostingPatternserverLanguageplayerIdentityStrategy

bootstrap_leaderboard

Use this when starting from scratch — creates a new game AND its first board in one call, then returns ready-to-paste integration code wired against the board. The fastest path from "I want a leaderboard" to "scores are flowing." Do NOT call this if the developer already has games — call list_games first and use bootstrap_leaderboard only when no game exists yet. The response includes `snippets.sdk` (framework/server code), `snippets.widget` (a themeable drop-in HTML embed; null for server_only), and a plain-English `recommendation` to relay to the developer — paste `snippets.sdk` (and/or `snippets.widget`) into their code. The optional axis args tailor the output: set hostingPattern='client_with_server' for anti-cheat (server-validated scores), playerIdentityStrategy='auth_provider' (+ authProvider) for OAuth identity, or serverLanguage for a non-TypeScript server. Omit them all for the simplest anonymous + client-only setup. Retry-safe: if a call times out or the connection drops, calling it again with the SAME arguments within 5 minutes returns the original game and board instead of creating a duplicate. After that window, or on a partial_failure or slug_taken_active error, do NOT bootstrap again — call list_games to see what was created, then finish with create_board / mint_key.

輸入參數sortDirgameName必填gameSlug必填boardName必填boardSlug必填scoreKindauthProviderhostingPatternserverLanguageplayerIdentityStrategy

create_game

Create a new (empty) game in the developer's account. Use this when they ALREADY have a game (so bootstrap_leaderboard would conflict) or want an additional game — call list_games first to check. Returns the gameId; follow up with create_board to add leaderboards and mint_key for keys. For a first-ever game from scratch, prefer bootstrap_leaderboard (it does game + board + keys + code in one call).

輸入參數name必填slug必填

create_board

Add a leaderboard board to an EXISTING game (by gameId — get it from list_games). This is how you add boards to a game that already exists; bootstrap_leaderboard only works for brand-new games. sortDir "desc" = high-scores-win, "asc" = lowest-time-wins. Returns the created board including its id.

輸入參數name必填slug必填gameId必填sortDirmaxScoreminScorescoreKindretentionNretentionPolicy

mint_key

Mint a fresh public/secret key pair for an EXISTING game (by gameId). Returns publicKey (pk_ — safe for the browser/widget) and secretKey (sk_ — server-only, shown ONCE; tell the developer to store it now). Use when a game needs keys, or to add another pair. Key revocation/rotation is done in the dashboard. Note: the secret also appears in this MCP host's tool-call transcript, so treat the conversation as sensitive until cleared.

輸入參數gameId必填

update_board_config

Update a board's scoring config AFTER creation (by gameId + boardId — from list_games / list_boards). PARTIAL: only the fields you pass change. Use it to cap scores for anti-cheat (maxScore), set a floor (minScore), or change retention. A bound can be cleared by passing null. Returns the full updated board.

輸入參數gameId必填boardId必填maxScoreminScoreretentionNretentionPolicy

update_game_config

Set a game's allowed-origins allowlist AFTER creation (by gameId — from list_games). Restricts browser score submissions to specific web origins: an exact origin like "https://yourgame.com" or a wildcard host like "*.yourgame.com" (up to 20). Pass an empty array to allow all origins (the default). Returns the normalized stored list. Gates browser requests only — server-to-server calls send no Origin header.

輸入參數gameId必填allowedOrigins必填

版本歷史

4
  1. v0.4.5最新Oct 26, 2026
  2. v0.4.4Oct 20, 2026
  3. v0.4.2Oct 10, 2026
  4. v0.4.0Sep 16, 2026

評分

已滿足適用檢查項的 90%

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

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

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

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分