odds-mcp
Click on "Install 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: pmxt-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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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.2915MIT
- AlicenseCqualityBmaintenanceMCP server that provides a unified prediction market API for multiple venues like Polymarket and Kalshi, allowing AI agents to discover markets, fetch order books, and execute trades through a single interface.322528MIT
- AlicenseBqualityAmaintenanceAn MCP server that exposes sports-data APIs from multiple providers (AFL, Sportsbet, Entain, NRL) as interchangeable tools, enabling cross-provider odds and stats comparison.1003MIT
- Alicense-qualityDmaintenanceMCP server for querying and optionally trading across prediction markets (Polymarket, Kalshi, Limitless, Manifold) through a unified API.30MIT
Related MCP Connectors
The Odds API MCP — sportsbook odds across 70+ books, 30+ leagues
Read-only MCP server for live Polymarket, Kalshi, Limitless odds; Manifold sentiment.
market-spread MCP — cross-venue prediction-market landscape scanner.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jigonyoo/odds-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server