mcp server
ABBA
Agent-callable sports analytics toolkit -- live data, ensemble predictions, Kelly sizing. pip install, HTTP REST, or MCP server.
Set up
Runs on your computer. Pick your agent and operating system.
Before you start
- uv (`curl -LsSf https://astral.sh/uv/install.sh | sh`)
{
"mcpServers": {
"abba": {
"command": "uvx",
"args": [
"abba"
]
}
}
}same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12
Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs
README
synced Oct 23, 2026ABBA
ABBA is a DuckDB-backed sports analytics toolkit for agent workflows. It exposes query, prediction, market, and workflow tools through three interfaces:
- direct Python import
- a small HTTP server
- an MCP server
The active runtime path lives under src/abba/server, src/abba/engine, src/abba/storage, and src/abba/workflows.
What It Does
- Queries games, odds, team stats, rosters, and NHL-specific datasets
- Produces general game predictions and NHL-specific predictions
- Calculates EV and Kelly sizing
- Runs multi-step workflows such as
game_prediction,tonights_slate, andbetting_strategy - Stores local data in DuckDB for repeatable development and testing
Current toolkit surface: 23 callable tools.
Quick Start
Install for local development
git clone https://github.com/paxtonedgar/ABBA.git
cd abba-nhl
pip install -e ".[dev]"
Use from Python
from abba import ABBAToolkit
toolkit = ABBAToolkit(db_path=":memory:", auto_seed=True)
tools = toolkit.list_tools()
games = toolkit.query_games(sport="NHL", status="scheduled")
if games["count"]:
game_id = games["games"][0]["game_id"]
prediction = toolkit.nhl_predict_game(game_id)
odds = toolkit.compare_odds(game_id)
Run the HTTP server
abba-server
Then call:
curl http://localhost:8420/tools
curl -X POST http://localhost:8420/tools/call \
-H "Content-Type: application/json" \
-d '{"name":"list_sources","arguments":{}}'
Run the MCP server
abba-mcp
Example MCP config:
{
"mcpServers": {
"abba": {
"command": "abba-mcp",
"env": {
"ABBA_DB_PATH": "abba.duckdb"
}
}
}
}
Tool Categories
Data
query_gamesquery_oddsquery_team_statsquery_goaltender_statsquery_advanced_statsquery_cap_dataquery_rosterlist_sourcesdescribe_datasetrefresh_data
Prediction and analysis
predict_gamenhl_predict_gameexplain_predictiongraph_analysisseason_reviewplayoff_odds
Market and session
find_valuecompare_oddscalculate_evkelly_sizingsession_budget
Workflows
run_workflowlist_workflows
Current Scope
The repo is strongest today as:
- a local agent toolkit
- an NHL-oriented demo and experimentation surface
- a testbed for prediction, workflow, and trust-contract checks
The repository also contains experimental and legacy modules outside the main toolkit path. If you are new to the codebase, start with:
src/abba/server/toolkit.pysrc/abba/server/tools/src/abba/engine/src/abba/storage/duckdb.pysrc/abba/workflows/engine.py
Live Data Notes
The active live-refresh path currently covers:
- NHL standings and schedule
- NHL rosters and goalie stats
- optional odds ingestion when
ODDS_API_KEYis set
Development and tests also rely on deterministic seed data.
Development
Run tests
From the repo root:
pytest
For a focused local pass:
pytest tests/test_storage.py tests/test_engine.py tests/test_toolkit.py
Repo layout
src/abba/server/ Public toolkit interfaces
src/abba/engine/ Prediction, EV, Kelly, graph, and NHL logic
src/abba/storage/ DuckDB-backed persistence
src/abba/workflows/ Multi-step workflow orchestration
src/abba/connectors/ Seed and live data ingestion
tests/ Unit, integration, and contract-style checks
docs/ Project notes, plans, and audit material
Documentation
Start with:
docs/README.mddocs/architecture-dossier.md
Not every document in docs/ is canonical. Some are historical planning notes or audit artifacts.
License
MIT