draftkingsapi-mcp
# draftkingsapi-mcp
A stdio MCP server for [draftkingsapi.com](https://draftkingsapi.com). It gives AI agents DraftKings Pick6 lines and
line history, DFS slates and salaries, sportsbook odds and price history, cross-book comparisons and box scores.
The keyless tools work with no key and spend no credits. The keyed tools read `DRAFTKINGS_API_KEY`. Without one,
they return a message that links to the free sign-up (100 credits a month, no card):
https://draftkingsapi.com/sign-up
draftkingsapi.com is an independent API. It is not affiliated with or endorsed by DraftKings. "DraftKings" is a
trademark of its owner and is used here only to describe the data.
## Tools
| Tool | Key | What it returns |
| --- | --- | --- |
| `get_public_board` | no | Delayed, capped Pick6 board plus recent line moves |
| `get_public_sportsbook` | no | Sportsbook moneyline, spread and total per game |
| `get_public_line_moves` | no | Recent Pick6 and sportsbook line moves |
| `get_demo_sample` | no | Frozen sample rows showing a dataset's shape |
| `get_credit_costs` | no | Credits per endpoint |
| `get_status` | no | Measured collection status and dataset freshness |
| `get_history_coverage` | no | When stored history starts, by league |
| `get_coverage` | yes | Live coverage for your key |
| `get_sportsbook_events`, `get_odds`, `get_odds_history` | yes | Sportsbook events, current prices, price history |
| `get_pick6_projections`, `get_pick6_history`, `get_pick6_line_history` | yes | Pick6 lines, the change feed, one prop's line moves |
| `get_dfs_slates`, `get_dfs_contests`, `get_dfs_players` | yes | DFS slates, contests, players and salaries |
| `get_compare`, `get_compare_books`, `get_ev`, `get_arbitrage` | yes | Pick6 against the sportsbook, lines across books, expected value, arbitrage and middles |
| `get_stats_games`, `get_stats_player_games` | yes | Game results and player box scores |
Every tool is read-only. Every tool also takes an optional `task` argument: one plain sentence about what the user
wants, sent as `X-User-Request`. Never put anything personal in it.
## Claude Desktop
Edit `claude_desktop_config.json` (Settings, Developer, Edit Config):
```json
{
"mcpServers": {
"draftkingsapi": {
"command": "npx",
"args": ["-y", "draftkingsapi-mcp"],
"env": { "DRAFTKINGS_API_KEY": "dk_your_key" }
}
}
}
```
Leave out `env` to use only the keyless tools.
## Claude Code
```bash
claude mcp add draftkingsapi -e DRAFTKINGS_API_KEY=dk_your_key -- npx -y draftkingsapi-mcp
# keyless only:
claude mcp add draftkingsapi -- npx -y draftkingsapi-mcp
```
## Cursor
`~/.cursor/mcp.json` (or `.cursor/mcp.json` in a project):
```json
{
"mcpServers": {
"draftkingsapi": {
"command": "npx",
"args": ["-y", "draftkingsapi-mcp"],
"env": { "DRAFTKINGS_API_KEY": "dk_your_key" }
}
}
}
```
## Hosted alternative
You can skip the local install. A remote MCP server (Streamable HTTP) runs at `https://draftkingsapi.com/api/mcp`.
For the data tools, send the header `Authorization: Bearer dk_your_key`.
## Try it
Ask your agent: "Use draftkingsapi to show the current NBA Pick6 board and which lines moved." It calls
`get_public_board` with `league: "nba"`, which needs no key.
## Development
```bash
npm install
npm test # builds, spawns the server over stdio, lists tools, calls get_public_board live (no key, no credits)
DRAFTKINGS_OFFLINE=1 npm test # skips the live call
```
`DRAFTKINGS_API_BASE` overrides the API origin for testing.
MIT License.
TDQS
Scored across 23 tools
Most tools map to distinct resources, but several near-pairs exist: get_public_board vs get_pick6_projections (capped/keyless vs full keyed board), get_public_sportsbook vs get_odds, and get_compare vs get_compare_books. The three meta tools (get_coverage, get_history_coverage, get_status) and four history tools (get_odds_history, get_pick6_history, get_pick6_line_history, get_public_line_moves) also require careful reading to separate. Descriptions do provide enough signal to disambiguate, but selection errors are plausible.
All 23 tools use a uniform get_ prefix with snake_case noun phrases, giving a highly predictable surface. Minor deviations exist in word ordering and qualifiers (get_stats_player_games vs get_dfs_players, get_pick6_history vs get_pick6_line_history, the 'public_' keyless marker), but the pattern is still readable.
23 tools is on the heavy side and largely driven by the free/keyless vs API-key duplication of the same underlying data (public_board vs pick6_projections, public_sportsbook vs odds). The breadth across Pick6, sportsbook, DFS, stats and analysis partially justifies the count, but the surface feels bloated.
Coverage is broad: sportsbook events/odds/history, Pick6 projections and line history, DFS slates/contests/players, player and game stats, cross-book comparison, EV and arbitrage, plus meta tools for coverage, status and credit costs. Gaps are minor, e.g. no explicit markets/futures enumeration or contest-level result lookup, but core workflows have no dead ends.