Access Dota 2 Stats via MCP
MCP server exposing OpenDota API data: Dota 2 player stats, match history, hero rankings, and pro scene data.
Maintainer of this project? Claim this page to edit the listing.
1.0.0Add to Favorites
Why it matters
Integrate real-time Dota 2 statistics and match data into your AI applications. This MCP server provides a standardized interface to query player information, match details, hero stats, and more from the OpenDota API.
Outcomes
What it gets done
Retrieve detailed player statistics and match history.
Access comprehensive hero statistics and rankings.
Query professional player and team data.
Enable LLMs to interact with Dota 2 data through a unified protocol.
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/vb-opendota | bash Capabilities
Tools your agent gets
Get player information by account ID
Get recent matches for a player
Get detailed data for a specific match
Get player win/loss statistics
Get most-played heroes for a player
Get hero statistics
Search for players by name
Get a list of professional players
Overview
OpenDota MCP Server
An MCP server exposing the OpenDota API: player profiles and match history, hero stats and rankings, and professional Dota 2 player and match data. Use to have Claude answer Dota 2 questions with live OpenDota data. Scoped to Dota 2 only; an optional API key improves rate limits over unauthenticated access.
What it does
OpenDota MCP Server gives Claude and other MCP clients access to the OpenDota API for real-time Dota 2 statistics, match data, and player information. It exposes seventeen tools covering player lookups (get_player_by_id, search_player, get_player_recent_matches, get_player_win_loss, get_player_heroes, get_player_peers, get_player_totals, get_player_rankings, get_player_wordcloud for a player's most common in-game chat words), match data (get_match_data, get_public_matches, get_match_heroes), hero reference data (get_heroes, get_hero_stats), professional scene data (get_pro_players, get_pro_matches), and team information (get_team_info).
export OPENDOTA_API_KEY=your_api_key_here
python -m src.opendota_server.server
An OpenDota API key is optional but recommended, set via the OPENDOTA_API_KEY environment variable, and improves rate limits and data access compared to unauthenticated requests.
When to use - and when NOT to
Use this connector when you want Claude to answer questions about Dota 2 players, matches, heroes, or professional teams using live OpenDota data - looking up a player's recent performance, comparing hero stats, tracking professional matches, or searching for a player by name.
It is scoped to Dota 2 data via OpenDota specifically, not other games or esports platforms. Running without an API key works but is subject to OpenDota's unauthenticated rate limits, so heavier usage benefits from setting one up.
Capabilities
Player data: profile lookup by ID, search by name, recent matches, win/loss record, most-played heroes, hero rankings, overall stat totals, peers played with, and chat wordcloud. Match data: detailed match info, recent public matches, and heroes played in a specific match. Hero and team data: full hero list, hero statistics, and team information. Professional scene: professional player list and recent professional matches.
How to install
Install automatically via Smithery (npx -y @smithery/cli install @asusevski/opendota-mcp-server --client claude), or clone the repository and run the automated setup script (./scripts/setup_env.sh) or install manually with uv (uv add pyproject.toml, with uv pip install -e ".[dev]" for development dependencies). Set OPENDOTA_API_KEY as an environment variable (optional), then run the server directly (python -m src.opendota_server.server) or configure it in claude_desktop_config.json per the standard MCP quickstart; a WSL-specific config example is provided for Windows users running the server inside a WSL environment.
It also ships an example client, runnable with python -m src.client, as an alternative way to exercise the server's tools. The project is MIT-licensed and has undergone a third-party security assessment (MseeP.ai).
Who it's for
Dota 2 players, analysts, and content creators who want Claude to pull live player stats, match history, hero data, and professional scene information from OpenDota.
Source README
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 API Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @asusevski/opendota-mcp-server --client claude
Manual Installation
# Clone the repository
git clone https://github.com/asusevski/opendota-mcp-server.git
cd opendota-mcp-server
# Option 1: Automated setup (works with bash, zsh, and other shells)
./scripts/setup_env.sh
# Option 2: Manual installation with uv
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
Security
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.
