MCP server that wraps the RGL API with natural-language tools. Designed for hosting on fly.io.
Translates queries like "every player who played IM in S7 of 6s" into the right sequence of API calls:
- Resolves "6s" → format/region (defaults to NA when not specified).
- Resolves "S7" → SeasonId by fuzzy-matching cached season list.
- Resolves "IM" → DivisionId scoped to the region.
- Fetches the corresponding Group, then its rosters.
- Optionally bulk-fetches profile data for every unique player.
| Tool | Purpose |
|---|---|
find_season |
Resolve season phrase → SeasonId |
find_region |
Resolve region phrase → RegionId |
find_division |
Resolve division phrase → DivisionId (scoped to a region) |
find_team |
Substring search on team name/tag |
find_player |
Substring search on player aliases |
get_player |
Profile by SteamID |
get_team |
Team data by TeamId |
get_match |
Match data by MatchId |
list_season_divisions |
Groups in a season |
list_division_teams |
Teams in a (season, division) |
list_division_players |
Every unique player in (season, division), optionally with full profile data |
list_formats |
All formats (lookup) |
list_regions |
All regions (lookup) |
npm install
npm run devThe server reads .env.local for RGL_API_BASE_URL etc. By default it points at the production RGL API.
fly launch --name rgl-mcp --copy-config --no-deploy # first time only
fly deployThen point your MCP client at https://rgl-mcp.fly.dev/mcp (Streamable HTTP transport).
| Env var | Default | Meaning |
|---|---|---|
RGL_API_BASE_URL |
https://rglgg-api.fly.dev/v0 |
Base URL of the RGL API |
PORT |
3000 |
HTTP listen port |
CACHE_REFRESH_MS |
3600000 |
Lookup cache TTL (1h) |
DEFAULT_REGION_ID |
40 |
NA Sixes — used when only a format is given |