MCP Dota 2 Match Analysis Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| delete_replayA | Delete cached replay file and parsed data for a match. Use this tool when:
After deletion, the next analysis request for this match will trigger a fresh download and parse. Args: match_id: The Dota 2 match ID to delete cached data for Returns: DeleteReplayResponse with deletion status |
| download_replayA | Download and cache the replay file for a Dota 2 match. Use this tool FIRST before asking analysis questions about a match. Replay files are large (50-400MB) and can take 1-5 minutes to download. Once downloaded, the replay is cached locally and subsequent queries for the same match will be instant. Progress is reported during download:
Args: match_id: The Dota 2 match ID (from OpenDota, Dotabuff, or in-game) Returns: DownloadReplayResponse with success status and file info |
| get_hero_deathsA | Get chronological list of ALL hero deaths in a match. Returns all deaths with killer, victim, time, location, and ability used. Use for global death timeline, first blood, or death pattern analysis. Args: match_id: The Dota 2 match ID killer: Filter by killer hero (partial match, e.g. 'jugg') victim: Filter by victim hero (partial match) location: Filter by map location (partial match, e.g. 't1', 'roshan') ability: Filter by killing ability (partial match) start_time: Filter deaths after this game time (seconds) end_time: Filter deaths before this game time (seconds) |
| get_raw_combat_eventsA | Get raw combat events for a specific time window. Use for analyzing non-fight moments (e.g., Roshan attempts, specific plays). detail_level: "narrative" (deaths/abilities), "tactical" (+damage), "full" (all). Args: match_id: The Dota 2 match ID start_time: Start of time window in seconds end_time: End of time window in seconds hero_filter: Filter to specific hero ability_filter: Filter to specific ability detail_level: "narrative", "tactical", or "full" max_events: Maximum events to return |
| get_item_purchasesA | Get item purchase timings for heroes in a Dota 2 match. Returns a chronological list of item purchases with:
Use this to answer questions like:
Args: match_id: The Dota 2 match ID hero_filter: Only include purchases by this hero, e.g. "juggernaut" (optional) Returns: ItemPurchasesResponse with list of item purchase events |
| get_courier_killsA | Get all courier kills in a Dota 2 match. Returns a list of courier kill events with:
Args: match_id: The Dota 2 match ID Returns: CourierKillsResponse with list of courier kill events |
| get_objective_killsA | Get all major objective kills in a Dota 2 match. Returns kills of:
Use this to analyze:
Args: match_id: The Dota 2 match ID Returns: ObjectiveKillsResponse with all objective kill events |
| get_rune_pickupsA | Get power rune pickups in a Dota 2 match. Returns a list of power rune pickup events with:
Note: Only power runes are trackable. Bounty, wisdom, and water runes don't leave detectable events in the replay data. Use this to answer questions like:
Args: match_id: The Dota 2 match ID Returns: RunePickupsResponse with list of power rune pickup events |
| get_hero_performanceA | Get comprehensive performance data for a hero. Returns kills, deaths, assists, ability stats (casts, hit rate), and per-fight breakdowns. Use ability_filter for specific ability analysis. Time filtering: Use start_time/end_time to analyze specific game phases. Common time ranges:
Args: match_id: The Dota 2 match ID hero: Hero name (e.g., "jakiro", "mars", "batrider") ability_filter: Filter to specific ability (e.g., "ice_path", "flaming_lasso") start_time: Filter fights starting after this game time (seconds) end_time: Filter fights starting before this game time (seconds) |
| get_fight_combat_logA | Get detailed event-by-event combat log for a specific fight. Automatically detects the fight around reference_time and returns the sequence of deaths, abilities, and key moments. Args: match_id: The Dota 2 match ID reference_time: Game time in seconds (e.g., 1530 for 25:30) hero: Optional hero to anchor fight detection detail_level: "narrative" (default), "tactical", or "full" max_events: Maximum events to return |
| list_fightsA | List all fights/skirmishes in a match with death summaries. Returns fight count, timing, participants, and deaths for each fight. Args: match_id: The Dota 2 match ID location: Filter by map location (partial match, e.g. 't1', 'roshan_pit') min_deaths: Filter to fights with at least this many deaths is_teamfight: Filter to teamfights only (True) or skirmishes only (False) start_time: Filter fights starting after this game time (seconds) end_time: Filter fights starting before this game time (seconds) |
| get_teamfightsA | Get major teamfights (3+ deaths) with coaching analysis. Returns teamfight timing, participants, death sequences, and analysis. Args: match_id: The Dota 2 match ID min_deaths: Minimum deaths to classify as teamfight (default 3) location: Filter by map location (partial match, e.g. 't1', 'roshan_pit') start_time: Filter teamfights starting after this game time (seconds) end_time: Filter teamfights starting before this game time (seconds) |
| get_fightC | Get detailed information about a specific fight. |
| get_fight_replayC | Get high-resolution replay data for a fight. |
| get_match_timelineC | Get time-series data for a Dota 2 match. |
| get_stats_at_minuteB | Get player stats at a specific minute in a Dota 2 match. |
| get_match_draftB | Get the complete draft (picks and bans) for a Dota 2 match with drafting context. |
| get_match_infoC | Get match metadata and player information for a Dota 2 match. |
| get_match_heroesC | Get the 10 heroes in a Dota 2 match with detailed stats. |
| get_match_playersB | Get the 10 players in a Dota 2 match with their hero assignments. |
| get_hero_positionsB | Get hero positions at a specific minute in a Dota 2 match. |
| get_snapshot_at_timeC | Get game state snapshot at a specific game time. |
| search_pro_playerB | Search for professional Dota 2 players by name or alias. |
| search_teamA | Search for professional Dota 2 teams by name, tag, or alias. |
| get_pro_playerC | Get detailed information about a professional player by account ID. |
| get_pro_player_by_nameC | Get detailed information about a professional player by name. |
| get_teamA | Get detailed information about a team by ID. |
| get_team_by_nameC | Get detailed information about a team by name. |
| get_team_matchesC | Get recent matches for a team. |
| get_leaguesC | Get all Dota 2 leagues/tournaments. |
| get_pro_matchesA | Get recent professional Dota 2 matches as a flat list. Returns individual matches without series grouping. Use get_tournament_series for bracket/series analysis. Args: limit: Maximum matches to return (default 50) tier: Filter by league tier (premium, professional, amateur) team1_name: Filter by first team (fuzzy match). Alone: all matches for team. team2_name: Filter by second team (fuzzy match). With team1: head-to-head matches. league_name: Filter by league/tournament name (contains, case-insensitive) days_back: Only return matches from last N days |
| get_tournament_seriesA | Get tournament series with bracket/game details. Use this for tournament progression analysis: series results, Bo3/Bo5 outcomes, team advancement through brackets. Args: league_name: Filter by league/tournament name (fuzzy match) league_id: Filter by specific league ID team_name: Filter series involving this team limit: Maximum series to return (default 20) days_back: Only series from last N days |
| get_league_matchesB | Get matches from a specific league/tournament with series grouping. |
| get_camp_stacksC | Get all neutral camp stacks in a Dota 2 match. |
| get_jungle_summaryB | Get jungle activity summary for a Dota 2 match. |
| get_lane_summaryC | Get laning phase summary for a Dota 2 match. |
| get_cs_at_minuteB | Get last hits, denies, gold, and level for all heroes at a specific minute. |
| get_position_timelineA | Get hero positions over a time range at regular intervals. |
| get_farming_patternC | Analyze a hero's farming pattern with camp sequences, power spikes, and routes. |
| get_rotation_analysisB | Analyze hero rotations - movement patterns between lanes and outcomes. Returns rotation events, gank attempts, and their success rates. |
| get_client_capabilitiesA | Diagnostic tool to check what MCP capabilities the connected client supports. Returns information about sampling, roots, and other client capabilities. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| analyze_draft | Analyze a Dota 2 draft for lane matchups, synergies, counters, and itemization. Use the dota2://heroes/all resource for detailed counter matchups. |
| review_hero_performance | Review a hero's performance with coaching feedback. Evaluates against role-specific expectations (cores by farm/timings, supports by impact/saves). |
| analyze_deaths | Analyze death patterns to identify preventable mistakes. |
| review_laning_phase | Review the laning phase (0-10 minutes) with coaching feedback. |
| analyze_teamfight | Analyze a teamfight for coaching insights. |
| compare_itemization | Analyze item choices and suggest alternatives. |
| game_turning_points | Identify and analyze the turning points of a match. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| All Dota 2 Heroes | Complete list of all Dota 2 heroes with their canonical names, aliases, and attributes |
| Dota 2 Map Data | Complete Dota 2 map: towers, neutral camps, runes, Roshan, outposts, shops, landmarks |
| Pro Players | All professional Dota 2 players with names, teams, and aliases |
| Pro Teams | All professional Dota 2 teams with ratings and win/loss records |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DeepBlueCoding/mcp-replay-dota2'
If you have feedback or need assistance with the MCP directory API, please join our Discord server