Metadata-Version: 2.4
Name: kashrock-mcp
Version: 0.6.6
Summary: KashRock esports MCP — full tier-scoped API for agents. Google login, then build.
Author-email: KashRock <ovitalszn@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://www.kashrock.com/mcp
Project-URL: Documentation, https://www.kashrock.com/docs
Project-URL: API, https://kashrock.up.railway.app
Project-URL: Repository, https://github.com/kashrockapi/kashrock-mcp
Keywords: esports,mcp,model-context-protocol,api,cs2,valorant,dota,props,odds
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: httpx<0.28,>=0.26
Requires-Dist: mcp<2,>=1.9
Dynamic: license-file

# kashrock-mcp

<!-- mcp-name: com.kashrock/kashrock-mcp -->

Full tier-scoped KashRock esports MCP for Cursor, Claude, and other agents.

## Install (effortless)

```json
{
  "mcpServers": {
    "kashrock": {
      "command": "uvx",
      "args": ["kashrock-mcp"]
    }
  }
}
```

Then say **log in to KashRock**. Google opens; the agent gets your billed plan.

Requires [uv](https://docs.astral.sh/uv/). Optional: `KASHROCK_API_KEY` skips login.

## Local (this repo)

```bash
cd mcp && uv sync
```

Cursor `~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "kashrock": {
      "command": "uv",
      "args": ["run", "--directory", "/ABS/PATH/TO/kashrock/mcp", "kashrock-mcp"],
      "env": { "KASHROCK_API_KEY": "kr_…" }
    }
  }
}
```

## What agents can do

- Board: DFS props (`get_props`), DFS+sportsbook player props (`get_player_props`), media (`get_media`), player snapshot (`get_player_snapshot`), consensus lines including DFS Teams (`get_lines` / `get_best_lines`), gaps (`get_gaps`)
- Players / research / rankings / streams / H2H
- Builder+: matches, **live in-game** (`get_live_boxscore` / `get_live_games` / `get_live_frame` / `get_live_odds` / `get_live_odds_history`), **live WebSocket** (`get_live_ws` → `WS /v6/esports/live/ws`), gamelogs, finished vault boxscores (`get_boxscore`), results, history tape, closing mainlines (`get_lines_history`)
- Match intel: `get_match_prep` (CS2, R6, COD, Valorant & Apex team stats, mode/map winrates, map pool/biases, key player matchups, betting insights), `get_player_board` (CS2 weapons / Valorant agents), `get_tournament_maps` — pass KashRock slug/`kr_match_id` only
- Public ids: lists and boxscores emit `kr_match_id`, `kr_tm_*` teams, `kr_pl_*` players. Lineup includes `STARTER` and `SUB`. Never pass foreign numerics.

Live KDA path: `get_live_boxscore("cs2")` → pick `game_id` → `get_live_boxscore("cs2", game_id)`. Sport boards: CS2 money/bomb, LoL gold/towers, Dota gold/roshan when visible, Deadlock gold/CS/level on tournament games. Do not use `get_boxscore` for mid-map stats (that is finished-match vault + lineup + model fields).

Live WebSocket (Builder+): call `get_live_ws` for the `wss://…/v6/esports/live/ws` URL + subscribe ops. Auth with your API key (`?api_key=` / Bearer / `x-api-key`). After `hello`, send `{"op":"subscribe","sport":"cs2","game_id":"<id>|*" }`. Pushes: snapshot, games_list, frame, boxscore, meta, event, odds. WS traffic does not count against HTTP req/min. MCP returns the contract only — your app holds the socket.

Call `whoami`, `list_capabilities`, or `suggest_build` first. Stacks are not exposed.

Docs: https://www.kashrock.com/mcp

App SDKs (not MCP): `pip install kashrock` · [Python](https://github.com/kashrockapi/kashrock-python) · [JS](https://github.com/kashrockapi/kashrock-js)

