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)
claude mcp add --transport http sportwizzard https://mcp.sportwizzard.com/mcp \
--header "Authorization: Bearer sw_live_your_api_key_here"
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.)
Stdio (local)
npx -y sportwizzard-mcp
Claude Code:
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\):
{
"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 var | Default | Purpose |
|---|---|---|
SPORTWIZZARD_API_KEY | (none) | Your API key, sent as X-Api-Key. |
SPORTWIZZARD_BASE_URL | https://api.sportwizzard.com | Override the API base URL. |
SPORTWIZZARD_MOCK | (off) | 1 = canned sample data, no network. |
Tools
| Tool | What it does |
|---|---|
list_events / get_event | Events/fixtures — filter by league, team, status, time; full detail incl. weather, lineups, probable pitchers. |
get_event_stats | Box score: every player's stat line + team results for one event. |
get_odds / get_event_odds / get_player_odds / get_team_odds | Current 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_arbitrage | Arbitrage opportunities with legs and stake fractions (two/three-way). |
list_players / list_teams / get_player_stats / get_team_stats | Reference data and season/historical stats. |
get_player_game_logs | Bulk per-game stat rows — the model-training feed. |
download_snapshot | Save 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 / status | Coverage: books, leagues, market types, live counts. |
get_account_usage | Your 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:SEASONorTOURNAMENT. Omitted entirely on ordinary game rows.period— the window within that anchor:REG_SEASON(settles at the end of the regular season) orFULL(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 NFLDIVISION_WINNERselections share one season-anchoreventId, so withoutsegmentthey 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
git clone https://github.com/adamruehle/sportwizzard-mcp.git
cd sportwizzard-mcp && npm install && npm run build
SPORTWIZZARD_MOCK=1 node dist/index.js # or set SPORTWIZZARD_API_KEY
License
MIT © SportWizzard LLC