Skip to main content
Glama
DeepBlueCoding

MCP Dota 2 Match Analysis Server

README.md
# MCP Dota 2 Match Analysis Server

[![Build Status](https://github.com/DeepBlueCoding/mcp-replay-dota2/actions/workflows/test.yml/badge.svg)](https://github.com/DeepBlueCoding/mcp-replay-dota2/actions/workflows/test.yml)
[![Documentation](https://img.shields.io/badge/docs-gh--pages-blue.svg)](https://deepbluecoding.github.io/mcp-replay-dota2/)
[![Python 3.12](https://img.shields.io/badge/python-3.12-blue.svg)](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

B3/5.0

Scored across 41 tools

Disambiguation2/5

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.

Naming Consistency4/5

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.

Tool Count2/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues