Skip to main content
Glama

get_pro_matches

Retrieve recent professional Dota 2 matches to analyze competitive gameplay trends and strategies.

Instructions

Get recent professional matches.

Args:
    limit: Number of matches to retrieve (default: 5)

Returns:
    List of recent professional matches

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNo

Implementation Reference

  • The primary handler function for the 'get_pro_matches' tool. Decorated with @mcp.tool() for registration. It retrieves recent professional Dota 2 matches from the OpenDota API, applies a limit, handles errors, formats match details (ID, teams, league, date, duration, score, winner), and returns a formatted string summary.
    @mcp.tool()
    async def get_pro_matches(limit: int = 5) -> str:
        """Get recent professional matches.
    
        Args:
            limit: Number of matches to retrieve (default: 5)
    
        Returns:
            List of recent professional matches
        """
        if limit > 20:
            limit = 20  # Cap for reasonable response size
    
        pro_matches = await make_opendota_request("proMatches")
    
        if "error" in pro_matches:
            return f"Error retrieving pro matches: {pro_matches['error']}"
    
        if not pro_matches or not isinstance(pro_matches, list) or len(pro_matches) == 0:
            return "No professional matches found."
    
        formatted_matches = []
    
        # Limit the matches to display
        matches_to_show = []
        if isinstance(pro_matches, list):
            matches_to_show = pro_matches[:limit]
        for i, match in enumerate(matches_to_show):
            match_id = match.get("match_id", "Unknown")
            radiant_name = match.get("radiant_name", "Radiant")
            dire_name = match.get("dire_name", "Dire")
            league_name = match.get("league_name", "Unknown League")
            duration = format_duration(match.get("duration", 0))
            start_time = format_timestamp(match.get("start_time", 0))
            radiant_score = match.get("radiant_score", 0)
            dire_score = match.get("dire_score", 0)
            winner = radiant_name if match.get("radiant_win", False) else dire_name
    
            formatted_matches.append(
                f"{i+1}. {radiant_name} vs {dire_name}\n"
                f"   Match ID: {match_id}\n"
                f"   League: {league_name}\n"
                f"   Date: {start_time}\n"
                f"   Duration: {duration}\n"
                f"   Score: {radiant_score} - {dire_score}\n"
                f"   Winner: {winner}"
            )
    
        return "Recent Professional Matches:\n\n" + "\n\n".join(formatted_matches)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/asusevski/opendota-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server