Skip to main content
Glama
League of Legends MCP Server

League of Legends MCP Server

by rexlManu

League of Legends MCP Server

npm version CI License: MIT

MCP server exposing 35 tools for League of Legends player analysis, match review, and training-plan generation.

Installation

npm install -g @rexlmanu/lol-mcp-server

Via npx (no install)

npx @rexlmanu/lol-mcp-server

From source

git clone https://github.com/rexlManu/lol-mcp-server.git
cd lol-mcp-server
pnpm install
pnpm build

Related MCP server: MCP Riot Server

Setup

cp .env.example .env
# Edit .env and add your RIOT_API_KEY

Get your Riot API key at https://developer.riotgames.com/

MCP Client Configuration

Add to your MCP client config (Cursor, Claude Desktop, etc.):

{
  "mcpServers": {
    "league-of-legends": {
      "command": "lol-mcp-server",
      "env": {
        "RIOT_API_KEY": "your-api-key-here"
      }
    }
  }
}

Or if installed from source:

{
  "mcpServers": {
    "league-of-legends": {
      "command": "node",
      "args": ["/path/to/lol-mcp-server/dist/index.js"],
      "env": {
        "RIOT_API_KEY": "your-api-key-here"
      }
    }
  }
}

Stack

  • Runtime: Node.js 20+, TypeScript

  • Package manager: pnpm

  • MCP SDK: @modelcontextprotocol/sdk

  • Validation: zod

  • Scraping: cheerio (Lolalytics, League Wiki)

  • Static data: Data Dragon API

  • Testing: vitest

pnpm dev          # Run with tsx (hot reload)
pnpm build        # Compile to dist/
pnpm start        # Run compiled server
pnpm test         # Run tests
pnpm typecheck    # Type checking

MCP Client Configuration

Cursor / VS Code

{
  "mcpServers": {
    "league-of-legends": {
      "command": "node",
      "args": ["dist/index.js"],
      "env": {
        "RIOT_API_KEY": "your-api-key-here"
      }
    }
  }
}

opencode

{
  "mcpServers": {
    "league-of-legends": {
      "command": "node",
      "args": ["dist/index.js"],
      "env": {
        "RIOT_API_KEY": "your-api-key-here"
      }
    }
  }
}

Tools (35 total)

Account & Profile (4)

Tool

Description

lol_get_account

Get Riot account info by Riot ID

lol_get_summoner

Get summoner info (level, icon) by PUUID

lol_get_ranked

Get ranked stats (tier, rank, LP, win rate)

lol_get_player_profile

Complete player profile in one call

Match History (3)

Tool

Description

lol_get_match_history

Get recent match IDs (with filters)

lol_get_match_details

Get detailed match data (batch supported)

lol_get_match_timeline

Get minute-by-minute match timeline

Match Review (5)

Tool

Description

lol_get_player_match_summary

Compact review stats for one player in one match

lol_get_player_deaths

Chronological death timeline with killer, assists, position, and context

lol_get_player_vision_summary

Compact vision review with wards, control wards, trinkets, and phase grouping

lol_get_champion_review

Multi-match compact review for recent games on one champion

lol_get_timeline_events

Filtered timeline events by participant, event type, and time range

Champion & Live (4)

Tool

Description

lol_get_champion_mastery

Get champion mastery data

lol_get_live_game

Check if player is in game

lol_get_champion_rotation

Get free champion rotation

lol_get_featured_games

Get featured games

League & Clash (7)

Tool

Description

lol_get_league_by_id

Get league info by ID

lol_get_league_entries

Get league entries by summoner

lol_get_league_entries_exp

Get league entries (paginated, by queue/tier/division)

lol_get_league_top

Get top players (challenger/grandmaster/master)

lol_get_clash_tournaments

Get active Clash tournaments

lol_get_clash_player

Get Clash player info

lol_get_clash_team

Get Clash team info

Challenges & Status (3)

Tool

Description

lol_get_challenges

Get all challenge configurations

lol_get_player_challenges

Get player challenge progress

lol_get_server_status

Get server status (maintenance/incidents)

Static Game Data (4)

Tool

Description

lol_get_all_champions

List all champions (from Data Dragon)

lol_get_champ_info

Detailed champion info (Data Dragon + Wiki)

lol_get_all_items

List all items with stats, cost, build path

lol_get_runes

Get rune trees with keystones and descriptions

