Skip to main content
Glama
YuchengMaUTK

Unofficial WCA MCP Server

by YuchengMaUTK

get_competition_event_results

Retrieve competition results for a specific speedcubing event, allowing filtering by round and optional inclusion of detailed solve times.

Instructions

Get results for a specific event within a WCA competition.

Returns focused results data for a single event in a competition. By default, returns only Final round results for better LLM processing.

Args: competition_id: WCA competition ID (e.g., "WC2025", "CubingUSANationals2024") event_id: WCA event ID (e.g., "333" for 3x3x3 Cube, "222" for 2x2x2, "333bf" for 3x3x3 Blindfolded, "444" for 4x4x4) round: Specific round to filter by (default: "Final"). Use "all" for all rounds, or specify: "Final", "Semi Final", "Second round", "First round" limit: Maximum number of results to return (optional) include_solves: Whether to include detailed solve times (default: False)

Returns: Filtered results data including: - Competitor performances for the specified round - Position, best single, and average times - Optionally detailed solve breakdowns

Example: get_competition_event_results("WC2025", "333") - Final round only (16 results) get_competition_event_results("WC2025", "333", round="all") - All rounds (2490 results) get_competition_event_results("WC2025", "333", limit=10) - Top 10 from Final

Input Schema

NameRequiredDescriptionDefault
competition_idYes
event_idYes
include_solvesNo
limitNo
roundNoFinal

Input Schema (JSON Schema)

{ "properties": { "competition_id": { "title": "Competition Id", "type": "string" }, "event_id": { "title": "Event Id", "type": "string" }, "include_solves": { "default": false, "title": "Include Solves", "type": "boolean" }, "limit": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Limit" }, "round": { "default": "Final", "title": "Round", "type": "string" } }, "required": [ "competition_id", "event_id" ], "type": "object" }

Implementation Reference

  • The primary MCP tool handler for 'get_competition_event_results'. This FastMCP-decorated function fetches raw event results from the WCA API client, applies user-specified filters (round, limit, include_solves), cleans the data, and returns a structured paginated response. Includes comprehensive docstring with examples.
    @mcp.tool() async def get_competition_event_results( competition_id: str, event_id: str, round: str = "Final", limit: int = None, include_solves: bool = False ) -> Dict[str, Any]: """Get results for a specific event within a WCA competition. Returns focused results data for a single event in a competition. By default, returns only Final round results for better LLM processing. Args: competition_id: WCA competition ID (e.g., "WC2025", "CubingUSANationals2024") event_id: WCA event ID (e.g., "333" for 3x3x3 Cube, "222" for 2x2x2, "333bf" for 3x3x3 Blindfolded, "444" for 4x4x4) round: Specific round to filter by (default: "Final"). Use "all" for all rounds, or specify: "Final", "Semi Final", "Second round", "First round" limit: Maximum number of results to return (optional) include_solves: Whether to include detailed solve times (default: False) Returns: Filtered results data including: - Competitor performances for the specified round - Position, best single, and average times - Optionally detailed solve breakdowns Example: get_competition_event_results("WC2025", "333") - Final round only (16 results) get_competition_event_results("WC2025", "333", round="all") - All rounds (2490 results) get_competition_event_results("WC2025", "333", limit=10) - Top 10 from Final """ try: async with WCAAPIClient() as client: # Get all results first all_results = await client.get_competition_event_results(competition_id, event_id) if not all_results or 'items' not in all_results: return all_results items = all_results['items'] # Filter by round if specified if round != "all": items = [item for item in items if item.get('round') == round] # Apply limit if specified if limit: items = items[:limit] # Clean up data for LLM consumption cleaned_items = [] for item in items: cleaned_item = { 'personId': item.get('personId'), 'round': item.get('round'), 'position': item.get('position'), 'best': item.get('best'), 'average': item.get('average') } # Include solves only if requested if include_solves: cleaned_item['solves'] = item.get('solves', []) cleaned_items.append(cleaned_item) # Return filtered and cleaned results return { 'pagination': { 'page': 1, 'size': len(cleaned_items) }, 'total': len(cleaned_items), 'filter': { 'round': round, 'limit': limit, 'include_solves': include_solves }, 'items': cleaned_items } except APIError as e: raise Exception(f"Failed to get {event_id} results for competition {competition_id}: {e}") except Exception as e: raise Exception(f"Unexpected error getting {event_id} results for competition {competition_id}: {e}")
  • Supporting WCAAPIClient method that performs the actual HTTP request to the WCA static API endpoint for competition event results, used by the MCP tool handler.
    async def get_competition_event_results( self, competition_id: str, event_id: str ) -> Dict[str, Any]: """Get results for a specific event in a competition. Args: competition_id: Competition ID event_id: Event ID (e.g., "333", "222") Returns: Result data for the specific event in the competition """ return await self._make_request(f"results/{competition_id}/{event_id}.json")
  • FastMCP decorator that registers the get_competition_event_results function as an MCP tool.
    @mcp.tool()

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/YuchengMaUTK/unofficial-wca-mcp-server'

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