Skip to main content
Glama
mcsr-mcp
by miyakejima

mcsr-mcp is a Model Context Protocol server that gives AI assistants real-time access to the MCSR Ranked competitive Minecraft speedrunning API.

Ask your AI anything about any ranked player — form analysis, personal bests, ELO history, pre-match scouting, rivals, decay status — in plain language. No commands, no dashboards, no manual API calls.

"Scout v_strid before my match"
"What are Feinberg's top 10 fastest runs this season?"
"Has v_strid been tilting? Show me their ELO history"
"When does my rank decay?"
"Who are v_strid's rivals and where are they weakest?"

How it looks


Related MCP server: OSRS MCP Server

What it can do

All 18 tools

Tool

What it does

get_player

Profile, ELO, rank, tier, stats, Twitch/YouTube links

get_player_matches

Raw match history with seed and bastion data

get_player_seasons

Season-by-season performance history

get_versus

Head-to-head record between two players

get_versus_matches

Full H2H match list

get_leaderboard

Global ranked standings

get_match

Single match details by ID

get_weekly_race

Weekly race leaderboard

analyze_player_form

Win rates by seed type, bastion type, opponent ELO bracket

get_rank_context

Leaderboard neighborhood + ELO gaps to milestone ranks

scout_opponent

Pre-match scouting report with Twitch VOD timestamps

compare_players

Side-by-side player comparison with H2H

find_rivals

Opponents a player consistently loses to

get_personal_bests

Fastest ranked completions, filterable by seed type

get_elo_history

Full ELO trajectory — peak, trough, streaks, per-match deltas

get_decay_status

Exact decay date + urgency level (✅ SAFE → 🚨 CRITICAL)

analyze_session_form

Per-session stats grouped by playtime gaps

get_capabilities

Ask your AI "what can this MCP do?" to get the full guide


Installation

Requirements

  • Node.js v18 or later

  • An MCP-compatible AI client (see below)

1. Clone and build

git clone https://github.com/miyakejima/mcsr-mcp.git
cd mcsr-mcp
npm install
npm run build

The compiled server will be at dist/index.js.

2. Add to your AI client

Add the following block to your MCP config file:

{
  "mcpServers": {
    "mcsr": {
      "command": "node",
      "args": ["/absolute/path/to/mcsr-mcp/dist/index.js"]
    }
  }
}

Config file locations

Client

Config file

Antigravity

~/.gemini/config/mcp_config.json

Claude Desktop (macOS)

~/Library/Application Support/Claude/claude_desktop_config.json

Claude Desktop (Windows)

%APPDATA%\Claude\claude_desktop_config.json

Cursor

.cursor/mcp.json (project) or ~/.cursor/mcp.json (global)

Windsurf

~/.codeium/windsurf/mcp_config.json

Windows path example:

{
  "mcpServers": {
    "mcsr": {
      "command": "node",
      "args": ["C:/Users/yourname/mcsr-mcp/dist/index.js"]
    }
  }
}

3. Restart your client

After saving, restart your AI client. The mcsr server will appear with all 18 tools enabled. You can verify by asking:

"What can the mcsr MCP do?"


Usage examples

Pre-match scouting

"Scout v_strid — I'm miyakejima"

Returns: recent form, seed/bastion win rates, weaknesses, your H2H record, and Twitch VOD links with timestamps so you can jump straight to their runs.

Form analysis

"What are Feinberg's weaknesses over the last 30 matches?"

Returns: win rate by every seed type and bastion variant, ELO bracket performance, streak data.

Personal bests

"Show me v_strid's top 5 fastest Buried Treasure runs"

Returns: ranked list of fastest completions for that seed, with opponent, date, and VOD timestamp link.

ELO history

"Has v_strid been tilting lately? Show me their last 50 matches"

Returns: full ELO timeline, peak/trough, total delta, longest win and loss streaks.

Decay tracker

"When does my rank decay? I'm miyakejima"

Returns: exact date, days/hours remaining, urgency level, last match date.

Rivals

"Who does Feinberg consistently lose to?"

Returns: opponents with a net losing record, sorted by ELO proximity and net loss count.


Notes

  • No API key required. Uses the public MCSR Ranked REST API at api.mcsrranked.com.

  • Rate limit: The API allows ~500 requests per 10 minutes. A 150ms delay between requests is applied automatically.

  • Loss times are unavailable. The MCSR Ranked API only records the winner's finish time — this is an upstream API limitation.

  • VOD links include Twitch timestamps to jump directly to the run start.

  • Season filtering: Add "season 10" (or any number) to any query to pull historical season data.

  • Seed type filter on get_personal_bests: RUINED_PORTAL, SHIPWRECK, DESERT_TEMPLE, VILLAGE, BURIED_TREASURE.


Data source

All data is from the official MCSR Ranked API. This project is not affiliated with or endorsed by MCSR Ranked.


License

MIT

Available Tools

18 tools
analyze_player_formB

Analyze a player's recent form over their last N matches. Returns: win rate, ELO trajectory (delta), average win time, win/loss streaks, win rate broken down by seed type (Desert Temple, Shipwreck, etc.), by bastion type (Stables, Treasure, etc.), and by opponent ELO bracket (vs higher/lower rated). Designed for AI coaching-style analysis.

Inputs: identifier (required), count, season.

analyze_session_formA