Lolalytics (1)

Tool

Description

lol_get_builds_for_champion

Scrape Lolalytics for builds, runes, counters, meta

AI Analysis (4)

Tool

Description

lol_analyze_performance

Analyze recent performance with recommendations

lol_analyze_champion

Analyze performance on a specific champion

lol_get_improvement_tips

Get personalized improvement tips

lol_compare_players

Compare stats between two players

Region Support

User-facing regions: euw, eune, na, kr, br, lan, las, oce, ru, tr, jp, ph2, sg2, th2, tw2, vn2

Platform routing: euw1, eun1, na1, kr, jp1, br1, la1, la2, oc1, tr1, ru

Regional routing: europe, americas, asia, sea

Caching

Data Type

TTL

Live game / server status

15-30s

Account / summoner / ranked

60s

Champion mastery / match history

2min

Lolalytics pages

5min

Match details / timelines

1h

Static data (champions/items/runes)

24h

Error Handling

Error

Description

not found (404)

Player/match not found

rate limited (429)

Auto-retry with backoff

forbidden (403)

Private data or restricted access

invalid key (401)

Invalid Riot API key

scrape_layout_changed

Lolalytics page structure changed

network failure

Connection/API error

invalid region

Unknown region code

Project Structure

src/
  index.ts              # Entry point, MCP server setup
  config.ts             # Environment config
  riot/
    client.ts           # Riot API HTTP client with rate limiting
    regions.ts          # Region routing maps
    types.ts            # Core Riot API types
    types-extra.ts      # Additional Riot API types
  cache/
    cache.ts            # TTL-based in-memory cache
  static-data/
    dataDragon.ts       # Data Dragon API client
    wikiScraper.ts      # League Wiki scraper (cheerio)
    types.ts            # Static data types
  lolalytics/
    scraper.ts          # Lolalytics page fetcher
    parser.ts           # HTML parser (cheerio)
    types.ts            # Lolalytics types
  tools/
    account.ts          # Account, summoner, ranked, profile, match tools
    champion.ts         # Mastery, live game, rotation, featured games
    league.ts           # League, clash, challenges, status
    staticData.ts       # Champions, items, runes
    lolalytics.ts       # Lolalytics builds
    analysis.ts         # Performance analysis, tips, comparison
  analysis/
    performance.ts      # Performance analysis engine
    championReview.ts   # Champion-specific analysis
    trainingPlan.ts     # Improvement tips generator
    compare.ts          # Player comparison
tests/
  regions.test.ts       # Region mapping tests
  cache.test.ts         # Cache tests
  lolalytics-parser.test.ts  # Parser tests
  analysis.test.ts      # Analysis engine tests

License

MIT

Available Tools

35 tools
lol_analyze_championLoL analyze championC

Analyze performance on a specific champion

Inputs: puuid (required), champion (required), region, platform, +1 more.

lol_analyze_performanceLoL analyze performanceC

Analyze recent performance and give recommendations

Inputs: puuid (required), queue, region, champion, +2 more.

lol_compare_playersLoL compare playersC

Compare stats between two players

Inputs: tagLineA (required), tagLineB (required), gameNameA (required), gameNameB (required), +3 more.

lol_get_accountLoL get accountA

