Sportsdata Agents
БесплатноНе проверенFree, open-source agentic sports-data workbench — 28 specialist agents over live odds + stats from 63 providers: arbitrage & value detection, backtesting with C
Описание
Free, open-source agentic sports-data workbench — 28 specialist agents over live odds + stats from 63 providers: arbitrage & value detection, backtesting with CLV, live monitors, racing, fantasy. Runs locally, BYO model key.
README
CI Release License: MIT Support on Ko-fi
Documentation: Architecture & system design · Repo structure · Agent roster · Operating it · Security & cost controls · Updating the app · Next steps · Releasing. These are kept current by the
docs_keeperops agent.
An agentic platform that turns the sportsdata-mcp tool catalogue into whatever desk you need — a cross-bookmaker trading desk, a sports-analytics / coaching team, a fantasy desk, or a custom mix. It's one composable team of LLM agents over a shared data backbone: they gather and analyse sports data, model outcomes, compare odds, optimise fantasy lineups, and track performance — you turn on the agents and modules that fit your purpose. A separate engineering team of agents maintains the codebase via CI-gated PRs.
You assemble a workspace from modules we build and you select — Match Analytics, Fantasy, Racing, Trading/Betting, and more. Nothing is privileged: a Trading module and a Coaching module are equal citizens of the catalogue. Trading/Betting is just one module (and jurisdiction-gated), so a workspace without it is a pure analytics tool (bigger market, lower compliance surface).
Advisory only — no agent ever places a bet or moves money.
The platform informs. It surfaces recommendations, the statistics you asked for, and the bets you may choose to place (with stakes, books, and reasoning). You always take the action. This is a research and analytics tool, not a betting operator.
Design
🛠️ BUILD_PLAN.md — the technical, phase-by-phase implementation checklist to tick off while coding (P0 → P4, milestones, exit gates).
🖥️ P4_DESKTOP_PLAN.md — the P4 replan: a downloadable desktop app (the Cursor-style harness on the user's machine) instead of hosted SaaS — shell options, process/storage/secrets architecture, trade-offs, revised milestones.
📐 PLAN.md — the full architecture: the two-plane design, the agent roster, the user-customizable agent-spec format, the data model, orchestration & model selection, sandboxing, interfaces (CLI → Slack → web), multi-tenancy / SaaS-readiness, the self-improvement loop, the delivery roadmap, and a decision register with the pros and cons of every choice.
What's built (P0–P4 complete — a downloadable desktop app)
The agent team (27 specs in src/sportsdata_agents/specs/ — 20 product, 7 ops): an orchestrator that
routes and delegates; odds/stats specialists over the live data plane; a racing
analyst (racecards, results, cross-book win/place) and a prediction-market
analyst (Kalshi/Polymarket + the exchange-vs-book edge); a modelling agent
(general model development — features, calibration, Brier/log-loss, logistic regression,
XGBoost skills); a value scout (vig removal, +EV detection, cross-book best price); a
backtester (entry-at-prediction-time discipline, CLV vs close); bankroll manager, bet
tracker and bet notifier (advisory only); a market steward that maintains the market
dictionary as data; an arb hunter (deterministic cross-book arbitrage incl.
exchange-vs-book); a news scout over X/official feeds; a fantasy advisor; Slack manager;
data-analysis agent (sandboxed run_python); a generalist catch-all that grows the
platform (writes reusable skills, builds new agents as it learns your needs); concierge
— plus seven ops agents (health, improver, reviewer, evals, triage, site manager,
docs keeper) on the separate operations plane.
Every answer is grounded (numbers must come from tool results — a deterministic
verifier checks), sourced (provenance per tool call), budgeted (one cost ceiling
per team run) and audited (runs/tool-calls/costs land in the DB when configured).
The odds warehouse (agents ingest): discovery-driven, capture-everything ingestion
across 10 bookmakers — Sportsbet, TAB, Unibet/Kambi, Entain (Ladbrokes/Neds),
Pinnacle, PointsBet, BetR, FanDuel (US sportsbook + racing) — plus two prediction
markets (Kalshi, Polymarket) — in five tiers:
- hot (5–30 min): every provider's own discovery route → all sports, all competitions, primary + inline markets — nothing hardcoded, new comps/sports appear automatically;
- full-book (60 min): every market of every fixture (rotating windows over the megabyte-scale per-fixture firehoses);
- racing (~3 min): win+place cards from TAB, Sportsbet, BetR, PointsBet, Unibet, FanDuel, soonest races first;
- racing futures (60 min): ante-post Cup/carnival outrights from TAB, Sportsbet, PointsBet, Unibet;
- prediction markets (15 min): Kalshi and Polymarket exchange quotes captured as decimal odds (1/price) — event contracts read like any book's board (Polymarket's Gamma edge is geo-gated; the feed runs wherever the edge answers).
Sports futures (premiership winners, Brownlow, NFL/MLB futures, …) ride the hot tier:
Kambi competitions.json, Sportsbet's Outrights route, Entain/BetR/TAB inline.
Normalizers never filter by market name — canonical_market() only renames onto shared
keys (h2h/spread/total/win/place), driven by a market dictionary that is data
(packaged seed + steward-maintained local overrides; merge safety enforced in the tools:
qualifier markets can never alias into base families). Raw observations land in
odds_snapshots (prunable; carries the parsed advertised start time); the
change-point-only prices series is what models and backtests read.
Event resolution (agents resolve): deterministic, LLM-free mapping of every book's
private event ids onto shared fixtures (fuzzy-subset team-token matching, swap-tolerant,
windowed on the event's advertised start so futures join months ahead; ambiguity is
counted and skipped, never guessed). That join powers cross_book_prices (best price per
selection across every mapped book), resolution-aware backtest settlement (a result
recorded under any book settles every book's series, with side-orientation translated
between books' listing orders), and the find_fixture / best_prices agent tools.
The quant loop: save_model refuses uncalibrated models → record_predictions
(backdatable predicted_at; side-relative selections must name their book) →
run_backtest (flat-stake replay, no lookahead: entry is the prevailing price at
prediction time; CLV vs close, or vs a sharp benchmark via clv_book="Pinnacle") →
agents results settles from racing placings + official NBA/AFL/NRL scoreboards →
agents eval gates golden metrics (calibration, CLV backtest, grounding, event
resolution) against a committed baseline.
Quickstart
# 1) The data plane (sibling checkout, its own venv)
git clone https://github.com/DanielTomaro13/sportsdata-mcp.git
cd sportsdata-mcp && python -m venv .venv && .venv/bin/pip install -e . && cd ..
# 2) The agent plane
git clone https://github.com/DanielTomaro13/sportsdata-agents.git
cd sportsdata-agents && python3.12 -m venv .venv && .venv/bin/pip install -e ".[dev]"
# 3) Configure (.env — see .env.example)
# - ONE model key: ANTHROPIC_API_KEY / OPENROUTER_API_KEY / GEMINI_API_KEY /
# GROQ_API_KEY / OPENAI_API_KEY (Gemini + Groq have free tiers)
# - point at the data plane binary:
# SPORTSDATA_AGENTS_MCP_COMMAND=["/abs/path/to/sportsdata-mcp/.venv/bin/sportsdata-mcp"]
# 4) Database (audit rows + the odds warehouse). SQLite works out of the box:
# SPORTSDATA_AGENTS_DATABASE_URL="sqlite+aiosqlite:////path/to/warehouse.db"
# or Postgres via docker compose up -d; then:
.venv/bin/alembic upgrade head
# 5) Talk to the team
.venv/bin/agents run "Using MLB data: which team does Aaron Judge play for?"
.venv/bin/agents chat # interactive REPL (/exit to quit)
.venv/bin/agents run "..." --agent value_scout # one agent instead of the team
.venv/bin/agents list && .venv/bin/agents lint # spec catalogue + validation
The data loop
.venv/bin/agents ingest --once # one capture cycle across all due feeds
.venv/bin/agents ingest --once --feed tab_racing_futures # a single feed
.venv/bin/agents ingest --loop # scheduled loop (per-feed cadence)
.venv/bin/agents schedule --cron 60 # THE CONDUCTOR: one cron line runs everything
.venv/bin/agents schedule --status # per-job state, failures, pacing
.venv/bin/agents schedule --dry-run # what this tick would run
.venv/bin/agents ingest --once --prune 90 # retention for raw snapshots
.venv/bin/agents resolve # map book events -> shared fixtures
.venv/bin/agents resolve --dry-run # count without writing
.venv/bin/agents results # settle: racing placings + league finals (cron daily)
# first-party NBA/AFL/NRL/MLB; ESPN scoreboard for the rest
.venv/bin/agents steward # market_steward dictionary audit (cron weekly)
.venv/bin/agents dictionary-promote --write # promote steward overrides into the committed seed
.venv/bin/agents movement --event <id> # change-point series for one event
.venv/bin/agents eval --baseline src/sportsdata_agents/evals/baseline.json
.venv/bin/agents refresh-books # weekly: re-verify bookmaker ids
The ingest worker runs the MCP as a scoped subprocess per provider group and tolerates per-feed failures (one book down never sinks the cycle). Known exclusions, by policy or upstream fault: NBA CDN (aggregator — books of record only), Betfair (public key returns no prices from AU; code ready for an authed key), Entain racing GraphQL (upstream persisted-query drift; Entain sports REST — including its outrights — is unaffected).
Testing
.venv/bin/pytest # offline suite (default: not live, not eval) — CI runs this
.venv/bin/pytest -m live # real MCP + real model (needs a key; ~cents or free tier)
.venv/bin/pytest -m eval # golden eval cases, graded for factual accuracy
.venv/bin/ruff check . && .venv/bin/mypy src # the other two gates
Status
P4 complete — code-ready to ship. The platform is a downloadable desktop app
(the "Cursor for sports data" model): agents app runs the gateway + the conductor
in one supervised process on the user's machine — their compute, their warehouse,
their own odds capture, BYO model key. On top of P0–P3 (the operations plane and
its merged self-improvement PRs, the line monitor + cross-book arbitrage watch
with honesty re-measurement, prediction markets beside the bookmakers, fantasy +
agent-builder + Discord), P4 added: the web chat UI with the
learned-skills panel (everything is free and open source — the old tier/licensing
machinery is dormant, see docs/SECURITY.md); the
macOS packaging + signing pipeline (tag → notarized DMG, pending only the Apple
Developer ID); a signed OTA data feed; daemon hardening (DNS-rebind guard,
crash-restart supervision); the generalist growth loop; and the operator
console (agents config|costs|ops status + the in-app operator panel, gated by a
signed operator licence claim — on a release build the SPORTSDATA_OPERATOR env
var is ignored; see docs/SECURITY.md). The chat UI has since
grown into a full agentic workbench: provider on/off toggles, expandable
per-reply reasoning traces, agent activity views, a live monitors pane
(arb / line-move / value alerts), per-agent model pins, per-conversation model +
data-provider scope, and an in-app marketplace that hands checkout off to the
browser (no payment logic in the app). What remains to go live is account
setup, not code — see docs/NEXT_STEPS.md, the milestone log
in docs/history/BUILD_PLAN.md, and
POST_DEV.md for everything built-but-switched-off.
Support this project
sportsdata-agents is free and MIT-licensed, with no paid tier and nothing gated. If it's useful to you, you can support the work at ko-fi.com/danieltomaro — optional, and a star or a good bug report helps just as much.
Open source under the MIT License. Copyright (c) 2026 Daniel Tomaro.
Установка Sportsdata Agents
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/DanielTomaro13/sportsdata-agentsFAQ
Sportsdata Agents MCP бесплатный?
Да, Sportsdata Agents MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Sportsdata Agents?
Нет, Sportsdata Agents работает без API-ключей и переменных окружения.
Sportsdata Agents — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Sportsdata Agents в Claude Desktop, Claude Code или Cursor?
Открой Sportsdata Agents на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
автор: modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
автор: xuzexin-hzMCP-Agent
A simple, composable framework to build agents using Model Context Protocol by [LastMile AI](https://www.lastmileai.dev)
автор: lastmile-aiSpring AI MCP Client
Provides auto-configuration for MCP client functionality in Spring Boot applications.
mcp.natoma.ai
A Hosted MCP Platform to discover, install, manage and deploy MCP servers by [Natoma Labs](https://www.natoma.ai)
MCPHub
Website to list high quality MCP servers and reviews by real users. Also provide online chatbot for popular LLM models with MCP server support.
MCP Servers Rating and User Reviews
Website to rate MCP servers, write authentic user reviews, and [search engine for agent & mcp](http://www.deepnlp.org/search/agent)
mkinf
An Open Source registry of hosted MCP Servers to accelerate AI agent workflows.
Compare Sportsdata Agents with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории ai
