What is the OpenDota MCP Server?

The OpenDota MCP Server gives AI agents like Claude, ChatGPT, and Cursor direct access to OpenDota. Explore Dota 2 match data, player stats, heroes, teams and leagues — no API key required for basic access. Powered by the Vinkius AI Gateway — no API keys, no infrastructure, connect in under 2 minutes.

OpenDota MCP Server: see your AI Agent in action

AI AgentVinkiusOpenDota
You

Vinkius AI Gateway
GDPR·High Security·Kill Switch·Ultra-Low Latency·Plug and Play

Built-in capabilities (18)

get_benchmarks

Compare any player's stats against the broader player base. Requires a hero ID (from list_heroes). Get hero performance benchmarks

get_constants

Optionally specify a resource name (e.g. "game_mode", "lobby_type", "lane_role", "patch", "cluster") to get a specific constant set. Get OpenDota constant data

get_distributions

Shows how many players are in each bracket (Herald, Guardian, Crusader, Archon, Legend, Ancient, Divine, Immortal). Useful for understanding where a player stands in the overall population. Get MMR and rank distributions

get_match

Returns the match duration, game mode, lobby type, league, radiant/dire team compositions, all 10 players' heroes, items, KDA, GPM, XPM, hero damage, tower damage and healing. Also includes draft picks, chat logs and team objectives for professional matches. Get detailed match info

get_player

Returns the player's profile picture, rank tier, MMR estimate, total matches, winrate and country. Account IDs are numeric Steam IDs (e.g. 87276347 for Arteezy, 19672354 for SumaiL). Use search to find a player by name first. Get player profile and stats

get_player_heroes

Useful for analyzing a player's hero pool and identifying their best heroes. Get a player's performance stats by hero

get_player_matches

Each match includes the match ID, hero played, result (win/loss), kills, deaths, assists, duration, game mode, lobby type, league and start time. Sorted by most recent first. Returns thousands of matches for active players. Get a player's match history

get_player_recent_matches

Each match includes the match ID, hero played, result, KDA, duration and game mode. Useful for checking a player's current form and recent hero pool. Get a player's recent matches (last 20)

get_player_records

Shows the match ID, hero and value for each record. Get a player's personal records

get_player_wl

Shows wins and losses for each hero, revealing their strongest and weakest picks. Useful for understanding a player's hero preferences and strengths. Get a player's win/loss record by hero

get_records

Supported fields: "kills", "deaths", "assists", "last_hits", "denies", "gold_per_min", "xp_per_min", "hero_damage", "tower_damage", "hero_healing", "level", "duration", "longest_word". Returns the top record holders with match IDs and hero info. Get all-time game records

get_team

Returns the team name, tag, logo, rating, win/loss record, player roster, matches played and recent results. Get detailed info for a professional team

list_heroes

Returns approximately 124 heroes. Useful for discovering hero IDs to use with other tools. Get the list of all Dota 2 heroes

list_leagues

Each league includes its ID, name, tier (premium, professional, amateur), region, start/end dates and logo URL. Useful for discovering tournaments and filtering matches by league. Get the list of professional leagues

list_recent_matches

Each match includes the match ID, start time, duration, radiant/dire team average MMR and winner. Returns up to 500 matches. Useful for browsing recent games and finding match IDs to explore. Get recent public matches

list_teams

Each team includes its ID, name, tag, logo URL, rating, number of wins/losses and last match time. Sorted by team rating. Useful for discovering pro teams and their IDs. Get the list of professional teams

run_explorer_query

Requires a valid SQL query string. Returns query results as an array. Advanced feature for deep data analysis. Example: "SELECT hero_id, count(*) matches FROM player_matches GROUP BY hero_id ORDER BY matches DESC LIMIT 10" Run a custom SQL query via OpenDota Explorer

search

Returns matching results with their types and IDs. Useful for finding a player's account ID or a team's ID when you only know their name. Search for players, teams, leagues and heroes

What this connector unlocks

Connect to OpenDota and explore the world's most comprehensive Dota 2 match database through natural conversation.

What you can do

  • Player Profiles — Get player stats, rank tier, MMR estimate, winrate and most played heroes
  • Match History — Browse a player's full match history with hero, result, KDA and duration
  • Match Details — Get complete match info including all 10 players, items, builds, damage and objectives
  • Heroes — List all 124 Dota 2 heroes with their roles, attributes and performance benchmarks
  • Teams — Discover professional teams with their ratings, rosters and win/loss records
  • Leagues — Browse all pro leagues and tournaments with tiers and dates
  • Records — See all-time records for kills, GPM, XPM, hero damage and more
  • MMR Distribution — View rank tier distribution across the entire Dota 2 player base
  • Search — Find players, teams and leagues by name

How it works

1. Subscribe to this server
2. No API key needed for basic access (60k requests/hour)
3. Explore Dota 2 data from Claude, Cursor, or any MCP-compatible client

Who is this for?

  • Players — review match history, analyze hero performance and compare stats
  • Analysts — explore team records, league data and player benchmarks
  • Fans — discover pro teams, check tournament results and search for favorite players
  • Researchers — access MMR distributions, game mode data and match statistics

Frequently asked questions

Give your AI agents the power of OpenDota

Access OpenDota and 2,500+ MCP servers — ready for your agents to use, right now. No glue code. No custom integrations. Just plug Vinkius AI Gateway and let your agents work.