Group a player's recent matches into sessions (consecutive matches within a configurable time gap, default 90 minutes) and analyze each session's performance: wins, losses, ELO gained/lost, and best run time. Shows up to the 10 most recent sessions.

Inputs: identifier (required), season, matchCount, sessionGapMinutes.

compare_playersB

Compare two players side by side: ELO, rank, tier, season stats, recent form (win rate, ELO delta, avg win time), head-to-head record, and per-seed-type win rate breakdown for both players.

Inputs: identifier1 (required), identifier2 (required), season.

find_rivalsA

Find a player's rivals — opponents they have a losing record against — sorted by net losses weighted by ELO proximity. Helps identify specific matchup weaknesses. Returns up to 10 rivals with win/loss record and ELO context.

Inputs: identifier (required), season, matchWindow.

get_capabilitiesA

Returns a complete guide to what the MCSR Ranked MCP can do — all available tools, what each one does, and example natural-language queries you can use. Call this when asked what this MCP can do, what tools are available, or how to use it.

Inputs: no named parameters.

get_decay_statusA

Check when a player's rank will decay if they stop playing ranked matches. Returns the exact decay date, days and hours remaining, urgency level (SAFE / WATCH / WARNING / CRITICAL / DECAYED), and when they last played.

Inputs: identifier (required).

get_elo_historyA

Reconstruct a player's ELO trajectory across their last N matches — every gain and loss in chronological sequence. Returns a summary (peak, trough, delta, streaks) and a full timeline of ELO changes. Useful for spotting tilt spirals, hot streaks, or sustained momentum.

Inputs: identifier (required), count, season.

get_leaderboardA

Get the MCSR Ranked global leaderboard. Returns player rank, ELO, tier, country, and phase points. Use offset to paginate.

Inputs: count, offset, season.

get_matchB

Get full details for a specific match by ID: both players, winner, finish time, seed with all variations, ELO changes, VOD links with jump timestamps, and personal best rank.

Inputs: matchId (required).

get_personal_bestsA

Find a player's fastest ranked completions (personal bests), sorted by time. Only wins are included since the API only records the winner's finish time. Optionally filter by seed type. Returns time, date, opponent, seed details, and VOD link with timestamp.

Inputs: identifier (required), count, season, seedType.

get_playerA

Get a player's full MCSR Ranked profile: ELO, rank, tier, season stats (wins/losses/win rate/best time), all-time stats, Twitch/YouTube links, and season phase results.

Inputs: identifier (required), season.

get_player_matchesA

Get a player's match history with full detail per match: opponent, finish times, ELO changes, seed type, bastion type, seed variations, VOD links with timestamps, win/loss outcome.

Inputs: identifier (required), after, count, before, +2 more.

get_player_seasonsA

Get all historical season results for a player: final ELO, rank, and phase points for every season they participated in.

Inputs: identifier (required).

get_rank_contextA

Get a player's position on the leaderboard with surrounding context: who is directly above and below them, ELO gaps to neighbors, and how far they are from milestone ranks (Top 10, Top 50, Top 100).

Inputs: identifier (required), contextSize.

get_versusA

Get the head-to-head win/loss record between two players, including win rates for both sides.

Inputs: identifier1 (required), identifier2 (required), season.

get_versus_matchesA

Get the full match-by-match history between two players, with all match details (seed, times, ELO changes, VODs).

Inputs: identifier1 (required), identifier2 (required), count, season.

get_weekly_raceA

Get the current weekly race leaderboard: top times for the week's seed, with player, country, and formatted finish time.

Inputs: no named parameters.

scout_opponentA

Generate a scouting report on a target player before a match. Returns their ELO/rank/tier, best time, recent form (win rate, ELO trend, preferred seed types), head-to-head record (if you provide your own identifier), and links to their recent VODs with timestamps.

Inputs: targetIdentifier (required), myIdentifier.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 18 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose, from player profile to match history, versus analysis, form analysis, scouting, leaderboard, and decay status. No two tools appear to do the same thing.

    Naming Consistency4/5

    Most tools follow a consistent get_noun pattern, but five tools use different verbs (analyze, scout, compare, find). However, all names still follow a verb_noun structure, making them understandable.

    Tool Count5/5

    With 18 tools covering player stats, matches, versus, leaderboard, form analysis, and more, the count is well-scoped for the MCSR Ranked domain. Each tool serves a distinct purpose without bloat.

    Completeness4/5

    The tool set covers core player profile, match history, versus, leaderboard, weekly races, and advanced analysis (form, scouting, rivals). Missing a player search tool and season-specific leaderboard, but the surface is largely complete for common use cases.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      A Model Context Protocol server that enables LLMs to interact with all MonkeyType API endpoints, providing access to typing test data, user profiles, leaderboards, and statistics through natural language.
      22
      551 npm
      MIT
    • A
      license
      B
      quality
      Not graded
      maintenance
      MCP Server for interacting with Old School RuneScape Wiki API and game data files, providing tools to search the OSRS Wiki and access game data definitions through the Model Context Protocol.
      6
      19
      90 npm
      1
      -
    • A
      license
      Not graded
      quality
      C
      maintenance
      A Model Context Protocol server that gives AI assistants native access to Minecraft mod development tools — decompile, remap, search, and analyze Minecraft source code directly from your AI workflow.
      130 npm
      50
      MIT