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 分