MCP server for comparing live sports odds, scores, fixtures, standings, racing data, and league statistics across providers.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Sportsdata MCP.
Ask your AI which bookmaker is paying more β and get a real answer.
Free & open source (MIT). ~841 tools across 64 providers in Claude Desktop,
Cursor, or any MCP client. uvx sportsdata-mcp serve and you're done.
You: Which book has the best price on Parramatta v Penrith, and how big is the spread?
Claude queries five books at once and comes back with:
| Book | Eels | Panthers |
|---|---|---|
| Betfair | 1.18 | 6.20 |
| BetR | 1.17 | 5.00 |
| PointsBet | 1.17 | 4.80 |
| Pinnacle | 1.17 | 4.78 |
| Sportsbet | 1.19 | 4.75 |
Real captured odds. The same bet on Penrith pays $6.20 at Betfair and $4.75 at Sportsbet β a 30% spread on identical risk. That gap is invisible unless something is reading every book at once.
What this one is for: comparing prices, not just fetching scores. Plenty of sports MCP servers will get you fixtures and standings. This one is built around disagreement between books β eleven bookmakers, the Betfair exchange, and two prediction markets (Kalshi, Polymarket) side by side on the same market, plus twenty-seven official league/stats feeds. Deep on AU/NZ books (Sportsbet, TAB, Ladbrokes, PointsBet, BetR, Dabble) and on racing β thoroughbred, greyhound and harness with tote pools and exchange money β which most catalogues skip entirely. Capability tags make providers interchangeable, so "compare odds across books" is one question rather than forty-three integrations.
Worth being straight about, because it decides whether the first thing you ask works or looks broken.
Best fit β you follow or bet into Australian markets. The cross-book edge above is the reason this exists, and it is built on 159 tools across eight Australian books: Sportsbet, TAB, PointsBet, BetR, Ladbrokes/Neds, Betfair, Dabble, Unibet. Nothing else exposes that, and racing β thoroughbred, greyhound and harness, with tote pools and exchange money β is covered to the same depth.
Also good β you want sport data anywhere in the world. The other 682 tools across 56 providers are not region-locked: MLB, NBA, NFL, NHL, the Premier League, cricket, golf, tennis, F1, UFC, fantasy (ESPN, Sleeper, FPL), plus Pinnacle and the Kalshi and Polymarket prediction markets. 486 of those need no key at all.
Not a fit β you want US sportsbook odds. Those eight books are licensed for Australia and block traffic from outside it. From the US you get Pinnacle, FanDuel, Kalshi and Polymarket for prices; the stats and fantasy side works in full. If cross-book US pricing is what you came for, this is not the tool.
Since 0.31.0 the catalogue includes sportsbet_place_bet, tab_place_bet,
entain_place_bet and unibet_place_bet. These stake real money from your own
account, using credentials you supply. Nothing calls them on its own β they are
ordinary tools, so whatever you connect this server to decides when they run.
Two things follow, and neither is optional reading:
list-groups shows exactly what you have turned on.The agent workbench applies its own policy on top of this β everything starts in
paper mode and stakes nothing until you opt a book in β but that is the app's
guardrail, not this server's. On its own, this package does what it is asked.
Rather than take that on trust, ask it:
It probes every provider from your machine and prints what answered, what your location blocks, and what needs a key β so an empty result is never ambiguous between "no data" and "wrong country".
Two live terminals, both open source, both running on nothing but these tools:
sportsdata-ai.com/sports β prediction markets + exchange as a de-vigged sharp line, every book measured against it.

sportsdata-ai.com/board β racing money flow: which runners are firming, fair price vs the field, win%/ROI scorecard.

An MCP server that exposes sports-data APIs (bookmakers, league/governing-body feeds, aggregators) as tools, configurable so you only load the tool groups you need. A capability-tag system makes tools from different providers interchangeable wherever they answer the same question β so the model can compare odds across bookies or stats across data sources with one discovery call.
The catalogue spans bookmakers, league/governing-body feeds, and stats
aggregators, and it keeps growing. New providers are added by dropping a YAML
spec into src/sportsdata_mcp/specs/ β the engine needs no code changes β so
the exact provider and tool counts move over time. Run sportsdata-mcp list-groups for the live inventory, and three meta-tools (group discovery,
capability lookup, resource listing) are always on regardless of what you
enable.
One-liner (any MCP client config, via uv):
Prebuilt app (no Python needed): grab the latest
release
(macOS + Windows), unzip, and run sportsdata-mcp setup β it writes the config
for Claude Desktop / Cursor for you. The macOS build is unsigned for now:
right-click β Open the first time.
From source:
Provider endpoints drift (e.g. Entain rotates its GraphQL persisted-query hashes).
update-specs fetches a signed spec bundle and applies it into an overlay under
~/.sportsdata/spec-overlay, which the loader prefers over the packaged copy β so a drift
fix doesn't need a whole new app build. The bundle is Ed25519-verified against a baked key
(a product build refuses an unsigned/forged bundle; anti-rollback refuses a stale replay).
Publish one with scripts/publish-spec-bundle.py; point --url / $SPORTSDATA_SPEC_FEED_URL
at the asset. Restart the server after applying.
Enable tool groups with a config file or the SPORTSDATA_MCP_GROUPS env var:
See examples/ for Claude Desktop / Claude Code config snippets,
a worked cross-bookie odds-comparison prompt,
and an NBA shot-chart + box-score walkthrough that
shows the nba_stats_call dispatcher pattern end to end.
Config is resolved in this order (first hit wins):
--config <path> flag$SPORTSDATA_MCP_CONFIG./sportsdata-mcp.yaml~/.config/sportsdata-mcp/config.yamlA provider whose auth reads env: SOME_VAR is satisfied by the real environment
variable first, then by a secrets: { SOME_VAR: "..." } entry of the same name
(a local-dev convenience β keep real secrets in the environment in production).
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/danieltomaro13-sportsdata-mcp)<a href="https://allmcps.com/mcp/danieltomaro13-sportsdata-mcp"><img src="https://allmcps.com/api/badge/danieltomaro13-sportsdata-mcp?style=directory" alt="Sportsdata MCP on AllMCPs" /></a>