Opendota MCP Server

A Model Context Protocol (MCP) server implementation for accessing OpenDota API data. This server enables LLMs and AI assistants to retrieve

Local serverstdioPython

What is the Opendota MCP server?

Connect Opendota to Claude, Cursor or any other MCP client and it stops being a tab you switch to. A Model Context Protocol (MCP) server implementation for accessing OpenDota API data. This server enables LLMs and AI assistants to retrieve real-time Dota 2 statistics, match data, player information, and more through a standard interface. The opendota mcp server is what makes that connection.

What the server does

  • Access player profiles, statistics, and match history
  • Retrieve detailed match information
  • Look up professional players and teams
  • Get hero statistics and rankings
  • Search for players by name

Available tools

The toolset is worth reading before you wire it up, because it tells you what the integration is really for:

  • get_player_by_id — Retrieve player information by account ID
  • get_player_recent_matches — Get recent matches for a player
  • get_match_data — Get detailed data for a specific match
  • get_player_win_loss — Get win/loss statistics for a player
  • get_player_heroes — Get a player's most played heroes
  • get_hero_stats — Get statistics for heroes
  • search_player — Search for players by name
  • get_pro_players — Get list of professional players
  • get_pro_matches — Get recent professional matches
  • get_player_peers — Get players who have played with a specified player
  • get_heroes — Get list of all Dota 2 heroes
  • get_player_totals — Get player's overall stats totals

Installation

Installation goes through your MCP client rather than a global install: point it at @smithery/cli on npm and it is fetched when the client starts. The copy-paste blocks for Claude Desktop, Claude Code and Cursor are further down this page.

Credentials and setup notes

Configuration is passed through the environment: OPENDOTA_API_KEY. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.

Where it fits

This sits in the team communication group, where several servers overlap in what they claim to do but differ sharply once you actually set them up. Opendota's toolset — get_player_by_id, get_player_recent_matches, get_match_data and 11 more — is a fair guide to whether it matches your workflow. It is maintained by asusevski; worth a glance at recent repository activity before you build anything load-bearing on it.

This entry was verified against Opendota's own documentation before publication; SyncDev keeps the directory reviewed rather than auto-generated.

Worth knowing first

  • It runs with your machine's permissions. That is convenient and also the reason to think about what you point it at before you approve a tool call.
  • With 14 tools registered it takes up a noticeable share of the context window; turn it off in projects that never touch Opendota.
  • Missing credentials fail quietly in some clients — if no tools show up, check the environment block first.
  • Keep per-call confirmation enabled while you learn its behaviour; it is the cheapest safeguard you have.

Available tools

ToolWhat it does
get_player_by_idRetrieve player information by account ID
get_player_recent_matchesGet recent matches for a player
get_match_dataGet detailed data for a specific match
get_player_win_lossGet win/loss statistics for a player
get_player_heroesGet a player's most played heroes
get_hero_statsGet statistics for heroes
search_playerSearch for players by name
get_pro_playersGet list of professional players
get_pro_matchesGet recent professional matches
get_player_peersGet players who have played with a specified player
get_heroesGet list of all Dota 2 heroes
get_player_totalsGet player's overall stats totals
get_player_rankingsGet player hero rankings
get_player_wordcloudGet most common words used by player in chat

How to install the Opendota MCP server

{
  "mcpServers": {
    "opendota": {
      "command": "wsl.exe",
      "args": [
        "--",
        "bash",
        "-c",
        "cd ~/opendota-mcp-server && source .venv/bin/activate && python src/opendota_server/server.py"
      ]
    }
  }
}

Configuration as documented by the project. Restart the client after saving.

Configuration

VariableDescriptionRequired
OPENDOTA_API_KEYCredential the server authenticates with.Yes

Example prompts to try

  • Use Opendota to get player by id.
  • Use Opendota to get player recent matches.
  • Use Opendota to get match data.

Frequently asked questions

It connects Opendota to MCP-compatible AI assistants such as Claude and Cursor, exposing 14 tools (get_player_by_id, get_player_recent_matches, get_match_data, and more) that the assistant can call on your behalf. Instead of copying data back and forth by hand, the assistant works with Opendota directly.