get_champion_mastery_tool
Get a player's champion mastery details: level, points, and last play time for a specific champion.
Instructions
🎯 Get the player's mastery info for a specific champion.
Returns detailed mastery data (level, points, last play time, etc.) for the requested champion.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| game_name | Yes | ||
| tag_line | Yes | ||
| champion_name | Yes | ||
| language | No | en_US |
Implementation Reference
- src/server.py:147-175 (handler)The actual tool handler function. Takes game_name, tag_line, champion_name, language; resolves puuid via get_puuid(), finds champion ID from champion map, fetches mastery via Riot API, and returns detailed mastery data.
async def get_champion_mastery_tool(game_name: str, tag_line: str, champion_name: str, language: str = "en_US") -> dict[str, Any] | str: """ 🎯 Get the player's mastery info for a specific champion. Returns detailed mastery data (level, points, last play time, etc.) for the requested champion. """ puuid = await get_puuid(game_name, tag_line) if not puuid: return "Failed to find player." champion_map = await get_champion_map(language) champion_id = next((cid for cid, name in champion_map.items() if name.lower() == champion_name.lower()), None) if not champion_id: return f"Champion '{champion_name}' not found." mastery = await riot_request( f"/lol/champion-mastery/v4/champion-masteries/by-puuid/{puuid}/by-champion/{champion_id}" ) if not mastery: return f"Could not find mastery data for {champion_name}." return { "game_name": game_name, "tag_line": tag_line, "puuid": puuid, "champion_name": champion_name, "champion_id": champion_id, "champion_mastery": mastery } - src/server.py:146-147 (registration)The @mcp.tool() decorator registering 'get_champion_mastery_tool' as an MCP tool.
@mcp.tool() async def get_champion_mastery_tool(game_name: str, tag_line: str, champion_name: str, language: str = "en_US") -> dict[str, Any] | str: - src/server.py:147-152 (schema)The function signature and docstring define the input schema: game_name (str), tag_line (str), champion_name (str), language (str, default 'en_US'). Return type is dict[str, Any] | str.
async def get_champion_mastery_tool(game_name: str, tag_line: str, champion_name: str, language: str = "en_US") -> dict[str, Any] | str: """ 🎯 Get the player's mastery info for a specific champion. Returns detailed mastery data (level, points, last play time, etc.) for the requested champion. """ - src/server.py:51-63 (helper)get_puuid() helper used by the tool to convert game_name + tag_line to a Riot PUUID.
async def get_puuid(game_name: str, tag_line: str) -> str | None: url = f"https://asia.api.riotgames.com/riot/account/v1/accounts/by-riot-id/{game_name}/{tag_line}" headers = { "X-Riot-Token": RIOT_API_KEY, "Content-Type": "application/json", } try: async with httpx.AsyncClient() as client: res = await client.get(url, headers=headers) res.raise_for_status() return res.json()["puuid"] except Exception: return None - src/server.py:36-48 (helper)get_champion_map() helper used by the tool to get a language-specific champion ID-to-name mapping.
async def get_champion_map(language: str = "ko_KR") -> dict[int, str]: if language in CHAMPION_MAP: return CHAMPION_MAP[language] async with httpx.AsyncClient() as client: version_res = await client.get("https://ddragon.leagueoflegends.com/api/versions.json") version = version_res.json()[0] champ_res = await client.get( f"https://ddragon.leagueoflegends.com/cdn/{version}/data/{language}/champion.json" ) data = champ_res.json()["data"] CHAMPION_MAP[language] = {int(c["key"]): c["name"] for c in data.values()} return CHAMPION_MAP[language]