supercell-mcp
Read-only MCP server for looking up public Supercell game data across Clash of Clans, Clash Royale, and Brawl Stars via 15 tools.
Clash of Clans: get player stats, clan details, clan members, current war status, and search clans.
Clash Royale: get player stats, recent battlelog, clan details, clan members, and search clans.
Brawl Stars: get player stats, recent battlelog, club details, club members, and player/club rankings by country or global.
Runs locally over stdio, uses per-game API credentials, normalizes tags, and returns compact read-only results with timeout/rate-limit error handling.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@supercell-mcp get Clash of Clans player #2PP0JCVL"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
supercell-mcp
One MCP server covering three Supercell game APIs — Clash of Clans, Clash Royale, and Brawl Stars. They share an auth model and response style, so a single server with prefixed tool names beats three near-identical ones.
Read-only. These APIs expose no write or messaging endpoints at all, so there is nothing here that can change game state.
15 tools. Runs locally over stdio.
Tools
Prefixes: coc_ Clash of Clans, cr_ Clash Royale, bs_ Brawl Stars.
Clash of Clans | Clash Royale | Brawl Stars |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Every tool is annotated readOnlyHint: true. The exact schemas the model sees
are in mcp-surface.json.
Related MCP server: Clash Royale MCP Server
Layout
src/shared.js version, timeouts, error shaping, tool-result helpers
src/client.js shared auth + fetch, tag and country-code validation
src/clashofclans.js coc_* tools
src/clashroyale.js cr_* tools
src/brawlstars.js bs_* tools
src/index.js McpServer construction + stdio transport
mcp-surface.json the committed tool surface CI compares againstThe IP allowlist gotcha
Supercell API keys are bound to the IP address they were created for. When
the home IP changes, every call starts returning 403 accessDenied even though
the key is perfectly valid and unexpired.
That failure mode looks like an auth bug and isn't one. Supercell's 403 body says which it is, and names the IP it saw, so the error this server returns does too:
Clash of Clans API refused the key: it is not allowed from IP 203.0.113.7. Keys are
bound to the IP they were created for — mint one for 203.0.113.7 at https://developer.clashofclans.comA key that is simply wrong gets a different message that doesn't mention IPs. Mint a new key for the current IP at the relevant developer portal:
Setup
Requires Node 20+. Mint a key per game at the portal listed above, for your
current public IP, then save each one as credentials/<game>.json:
credentials/clashofclans.json
credentials/clashroyale.json
credentials/brawlstars.jsonEach holds {"token": "..."} — see the matching *.example.json.
credentials/ is git-ignored. A game whose key file is absent simply fails on
first call with a message naming the file and its portal; the other games keep
working.
npm ci
claude mcp add supercell -- node /absolute/path/to/supercell-mcp/src/index.jsOr in Claude Desktop's claude_desktop_config.json:
{
"mcpServers": {
"supercell": {
"command": "node",
"args": ["/absolute/path/to/supercell-mcp/src/index.js"]
}
}
}The credentials file nobody could have created
Until 1.1.0, the Clash of Clans client read credentials/coc.json, while this
README and the tracked example file said clashofclans.json. Following the
documentation exactly produced a server
whose Clash of Clans tools could never succeed — and every test passed, because
the mismatch only surfaces at call time, on the user's machine, with real
credentials.
The name is fixed (an existing coc.json is still read, so working installs keep working), and each game's client now exposes the file it reads, so a
test holds it to the tracked *.example.json beside it. Renaming one without
the other fails CI.
Development
npm test # unit tests — no network, no credentials
npm run lint # ESLint
npm run surface # start the server and diff its tool surface against mcp-surface.json
npm run surface:update # re-record mcp-surface.json after an intended changeThe tests cover registration across all three games, tag normalisation and encoding, path validation, the credentials-file names, both kinds of 403, and rate-limit and timeout messages. CI runs them on Node 20, 22 and 24, then starts the server with mcp-surface and fails if the tool surface differs from the committed snapshot.
Notes
Player and clan tags start with
#(e.g.#2PP0JCVL). The#is optional and URL-encoded before the request; left raw, it would be read as a fragment and silently truncate the path. Tags are upper-cased, and since the tag alphabet has no letter O, an O is corrected to a zero rather than sent off to 404.Every request has a 30-second timeout, error bodies are trimmed before they reach the model, and a 429 says when to retry. Results are compact JSON.
Tags are unambiguous across games but not portable between them; a Clash Royale tag won't resolve against the Clash of Clans API.
License
MIT — see LICENSE. Changes are recorded in CHANGELOG.md.
Available Tools
15 toolsbs_get_clubGet Brawl Stars clubA
Full details for a club (Brawl Stars' equivalent of a clan) by tag.
Inputs: tag (required).
bs_get_club_membersGet club member listC
Member roster for a club.
Inputs: tag (required).
bs_get_playerGet Brawl Stars playerC
Full stats for a player by tag.
Inputs: tag (required).
bs_get_player_battlelogGet a player's recent battlesD
Recent battle history for a player.
Inputs: tag (required).
bs_get_rankingsGet player or club rankingsB
Leaderboard rankings by country code ("global" for worldwide).
Inputs: type, countryCode.
coc_get_clanGet Clash of Clans clanC
Full details for a clan by tag.
Inputs: tag (required).
coc_get_clan_membersGet clan member listC
Member roster for a clan.
Inputs: tag (required).
coc_get_current_warGet current warB
A clan's current war status (if public / not in private war log).
Inputs: tag (required).
coc_get_playerGet Clash of Clans playerA
Full stats for a player by tag (with or without leading #).
Inputs: tag (required).
coc_search_clansSearch clansC
Search for clans by name and/or filters.
Inputs: name, limit, minMembers.
cr_get_clanGet Clash Royale clanC
Full details for a clan by tag.
Inputs: tag (required).
cr_get_clan_membersGet clan member listC
Member roster for a clan.
Inputs: tag (required).
cr_get_playerGet Clash Royale playerC
Full stats for a player by tag.
Inputs: tag (required).
cr_get_player_battlelogGet a player's recent battlesD
Recent battle history for a player.
Inputs: tag (required).
cr_search_clansSearch clansC
Search for clans by name and/or filters.
Inputs: name, limit, minMembers.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
Each tool is clearly distinguished by the game prefix (coc_, cr_, bs_) and a distinct verb_noun pattern (get_player, get_clan, etc.). No two tools have overlapping purposes, even across games.
All tools follow the consistent pattern of game prefix + verb_noun in snake_case (e.g., coc_get_player, cr_get_clan_members). No mixing cases or irregular verbs.
15 tools is slightly high but appropriate for covering three separate games with 4-5 tools each. The scope is well-defined and each tool serves a distinct endpoint.
Core read operations for players, clans, and clan members are present across games. Missing search by player tag and some game-specific endpoints (e.g., war details for Clash Royale), but the set covers the most common queries without dead ends.
Related MCP Connectors
Market data tools for the MCP ecosystem: server stats, events, search, leaderboards, package trends.
Hosted MCP server for DataLikers — Instagram & TikTok data API. 51 tools: Instagram user search by demographics (gender/age/race/country/city), profiles, bulk lookup, engagement, posts & reels, comments, hashtags, locations, stories, highlights, music, business accounts, top users; TikTok users, videos, comments, hashtags, playlists and top charts. Streamable HTTP, Bearer API key. Free tier: 100 requests on signup at https://datalikers.com/p/1by27bwg
Curated, trust-first index of vetted MCP servers — scored tiers, monthly re-verified. Read-only.
Official MCP server for twitterapis.com. Twitter/X search, users, DMs, Grok, monitoring and writes.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for the Clash of Clans API. Can get player, clan information, analyze ongoing wars, as well as war logs (provided they are public).19 npm1ISC
- FlicenseNot gradedqualityDmaintenanceAn MCP server that integrates with the official Clash Royale API to provide real-time data on players, clans, cards, and tournaments. It enables users to query battle logs, chest cycles, and global rankings directly through Claude Desktop or Claude Code.-
- AlicenseAqualityDmaintenanceRead-only MCP server for finding Discord messages. It enables searching guild messages, locating messages from jump URLs, and reading context around results.71MIT
- AlicenseNot gradedqualityDmaintenanceRead-only MCP server for Discord that lists guilds, channels, and reads or searches messages using a self-bot account via discord.py-self.MIT