Every League of Legends aggregator, plus a local SQLite for cross-champion queries no single page surfaces.
mobalytics-lol-pp-cli pulls champion data, builds, runes, counters, and tier ratings from Mobalytics and Riot Data Dragon, hydrates them into a local SQLite store, then exposes cross-champion SQL queries no aggregator page surfaces: counter-pool matrices, patch meta-shift deltas, head-to-head compares, region-split tier views, and ARAM batch item-set exports for the LoL client. Free, offline-after-sync, agent-native (--json + --select + --agent), and the only LoL data source agentically accessible without a headless browser.
Learn more at Mobalytics LoL.
Created by @QuantumGlitch (QuantumGlitch).
The recommended path installs both the mobalytics-lol-pp-cli binary and the pp-mobalytics-lol agent skill (Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, and other agents supported by the upstream skills CLI) in one shot:
npx -y @mvanhorn/printing-press-library install mobalytics-lolFor CLI only (no skill):
npx -y @mvanhorn/printing-press-library install mobalytics-lol --cli-onlyFor skill only — installs the skill into the same agents as the default command above, but skips the CLI binary (use this to update or reinstall just the skill):
npx -y @mvanhorn/printing-press-library install mobalytics-lol --skill-onlyTo constrain the skill install to one or more specific agents (repeatable — agent names match the skills CLI):
npx -y @mvanhorn/printing-press-library install mobalytics-lol --agent claude-code
npx -y @mvanhorn/printing-press-library install mobalytics-lol --agent claude-code --agent codexIf npx isn't available (no Node, offline), install the CLI directly via Go (requires Go 1.26.4 or newer):
go install github.com/mvanhorn/printing-press-library/library/media-and-entertainment/mobalytics-lol/cmd/mobalytics-lol-pp-cli@latestThis installs the CLI only — no skill.
Download a pre-built binary for your platform from the latest release. On macOS, clear the Gatekeeper quarantine: xattr -d com.apple.quarantine <binary>. On Unix, mark it executable: chmod +x <binary>.
Install the CLI binary first. The installer writes binaries to a per-user managed bin directory by default: $HOME/.local/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows.
npx -y @mvanhorn/printing-press-library install mobalytics-lol --cli-onlyThen install the focused Hermes skill.
From the Hermes CLI:
hermes skills install mvanhorn/printing-press-library/cli-skills/pp-mobalytics-lol --forceInside a Hermes chat session:
/skills install mvanhorn/printing-press-library/cli-skills/pp-mobalytics-lol --forceRestart the Hermes session or gateway if the newly installed skill is not visible immediately.
Install both the CLI binary and the focused OpenClaw skill. The installer defaults binaries to a per-user bin directory ($HOME/.local/bin on macOS/Linux, %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows):
npx -y @mvanhorn/printing-press-library install mobalytics-lol --agent openclawRestart the OpenClaw session or gateway if the newly installed skill is not visible immediately.
This CLI ships an MCPB bundle — Claude Desktop's standard format for one-click MCP extension installs (no JSON config required).
To install:
- Download the
.mcpbfor your platform from the latest release. - Double-click the
.mcpbfile. Claude Desktop opens and walks you through the install.
Requires Claude Desktop 1.0.0 or later. Pre-built bundles ship for macOS Apple Silicon (darwin-arm64) and Windows (amd64, arm64); for other platforms, use the manual config below.
Manual JSON config (advanced)
If you can't use the MCPB bundle (older Claude Desktop, unsupported platform), install the MCP binary and configure it manually.
go install github.com/mvanhorn/printing-press-library/library/media-and-entertainment/mobalytics-lol/cmd/mobalytics-lol-pp-mcp@latestAdd to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"mobalytics-lol": {
"command": "mobalytics-lol-pp-mcp"
}
}
}# Hydrate the local store with the latest patch's champions, items, runes, tier snapshots, builds, and matchups
mobalytics-lol-pp-cli sync --full
# Look up the recommended Aatrox top build for Emerald+ — the single most common ritual
mobalytics-lol-pp-cli champion build aatrox
# Diamond+ mid-lane tier list with WR/PR/BR
mobalytics-lol-pp-cli tier-list --role mid
# Pool-vs-pool matchup matrix coaches do in their head
mobalytics-lol-pp-cli counter-pool --our darius,aatrox,garen --their fiora,sett,renekton
# What moved up or down since two patches ago
mobalytics-lol-pp-cli meta-shift --since-patch 14.10 --agent --select winner,loser,delta
These capabilities aren't available in any other tool for this API.
-
counter-pool— Given our champion pool and the enemy pool, return the full matchup matrix ranked by WR delta with sample-size floor — the SQL coaches do in their head.Reach for this when an agent or coach needs to know 'given two confirmed champion pools, who picks into whom.' Avoids N×M page loads.
mobalytics-lol-pp-cli counter-pool --our darius,aatrox,garen --their fiora,sett,renekton --agent
-
meta-shift— Diff two tier_snapshots and list champions that gained or lost ≥1 tier or ≥2% WR since a prior patch, with sample-size guard.Use when an agent or coach needs to answer 'what changed this patch' without manually diffing tier-list screenshots.
mobalytics-lol-pp-cli meta-shift --since-patch 14.10 --role top --agent --select winner,loser,delta
-
compare— Side-by-side join across tier, build, counters, and matchups for two champions — including item-overlap percentage.Resolves draft-time 'which of these two is better right now' questions in one command.
mobalytics-lol-pp-cli compare aatrox darius
-
duo-finder— Best support pairings for a given ADC, restricted to a candidate support pool — coaches' player pools are fixed.Use when the support pool is fixed (coach, duo queue, ranked flex) and you need WR-ranked picks from that subset.
mobalytics-lol-pp-cli duo-finder --bot jinx --supports-from lulu,nami,leona
-
item-set— Write LoL client item-set JSON for N champions in ARAM mode in one command, refreshing all stale files in the client config folder.Use when an ARAM player wants game-ready item-sets across their reroll pool without alt-tabbing between champ select and a website.
mobalytics-lol-pp-cli item-set --aram aatrox,jinx,lulu,yasuo,sett --to client
-
pool-digest— For each champion in your pool: current tier, WR delta since last patch, top-1 counter, top-1 synergy — all in one composite query.Use as a morning ritual or pre-queue command to surface what changed about your specific champions.
mobalytics-lol-pp-cli pool-digest --pool darius,aatrox,garen --agent
-
power-spike— List champions ranked by early/mid/late spike strength for a chosen role — inverts Mobalytics's per-champion data into a leaderboard.Use when picking around a teammate's pick (ARAM, draft) to find spike-aligned champions.
mobalytics-lol-pp-cli power-spike --phase early --role jungle --top 20 --agent
-
flex— Champions that are ≥A-tier in 2+ roles for the same patch and rank — the SQL no aggregator surfaces because they index by role first.Use when drafting champions who don't tip your hand about role — invaluable for fearless-draft formats and amateur scrims.
mobalytics-lol-pp-cli flex --min-roles 2
-
tier-list— Same patch, same rank — three regions side-by-side. Surfaces pick-priority drift between KR/EUW/NA that no aggregator defaults to.Use to spot regional meta divergence — KR is usually 2 weeks ahead of NA, and this surfaces it in one view.
mobalytics-lol-pp-cli tier-list --compare-regions kr,euw,na
Run mobalytics-lol-pp-cli --help for the full command reference and flag list.
Manage cdn
Manage versions json
mobalytics-lol-pp-cli versions-json- Returns the full list of LoL patch versions known to Data Dragon, newest first. The first element is the current patch.
# Human-readable table (default in terminal, JSON when piped)
mobalytics-lol-pp-cli versions-json
# JSON for scripting and agents
mobalytics-lol-pp-cli versions-json --json
# Filter to specific fields
mobalytics-lol-pp-cli versions-json --json --select id,name,status
# Dry run — show the request without sending
mobalytics-lol-pp-cli versions-json --dry-run
# Agent mode — JSON + compact + no prompts in one flag
mobalytics-lol-pp-cli versions-json --agentThis CLI is designed for AI agent consumption:
- Non-interactive - never prompts, every input is a flag
- Pipeable -
--jsonoutput to stdout, errors to stderr - Filterable -
--select id,namereturns only fields you need - Previewable -
--dry-runshows the request without sending - Read-only by default - this CLI does not create, update, delete, publish, send, or mutate remote resources
- Offline-friendly - sync/search commands can use the local SQLite store when available
- Agent-safe by default - no colors or formatting unless
--human-friendlyis set
Exit codes: 0 success, 2 usage error, 3 not found, 5 API error, 7 rate limited, 10 config error.
mobalytics-lol-pp-cli doctorVerifies configuration and connectivity to the API.
Config file: ~/.config/mobalytics-lol-cli-pp-cli/config.toml
Static request headers can be configured under headers; per-command header overrides take precedence.
Not found errors (exit code 3)
- Check the resource ID is correct
- Run the
listcommand to see available items
- Empty results from any Mobalytics command — Run
mobalytics-lol-pp-cli sync --fullonce after first install; the local store has to be hydrated before queries return data. - tier-list returns stale tier ratings — Run
mobalytics-lol-pp-cli sync --resources tier_snapshots --since 1dto refresh; tier data moves daily as games are played. - HTTP 422 when calling Mobalytics commands — Mobalytics GraphQL rejects requests without
Origin: https://mobalytics.gg; verify withmobalytics-lol-pp-cli doctor. - item-set --to client doesn't show in League client — Restart the League client after writing item sets; the client only reads the config folder on startup. Use
--to filefor ad-hoc JSON export instead.
This CLI uses Chrome-compatible HTTP transport for browser-facing endpoints. It does not require a resident browser process for normal API calls.
This CLI was generated with browser-captured traffic analysis.
- Target observed: https://ddragon.leagueoflegends.com/api/versions.json
- Capture coverage: 6 API entries from 6 total network entries
- Reachability: standard_http (65% confidence)
- Protocols: rest_json (75% confidence)
- Candidate command ideas: list_Aatrox.json — Derived from observed GET /cdn/16.10.1/data/en_US/champion/Aatrox.json traffic.; list_champion.json — Derived from observed GET /cdn/16.10.1/data/en_US/champion.json traffic.; list_item.json — Derived from observed GET /cdn/16.10.1/data/en_US/item.json traffic.; list_runesReforged.json — Derived from observed GET /cdn/16.10.1/data/en_US/runesReforged.json traffic.; list_summoner.json — Derived from observed GET /cdn/16.10.1/data/en_US/summoner.json traffic.; list_versions.json — Derived from observed GET /api/versions.json traffic.
This CLI was built by studying these projects and resources:
- Championify — JavaScript (800 stars)
- golio — Go (89 stars)
- op.gg — Web
- u.gg — Web
- lolalytics.com — Web
- League of Graphs — Web
- League-of-Legends-MCP — TypeScript
- mcp-riot — Python
Generated by CLI Printing Press