MCP Riot Server
Retrieves League of Legends player data including ranked stats, champion mastery, and match history through the Riot Games API, enabling natural language querying of player information and game performance.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Riot Servershow me the top champions for Faker"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Riot Server
MCP-Riot is a community-developed Model Context Protocol (MCP) server that integrates with the Riot Games API to provide League of Legends data to AI assistants via natural language queries.
This project enables AI models to retrieve player information, ranked stats, champion mastery, and recent match summaries.
Disclaimer: This is an open-source project not affiliated with or endorsed by Riot Games. League of Legends® is a registered trademark of Riot Games, Inc.
Demo
Related MCP server: lol-client-mcp Public
✨ Features
🧾 Player Summary
"What's the current rank and top champions of Hide on bush?"
Provides the player's:
Level
Ranked Solo Tier
Top champion masteries
Recent match history
🔝 Top Champions
"What champions is he best at?"
Returns the top N champions based on mastery points.
🎯 Champion Mastery
"How good is this player with Ahri?"
Returns detailed champion mastery data for a specific champion.
🕹️ Recent Matches
"Show the last 3 matches for this summoner"
Lists recent matches including champion used, K/D/A, and result.
📊 Match Summary
"Summarize this match for a given match ID"
Returns the player’s match stats, such as KDA, damage, wards, and result.
🚀 Quick Start
1. Clone & Install
git clone https://github.com/jifrozen0110/mcp-riot.git
cd mcp-riot
# Install dependencies (using uv or pip)
uv sync2. Get Your API Key and Set Environment
Create .env file with your Riot API key:
RIOT_API_KEY=your_riot_api_keyYou can get your key from https://developer.riotgames.com/
3. Configure MCP Client
Register this server in your MCP client (e.g., Claude for Desktop).
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"amadeus": {
"command": "/ABSOLUTE/PATH/TO/PARENT/FOLDER/uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/PARENT/FOLDER",
"run",
"--env-file",
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/.env",
"riot.py"
]
}
}
}Replace
/ABSOLUTE/PATH/TO/PARENT/FOLDER/with the actual path to your project folder.
my case:
{
"mcpServers": {
"amadeus": {
"command": "/Users/jifrozen/.local/bin/uv",
"args": [
"--directory",
"/Users/jifrozen/mcp-riot/src/",
"run",
"--env-file",
"/Users/jifrozen/mcp-riot/.env",
"server.py"
]
}
}
}
🛠️ Tools
The following tools will be exposed to MCP clients:
get_player_summary
Summarizes level, rank, top champions, and recent matches.
get_top_champions_tool
Returns top champions by mastery points.
get_champion_mastery_tool
Returns mastery details for a specific champion.
get_recent_matches_tool
Returns recent matches for the given summoner.
get_match_summary
Returns match performance stats for a given match ID and puuid.
📚 References
📝 License
MIT License © 2025 jifrozen0110
Available Tools
5 toolsget_champion_mastery_toolC
🎯 Get the player's mastery info for a specific champion.
Returns detailed mastery data (level, points, last play time, etc.) for the requested champion.
| Name | Required | Description | Default |
|---|---|---|---|
| game_name | Yes | ||
| tag_line | Yes | ||
| champion_name | Yes | ||
| language | No | en_US |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It states 'Returns detailed mastery data' but does not mention if the operation is read-only, required permissions, error conditions (e.g., champion not mastered), or rate limits. The description is too vague to fully inform the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences and an emoji marker. It front-loads the core action and provides a brief output summary without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 4 parameters (3 required), no output schema, and no annotations, the description is insufficient. It omits input format details, output structure beyond examples, and error handling. A more complete description would clarify parameter usage and expected returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description adds no information about any of the four parameters (game_name, tag_line, champion_name, language). It does not explain what values are expected or how they relate to the tool's operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get the player's mastery info for a specific champion.' It differentiates well from siblings (e.g., get_match_summary, get_top_champions_tool) by specifying champion-specific mastery data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives, nor any prerequisites or when-not-to-use conditions. The description implies usage for querying mastery, but lacks exclusion criteria or contextual recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_match_summaryA
📊 Get a detailed summary of a specific match for a given player.
Extracts and returns only the relevant stats (KDA, damage, vision, win/loss, etc.) from the match.
| Name | Required | Description | Default |
|---|---|---|---|
| match_id | Yes | ||
| puuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states the tool extracts and returns only relevant stats, implying a read-only operation. However, it does not disclose any behavioral traits like authorization needs, rate limits, or potential errors. The description adds some context but is incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose, and includes an emoji for visual cue. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple data retrieval tool with two common parameters and no output schema, the description is fairly complete. It explains what the tool does and what type of data it returns. However, it lacks guidance on parameter derivation or edge cases, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. However, it does not describe the parameters (match_id and puuid) beyond what is obvious from the tool name and purpose. No format, source, or constraints are mentioned, leaving the agent to infer meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches a detailed summary of a specific match for a given player, listing included stats (KDA, damage, vision, win/loss). This distinguishes it from siblings like get_recent_matches_tool (list of matches) and get_champion_mastery_tool (champion mastery).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when detailed match stats are needed, but it does not explicitly tell when to use this tool vs alternatives (e.g., when to use get_recent_matches_tool instead). No usage context or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_player_summaryB
🧾 Get a complete summary of a player's profile.
Includes level, solo rank, top champion masteries, and recent matches in a single output.
| Name | Required | Description | Default |
|---|---|---|---|
| game_name | Yes | ||
| tag_line | Yes | ||
| language | No | en_US |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as idempotency, side effects, or rate limits. For a read-only operation, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief with two sentences, using an emoji for visual cue. It is front-loaded with purpose and lists included data. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description should cover behavioral aspects and output details. It omits limitations like match count, language impact, and data freshness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description does not clarify the parameters beyond implying player identity. For example, the 'language' parameter defaults to en_US but is not explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides a complete summary including level, solo rank, top champion masteries, and recent matches. This differentiates it from sibling tools like get_champion_mastery_tool and get_recent_matches_tool which focus on sub-aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a quick overview is needed but lacks explicit when-to-use or when-not-to-use guidance. No alternatives are mentioned despite clear sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_matches_toolC
🕹️ Get the player's recent match history.
Returns a brief summary of the player's most recent matches, including champion, score, and result.
| Name | Required | Description | Default |
|---|---|---|---|
| game_name | Yes | ||
| tag_line | Yes | ||
| count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits, but it only mentions the output is a 'brief summary'. It omits details like authentication requirements, rate limits, or any side effects (though likely read-only).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise at two sentences and uses an emoji for visibility. It is efficient but could be better structured by including parameter info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has three parameters, no output schema, and no annotations, the description is incomplete. It provides a high-level summary but lacks details on how to invoke it correctly or what the full response looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, meaning the description does not explain any parameters. The tool has three parameters (game_name, tag_line, count) but the description provides no meaning, default, or format for them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves recent match history and specifies the returned data (champion, score, result), distinguishing it from siblings like get_champion_mastery_tool or get_match_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or exclusions. The description only states what it does, not when it is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_champions_toolC
🔝 Get the player's top champion masteries.
Returns a list of the player's most-played champions based on mastery points.
| Name | Required | Description | Default |
|---|---|---|---|
| game_name | Yes | ||
| tag_line | Yes | ||
| language | No | en_US | |
| count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It indicates a read operation returning a list sorted by mastery points, but does not disclose side effects, authentication needs, rate limits, or ordering details. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences with no fluff. It is front-loaded with an emoji for visibility. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, no output schema, and sibling tools, the description is too minimal. It explains the output but not the parameters, ordering, or limits. Completeness is insufficient for proper agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any parameters beyond the schema titles and defaults. No additional meaning is provided for 'game_name', 'tag_line', 'language', or 'count'. The description fails to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets the player's top champion masteries and returns a list of most-played champions based on mastery points. However, it does not differentiate from sibling tool 'get_champion_mastery_tool', which likely focuses on a single champion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context (what the tool returns) but gives no explicit guidance on when to use this tool versus alternatives like 'get_champion_mastery_tool'. No when-not-to-use or prerequisite conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- First observed
get_champion_mastery_tool - First observed
get_match_summary - First observed
get_player_summary - First observed
get_recent_matches_tool - First observed
get_top_champions_tool
TDQS
Scored across 5 tools
Most tools have distinct purposes, but 'get_player_summary' includes top champions and recent matches, overlapping with 'get_top_champions_tool' and 'get_recent_matches_tool', which could cause agent confusion.
All tools start with 'get' and use snake_case, but two tools have a '_tool' suffix ('get_champion_mastery_tool', 'get_recent_matches_tool') while others lack it, creating inconsistency.
5 tools is well-scoped for a Riot Games data server, covering essential player and match info without being too few or too many.
The set covers core player data (mastery, matches, summary) but lacks operations like summoner search or match timeline, leaving minor gaps.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
The Telnyx MCP server is an official implementation of the Model Context Protocol that enables AI clients (like Claude Desktop, Cursor, and OpenAI Agents) to interact with Telnyx's telephony, messaging, and AI assistant APIs. It provides comprehensive capabilities including making and managing phone calls, sending SMS/MMS messages, purchasing and configuring phone numbers, creating AI assistants with custom instructions, managing cloud storage buckets, scraping and embedding website content, and handling integration secrets. The server exists as both a local implementation and a remotely hosted version, allowing developers to integrate real-world communication infrastructure directly into AI applications.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Related MCP Servers
- AlicenseBqualityCmaintenanceModel Context Protocol server that enables LLMs and AI assistants to retrieve real-time Dota 2 statistics, match data, player information, and game metrics through a standardized interface.178MIT
- AlicenseCqualityDmaintenanceAn MCP (Model-Controller-Processor) server for accessing League of Legends client data. This server provides a collection of tools that communicate with the League of Legends Live Client Data API to retrieve in-game data.1212Apache 2.0
- FlicenseNot gradedqualityDmaintenanceEnables interaction with League of Legends game data through the Riot Games API. Allows users to query player statistics, match history, and game information using natural language.-
- AlicenseNot gradedqualityFmaintenanceA comprehensive League of Legends data ecosystem that provides access to champion statistics, item data, and patch history via the Model Context Protocol. It enables analysis of game mechanics, build optimization, and meta tracking through real-time data integration.1MIT