MCP Dota 2 Match Analysis Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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