Skip to main content
Glama
Valorant MCP Server

Valorant MCP Server

Valorant MCP Server

An MCP (Model Context Protocol) server that exposes Valorant match analysis tools. Connect it to Claude (or any MCP-compatible client) to fetch and analyze player stats, match history, agent performance, and more.

Powered by Henrik's Unofficial Valorant API.

Tools

Tool

Use it for

get_performance_report

The broad picture across up to 50 matches: opening duels, trading, KAST/ADR, damage conversion, clutches, attack vs defense, economy (incl. your buy vs your team's), per-role/agent/map results, death positions by callout, weapons and engagement ranges, solo vs party, lobby strength, game number in session

get_benchmarks

Whether those numbers are good: you vs the other 9 players in the same lobbies, vs the same role, and vs others on the same agent (incl. utility casts per ability and Henrik's performance ratings)

get_teamplay_report

Spacing and trading from player positions: isolated deaths, trade chances you converted, where you die alone, win rate with each party member

get_site_report

Team site choice per map, post-plant and retake win rates

compare_periods

Last N matches vs the N before, with deltas and confidence ranges

get_rr_history

RR gained/lost per match, joined with how you played in each

get_player_profile

Account, current rank/RR, peak, rank protection, season history

get_match_history

One compact row per recent match (filter by mode, map, agent)

get_match_details

One match in depth. summary: per-player stats, per-round sides, buys, first blood. narrative: round-by-round timeline with named map zones and tags; filter with rounds

Also exposed:

  • Prompt coach_review: runs the tools and writes a keep / change / experiment review.

  • Resource valorant://glossary: definitions of every metric (trade chance, isolated death, buy thresholds, confidence ranges, ...).

Percentages that depend on sample size come with *_ci95 95% confidence ranges so small samples aren't over-read.

Related MCP server: valorant-mcp

Setup

Prerequisites

  • uv package manager:

    curl -LsSf https://astral.sh/uv/install.sh | sh

    (Windows: powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex")

  • A Henrik API key

Claude Code

claude mcp add valorant-analyzer -e HENRIK_API_KEY=your-key-here -- uvx valorant-mcp

Claude Desktop

Add to your Claude Desktop config:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "valorant-analyzer": {
      "command": "uvx",
      "args": ["valorant-mcp"],
      "env": {
        "HENRIK_API_KEY": "your-key-here"
      }
    }
  }
}

Local Development

git clone https://github.com/SeijiMatsumoto/valorant-mcp.git
cd valorant-mcp
uv sync

Create a .env file in the project root:

HENRIK_API_KEY=your-api-key-here

Optional settings (env vars or .env):

Variable

Default

Notes

VALORANT_REGION

na

na, eu, ap, kr, latam, br

VALORANT_PLATFORM

pc

pc or console

HENRIK_BASE_URL

https://api.henrikdev.xyz/valorant

Set to https://beta.api.henrikdev.xyz/valorant for 4.10 beta fields (Henrik performance grades, MVPs). Analysis doesn't depend on them.

CACHE_DIR

~/.cache/valorant-mcp

Completed matches are cached here permanently

Run the server

uv run valorant-mcp

Test with MCP Inspector

mcp dev src/valorant_mcp/server.py

Run tests

Live tests need HENRIK_API_KEY and VALORANT_SMOKE_PLAYER=name#TAG in your .env.

uv run pytest                 # offline unit tests (HTTP is mocked)
uv run pytest -m live         # smoke tests against the real Henrik API (~13 of your 30 requests/min)

Tech Stack

License

MIT

Available Tools

9 tools
compare_periodsA

Compare the most recent recent matches against the previous block before them. Shows key metrics side by side with deltas — use it to answer "what changed?" or "am I improving?". Also lists the agents/maps played in each block. Check the win_pct confidence ranges before calling a change real.

Inputs: username (required), mode, agent, recent, +2 more. Returns: result

get_benchmarksA

Judge whether the player's numbers are good or bad by comparing them with the other 9 players in the same matches (so rank is controlled for):

  • vs_lobby: per-round metrics for you vs players in the same role that match vs the whole lobby (ACS, ADR, KAST, opening duels, deaths traded, trade-chance conversion, isolated deaths, teammate distance at death, survival, utility casts per round)

  • avg_place_in_lobby_of_10: your average placement among all 10 players (1 = best)

  • by_agent: for each agent played 2+ times, you vs everyone else on that agent in your lobbies, incl. casts per round of each ability and Henrik's performance breakdown/ratings when available

Inputs: username (required), map, mode, agent, +3 more. Returns: result

get_match_detailsA

Full details of one match. summary (default): per-player stats (ACS, ADR, KAST, first kills/deaths, trades, multikills, clutches), plus per-round sides, team buys, first blood, plant/defuse and kills. narrative: round-by-round timeline with named map zones (A Site, Mid, B Long, ...) and tags (first_blood, trade, rotation) — best for spatial/story questions like "where do we die on attack". Pass focus_username to mark that player as (YOU) in the narrative, and rounds (1-indexed) to limit the narrative to specific rounds — it is long otherwise.

Inputs: match_id (required), view, region, rounds, +1 more. Returns: result

get_match_historyA

List matches, one compact row each: map, agent, result, score, KDA, ACS, ADR, HS%, KAST, first kills/deaths, ACS rank on team, party size. Defaults to the last 10; pass a larger count (max 50) or season for a whole act. Use the match_id with get_match_details.

Inputs: username (required), map, mode, agent, +3 more. Returns: result

get_performance_reportA

Broad analysis of a player's recent matches. Start here for "how am I doing / what are my patterns". Sections:

  • overview: win rate (with 95% range), ACS, K/D, ADR, HS%, KAST, opening duels (first kill/death rates, round win % after each), trading (deaths traded, isolated/early deaths), damage conversion, clutches (1v1, 1v2, 1v3+), multikills, and personal stats in wins vs losses

  • sides: attack vs defense round win %, KAST, survival

  • economy: round win % by team buy (pistol/eco/force/full), anti-eco, upsets, and rounds where your own buy didn't match the team's

  • agents / maps: per-role, per-agent and per-map results incl. attack/defense round win %

  • positioning: where you die per map and side (named callouts), first-death zones, isolated %

  • weapons: kills by weapon, median kill distance, K/D by engagement range, results by weapon held

  • context: solo vs party, lobby strength (enemy rank vs yours), game number within a session Numbers are absolute; use get_benchmarks to judge them against same-rank players.

Inputs: username (required), map, mode, agent, +4 more. Returns: result

get_player_profileA

Account info plus ranked state: current rank/RR/elo, last RR change, peak rank, rank protection, and season-by-season results.

Inputs: username (required), region. Returns: result

get_rr_historyA

Competitive RR change per match, joined with how the player performed in that match (agent, KDA, ACS, KAST, first kills/deaths). Use it to see which kinds of games gain or lose RR, and RR performance bonuses/penalties.

Inputs: username (required), count, region. Returns: result

get_site_reportA

Team-level site play per map: on attack, plant rate, which site you plant and the post-plant win % on each; on defense, which site the enemy plants and your retake/hold win %; plus win % in rounds with no plant. Use for "which site should we hit on Bind" or "are we bad at retakes".

Inputs: username (required), map, mode, count, +2 more. Returns: result

get_teamplay_reportA

Spacing and trading, from every player's position at each kill:

  • how far your nearest teammate was when you died; deaths split into close (<15m), loose (15-25m) and isolated (>25m), with how often each got traded

  • trade chances: teammate died within 15m of you while you were alive, and how often you killed their killer within 5s

  • the map/side/callout spots where you most often die isolated and untraded

  • results by party size and win rate with each party member Use for "why do I die alone", "am I trading my teammates", "who should I queue with".

Inputs: username (required), map, mode, agent, +3 more. Returns: result

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 9 tools

    Disambiguation3/5

    The descriptions are rich and include 'use for' hints, but several tools overlap: get_performance_report bundles positioning/context/economy sections that are also the focus of get_teamplay_report, get_site_report, and get_benchmarks. An agent may struggle to decide between the broad performance report and the specialized reports for questions like 'why do I die alone'.

    Naming Consistency4/5

    Eight of nine tools follow a clear get_<noun>_<type> pattern (get_player_profile, get_match_history, get_teamplay_report, etc.). compare_periods is the lone deviation, breaking the verb_noun convention used everywhere else, but it remains readable.

    Tool Count5/5

    Nine tools is well within the ideal 3-15 range and each targets a distinct analysis surface (profile, history, details, benchmarks, teamplay, site, RR). Nothing feels redundant enough to cut, and the count is not so large as to overwhelm an agent.

    Completeness5/5

    The surface covers the full analytics lifecycle: account/rank (profile), match listing and single-match detail, RR trends, period comparison, benchmarking, plus teamplay and site-specific analyses. For a read-only performance analytics domain this is comprehensive with no obvious dead ends.

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      MCP server for Valorant esports that enables querying match schedules, live results, AI-powered analysis, and setting reminders.
      -
    • A
      license
      Not graded
      quality
      B
      maintenance
      Provides VALORANT account and match data through HenrikDev's API. Enables querying profile, recent competitive matches, and match details.
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Provides structured Valorant esports analytics data and metrics through MCP, including match analysis, player profiling, scouting reports, and ad-hoc SQL queries. Enables AI models to generate accurate coaching insights from pre-computed analytics tables.
      Apache 2.0