Skip to main content
Glama
Liquipedia MCP

Liquipedia MCP

by Archers007

Liquipedia MCP

A Model Context Protocol server that exposes the Liquipedia v3 esports API β€” matches, teams, players, tournaments, placements, and standings β€” as MCP tools any AI client (Claude Desktop, Cursor, pi, …) can call.

It talks to the Liquipedia v3 REST API (https://api.liquipedia.net/api/v3) using the Authorization: Apikey <key> scheme, plus the MediaWiki action API for raw page wikitext. Requests are serialized and rate-limited to respect Liquipedia's API terms of use.

πŸ”‘ Bring your own API key. This server ships with no credentials. Every user must supply their own Liquipedia v3 API key β€” request one via the Liquipedia API terms page.

Tools

Tool

What it does

query

Low-level access to any datapoint (match, team, player, tournament, placement, standingsentry, transfer, teamtemplate, squadplayer, series, company, externalmedialink). Full conditions / order / query control.

list_matches

Matches (schedules + results) for a wiki. Filter by opponent, tournament, date.

list_teams

Teams for a wiki. Filter by name, region, location.

list_players

Players for a wiki. Filter by id (handle), team, nationality.

list_tournaments

Tournaments for a wiki. Filter by name, startdate, organizer.

list_placements

Tournament placements/results. Filter by opponentname, tournament.

list_standings

Ranked standings / points table for a tournament (great for battle-royale like Apex/ALGS, PUBG, Fortnite). Returns teams sorted by placement with points, using the latest round snapshot. Pass the tournament page name.

get_wikitext

Raw wikitext of one or more pages via the MediaWiki API (no key needed).

Common parameters

  • wiki β€” the Liquipedia wiki to query: valorant, counterstrike, dota2, leagueoflegends, rocketleague, apexlegends, rainbowsix, halo, smash, fighters, starcraft2, … Pipe-separate for multiple: valorant|counterstrike.

  • conditions β€” raw Liquipedia condition syntax, [[field::value]] joined by AND / OR, e.g. [[opponent::Sentinels]] AND [[date::>2024-01-01]]. The convenience tools' typed filters are merged (AND) with this.

  • query β€” comma-separated projection of fields to return, e.g. pagename,date,tournament.

  • limit, offset, order (e.g. date DESC).

Related MCP server: osrs-wiki-mcp

Setup

pnpm install            # or: npm install
cp .env.example .env    # then set LIQUIPEDIA_API_KEY to YOUR key

You need your own Liquipedia v3 API key. Request one via the Liquipedia API terms page, then put it in .env (or pass it via the MCP client's env, see below). Also set LIQUIPEDIA_USER_AGENT to identify your app + a contact, as the terms require.

Variable

Default

Description

LIQUIPEDIA_API_KEY

β€”

v3 API key (required for structured tools; get_wikitext works without).

LIQUIPEDIA_USER_AGENT

LiquipediaMCP/1.0 (…)

Identifying UA sent on every request (required by ToS).

LIQUIPEDIA_MIN_INTERVAL_MS

2000

Minimum gap between requests (rate limiting).

LIQUIPEDIA_TIMEOUT_MS

12000

Per-request timeout.

LIQUIPEDIA_RETRIES

1

Retries on timeout / 429.

LOG_LEVEL

info

silent/error/warn/info/debug (logs go to stderr).

Run

The server speaks MCP over stdio β€” an MCP client launches it as a subprocess.

pnpm start          # node src/index.js
pnpm run inspect    # open the MCP Inspector UI
node scripts/smoke.mjs   # end-to-end check: lists tools + runs a real query

Add to an MCP client

Claude Desktop / Cursor (claude_desktop_config.json or .cursor/mcp.json):

{
  "mcpServers": {
    "liquipedia": {
      "command": "node",
      "args": ["/absolute/path/to/LiqMcp/src/index.js"],
      "env": {
        "LIQUIPEDIA_API_KEY": "your-own-key-here",
        "LIQUIPEDIA_USER_AGENT": "MyApp/1.0 (you@example.com)"
      }
    }
  }
}

Or run it straight from GitHub without cloning (Node β‰₯20):

{
  "mcpServers": {
    "liquipedia": {
      "command": "npx",
      "args": ["-y", "github:Archers007/LiqMcp"],
      "env": { "LIQUIPEDIA_API_KEY": "your-own-key-here" }
    }
  }
}

If you leave LIQUIPEDIA_API_KEY out of env, the server reads it from a .env in the working directory. The key is always supplied by you β€” none is bundled with the server.

Example prompts

  • "Use liquipedia to list Shopify Rebellion Gold's upcoming valorant matches."

  • "What tournaments are on the counterstrike wiki with the biggest prize pools?"

  • "Get Sentinels' team info from the valorant wiki (name, region, logo)."

  • "Fetch the wikitext infobox (section 0) for the 'TenZ' page on the valorant wiki."

How it works

MCP client ──stdio──> src/index.js (McpServer, 7 tools)
                            β”‚
                            β–Ό
                     src/client.js  ── serialized + rate-limited ──> Liquipedia v3 API
                            β”‚                                          (Apikey auth)
                            └───────────────────────────────────────> MediaWiki action API
                                                                       (wikitext, no key)
  • src/config.js β€” env-driven config (key, UA, timeouts, rate limit).

  • src/client.js β€” LiquipediaClient: query builder, single-flight rate limiter, timeout + retry, 429 handling.

  • src/index.js β€” MCP server: tool schemas (zod), condition builder, error mapping.

Notes

  • The Liquipedia API is unofficial/unstable and rate-limited β€” requests are serialized with a minimum interval; heavy use may still be throttled (429).

  • Data is CC-BY-SA; attribute Liquipedia on anything you render from it.

  • Not affiliated with or endorsed by Liquipedia / Team Liquid.

Available Tools

8 tools
get_wikitextGet Liquipedia page wikitextA

Fetch the raw wikitext of one or more Liquipedia pages via the MediaWiki action API (no API key required). Useful for infoboxes, rosters, and page content not exposed as structured datapoints. Returns { title: wikitext }.

Inputs: wiki (required), titles (required), section.

list_matchesList esports matchesA

Fetch matches (schedules + results) for a wiki. Filter by team/opponent, tournament, or date. Returns upcoming and completed matches with scores, opponents, tournament, and stream URLs.

Inputs: wiki (required), date, limit, order, +4 more.

list_placementsList tournament placementsB

Fetch tournament placements/results for a team or player on a wiki. Returns placement (e.g. '1', '3-4'), prize money, and the tournament.

Inputs: wiki (required), limit, order, query, +3 more.

list_playersList esports playersB

Fetch players for a wiki. Filter by id/handle, team, or nationality. Returns handle, real name, country, team, and role.

Inputs: wiki (required), id, team, limit, +4 more.

list_standingsList tournament standings (points table)A

Fetch the ranked standings / points table for a tournament. Ideal for battle-royale events (Apex/ALGS, PUBG, Fortnite) and any group-stage points table. Returns teams SORTED by placement with their points, using the latest round snapshot. Pass the tournament's page name (from a match/tournament row's pagename, e.g. 'Apex Legends Global Series/2026/Split 1/Playoffs').

Inputs: wiki (required), tournament (required), limit, stage.

list_teamsList esports teamsA

Fetch teams for a wiki. Filter by name, region, or location. Returns team metadata (name, region, roster template, social links, logo).

Inputs: wiki (required), name, limit, order, +4 more.

list_tournamentsList esports tournamentsB

Fetch tournaments for a wiki. Filter by name, date, or organizer. Returns tournament name, dates, prize pool, participant count, and location.

Inputs: wiki (required), name, limit, order, +4 more.

queryQuery a Liquipedia datapointA

Low-level access to any Liquipedia v3 datapoint. Supported datapoints: match, team, player, tournament, placement, standingsentry, transfer, teamtemplate, squadplayer, series, company, externalmedialink. Provide the wiki and an optional raw conditions string (Liquipedia [[field::value]] syntax joined by AND/OR).

Inputs: wiki (required), datapoint (required), limit, order, +4 more.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 8 tools

    Disambiguation5/5

    Each tool targets a distinct entity or operation (wikitext, matches, placements, players, standings, teams, tournaments, generic query), with clear descriptions that differentiate them. No obvious overlap.

    Naming Consistency3/5

    Most tools use 'list_' prefix for fetching lists, but 'get_wikitext' uses 'get_' and 'query' is a bare verb. This inconsistency in naming convention could cause confusion about the action being performed.

    Tool Count4/5

    8 tools is a reasonable number for an esports wiki server, covering major entities. Not too few or too many, but a few more specialized tools could be added without bloat.

    Completeness5/5

    The tool set covers the main entities (matches, players, teams, tournaments, standings, placements) plus raw wikitext retrieval and a generic query tool for any other datapoint, ensuring no obvious gaps.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      Provides read-only access to Old School RuneScape Wiki data, returning structured content with source provenance via MCP tools for searching pages, items, monsters, quests, shops, and drop sources.
      10
      234 npm
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Read-only MCP server for sourced Dota 2 tournament, team, player, schedule, and result data from Liquipedia, with revision-level metadata and caching.
      5
      9 npm
      1
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Provides MCP tools to interact with a running League of Legends client, including REST API calls, live event streaming, and DOM/JavaScript access.
      61
      15 npm
      1
      MIT