This listing appears offline
Our automated checks couldnβt reach the source repository, so weβve removed it from search, browse, and the API β this page stays reachable at this direct link only. If this is your project, claim it to fix the link and restore visibility.
Claim this listingDeterministic Brotato theorycrafter MCP server: facts and math, not guesses.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
A deterministic theorycrafter for Brotato, delivered as an MCP server you can chat with from Claude Code (and other MCP clients).
The design principle: a deterministic core holds the ground truth β weapon/item/character data, DPS formulas, stat mechanics β so the language model looks facts up and computes instead of recalling (and misremembering) them. Every tool returns a finished, verifiable answer or a structured error; there are no baked-in tier lists or opinions, only facts and math.
The dataset (data/brotato.json) is not committed β it is derived from copyrighted game
files, so you build it yourself from a local Brotato install (see Building the dataset).
A full build from Brotato 1.1.15.4 contains 202 weapons, 197 items, 50 characters, and 15
weapon-class sets.
uv for environment/dependency managementInstall dependencies:
Build the dataset (needs a local extraction β see Building the dataset), then start the server:
The server refuses to start without data/brotato.json and tells you to build it first.
Run the tests (the dataset-dependent integration test is skipped when no dataset is built):
The dataset is never distributed β build your own from your Brotato install:
uv run python build_dataset.py (see docs/extraction-setup.md).
Game version auto-detects from the decompiled recovered/singletons/progress_data.gd, and
generated_at defaults to the current UTC time β pass --game-version/--generated-at
explicitly to override either. SPUDCOACH_DATA works as an env-var alternative to --data.
The MCP server is described by plugin/.mcp.json:
The server reads the (locally built) data/brotato.json relative to its working directory, so
it must run with the repository root as its cwd (the manifest handles this via
${CLAUDE_PLUGIN_ROOT} when bundled as a plugin), and you must
build the dataset first.
To register it directly in Claude Code without packaging, add the server pointed at your checkout, e.g.:
Once connected, just ask in natural language β the model routes your question to the tools below:
Claude Desktop can launch the server with uvx in two forms: fetch
straight from this repo (auto-updates on restart, but needs git reachable β see the Windows note
below), or point at a local checkout (nothing fetched at runtime; the most reliable form on
Windows). Either way you supply your own locally built brotato.json β the dataset is never
distributed.
Install uv on the machine running Claude Desktop (winget install astral-sh.uv on Windows,
or the standalone installer).
Open the config file and add the spud-coach server:
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.jsonFetch-from-repo form:
Point --data at your built dataset (SPUDCOACH_DATA works as an env-var alternative). On macOS
use a POSIX path like /Users/<you>/brotato.json.
Fully restart Claude Desktop (quit from the tray, not just close the window).
uvx not found)The git+https://β¦ form makes uv shell out to a git executable. Claude Desktop does not pass
your shell β or even your System PATH β to the MCP subprocess; it spawns servers with its own
trimmed environment. (The PATH it prints in the logs is its command-resolution list, not what
the child process receives.) So a git that runs fine in PowerShell, installed in a System-PATH
directory, can still come back "not found" here β and a bare "command": "uvx" can fail to resolve
for the same reason. Two fixes:
Point at a local checkout β no runtime git (recommended). Clone once in a terminal where git
works, then use --from <folder> instead of --from git+β¦:
Update later with git pull in that folder, then restart Desktop.
Or force the tools onto the server's PATH. Keep the git+https form and add an env block
that hands the child an explicit PATH β git, plus uv's bin and the winget-links dir:
If uvx itself still isn't found, also set "command" to its absolute path (Get-Command uvx to
locate it, e.g. C:\Users\<you>\AppData\Local\Microsoft\WinGet\Links\uvx.exe).
All tools return a JSON object. Lookups that miss return {"error": "not_found", "did_you_mean": [...]}.
22 tools. Arguments marked ? are optional.
| Tool | Arguments | Returns |
|---|---|---|
read_me | β | Session-start primer: how Brotato's core loop works, the source-verified stat mechanics, and what every precomputed field assumes. Call once, before anything else |
| Tool | Arguments | Returns |
|---|---|---|
get_weapon | name, tier? | Weapon record incl. raw stat-aware fields, on-hit effects, and weapon-class sets; {matches:[...]} if tier omitted and several tiers match |
get_item | name | Item record: effects, tags, archetype, frozen_stat |
get_character | name | Character kit: wanted_tags, banned_item_groups, flat_bonuses, gain_modifiers, special_effects, class_bonuses, starting_weapon_pool |
get_weapon_class_set | class_name | Weapon-class set bonuses (Blade, Gun, Elemental, β¦), by equipped count |
list_weapons | scaling_stat?, tier? | {weapons:[...]} filtered summaries |
list_items | tag?, scaling_stat?, archetype?, tier? | {items:[...]} filtered summaries |
list_characters | scaling_stat?, wanted_tag?, banned_item_group?, special_effect?, class_bonus_set?, can_start_with?, detail? | {characters:[...]} β full records, not summaries (see below) |
get_filter_options | β | Valid filter values in the dataset: item tags, archetypes, scaling stats, tiers, weapon-class names, enemy abilities / attack kinds / zones, and the character filter vocabularies |
| Tool | Arguments | Returns |
|---|---|---|
weapon_dps | name, tier, stats, aoe_enemies_hit?, character?, weapon_count?, engagement_distance?, loadout?, apply_set_bonuses? | Realized, stat-aware DPS at your build, split into base_dps + proc_dps, with a cadence breakdown and the assumptions baked in |
compare_weapons | names_with_tiers, stats, plus the same optional arguments as weapon_dps | {ranking:[...]} sorted by DPS descending, at one shared stat block |
compare_merge_paths | weapon_name, path_a, path_b, stats? | Winner or crossover_rd for two tier-merge paths (lists of tiers) |
stat_gradient | weapons, stats, step?, character?, aoe_enemies_hit?, engagement_distance? | Which stat to buy next: stats ranked by the DPS gain from +step of each. DPS only β survivability is out of scope |
| Tool | Arguments | Returns |
|---|---|---|
evaluate_item_for_build | item_name, character_name, current_stats | Per-effect verdict β live / wasted / harmful β with reasons, plus a summary |
loadout_set_bonuses | weapon_names | Per-class set progress across a whole loadout: equipped count, active bonuses, and next threshold |
explain_stat | stat | Verified stat mechanics: caps, special behavior, neglectable / never-negative flags |
stat_display_value | character, stat, raw_value | Displayed value after the character's gain modifiers (e.g. Ranger RD 6 β 9) |
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/brotato-coach-2)<a href="https://allmcps.com/mcp/brotato-coach-2"><img src="https://allmcps.com/api/badge/brotato-coach-2?style=directory" alt="Brotato Coach on AllMCPs" /></a>