Skip to main content
Glama
DeepBlueCoding

MCP Dota 2 Match Analysis Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

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

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
delete_replayA

Delete cached replay file and parsed data for a match.

Use this tool when:

  • A replay appears to be corrupted and needs to be re-downloaded

  • You want to force a fresh download of a replay

  • Cached parsed data seems incorrect or outdated

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:

  • 0-10%: Checking cache and getting replay URL

  • 10-40%: Downloading compressed file

  • 40-50%: Extracting replay

  • 50-95%: Parsing replay

  • 95-100%: Caching results

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:

  • game_time: Seconds since game start (can be negative for pre-horn purchases)

  • game_time_str: Formatted as M:SS

  • hero: Hero that purchased the item

  • item: Item name (e.g., "item_bfury", "item_power_treads")

Use this to answer questions like:

  • "When did Juggernaut finish Battlefury?"

  • "What was Anti-Mage's item progression?"

  • "Who bought the first BKB?"

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:

  • game_time: Seconds since game start

  • game_time_str: Formatted as M:SS

  • killer: Hero that killed the courier

  • killer_is_hero: Whether the killer was a hero

  • team: Team whose courier was killed (radiant/dire)

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:

  • Roshan: game_time, killer, team, kill_number (1st, 2nd, 3rd Roshan)

  • Tormentor: game_time, killer, team, side (which Tormentor was killed)

  • Towers: game_time, tower name, team, tier, lane, killer

  • Barracks: game_time, barracks name, team, lane, type (melee/ranged), killer

Use this to analyze:

  • When did each team take Roshan?

  • Tower trade patterns and timing

  • High ground pushes and barracks destruction

  • Tormentor control

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:

  • game_time: Seconds since game start

  • game_time_str: Formatted as M:SS

  • hero: Hero that picked up the rune

  • rune_type: Type of rune (haste, double_damage, arcane, invisibility, regeneration, shield)

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:

  • "Who got the most power runes?"

  • "What runes did the mid player secure?"

  • "When did they get a DD rune before fighting?"

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:

  • Early game: start_time=0, end_time=900 (0-15 min)

  • Mid game: start_time=900, end_time=1800 (15-30 min)

  • Late game: start_time=1800 (30+ min)

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

NameDescription
analyze_draftAnalyze a Dota 2 draft for lane matchups, synergies, counters, and itemization. Use the dota2://heroes/all resource for detailed counter matchups.
review_hero_performanceReview a hero's performance with coaching feedback. Evaluates against role-specific expectations (cores by farm/timings, supports by impact/saves).
analyze_deathsAnalyze death patterns to identify preventable mistakes.
review_laning_phaseReview the laning phase (0-10 minutes) with coaching feedback.
analyze_teamfightAnalyze a teamfight for coaching insights.
compare_itemizationAnalyze item choices and suggest alternatives.
game_turning_pointsIdentify and analyze the turning points of a match.

Resources

Contextual data attached and managed by the client

NameDescription
All Dota 2 HeroesComplete list of all Dota 2 heroes with their canonical names, aliases, and attributes
Dota 2 Map DataComplete Dota 2 map: towers, neutral camps, runes, Roshan, outposts, shops, landmarks
Pro PlayersAll professional Dota 2 players with names, teams, and aliases
Pro TeamsAll professional Dota 2 teams with ratings and win/loss records

Latest Blog Posts

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