Get Riot account info by Riot ID (gameName#tagLine)

Inputs: tagLine (required), gameName (required), region.

lol_get_all_championsLoL get all championsB

List all current champions with ID, name, title, roles/tags

Inputs: patch.

lol_get_all_itemsLoL get all itemsB

List all items with stats, cost, build path

Inputs: group, patch.

lol_get_builds_for_championLoL get builds for championB

Scrape Lolalytics for best builds, runes, counters, and meta data for a champion

Inputs: champion (required), lane, rank, patch, +1 more.

lol_get_challengesLoL get challengesB

Get all challenge configurations

Inputs: platform.

lol_get_champ_infoLoL get champ infoB

Get detailed champion info (stats, abilities, cooldowns, ratios, passive, skill order)

Inputs: champion (required), patch.

lol_get_champion_masteryLoL get champion masteryB

Get champion mastery data (list or single champion)

Inputs: puuid (required), platform, championId.

lol_get_champion_reviewLoL get champion reviewC

Get compact multi-match review for recent games on one champion

Inputs: tagLine (required), gameName (required), championName (required), limit, +3 more.

lol_get_champion_rotationLoL get champion rotationB

Get current free champion rotation

Inputs: platform.

lol_get_clash_playerLoL get clash playerC

Get Clash info for a player

Inputs: puuid (required), platform.

lol_get_clash_teamLoL get clash teamC

Get Clash team info

Inputs: teamId (required), platform.

lol_get_clash_tournamentsLoL get clash tournamentsB

Get active/upcoming Clash tournaments

Inputs: platform.

lol_get_improvement_tipsLoL get improvement tipsC

Get personalized improvement tips

Inputs: puuid (required), goal, role, region, +3 more.

lol_get_league_by_idLoL get league by idC

Get league info by league ID

Inputs: leagueId (required), platform.

lol_get_league_entriesLoL get league entriesC

Get league entries by PUUID

Inputs: puuid (required), platform.

lol_get_league_entries_expLoL get league entries expC

Get league entries by queue, tier, division (paginated)

Inputs: tier (required), queue (required), division (required), page, +1 more.

lol_get_league_topLoL get league topB

Get top players in a league (challenger/grandmaster/master)

Inputs: tier (required), queue (required), platform.

lol_get_live_gameLoL get live gameB

Check if a player is currently in game

Inputs: summonerId (required), platform.

lol_get_match_detailsLoL get match detailsB

Get detailed info for one or more matches

Inputs: matchIds (required), region.

lol_get_match_historyLoL get match historyC

Get recent match IDs

Inputs: puuid (required), count, queue, start, +6 more.

lol_get_match_timelineLoL get match timelineC

Get minute-by-minute match timeline

Inputs: matchId (required), region.

lol_get_player_challengesLoL get player challengesC

Get player challenge progress

Inputs: puuid (required), platform.

lol_get_player_deathsLoL get player deathsB

Get chronological death events for a player in a match with compact coaching context

Inputs: matchId (required), tagLine (required), gameName (required), region.

lol_get_player_match_summaryLoL get player match summaryB

Get compact review stats for one player in one match without full match blob

Inputs: matchId (required), tagLine (required), gameName (required), region.

lol_get_player_profileLoL get player profileA

Get complete player profile in one call (account, summoner, ranked, mastery summary)

Inputs: tagLine (required), gameName (required), region, platform.

lol_get_player_vision_summaryLoL get player vision summaryB

Get compact vision review data for a player in one match

Inputs: matchId (required), tagLine (required), gameName (required), region.

lol_get_rankedLoL get rankedC

Get ranked stats (tier, rank, LP, wins, losses, winRate)

Inputs: puuid (required), platform.

lol_get_runesLoL get runesB

Get rune trees with keystones, minor runes, descriptions

Inputs: group, patch.

lol_get_server_statusLoL get server statusA

Get server status (maintenance/incidents) for a region

Inputs: region.

lol_get_summonerLoL get summonerB

Get summoner info (level, profile icon) by PUUID

Inputs: puuid (required), platform.

lol_get_timeline_eventsLoL get timeline eventsC

Get filtered timeline events by participant, event type, and time range

Inputs: matchId (required), limit, region, endTimeMs, +3 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 35 tools

    Disambiguation4/5

    Most tools target distinct data or actions, but some overlap exists: lol_get_league_entries and lol_get_league_entries_exp both handle league entries via different parameters, and lol_get_player_profile composites multiple endpoints, which could blur boundaries.

    Naming Consistency5/5

    All tools follow a consistent lol_verb_noun pattern (e.g., lol_get_live_game, lol_analyze_performance), with verbs like get, analyze, compare, and nouns clearly describing the resource, making the naming predictable and easy to navigate.

    Tool Count3/5

    35 tools is on the higher end, covering many specific endpoints (e.g., death events, vision summary) and composite functions. While each tool has a purpose, the count feels slightly bloated; could be streamlined by reducing redundancy.

    Completeness4/5

    The tool set covers a broad range of League of Legends data and analysis: account, matches, champions, items, runes, builds, and performance tips. Only minor gaps like advanced spectator features or tournament data beyond Clash are missing.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      C
      quality
      D
      maintenance
      An 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.
      12
      12
      Apache 2.0
    • A
      license
      B
      quality
      D
      maintenance
      A community-developed Model Context Protocol server that integrates with the Riot Games API to provide League of Legends data, enabling AI assistants to retrieve player information, ranked stats, champion mastery, and match summaries through natural language queries.
      5
      27
      MIT