odds-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@odds-mcpWhat are the consensus odds for the upcoming NFL games?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
odds-mcp
An MCP server over odds data where every read names its evidence and the one write is impossible without an approval token.
Model Context Protocol is how an LLM agent gets tools. The dangerous part is never the reads - it is the one tool that does something. This server demonstrates the pattern that makes side-effectful agent tools safe enough to exist: a risk envelope checked before a human ever sees the request, a single-use approval token issued by a separate step, a publish that cannot happen without it, and an append-only audit log that records every attempt - especially the refused ones.
Data comes from odds-consensus: 5 books normalized into one schema, de-margined fair prices, and a cross-book consensus view. This repo is the integration surface on top.
MCP client (Claude, any agent)
│ tools
▼
odds-mcp server ──── reads ────> store.py (consensus / fair price / outliers)
│ ▲
└──── the one write ────> gate.py propose → approve → publish
│ (envelope · token · audit)
└──────> out/audit_log.jsonlTools
Tool | Kind | Behavior |
| read | events in the snapshot |
| read | books per market, price ranges, median fair odds, outliers |
| read | one market's fair price — or an explicit not-found with the valid alternatives. Ambiguous line? It asks. Single book? "A single book is not a consensus." Never a guess. |
| read | books off the consensus median, with exact deviation % |
| read | counts plus every upstream devig refusal — what the snapshot does not cover |
| write-intent | checked against the risk envelope (max % over fair, stake cap) before a human sees it; refusals carry the reason |
| human gate | issues a single-use approval token (production: a trader's Telegram approval card; same gate logic) |
| write | requires proposal id + matching token; token dies on use; replay fails |
| read | the append-only log of every attempt and outcome |
Related MCP server: polyrouter-mcp
Run it
pip install -r requirements.txt
python -m pytest tests/ -q # 13 tests
PYTHONPATH=src python -m odds_mcp.server # stdio MCP serverClaude Desktop config:
{"mcpServers": {"odds": {"command": "python", "args": ["-m", "odds_mcp.server"],
"cwd": "<this repo>", "env": {"PYTHONPATH": "src"}}}}What the tests pin down
Publishing without approval: refused. Wrong token: refused. Replaying a used token: refused. (Tokens are single-use and compared constant-time.)
A boost priced above the envelope (default: 5% over consensus fair) is refused at propose time, with the arithmetic in the reason.
get_fair_priceon a market with two live lines demands an explicitlineinstead of picking one; on a single-book market it refuses to call one price a "consensus".Every attempt - including every refusal - lands in the audit log.
All 9 tools are actually registered on the server (test asserts the exact set).
Why this shape
An agent that can only read is safe but useless; an agent that can write is useful but dangerous. The resolution is not "trust the model" - it is structure: envelope, then human, then token, then audit. The model can draft; only the gate can act; and the log never forgets.
MIT licensed. Part of a set of small, honest data gates: jigonyoo.com.
This server cannot be deployed
Maintenance
Related MCP Connectors
Sportsbook-derived no-vig fair value with confidence, provenance, and history over REST/MCP.
The Odds API MCP — sportsbook odds across 70+ books, 30+ leagues
Read-only MCP server for live Polymarket, Kalshi, Limitless odds; Manifold sentiment.
Hosted MCP for Kalshi prediction markets: search, odds, order books, settlement rules, and trading.
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP-compatible server that gives AI agents access to alternative sports data across 30+ leagues — odds, events, probabilities, settlement, and futures for prediction markets, DFS platforms, and sportsbooks.294 npmMIT
- AlicenseNot gradedqualityCmaintenanceMCP server for querying and optionally trading across prediction markets (Polymarket, Kalshi, Limitless, Manifold) through a unified API.31MIT

rapidoddsapi-mcpofficial
AlicenseAqualityCmaintenanceMCP server for RapidOddsAPI that provides bookmaker odds, live scores, arbitrage and value bets to AI assistants. It supports querying sports, odds, results, and betting opportunities with credit-based usage.5MIT- FlicenseAqualityDmaintenanceMCP server providing deterministic betting odds tools including conversions, margin, parlay pricing, settlement, and Kelly staking.7-