Sportwizzard

com.sportwizzard由 sportwizzard.com 發布官方發布者v0.1.4更新於 Oct 24, 2026

Real-time sports betting data: odds, player props, edges and arbitrage from 35+ books and DFS apps.

已驗證Streamable HTTP可網頁執行金融資料與分析

概覽

AI 產生的概覽

唯讀的運動博彩資料伺服器,讓助理取得 35+ 家博彩公司與 DFS 應用的即時賠率、球員盤口、+EV 優勢與套利機會。

可以做什麼
  • 查詢賽事與賽程,含天氣、陣容、可能先發投手等詳情,以及技術統計與每位球員的數據列
  • 依賽事、球員、球隊、博彩公司、盤口或聯盟取得目前價格,包括賽季期貨與錦標賽冠軍盤
  • 提供相對於去水公平市場的 +EV 優勢,以及含各腿與投注比例的二元、三元套利機會
  • 瀏覽參考資料:球員、球隊、博彩公司、聯盟、盤口類型、賽季與歷史數據,以及批次逐場資料
  • 下載完整即時盤口快照(gzip),可選擇附帶價格歷史,並查看帳戶方案、速率限制與每月用量
適用情境
適合讓助理研究博彩市場、跨博彩公司比價、篩選優勢或套利機會,或取得運動統計與歷史逐場資料進行分析。它為唯讀,因此適合分析與報告,而非下注。
執行需求
需要 SportWizzard API 金鑰:託管端點透過 Authorization 標頭以 bearer 形式傳送,本機 npm 套件(以 npx 執行,需 Node.js)則透過 SPORTWIZZARD_API_KEY 環境變數提供。需能連線至 SportWizzard API。可選用 SPORTWIZZARD_BASE_URL 覆寫位址,以及 SPORTWIZZARD_MOCK=1 使用離線範例資料。
安裝前請注意
API 金鑰屬於機密,透過 Authorization 標頭或 SPORTWIZZARD_API_KEY 傳遞,託管伺服器會將其轉送至 SportWizzard API。快照下載可能達數十 MB 並消耗額度,附帶歷史比一般快照消耗更多額度。成功的即時呼叫會送出盡力而為的用量回條,README 稱其中不含工具參數或結果資料。賠率資料僅供參考,不構成投注建議。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Sportwizzard,將其新增到工作區。
  2. 連接 Authorization token 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/com.sportwizzard%2Fsportwizzard/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "sportwizzard": {
      "type": "http",
      "url": "https://mcp.sportwizzard.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

SportWizzard MCP Server

Query live sports-betting data — odds, player props, +EV edges, arbitrage, stats and reference data from 35+ sportsbooks and DFS apps — from any MCP-capable AI agent (Claude Code, Claude Desktop, Codex, Cursor, …).

20 read-only tools over the SportWizzard REST v1 API, available two ways: a hosted remote server (zero install) and a stdio server via npx. Get a free API key at https://sportwizzard.com/account (API Keys tab — no card required).

Hosted (recommended — zero install)

bash
claude mcp add --transport http sportwizzard https://mcp.sportwizzard.com/mcp \  --header "Authorization: Bearer sw_live_your_api_key_here"
bash
codex mcp add sportwizzard --transport http --url https://mcp.sportwizzard.com/mcp \  --header "Authorization: Bearer sw_live_your_api_key_here"

The hosted server is a thin proxy: your key is forwarded to the SportWizzard API, which enforces auth and rate limits. All 20 tools work on both transports. (download_snapshot on the hosted server returns a CDN download URL + a ready-to-run command your agent executes locally; on stdio it writes the file directly.)

Successful authenticated live tool calls send a best-effort account-usage receipt. The measurement request contains no tool arguments or result data. For hosted download_snapshot, a successful CDN HEAD check counts because the tool has verified that the returned download URL is reachable; a failed HEAD check does not count.

Stdio (local)

bash
npx -y sportwizzard-mcp

Claude Code:

bash
claude mcp add sportwizzard -e SPORTWIZZARD_API_KEY=sw_live_your_api_key_here -- npx -y sportwizzard-mcp

Claude Desktop (claude_desktop_config.json — macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):

json
{  "mcpServers": {    "sportwizzard": {      "command": "npx",      "args": ["-y", "sportwizzard-mcp"],      "env": { "SPORTWIZZARD_API_KEY": "sw_live_your_api_key_here" }    }  }}

Mock mode (no key, no network)

Set SPORTWIZZARD_MOCK=1 to get canned sample responses — useful for wiring up an integration before you have a key.

Configuration

Env varDefaultPurpose
SPORTWIZZARD_API_KEY(none)Your API key, sent as X-Api-Key.
SPORTWIZZARD_BASE_URLhttps://api.sportwizzard.comOverride the API base URL.
SPORTWIZZARD_MOCK(off)1 = canned sample data, no network.

Tools

ToolWhat it does
list_events / get_eventEvents/fixtures — filter by league, team, status, time; full detail incl. weather, lineups, probable pitchers.
get_event_statsBox score: every player's stat line + team results for one event.
get_odds / get_event_odds / get_player_odds / get_team_oddsCurrent prices, scoped by event, player, team, sportsbook, market, or league. get_odds also takes scope: event (game markets), season (season-long futures), tournament (golf/tennis outrights); omit for all.
get_edges+EV edges vs. devigged fair market (league, source, min_edge filters).
get_arbitrageArbitrage opportunities with legs and stake fractions (two/three-way).
list_players / list_teams / get_player_stats / get_team_statsReference data and season/historical stats.
get_player_game_logsBulk per-game stat rows — the model-training feed.
download_snapshotSave the full live board to disk (tens of MB gzip). include_history: true also populates every selection's priceHistory (same schema; 5 credits flat vs 1).
list_sportsbooks / list_leagues / list_markets / statusDiscover source IDs, covered leagues and supported market types; check customer API availability.
get_account_usageYour plan tier, rate limit, and monthly usage.

Every response uses the envelope { success, data, nextCursor, meta }; when nextCursor is present the tool appends a _paging hint so agents know to continue.

Futures (season-scope markets)

get_odds with scope=season returns season-long futures — division/conference/championship winners, award odds, team win totals, season leaders and full-season player props. Three orthogonal axes describe them:

  • marketScope — which anchor the market hangs off: SEASON or TOURNAMENT. Omitted entirely on ordinary game rows.
  • period — the window within that anchor: REG_SEASON (settles at the end of the regular season) or FULL (runs through the playoffs).
  • segment — which slice of the competition: AFC_EAST, NL, SEC, … Present only when the market is segment-scoped, and load-bearing: all 32 NFL DIVISION_WINNER selections share one season-anchor eventId, so without segment they read as a single 32-team race instead of 8 divisions.

Notes: winner/award markets are categorical (one YES selection per competitor, teamSide: "NONE", usually no NO side); eventStartTime on a futures row is the season anchor / settlement date, not a kickoff; every book's futures for a competition share the same season eventId; and futures are deliberately excluded from get_edges / get_arbitrage (they never enter de-vig or edge math). Scope matching is exact — season does not include TOURNAMENT — and an invalid value returns HTTP 400 naming the valid ones.

From source

bash
git clone https://github.com/sportwizzard/sportwizzard-mcp.gitcd sportwizzard-mcp && npm install && npm run buildSPORTWIZZARD_MOCK=1 node dist/index.js   # or set SPORTWIZZARD_API_KEY

Maintainers

This README ships inside the npm package, so keep it free of internal hostnames, keys and private notes (the repository is public).

Layout. src/index.ts is the stdio entry (dist/index.js, the npm bin); src/httpServer.ts is the hosted Streamable HTTP entry (stateless, one request per POST; Host allow list and bearer-key handling); src/auth.ts validates the caller's key against the API, caches it and applies the per-key rate limit; src/tools.ts and src/server.ts define and register tools; src/client.ts is the REST client and src/mock.ts the SPORTWIZZARD_MOCK=1 data. tests/stdio-smoke.mjs and tests/http-smoke.mjs are end-to-end smokes against a loopback mock API (no credentials, no production calls).

Build and verify (the PR check, .github/workflows/ci.yml, runs the same pack-and-smoke plus a no-push container build):

bash
npm ci --ignore-scripts && npm run buildrelease_dir="$(mktemp -d)"npm pack --ignore-scripts --pack-destination "$release_dir"npm install --prefix "$release_dir/consumer" --omit=dev --ignore-scripts --no-audit --no-fund "$release_dir"/*.tgznpm run smoke -- "$release_dir/consumer/node_modules/sportwizzard-mcp/dist/index.js" "$release_dir/smoke.json" "$release_dir"/*.tgznpm run smoke:http -- "$release_dir/consumer/node_modules/sportwizzard-mcp/dist/httpServer.js" "$release_dir/http-smoke.json"rm -rf "$release_dir"

The stdio smoke checks tools/list, get_odds scope=season forwarding and a snapshot download with history; the HTTP smoke checks /healthz, key rejection, the Host allow list, tools/list, key forwarding and a clean SIGTERM exit. Both prove transport and packaging, not live data quality.

Releasing.

  • Hosted server: publish-container.yml publishes a SHA-tagged GHCR image on every push to main. It deploys only when that digest is promoted in the Ops deployment/releases/api.yaml row, which owns placement, limits and credential references.
  • npm package: bump version in package.json, run npm install --package-lock-only, sync server.json, merge to main, then run the manual Publish npm package workflow (publish-npm.yml). It builds once, smokes the packed tarball and publishes those exact bytes through npm trusted publishing (OIDC; no npm token). Publishing npm does not update the hosted container.

Gotchas. Hosted runtime settings are MCP_HTTP_PORT (default 8091), MCP_ALLOWED_HOSTS, AUTH_CACHE_TTL_MS, RATE_LIMIT_PER_MIN, SPORTWIZZARD_SNAPSHOT_URL and SPORTWIZZARD_SNAPSHOT_HISTORY_URL, plus the customer settings above. download_snapshot writes a file on stdio but returns a CDN URL and a command on the hosted server. Never print or commit ~/.npmrc. Open work goes in GitHub issues in this repository.

License

MIT © SportWizzard LLC

來源:README.md,提交 8768261

工具

0
該伺服器需要 API 金鑰等憑證,因此 SourceWeft 無法在沒有憑證的情況下讀取其工具,也未收錄。

版本歷史

1
  1. v0.1.4最新Sep 16, 2026

評分

已滿足適用檢查項的 85%

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

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具15 分

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

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