OpenDota MCP Server

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.
Features
- 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
 
- And more!
 
Installation
Installing via Smithery
To install opendota-mcp-server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @lieyanqzu/opendota-mcp-server --client claude
Manual Installation
# Clone the repository
git clone https://github.com/asusevski/opendota-mcp-server.git
cd opendota-mcp-server
# Install with uv and only uv (pip is for nerds)
uv add pyproject.toml
# For development dependencies
uv pip install -e ".[dev]"
Usage
Setting up your environment
- (Optional but recommended) Create an OpenDota API key at https://www.opendota.com/api-keys
 
- Set your API key as an environment variable:
 
export OPENDOTA_API_KEY=your_api_key_here
Running the server directly
python -m src.opendota_server.server
Running the server with Claude Desktop
Follow this: https://modelcontextprotocol.io/quickstart/user
If you use WSL, assuming you have cloned the repo and set up the python environment, this is how I wrote the claude_desktop_config.json:
{
  "mcpServers": {
    "opendota": {
      "command": "wsl.exe",
      "args": [
        "--",
        "bash",
        "-c",
        "cd ~/opendota-mcp-server && source .venv/bin/activate && python src/opendota_server/server.py"
      ]
    }
  }
}
Using the example client
python -m src.client
Specific tools included:
- 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
 
- get_player_rankings - Get player hero rankings
 
- get_player_wordcloud - Get most common words used by player in chat
 
- get_team_info - Get information about a team
 
- get_public_matches - Get recent public matches
 
- get_match_heroes - Get heroes played in a specific match
 
License
MIT