lol-cdp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| RLC_DIR | No | Path to a cloned ReimaginedLC folder. Required for the rlc_check and rlc_build tools, which run npm and vite in that folder; the other rlc tools work without it. | |
| RLC_REPO | No | The ReimaginedLC repository reference. | |
| PENGU_DIR | No | The directory of the Pengu Loader installation, used to locate its config (and thus the debugging port). | |
| LOL_CDP_PORT | No | The Chrome DevTools Protocol debugging port of the League client. Defaults to the port read from the Pengu config, else 9222. | 9222 |
| LOL_CDP_MAP_DIR | No | The directory where the crawled map is written. | ~/.lol-cdp-mcp/map |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| stateA | Where the client is right now: gameflow phase, patch, active Riot nav tab and all tabs, ReimaginedLC layer, open overlays (modals, flyouts, tooltips), viewport. Start here. |
| snapshotA | Lists the visible interactive elements (buttons, tabs, inputs, cards, nav items), piercing shadow DOM, each with a ref usable by click/hover/type/query. Repeated items (grids, lists) collapse after a few. Take a new snapshot after the screen changes: refs go stale. |
| queryC | Details of one element: label, selector, box, state, and optionally its text or HTML (shadow root included). |
| wait_forB | Waits until an element appears (or disappears with gone=true). |
| clickA | Real mouse click (CDP Input) on an element, scrolled into view. Reports what it caused: overlays opened/closed, nav change, LCU requests. Dangerous writes (purchases, loot crafting, reports, invites, chat, real queue, logout) are blocked at the network level. |
| hoverA | Moves the real mouse over an element and reports tooltips/flyouts that appeared. |
| typeB | Types text into an input (focuses it first when a target is given). |
| keyB | Presses a key or combo on the page: "Escape", "Enter", "Tab", "ArrowDown", "Ctrl+A", "Ctrl+Shift+F12" (toggles the ReimaginedLC layer). |
| scrollA | Scrolls with the real mouse wheel over an element (deltaY > 0 scrolls down). |
| navigateA | Goes to a screen. Accepts a Riot nav tab id ("rcp-fe-lol-collections", "rcp-fe-lol-loot", "rcp-fe-lol-store", "rcp-fe-lol-profiles-main", "rcp-fe-lol-tft", "home"...; see |
| mapA | The crawled map of the native client: every screen, how to reach it, each control with its hover text, what clicking it does and which LCU requests it fires (blocked ones show the endpoint a dangerous button would call). Without arguments lists screens; |
| lcuA | Calls the LCU API from inside the client (auth handled). Dangerous writes (purchases, loot crafting, reports, invites, chat messages, real queue, logout, client quit) are refused. |
| lcu_endpointsA | Searches the LCU endpoint catalog of the installed client (built from /help on first use, then cached per patch). Every word must match the path or function name. |
| screenshotA | Screenshot of the client (or one element). At the default scale one image pixel = one CSS px, so image coordinates can be passed to click/hover as x/y. |
| evalA | Runs JavaScript in the client page and returns the JSON result. Wrap statements in an async IIFE or just write an expression; promises are awaited. |
| cssA | Adds (or with remove=true removes) a in the document head under an id. Note: styles do not reach inside shadow roots; target hosts or use ::part where available. |
| scriptA | Registers JavaScript that runs now and on every page load (reload) while this server is connected: a live plugin prototype. remove=true unregisters it (effects already applied stay until a reload). list=true shows ids. |
| reloadA | Reloads the client page (like Pengu's reload). Refused during Matchmaking, ReadyCheck, ChampSelect, GameStart, InProgress and Reconnect. Waits until the Riot UI is back. |
| consoleB | Recent console messages and uncaught exceptions from the client page. |
| networkB | Recent LCU requests made by the client page (assets excluded), newest last, including requests the safety guard blocked. |
| metricsB | Renderer performance counters (JS heap, nodes, layout/style recalcs, script duration). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 21 tools
Most tools have clearly distinct roles, with a sensible layering of observe (state, snapshot, query, screenshot), act (click, hover, type, key, scroll, navigate), and extend (eval, script, css). A few pairs could be confused at a glance — snapshot vs query (list vs detail), eval vs script (one-shot vs persistent injection), state vs map (live vs crawled) — but the descriptions draw the boundaries explicitly.
All names are single lowercase snake_case tokens (wait_for, lcu_endpoints), with no camelCase mixing. The set mixes nouns for read-only inspectors (console, network, metrics, map) with verbs for actions (click, hover, type, navigate), which is a defensible and readable pattern rather than a chaotic one.
21 tools is on the heavy side, but each covers a genuinely separate capability of client automation (input, DOM inspection, navigation, LCU access, JS injection, diagnostics). Nothing looks like a redundant duplicate of another tool, so the count is justified by scope even if it sits near the upper bound.
The surface covers the full loop: inspect state, take snapshots, act with real input, wait, verify via console/network/metrics, and extend via eval/script/css plus direct LCU calls and an endpoint catalog. Minor gaps exist — no drag/double-click or multi-step form fill, no console/network clearing or filtering — but these are workaroundable via eval or repeated calls.