MCP Dota 2 Match Analysis Server
# MCP Dota 2 Match Analysis Server
[](https://github.com/DeepBlueCoding/mcp-replay-dota2/actions/workflows/test.yml)
[](https://deepbluecoding.github.io/mcp-replay-dota2/)
[](https://www.python.org/downloads/)
[FastMCP](https://github.com/jlowin/fastmcp) server for Dota 2 match analysis using replay files and OpenDota API.
**Built-in coaching instructions** guide LLMs to provide meaningful analysis - pattern recognition, objective rotations, networth swings linked to teamfights, and actionable coaching advice.
## Quick Start
### Local
```bash
git clone https://github.com/DeepBlueCoding/mcp-replay-dota2.git
cd mcp-replay-dota2
uv sync
uv run python dota_match_mcp_server.py
```
### Docker
```bash
docker build -t dota2-mcp-server .
docker run -p 8081:8081 dota2-mcp-server --transport sse
# Connect to http://localhost:8081/sse
```
## What It Does
- **Resources**: Static reference data (heroes, map, pro players/teams)
- **Tools**: Match analysis (deaths, combat log, objectives, timelines, drafts)
- **Instructions**: Built-in coaching guidance for meaningful LLM responses
See [full documentation](https://deepbluecoding.github.io/mcp-replay-dota2/) for API reference and integration guides.
## Development
```bash
uv run pytest # Run tests
uv run pytest -m "not integration" # Skip slow tests
```
## License
MIT
TDQS
Scored across 41 tools
Several tools have overlapping boundaries: get_fight, get_fight_combat_log, get_fight_replay, list_fights, and get_teamfights all cover fight analysis, and get_fight/get_fight_replay lack clear arguments to distinguish them. Similarly, search_pro_player vs get_pro_player_by_name and search_team vs get_team_by_name create predictable confusion.
The majority of tools follow a clear snake_case verb_noun pattern (get_*, list_*, search_*, delete_*, download_*), making the set generally predictable. Minor inconsistencies like get_teamfights vs get_team_fights, search_pro_player vs get_team_by_name, and get_pro_matches vs get_league_matches keep it from a perfect score.
41 tools is a heavy surface for an agent to reason over, especially since the server bundles replay-level match analysis with professional scene lookup. While each tool targets real Dota functionality, the count creates significant selection overhead and would benefit from being split into separate server concerns.
The server covers the major match-analysis workflows: replay download, fights, deaths, item/runes, objectives, farming, lane summaries, timelines, drafts, and professional scene data. Minor gaps exist (e.g., no ward/vision analysis, no player match-history lookup, no team roster tool), but agents can generally work around them.