opendota-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OPENDOTA_API_KEY | No | Your OpenDota API key — raises the rate limit from 60/min to 3000/min. | |
| OPENDOTA_BASE_URL | No | Base URL for the OpenDota API. Point at a self-hosted OpenDota instance if you run one. | https://api.opendota.com/api |
| OPENDOTA_LANGUAGE | No | Default language for hero/item/ability names. Accepts Steam codes (e.g., 'schinese') or tags (e.g., 'zh-CN'). | english |
| OPENDOTA_RATE_LIMIT | No | Max requests/minute the client will send. Defaults to 55, or 1200 when an OPENDOTA_API_KEY is set. | 55 |
| OPENDOTA_CONSTANTS_TTL_MINUTES | No | Cache TTL in minutes for game constants refresh (defaults to 60 minutes, using stale-while-revalidate). |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_api_healthA | Check OpenDota API service health/statistics. Useful to verify connectivity before deeper queries. |
| list_supported_languagesA | List the languages available for hero/item/ability name localization, with their Steam codes (e.g. "schinese") and labels. Pass one of these to the language parameter of other tools. |
| get_constantsA | Get a raw OpenDota game-constants resource (heroes, items, abilities, item_ids, ability_ids, game_mode, lobby_type, region, patch, cluster, countries, ...). Note: OpenDota constants are English-only; for localized names prefer tools with a language parameter. |
| search_dota_entitiesA | Find heroes/items/abilities by name (English or any supported localized name) and get their numeric ids. Use this FIRST to resolve names like "敌法师", "Anti-Mage", "blink dagger", "祈求者" into the ids other tools need (hero_id, item ids, ...). Case-insensitive substring match. |
| get_matchA | Get a Dota 2 match by id as a compact, human-readable view: heroes/items/abilities resolved to names, game mode/lobby/skill/region as labels, per-player KDA/GPM/XPM/items, and optional pick-ban draft. Works with parsed matches too ( richer item/ability data when available). |
| request_match_parseA | Submit a match for full replay parsing and WAIT for it to finish (default 45s). Unparsed matches lack teamfights/graphs/ward logs; once parsed, call get_match with include.teamfights for the deep view. Counts as 10 API calls. If status comes back unfinished, retry later or poll with get_parse_job_status. |
| get_parse_job_statusA | Check the status of a match parse job submitted via request_match_parse. |
| search_playersA | Search Dota 2 players by display name (personaname). Returns account ids usable with the player tools. For a Steam profile URL, the account id is the trailing number. |
| get_playerA | Get a player's profile and current competitive standing: display name, avatar, country, rank medal (e.g. 'Immortal', 'Legend 3'), leaderboard position, MMR estimate. |
| get_player_recent_matchesA | Get a player's ~20 most recent matches (regardless of filters), enriched with hero names, win/loss, KDA, game mode, skill bracket. |
| get_player_matchesA | Get a player's rated match history with rich filters (hero, game mode, patch, date range, side, with/against heroes, ...). Each row is enriched with hero name, win/loss, game mode label. For summaries use get_player_win_loss or get_player_heroes instead. |
| get_player_win_lossA | Get a player's win/loss counts (with the same filters as get_player_matches) plus win rate. |
| get_player_heroesB | Heroes a player has played (with the standard filters), with hero names, games, wins, win rate, and with/against splits. |
| get_player_peersC | Players this player has played with most: names, games together, wins, win rate. |
| get_player_prosC | Professional players this player has played with or against, with team affiliations. |
| get_player_totalsC | Lifetime aggregate totals for a player (kills, deaths, assists, last hits, gold, damage, ... as field/sum pairs). |
| get_player_countsA | Match counts broken down by leaver status, game mode, lobby type, lane role, region and patch, with ids resolved to readable names. |
| get_player_histogramB | Distribution of one stat for a player, e.g. wins per x-value. Common fields: kills, deaths, assists, gold_per_min, xp_per_min, last_hits, hero_damage, duration, lane_role, leaver_status, game_mode. |
| get_player_wardmapA | Ward placement heatmap for a player: total observer/sentry counts plus the raw position maps (keys are x,y on a 64x64 grid — divide by 64 for map fraction; game coords = value*range/64). |
| get_player_wordcloudA | Words said in this player's matches, sorted by count: words by the player (my_words) and by everyone (all_words). Useful for chat-toxicity or tilt flavor. |
| get_player_rating_historyB | History of a player's rank medal changes over time (rank_tier snapshots per match). |
| get_player_hero_rankingsC | A player's hero leaderboard rankings (top-100 percentile scores per hero), with hero names. |
| refresh_playerA | Ask OpenDota to refresh a player's match history (up to ~500 recent matches), medal and profile name. Use when a player's data looks stale, then re-query. Counts as 1 API call. |
| get_heroesA | List all Dota 2 heroes with names (localized + English), primary attribute, attack type, roles, and base stats. Good starting point for hero questions. |
| get_hero_statsA | Full hero statistics: pick/ban counts and win rates across pro play, public skill brackets (Herald through Immortal) and turbo, with hero names resolved. Use for meta/tier questions. |
| get_hero_matchupsA | How a hero performs against every other hero (games played and win rate from public matches). The classic 'counters' lookup — low win_rate vs a hero means that hero counters this one. |
| get_hero_recent_matchesB | Recent public matches on a hero (per-player rows: account id, rank, KDA, items-lite), enriched. |
| get_hero_benchmarksB | Benchmarks for a hero: what various percentiles of players achieve (last hits, kills, GPM, ...) by rank bracket (1 Herald ... 8 Immortal; omit for all). |
| get_hero_item_popularityA | Item popularity for a hero by game phase (start_game_items, early_game_items, mid_game_items, late_game_items), with item names resolved. |
| get_hero_duration_performanceA | A hero's win rate binned by match duration bucket (in 5-minute bins: '0-5', '5-10', ...). Shows hero power curve across game length. |
| get_hero_playersC | Players who have played a hero recently (account id, name, games, wins), with win rates. |
| get_hero_rankingsB | Global top players on a hero (leaderboard scores and ranks). |
| get_teamsA | List professional teams ranked by rating, with wins/losses and recent ratings. |
| get_teamA | Get one professional team's profile (rating, wins/losses, logo, tags). |
| get_team_matchesC | A pro team's recent matches, enriched with hero names for both sides and game mode labels. |
| get_team_playersC | Players who played for a team, with games played, wins, and current-member flag. |
| get_team_heroesC | Heroes a pro team plays most, with games, wins and win rates. |
| get_pro_matchesA | Most recent professional matches (league, teams, score, duration), newest first. Paginate with less_than_match_id. Enriched with readable fields. |
| get_pro_playersA | List of professional players with their teams, countries and Steam ids. |
| get_leaguesB | All tracked leagues/tournaments with ids and tiers (professional, premium, ...). |
| get_league_matchesB | Matches played in a league/tournament, enriched. Use get_leagues to find league ids. |
| get_live_matchesB | Top live games currently in progress (average rank, spectate count, scoreboard) with hero names. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/yuxiang115/opendota-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server