MCP Now
OpenDota

OpenDota

by asusevski
GitHub

Interact with OpenDota API to retrieve Dota 2 match data, player statistics, and more.

player
match
hero
statistic
get

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

1# Clone the repository 2git clone https://github.com/asusevski/opendota-mcp-server.git 3cd opendota-mcp-server 4 5# Option 1: Automated setup (works with bash, zsh, and other shells) 6./scripts/setup_env.sh 7 8# Option 2: Manual installation with uv 9uv add pyproject.toml 10 11# For development dependencies 12uv pip install -e ".[dev]"

Usage

Setting up your environment

  1. (Optional but recommended) Create an OpenDota API key at https://www.opendota.com/api-keys
  2. Set your API key as an environment variable:
1export OPENDOTA_API_KEY=your_api_key_here

Running the server directly

1python -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:

1{ 2 "mcpServers": { 3 "opendota": { 4 "command": "wsl.exe", 5 "args": [ 6 "--", 7 "bash", 8 "-c", 9 "cd ~/opendota-mcp-server && source .venv/bin/activate && python src/opendota_server/server.py" 10 ] 11 } 12 } 13}

Using the example client

1python -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