MCP server for RapidOddsAPI: bookmaker odds, live scores, arbitrage and value bets.
Project description
rapidoddsapi-mcp
MCP server for RapidOddsAPI. Gives an AI assistant bookmaker odds, live scores, arbitrage and value bets.
Built on the official rapidoddsapi
Python SDK.
Setup
You need an API key from the dashboard.
Keys start with oa_.
Claude Desktop
Add this to claude_desktop_config.json:
{
"mcpServers": {
"rapidoddsapi": {
"command": "uvx",
"args": ["rapidoddsapi-mcp"],
"env": {
"RAPIDODDSAPI_API_KEY": "oa_your_api_key_here"
}
}
}
}
The config file lives at ~/Library/Application Support/Claude/ on macOS and
%APPDATA%\Claude\ on Windows. Restart Claude Desktop after editing it.
Anything else that speaks MCP
RAPIDODDSAPI_API_KEY=oa_your_api_key_here uvx rapidoddsapi-mcp
It speaks stdio.
Tools
| Tool | Credits |
|---|---|
list_sports(sport=) |
0 |
get_odds(sport, market_types=, bookmakers=) |
market_types x ceil(bookmakers / 5) |
get_results(sport, status=, include=) |
1 |
find_arbitrage(sport, market=, bookmakers=, min_profit=, stake=) |
ceil(bookmakers / 5) |
find_value_bets(sport, market=, bookmakers=, min_edge=, sharp=) |
ceil(bookmakers / 5) |
Credits are charged only when games come back, so a query that matches nothing is free. Every response ends with what it cost and what is left.
Credits
The free tier is 250 credits for the life of the account, with no monthly reset, so the defaults are deliberately narrow:
- A sport is always required. There is no way to request every sport at once.
- Bookmakers default to five, one credit group, chosen for the sport's region.
- Market types default to one.
That makes a typical question cost 1 credit. Both arguments multiply, so asking for nine market types across eighteen bookmakers is 36. The tool descriptions say so, which is what keeps the model from doing it uninvited.
find_arbitrage and find_value_bets default to ten bookmakers, 2 credits,
because both need books that disagree and five rarely spread far enough.
Markets
find_arbitrage and find_value_bets handle two-way markets with no line:
head_to_head, its period variants, and soccer's draw_no_bet. Totals,
spreads, player props and three-way markets return an error explaining why
rather than an empty list, since "nothing found" would read as "no
opportunities".
Market keys vary by sport. list_sports(sport) returns the valid ones and
costs nothing.
Bookmakers
Names are odds feeds, not brands. Many brands share one feed and quote
identical prices, so Ladbrokes covers Neds and Betmakers covers the 26
brands running on it. A brand name that is not a feed returns nothing.
Development
pip install -e ".[dev]"
pytest
ruff check .
mypy src/rapidoddsapi_mcp
Links
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rapidoddsapi_mcp-0.1.1.tar.gz.
File metadata
- Download URL: rapidoddsapi_mcp-0.1.1.tar.gz
- Upload date:
- Size: 14.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65897287d999586c7aca99b3cd13990cd7dbae0040a25bdf8f7c0567050ac646
|
|
| MD5 |
c75fe1d675b5976ec8a117b4949776f0
|
|
| BLAKE2b-256 |
a5c00b20fc0ba6f5523d24d081d2414f2f06a8431d99263b36d563c1e1e70bb3
|
File details
Details for the file rapidoddsapi_mcp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: rapidoddsapi_mcp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 13.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf823c5be83308464c82b37c82b90f3c8f665ff29497843f70565d0fcce39016
|
|
| MD5 |
5db0678e4a29c4f28d0abeeb49a90bd8
|
|
| BLAKE2b-256 |
0ae28d4a4427745b154e3994ce5e5deadf2f38c96fe5de3399897f0af39e3761
|