onside-football-mcp
v0.2.0
Published
MCP server exposing Onside's World Cup 2026 AI win-probability model, fantasy picks, live scores and Monte Carlo champion simulator. Plug-and-play for Claude Desktop, Cursor, Windsurf and any MCP-compatible client. Stdio + streamable-HTTP transports.
Maintainers
Readme
onside-football-mcp
MCP server exposing Onside's World Cup 2026 AI model, fantasy picks, live scores, and the 10,000-run Monte Carlo champion simulator. Plug-and-play for Claude Desktop, Cursor, Windsurf, and any MCP-compatible client.
Ask your AI assistant:
"Who does Onside's model favour to win World Cup 2026?" "What are the upset risks for matchday 1?" "Best captain pick for FIFA World Cup Fantasy MD2?" "Compare England and Argentina at WC 2026." "What matches are on right now?"
…and it'll answer using Onside's live data — the same engine that runs onsidearena.com/world-cup-2026.
Quick start (30 seconds)
Claude Desktop
Add this to your claude_desktop_config.json (see Claude's docs for the file location):
{
"mcpServers": {
"onside-football": {
"command": "npx",
"args": ["-y", "onside-football-mcp"]
}
}
}Restart Claude Desktop. Open a new chat. Ask "Who wins World Cup 2026 according to the Onside model?" and watch it call get_wc_champion_odds.
Cursor
In Cursor → Settings → MCP → "Add new MCP server" → paste:
{
"onside-football": {
"command": "npx",
"args": ["-y", "onside-football-mcp"]
}
}Windsurf / any STDIO client
Same npx -y onside-football-mcp command. The server speaks JSON-RPC over stdin/stdout (the MCP standard).
Manual install
npm install -g onside-football-mcp
onside-football-mcp(You'll need this if your client doesn't auto-resolve npx commands.)
Hosted / remote (Streamable HTTP transport, v0.2.0+)
If you need to run the server remotely — for example to register it with OpenAI's ChatGPT App Directory, or to share a single instance with a team — install and run the HTTP variant:
npm install -g onside-football-mcp
PORT=8080 onside-football-mcp-httpThe server exposes:
| Path | Method | Purpose |
| ----------- | ------ | ------------------------------------------------- |
| / | GET | Identity + version metadata |
| /healthz | GET | Liveness probe |
| /mcp | POST | MCP Streamable HTTP transport (JSON-RPC + SSE) |
It's stateless (no per-session storage) and CORS is open, so it slots straight into any hosted-MCP wiring.
What's in the box
Eight tools, each returning live data from onsidearena.com/api/v1:
| Tool | What it does |
|---|---|
| get_wc_match_prediction | Win-probability split for any matchup (e.g. eng vs cro) |
| get_wc_champion_odds | Top-N champions from the 10k Monte Carlo simulator |
| get_wc_team_info | Full nation profile: group, fixtures, PL footprint |
| get_wc_fixtures | Filtered fixtures (by team, group, stage, date range) |
| get_wc_fantasy_picks | FIFA WC Fantasy captain / differential / value picks per matchday |
| get_wc_upset_watch | Matches the model flags as upset candidates |
| get_wc_live_scores | Currently in-play matches + next kickoff |
| compare_wc_teams | Head-to-head profile of two nations |
Every response is JSON + a Powered by Onside attribution line. Free for non-commercial use.
Why an MCP server for the World Cup?
FPL MCP servers exist and are already indexed by Glama and PulseMCP. They proved the demand: people want their AI assistants to answer fantasy / football questions with real model output, not training-data approximations.
No World Cup 2026 MCP existed. This is it. The model is the same one running the public site — 10,000-run Monte Carlo over a 4-signal opponent rating (FIFA rank, Premier League squad footprint, host edge, confederation strength). Methodology + backtest at /methodology.
Configuration
| Env var | Default | What it does |
|---|---|---|
| ONSIDE_API_BASE | https://onsidearena.com/api/v1 | Override to point at a staging URL or a fork |
| ONSIDE_USER_AGENT | onside-football-mcp/0.1.0 | Override the UA sent to the API |
Caching is handled server-side at the API layer (Cache-Control: public, max-age=300 typical). No client-side cache.
Examples — what the AI does with this
"Who wins WC 2026?"
[Claude calls get_wc_champion_odds with limit=5]
Per Onside's 10,000-run Monte Carlo: France leads at 12.6%, then
Spain (11.7%), England (11.1%), Argentina (9.3%), and Portugal (7.6%).
No team is over 15% — the field is open. The model refreshes hourly.
Source: https://onsidearena.com/world-cup-2026/simulator"Should I captain Bellingham or Mbappé for WC Fantasy MD1?"
[Claude calls get_wc_fantasy_picks with matchday=1, category=captain, limit=5]
Per Onside's model:
1. Mbappé (France vs Senegal) — 12.0 xP/90, narrow-favourite fixture
2. Bellingham (England vs Croatia) — 11.4 xP/90, narrow-favourite fixture
3. Lautaro (Argentina vs Algeria) — 11.7 xP/90, strong-favourite fixture
...
The model edges Mbappé but Lautaro has the easier fixture. If you
want the higher floor, captain Lautaro. If you want the upside on a
tougher game, Mbappé."Which WC2026 group fixtures could shock?"
[Claude calls get_wc_upset_watch with limit=5]
Five group-stage fixtures the model flags as upset risks (underdog
combined win-or-draw probability above 38%):
1. Bosnia v Qatar — 58% upset probability (Group B, MD3)
2. DR Congo v Uzbekistan — 58% (Group K, MD3)
3. Brazil v Morocco — 57% (Group C, MD1)
...How it works
┌─────────────────┐ JSON-RPC ┌──────────────────┐ HTTPS ┌────────────────────────┐
│ Claude Desktop │ ◄──stdin/out──►│ onside-football- │ ─────────► │ onsidearena.com │
│ / Cursor │ │ mcp (this pkg) │ │ /api/v1/wc/* │
└─────────────────┘ └──────────────────┘ └────────────────────────┘
│
▼
┌────────────────────┐
│ Opponent-rating │
│ model + Monte │
│ Carlo simulator │
└────────────────────┘- The MCP server speaks the standard JSON-RPC over stdin/stdout (
StdioServerTransport). - Tool calls translate to HTTP GETs against
onsidearena.com/api/v1/wc/*. - Every response is enriched with attribution + a deep link back to the site.
- No API key, no auth, no rate limit (yet). Reasonable use is welcomed.
Trust & attribution
- Methodology: onsidearena.com/world-cup-2026/methodology — full rating function + probability function + backtest.
- Data source: Onside's own pipeline; live scores via football-data.org (4s timeout, soft-fail).
- License: MIT for the server code; the underlying API data is free for non-commercial use. Commercial: email [email protected].
- Attribution requirement: every tool response includes a "Powered by Onside" line. Please keep it when re-publishing or quoting.
If you build something on top of this, we'd love to hear about it: [email protected].
Roadmap
- [x] World Cup 2026 prediction model (this server)
- [x] Monte Carlo champion simulator
- [x] FIFA Fantasy picks per matchday
- [x] Live scores + next-kickoff fallback
- [x] v0.2.0 — Streamable HTTP transport (
onside-football-mcp-http) for hosted / ChatGPT App Directory - [ ] FPL 26/27 captain picks per gameweek (post-WC)
- [ ] FPL set-piece intelligence (post-WC)
- [ ] Resource:
fixture://<slug>reads + prompts:analyse_captaincy,audit_squad
PRs welcome on the GitHub repo.
Related
- MCP specification
- Claude Desktop MCP docs
- Onside · World Cup 2026 hub
- Onside · Methodology
- Existing FPL MCP server (Premier League, by rishijatia)
Made with ⚽ by Onside. MIT licensed.
