MCP Connector

Access Dota 2 Stats via MCP

MCP server exposing OpenDota API data: Dota 2 player stats, match history, hero rankings, and pro scene data.

Works with opendota

Maintainer of this project? Claim this page to edit the listing.


90
Spark score
out of 100
Updated 9 months ago
Version 1.0.0
Models
universal

Add 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

01

Retrieve detailed player statistics and match history.

02

Access comprehensive hero statistics and rankings.

03

Query professional player and team data.

04

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_by_id

Get 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 player win/loss statistics

get_player_heroes

Get most-played heroes for a player

get_hero_stats

Get hero statistics

search_player

Search for players by name

get_pro_players

Get a list of professional players

+7 tools

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

smithery badge

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

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

MseeP.ai Security Assessment Badge

FAQ

Common questions

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.