{
  "markdown": "# batru-mcp\n\n<!-- mcp-name: gg.batru/batru-mcp -->\n\n> [!IMPORTANT]\n> **Use the hosted endpoint — no install needed.** Add `https://batru.gg/mcp` to Claude, ChatGPT, Cursor or any MCP client and you get the newest tool set (31 read-only tools across Dota 2, Deadlock and Marvel Rivals, always in sync with the live site). Setup guide: https://batru.gg/developers\n>\n> The local PyPI package described below (`uvx batru-mcp`) is **legacy and no longer updated** — it is frozen at an early version with a reduced tool set. It still works (it proxies the same live API), but the hosted endpoint is the canonical distribution.\n\nA minimal, read-only **MCP server** over [batru.gg](https://batru.gg)'s live API, so your LLM can answer Dota 2 / Deadlock draft, counter and win-rate questions with **real, calibrated model predictions** instead of guessing from memory.\n\nIt is a thin wrapper around batru.gg's public endpoints — no model runs locally; every number comes from the same production model the website serves.\n\n## Why calibrated matters\n\nbatru.gg's model is trained on ~20M real matches and **calibrated**: a reported 60% win rate corresponds to an empirically observed ~60% win rate. We deliberately do not headline a raw \"accuracy\" number — accuracy alone is misleading for win prediction. What you get from these tools are probabilities you can trust at face value. The tool descriptions instruct the host LLM to report these numbers verbatim and never invent matchup data.\n\n## Tools\n\n| Tool | What it does |\n| --- | --- |\n| `lookup_hero(query, game=\"dota2\")` | Normalise a name/alias/shortName to `{id, displayName, shortName}`. `game` ∈ {`dota2`, `deadlock`}. |\n| `predict_dota_winrate(my_heroes, enemy_heroes, my_side=\"radiant\")` | Calibrated win-rate % for both teams (partial drafts OK; empty → 50/50). |\n| `recommend_dota_pick(my_heroes, enemy_heroes, my_side=\"radiant\")` | Top-3 heroes to pick next, each with its calibrated win rate. |\n| `get_dota_counters(hero, limit=12)` | Real matchup table: who this hero beats / loses to, with win rate % and sample size. |\n| `predict_deadlock_draft(team0_heroes, team1_heroes)` | Calibrated win-rate % for a Deadlock 6v6 (6 heroes per team). |\n\nHero names are accepted in any form (e.g. `am`, `anti mage`, `Anti-Mage`) and normalised internally — the backend silently drops names it doesn't recognise, so normalising first keeps predictions honest.\n\n## Install\n\nRequires [uv](https://docs.astral.sh/uv/) (or any way to run a Python 3.12+ package from PyPI):\n\n```bash\nuvx batru-mcp           # fetches from PyPI and starts the stdio MCP server\n```\n\nConfiguration is via the `BATRU_API_BASE` environment variable (default `https://batru.gg`) — you normally don't need to set anything.\n\n## Claude Desktop config\n\nAdd to `claude_desktop_config.json` (macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"batru\": {\n      \"command\": \"uvx\",\n      \"args\": [\"batru-mcp\"]\n    }\n  }\n}\n```\n\nRestart Claude Desktop; the `batru` tools appear in the tool picker. Claude Code:\n`claude mcp add batru -- uvx batru-mcp`.\n\n## Development\n\n```bash\ngit clone https://github.com/batrugg/batru-mcp && cd batru-mcp\nuv sync\nuv run batru-mcp        # run the server from the checkout (blocks, waiting on stdin)\n```\n\nFor a Claude Desktop pointing at the checkout, use\n`\"command\": \"uv\", \"args\": [\"run\", \"--directory\", \"/absolute/path/to/batru-mcp\", \"batru-mcp\"]`.\n\n## Tests\n\n```bash\nuv run pytest            # offline: hero normalisation + draft assembly\nuv run pytest -m live    # also hits the real batru.gg API\n```\n\n---\n\nPrefer programmatic access from Python instead of MCP? `pip install batru` — the\nofficial [batru SDK](https://pypi.org/project/batru/).\n",
  "bytes": 3740,
  "sha": "7042be67fbf4026e7c54ac5ce24adf3256b81f4c448283a9f4db81098dd55ab9",
  "repo_slug": "batrugg/batru-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_gg_batru_batru_mcp_0d289e7d/readme"
}