sharpapi-mcp
Official# SharpAPI MCP Server
[](https://www.npmjs.com/package/@sharp-api/mcp-server)
[](https://mcpservers.org/servers/sharp-api/sharpapi-mcp)
MCP server for [SharpAPI](https://sharpapi.io). Exposes live sports betting odds, +EV, arbitrage and middles as Model Context Protocol tools, for compatible AI applications to query sports betting data.
Uses the official TypeScript SDK, [`@sharp-api/client`](https://www.npmjs.com/package/@sharp-api/client), for HTTP requests.
## Install
Install the [npm package](https://www.npmjs.com/package/@sharp-api/mcp-server) globally, which puts `sharpapi-mcp` on your PATH:
```bash
npm install -g @sharp-api/mcp-server
```
Or run it without installing:
```bash
npx -y @sharp-api/mcp-server
```
To run from source instead, use the GitHub repository:
```bash
npx github:Sharp-API/SharpAPI-MCP
```
## Configure
Set `SHARPAPI_KEY` in the environment. Get a free key at <https://sharpapi.io>; the free tier serves DraftKings and FanDuel at 12 requests/min with no card.
The key is read from the environment only. There is deliberately no way to pass it as a tool argument: tool arguments are model-generated and end up in transcripts and logs.
Claude Desktop (`claude_desktop_config.json`), running the npm package through `npx`:
```json
{
"mcpServers": {
"sharpapi": {
"command": "npx",
"args": ["-y", "@sharp-api/mcp-server"],
"env": { "SHARPAPI_KEY": "sk_your_key_here" }
}
}
}
```
With the global install, call the `sharpapi-mcp` binary directly:
```json
{
"mcpServers": {
"sharpapi": {
"command": "sharpapi-mcp",
"env": { "SHARPAPI_KEY": "sk_your_key_here" }
}
}
}
```
## Tools
| tool | what it does | plan |
|---|---|---|
| `list_sports` | Sports covered, with live/upcoming counts. Start here to find valid sport ids. | any |
| `list_sportsbooks` | Book ids for the `sportsbook` argument. | any |
| `list_events` | Events with ids, start times, teams. | any |
| `get_odds` | Normalized odds across books: American, decimal, implied probability. | any |
| `get_best_odds` | Best price per selection across books. The line-shopping view. | any |
| `get_arbitrage` | Cross-book arbitrage: combined implied probability under 100%. | Hobby+ |
| `get_ev` | +EV bets against fair probability. Carries `fairProbability`, the de-vigged number. | Pro+ |
| `get_middles` | Two-sided gaps where both bets can win. | any |
| `get_event_odds` | Every odds row for one event across books, in one call with no pagination. Takes an event id from `list_events`. | any |
The API enforces plan requirements. The server returns API errors unchanged, including details about the required tier.
There is no separate no-vig tool. SharpAPI does not expose de-vigged odds as its own endpoint; the fair number arrives as `fairProbability` on each `get_ev` opportunity.
## Notes
- Tool errors are returned with `isError` so clients can handle rate limits and plan requirements.
- Diagnostics are written to stderr; stdout is reserved for the MCP protocol.
## License
MIT
TDQS
Scored across 9 tools
The analytics tools (get_arbitrage, get_ev, get_middles) and discovery tools (list_sports, list_sportsbooks, list_events) each have clearly distinct purposes. The main soft spot is the odds trio: get_odds, get_event_odds, and get_best_odds all return prices, and an agent must read carefully to know that get_odds is paginated/book-row oriented, get_event_odds is event-scoped and unpaginated, and get_best_odds collapses to one row per selection.
All nine tools follow a clean snake_case verb_noun convention (get_*/list_*), with consistent resource naming (odds, event_odds, best_odds, sports, sportsbooks, events). No style mixing or vague verbs.
Nine tools is well within the ideal 3-15 range and each one earns its place: three discovery tools, three odds retrieval views, and three betting-analysis views. Nothing feels redundant or bolted on.
The surface covers the core lifecycle: discover sports/books/events, fetch normalized odds, and derive best-price, arbitrage, EV, and middle views. Minor gaps exist — there is no dedicated market/selection listing tool (markets only appear implicitly in odds rows), no line-movement or historical odds, and no tool to check plan/quota despite several tools being plan-gated.