Skip to content
Agentmart
Submit a tool

debuff

Let coding agents play, test and tune your 2D web game: live state, explained errors, replays, fuzz.

Connector by debuff.jpOfficial · Domain verified by the MCP Registry

IndexedMITLocal (stdio)★ 3
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/debuff-jp-debuff

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Let coding agents play, test and tune your 2D web game: live state, explained errors, replays, fuzz.

Use cases: testing, debugging

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
9 read · 14 write · 0 delete
Secrets
None asked for
Install scripts
None found
Runs as
Node.js package

Tools by what they do 23

Read from the source code; the running server may list different tools.

Read 9 · Look things up without changing anything.

  • game_errors
  • game_frames
  • game_notes
  • game_params
  • game_profile
  • game_state
  • inspect_project
  • list_assets
  • typecheck

Write 14 · Create, change, send or run things.

  • build
  • fuzz
  • game_capture
  • game_command
  • game_input
  • game_pause
  • game_replay
  • game_rewind
  • game_set_param
  • game_start
  • game_step
  • game_stop
Show 2 more tools
  • run_scenarios
  • run_tests

Files it touches

  • Any path the agent passes to its tools

Tools (23)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • buildProduction build

    Build for production and return the size report (raw, gzip, brotli per file). `leaks` lists dev-only code found in the output; it must be empty. `saves` compares the game's saves with saves.json: an error means players would lose saved progress. Don't accept save changes yourself; tell the human (they run `debuff build --accept-saves`).

  • fuzzFuzz playtest

    Play the game headlessly with random but plausible input (movement keys held, action keys tapped) to find runtime errors, stuck states and back-and-forth loops. Each finding includes the explained error (kind, source-mapped file:line, hint) and `repro`: a scenario file that replays it exactly. Pass that file to run_scenarios to reproduce, then again after fixing to verify. The same seed gives the same inputs.

  • game_captureCapture frame

    Screenshot of the current frame as a PNG image. With `path`, also saves it to that file in the project.

  • game_commandRun a game command

    Run a command the game registered with devTools({ commands }) (warp to a level, grant an item, select a cell), like a scenario's { command, args } step; recorded in replays. Prefer it over computing screen coordinates for game_input. An unknown name lists the registered ones. Returns the command's result and the new state.

  • game_errorsRuntime errorsread-only

    Runtime errors since the game started, explained: kind (your-code, debuff-usage, debuff-bug, outside), where (source file:line, source-mapped), a hint, the loop phase and tick, and a repeat count. A loop error stops the game; fix it, then game_pause false to resume. For debuff-bug, tell the human and share reportUrl rather than working around it. Type errors aren't runtime errors: use typecheck.

  • game_framesFrame breakdownread-only

    Recent frames, oldest first: intervalMs (what the player feels), updateMs, renderMs, steps (>1 means catching up), quads, drawCalls and longTaskMs (browser-reported main-thread stalls). Use it to explain stutter; in headless mode times reflect stepping, not real play. summary: true returns percentiles and the 3 slowest frames instead of every frame.

  • game_inputSend input

    Keyboard or pointer input. press/release take a KeyboardEvent.code (e.g. Space, ArrowLeft, KeyZ). tap/pointer_down/pointer_move take logical x, y. Input takes effect on the next game_step.

  • game_notesHuman notesread-only

    Moments the human flagged in the overlay (live mode): their words, the tick, the scene's inspect() state then, and the frames leading up to it.

  • game_paramsList paramsread-only

    Every tunable param group: schema (type, default, min, max, units, description) and current values.

  • game_pausePause or resume

    Pause or resume a live game (headless games are always paused). game_step also pauses first.

  • game_profileFrame profileread-only

    Why the game stutters, from myaku: frame-time percentiles (p50/p95/p99), hitches per minute, and the worst hitches explained. Each has a cause (script, gc, upload, compile, layout, throttled, hidden, unknown), a confidence, the script and function to look at when known, and a hint. Spans show time in debuff's update and render. Prefer this over game_frames to explain stutter; measure in live mode, since headless stepping doesn't reflect real play.

  • game_replaySave a replay

    Everything played since the game loaded (keys, pointer, param changes) up to `toTick` (default: now), saved as a scenario in .debuff/replays/ that replays it exactly. Use a note's `tick` to reproduce what the human saw when they flagged it, then run_scenarios with the returned file. `warnings` lists anything a replay can't reproduce (for example slow motion).

  • game_rewindRewind the live game

    Live mode only. Take the human's game back (or forward, within the known session) to `tick`: the page reloads, replays the session's inputs to that tick and stays paused, so the state is exactly what it was then. Use a note's `tick` to look at the moment the human flagged. The page needs a second to reload; then use game_state or game_capture.

  • game_set_paramSet param

    Set a tunable param live. Values are validated against the param's type and range. Changes last until game_start or a reload.

  • game_startStart game

    Connect to the game. auto (default): attach to the human's live game if `debuff dev` has it open in a browser, else start a private headless copy, paused. Returns the mode, state and how many notes the human has flagged. Replaces any running session.

Show 8 more tools
  • game_stateGame stateread-only

    Current scene, tick, time, logical width and height, renderer, frame stats, the scene's inspect() data and plugin inspect data. reducedMotion true means the game may freeze or tone down its animations (reducedMotionForced: game_start forced it).

  • game_stepAdvance time

    Advance the simulation by fixed steps (60 per second by default) and return the new state.

  • game_stopStop game

    Headless: close the browser and dev server. Live: resume the human's game and disconnect.

  • inspect_projectInspect projectread-only

    Summary of the project: dependencies, plugins and their contributions, assets, last build size.

  • list_assetsList assetsread-only

    Run the asset pipeline: every asset id, type, size and importer, plus generated files, warnings and possibly unused ids.

  • run_scenariosRun scenarios

    Run scenarios/*.json (or the given files) in a headless browser. Returns per-step results, runtime errors, captures and final state.

  • run_testsRun logic tests

    Run the logic tests in tests/**/*.test.ts (keiko): the real game in Node, no browser, in milliseconds. Each failure has its message, the source line, and the game's tick, scene and state when it failed. Use after every change; write a test for each mechanic you add.

  • typecheckType-checkread-only

    Type-check the project with its own tsc (no emit, no browser needed). Returns diagnostics: file (relative to the root), line, column, TypeScript code and message. Run it after editing code; vite doesn't type-check, so the game can run with type errors.

Compare and alternatives

    Featured in

    Signals

    Stars
    3
    Forks
    1
    Open issues
    0
    Weekly downloads
    2,558
    Last commit (this folder)
    Oct 23, 2026 (5 days ago)
    Last release
    Oct 23, 2026 (5 days ago)
    Last package publish
    Oct 23, 2026 (5 days ago)

    From GitHub (fetched Oct 24, 2026) and the package registry.

    Details

    Registry name
    jp.debuff/debuff
    Version
    0.15.0
    Auth
    No auth
    Packages
    npm @debuffjp/mcp
    License
    MIT
    First seen
    Oct 24, 2026
    Last checked
    Oct 25, 2026
    Cite this page

    debuff MCP server. Agent Mart. https://agentmart.dev/connectors/debuff-jp-debuff (last updated 2026-10-25)