Skip to main content
Glama
sharpapi-mcp

sharpapi-mcp

Official
by Sharp-API
README.md
# SharpAPI MCP Server

[![npm](https://img.shields.io/npm/v/@sharp-api/mcp-server)](https://www.npmjs.com/package/@sharp-api/mcp-server)
[![Listed on mcpservers.org](https://mcpservers.org/badge.svg)](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

A3.7/5.0

Scored across 9 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues