Skip to main content
Glama
YuchengMaUTK

Unofficial WCA MCP Server

by YuchengMaUTK
person.py3.25 kB
"""Person and competitor models.""" from typing import Dict, List, Optional from pydantic import BaseModel, Field from .base import PaginatedResponse, RankInfo class EventRank(BaseModel): """Ranking information for a specific event.""" event_id: str = Field(..., alias="eventId", description="Event identifier") best: int = Field(..., description="Best time/score in centiseconds or points") rank: RankInfo = Field(..., description="Ranking positions") class MedalCount(BaseModel): """Medal count information.""" gold: int = Field(..., description="Number of gold medals") silver: int = Field(..., description="Number of silver medals") bronze: int = Field(..., description="Number of bronze medals") class RecordType(BaseModel): """Record count by type.""" wr: int = Field(..., alias="WR", description="World Records") cr: int = Field(..., alias="CR", description="Continental Records") nr: int = Field(..., alias="NR", description="National Records") class Records(BaseModel): """Record information for singles and averages.""" single: RecordType = Field(..., description="Single solve records") average: RecordType = Field(..., description="Average solve records") class PersonRanks(BaseModel): """Person's ranking information.""" singles: List[EventRank] = Field(..., description="Single solve rankings") averages: List[EventRank] = Field(..., description="Average solve rankings") class CompetitionResult(BaseModel): """Result for a specific round in a competition.""" round: str = Field(..., description="Round name") position: int = Field(..., description="Final position in round") best: int = Field(..., description="Best single time in centiseconds") average: int = Field(..., description="Average time in centiseconds") format: str = Field(..., description="Competition format") solves: List[int] = Field(..., description="Individual solve times in centiseconds") class Person(BaseModel): """WCA person/competitor information.""" id: str = Field(..., description="WCA ID") name: str = Field(..., description="Full name") slug: str = Field(..., description="URL slug") country: str = Field(..., description="Country code") number_of_competitions: int = Field(..., alias="numberOfCompetitions", description="Total competitions attended") competition_ids: List[str] = Field(..., alias="competitionIds", description="List of competition IDs") number_of_championships: int = Field(..., alias="numberOfChampionships", description="Total championships attended") championship_ids: List[str] = Field(..., alias="championshipIds", description="List of championship IDs") rank: PersonRanks = Field(..., description="Ranking information") medals: MedalCount = Field(..., description="Medal counts") records: Records = Field(..., description="Record counts") results: Dict[str, Dict[str, List[CompetitionResult]]] = Field( ..., description="Competition results organized by competition ID and event ID" ) # Paginated response types class Persons(PaginatedResponse[Person]): """Paginated list of persons.""" pass

Implementation Reference

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