Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.Redseb/rpgmaker-mz-mcp

NPM · RPGMAKER-MZ-MCP

MCP server for RPG Maker MZ: maps, tile painting, events, database editing, and validation.

Available components

0 this week 81 Trust /100

Last scanned (6 hours ago)

Scores higher than 68% of npm servers

Category Developer Tools

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 30 of 93 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability66
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 24829 tokens (~193/item across 128 items; 128 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage99
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 97% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_map" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 128 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 1 Nov 26 +1
    • Stability: 0.97 → pass security
  • 31 Oct 26 −1
    • Stability: pass → 0.97 functional
  • 21 Oct 26 +1
    • Stability: 0.97 → pass security
  • 20 Oct 26 −1
    • Stability: pass → 0.97 functional
  • 17 Oct 26 +3
    • Stability: 0.83 → pass security
    • Package version: 1.2.0 → 1.4.0 functional
  • 15 Oct 26 −3
    • Stability: pass → 0.80 functional
  • 14 Oct 26 +1
    • Stability: 0.97 → pass security
  • 12 Oct 26 +1
    • Security disclosure: unverified → fail ▼ functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed npm/rpgmaker-mz-mcp@1.4.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 93 packages
Packages resolved 93
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 128 exposed · ~24,829 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_class_learning ~199

Add a "learn skill at level" entry to a class (replaces the hack of attaching skills to an actor via an Add-Skill trait). Validates the skillId exists and keeps the learnings sorted by level. Warns (never blocks) when the skill's stypeId is not covered by an Add Skill Type trait ({ code: 41, dataId: stypeId, value: 1 }) on the class — without it the skill-type command never appears and actors cannot use the skill.

NameTypeReqDescription
classIdintegeryesThe ID of the class to add the learning to
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
levelintegeryesLevel at which the skill is learned
notestring–Optional note for the learning entry
skillIdintegeryesThe skill learned (must exist in data/Skills.json)

No output schema declared.

No examples provided.

add_event_command ~253

Add a command to an event page. Refuses the write (nothing is saved) if the resulting page is structurally invalid — e.g. the command has the wrong parameter count for its code. Pass force: true to override.

NameTypeReqDescription
commandobjectyesThe event command to insert
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
eventIdintegeryesThe ID of the event
forceboolean–Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block re…
mapIdintegeryesThe ID of the map
pageIndexintegeryesZero-based page index
positioninteger–Insertion index; defaults to end of the list
verboseboolean–Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/…

No output schema declared.

No examples provided.

add_troop_page ~333

Append one battle-event page (e.g. the `page` from build_troop_page) to an existing troop without re-sending its other pages; `position` inserts it at that 0-based page index instead (the first page whose conditions hold runs, so order matters when triggers overlap). A structurally invalid page refuses the write (nothing is saved) — pass force: true to override; an HP condition on a troop slot past the troop's members, or a page with no condition enabled, is warned (never blocked). Returns { troop, pageIndex, warnings? }; fill it further with insert_event_commands target "troop_page".

NameTypeReqDescription
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
forceboolean–Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block re…
pageobjectyesA troop battle-event page, e.g. the `page` from build_troop_page
positioninteger–0-based page index to insert at (default: append)
troopIdintegeryesThe troop to add the page to
verboseboolean–Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/…

No output schema declared.

No examples provided.

batch_create ~269

Create many database records of one type in a single call and a single file write — the batch sibling of create_actor/create_item/create_weapon/create_armor/create_skill/create_enemy/create_state/create_class. Each entry in `records` takes the same fields its single create_* tool accepts (only `name` is required for most; omitted fields use the editor's defaults). Ids are allocated sequentially from the current max, so a record can reference a sibling created earlier in the same batch. Use this instead of N sequential create_* calls when authoring a cast, a loot table, or a skill list. Returns `{ type, count, created, warnings? }` (classes are summarized like create_class; enemy battlerName misses and record fields the create_* tool doesn't accept are warnings, never blocked). Throws — writing nothing at all — if any record references a database id that does not exist, naming the offending records[i].

NameTypeReqDescription
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
recordsarrayyesThe records to create, each shaped like the matching create_* tool's arguments (e.g. for type "actor": { name, classId?, ... })
typestringyesWhich database the records are appended to

No output schema declared.

No examples provided.

build_battle_command ~260

Build an in-battle event command for a troop battle-event page (see build_troop_page / add_troop_page / insert_event_commands target "troop_page"): enemy_appear (335 — reveal a troop member added with hidden: true, i.e. a summon/reinforcement), enemy_state (333 — add/remove a state on one troop member or the whole troop, e.g. a telegraph "Gathering power" state), or abort_battle (340 — end the battle with no victory/defeat; the calling Battle Processing takes its Escape branch). `enemyIndex` is the 0-based troop slot (members[] order), NOT an enemy id; enemy_state also accepts -1 = entire troop. Read-only: returns { command }.

NameTypeReqDescription
enemyIndexinteger–enemy_appear/enemy_state: 0-based troop slot (members[] order); enemy_state also allows -1 = entire troop
indentinteger–Indentation level (default 0)
kindstringyesWhich battle command to build
stateIdinteger–enemy_state: the state id
stateOperationstring–enemy_state: add or remove the state (default add)

No output schema declared.

No examples provided.

build_battle_processing ~154

Build a Battle Processing (301) event command for insertion via insert_event_commands — start a battle against a troop (direct id, a variable holding the id, or "random" like the map encounters). canEscape/canLose gate the battle result branches. Read-only: returns { command }.

NameTypeReqDescription
canEscapeboolean–Allow the party to escape (default false)
canLoseboolean–Continue the event if the party loses (default false)
indentinteger–Indentation level (default 0)
troopstring–How the troop is chosen (default direct)
troopIdinteger–direct: the troop id; variable: the variable id holding it

No output schema declared.

No examples provided.

build_change_actor ~261

Build an actor stat-change scene command for insertion via insert_event_commands: hp (311), mp (312), state (313), recover_all (314), exp (315), or level (316). Targets a fixed actor (0 = whole party) or a variable. hp/mp/exp/level take an increase/decrease `operand` (constant or variable); state takes add/remove + `stateId`; recover_all takes nothing extra. Read-only: returns { command }.

NameTypeReqDescription
allowKnockoutboolean–hp: allow the change to reduce HP to 0/death (default false)
indentinteger–Indentation level (default 0)
kindstringyesWhich actor change to build
operandobject–hp/mp/exp/level: the amount (constant/variable)
operationstring–hp/mp/exp/level: gain or lose (default increase)
showLevelUpboolean–exp/level: show the level-up message (default false)
stateIdinteger–state: the state id
stateOperationstring–state: add or remove the state
targetobjectyesWhich actor(s) the change applies to

No output schema declared.

No examples provided.

build_change_gold ~87

Build a Change Gold (125) event command for insertion via insert_event_commands — increase or decrease party gold by a constant or variable amount. Read-only: returns { command }.

NameTypeReqDescription
indentinteger–Indentation level (default 0)
operandobjectyesThe amount to gain/lose (constant or variable)
operationstringyesGain or lose gold

No output schema declared.

No examples provided.

build_change_items ~161

Build a Change Items (126), Change Weapons (127), or Change Armors (128) event command for insertion via insert_event_commands — gain/lose an item/weapon/armor by a constant or variable amount. includeEquip (weapon/armor only) also counts equipped copies when removing. Read-only: returns { command }.

NameTypeReqDescription
idintegeryesThe item/weapon/armor id
includeEquipboolean–weapon/armor: also count equipped copies (default false)
indentinteger–Indentation level (default 0)
kindstringyesWhich inventory to change
operandobjectyesThe amount to gain/lose (constant or variable)
operationstringyesGain or lose

No output schema declared.

No examples provided.

build_change_party_member ~116

Build a Change Party Member (129) event command for insertion via insert_event_commands — add or remove an actor from the party. initialize (add only) resets the actor to their initial state. Read-only: returns { command }.

NameTypeReqDescription
actorIdintegeryesThe actor id
indentinteger–Indentation level (default 0)
initializeboolean–add only: reset the actor to their initial state (default false)
operationstringyesAdd to or remove from the party

No output schema declared.

No examples provided.

build_character_effect ~160

Build a Show Animation (212) or Show Balloon Icon (213) event command for insertion via insert_event_commands, played over a character (characterId: -1 player, 0 this event, N event id). Read-only: returns { command }.

NameTypeReqDescription
characterIdintegeryesTarget character: -1 player, 0 this event, N event id on the current map
idintegeryesanimation: the animation id; balloon: the balloon id (1 exclamation, 2 question, …)
indentinteger–Indentation level (default 0)
kindstringyesPlay an animation or a balloon icon
waitboolean–Hold the event until it finishes (default false)

No output schema declared.

No examples provided.

build_conditional_branch ~161

Build a Conditional Branch block (111 condition + then-branch + optional 411 Else + 412 closer, each branch terminated like the editor) for insertion via insert_event_commands. Condition types: switch, self_switch, variable, actor_in_party, gold, item. Provide thenBranch/elseBranch as EventCommand[] (e.g. from other builders). Read-only: returns { commands }.

NameTypeReqDescription
conditionobjectyesConditional branch condition
elseBrancharray–Commands for the Else branch; presence (even empty) adds the 411 Else block
indentinteger–Indentation level of the block (default 0)
thenBrancharray–Commands to run when the condition is true (default empty)

No output schema declared.

No examples provided.

build_control_switch ~187

Build a Control Switches (121) or Control Self Switch (123) event command for insertion via insert_event_commands. scope "switch": set a switch (or the inclusive switchId..endId range) on/off. scope "self_switch": set the current event's self switch A–D. Read-only: returns { command }.

NameTypeReqDescription
endIdinteger–switch: inclusive range end (default = switchId, a single switch)
indentinteger–Indentation level (default 0)
namestring–self_switch: which self switch
scopestringyes"switch" (global, by id/range) or "self_switch" (this event, A–D)
switchIdinteger–switch: the switch id (range start)
valuestring–Set on (default) or off

No output schema declared.

No examples provided.

build_control_variable ~165

Build a Control Variables (122) event command for insertion via insert_event_commands. Applies operation (set/add/sub/mul/div/mod) to a variable (or the inclusive variableId..endId range) using an operand: constant, another variable, a random range, or game_data (item/actor/party/… readouts). Read-only: returns { command }.

NameTypeReqDescription
endIdinteger–Inclusive range end (default = variableId, a single variable)
indentinteger–Indentation level (default 0)
operandobjectyesThe right-hand operand of the Control Variables command
operationstring–Arithmetic applied to the target (default set)
variableIdintegeryesThe target variable id (range start)

No output schema declared.

No examples provided.

build_flow_command ~119

Build a single flow-control event command for insertion via insert_event_commands: wait (230, N frames), exit_event (115), label (118, a named jump target), or jump_to_label (119). Read-only: returns { command }.

NameTypeReqDescription
framesinteger–wait: number of frames (60 = 1 second)
indentinteger–Indentation level (default 0)
kindstringyesWhich flow command to build
namestring–label/jump_to_label: the label name

No output schema declared.

No examples provided.

build_name_input ~86

Build a Name Input Processing (303) event command for insertion via insert_event_commands — open the name-entry screen for an actor. Read-only: returns { command }.

NameTypeReqDescription
actorIdintegeryesThe actor whose name is entered
indentinteger–Indentation level (default 0)
maxLengthinteger–Max name length (default 8)

No output schema declared.

No examples provided.

build_picture ~242

Build a Show Picture (231) or Erase Picture (235) event command for insertion via insert_event_commands. show: display `name` in slot `pictureId` with origin/position/scale/opacity/blend; erase: clear the slot. Read-only: returns { command }.

NameTypeReqDescription
blendstring–show: blend mode (default normal)
indentinteger–Indentation level (default 0)
kindstringyesShow a picture or erase a slot
namestring–show: picture basename (from list_assets("pictures"))
opacitynumber–show: opacity 0–255 (default 255)
originstring–show: anchor point (default upper_left)
pictureIdintegeryesPicture slot 1–100
scaleXnumber–show: horizontal scale % (default 100)
scaleYnumber–show: vertical scale % (default 100)
xnumber–show: screen x in pixels (default 0)
ynumber–show: screen y in pixels (default 0)

No output schema declared.

No examples provided.

build_play_audio ~162

Build a Play BGM/BGS/ME/SE (241/245/249/250) event command for insertion via insert_event_commands. Warns (never blocks) when `name` is not a known audio asset for that channel (checked against list_assets). Returns { command, warnings? }.

NameTypeReqDescription
indentinteger–Indentation level (default 0)
kindstringyesWhich audio channel to play on
namestringyesAudio basename (from list_assets, extension stripped)
pannumber–Pan -100–100 (default 0)
pitchnumber–Pitch 50–150 (default 100)
volumenumber–Volume 0–100 (default 90)

No output schema declared.

No examples provided.

build_screen_effect ~234

Build a screen transition/effect event command for insertion via insert_event_commands: fadeout (221) / fadein (222) — no params; tint (223) & flash (224) — an [r,g,b,a] color over `duration` frames; shake (225) — power/speed over `duration`. `wait` holds the event until it finishes. Read-only: returns { command }.

NameTypeReqDescription
colorarray–tint: [red,green,blue,gray] (−255…255); flash: [red,green,blue,intensity] (0…255)
durationnumber–tint/flash/shake: frames (default 60)
indentinteger–Indentation level (default 0)
kindstringyesWhich screen effect to build
powernumber–shake: strength 1–9 (default 5)
speednumber–shake: speed 1–9 (default 5)
waitboolean–tint/flash/shake: hold the event until it finishes (default true)

No output schema declared.

No examples provided.

build_shop_processing ~112

Build a Shop Processing (302 + one 605 row per extra good) event-command sequence for insertion via insert_event_commands. Each good sells an item/weapon/armor at its database price, or a specified `price`. purchaseOnly hides the sell tab. Read-only: returns { commands }.

NameTypeReqDescription
goodsarrayyesThe goods offered (at least one)
indentinteger–Indentation level (default 0)
purchaseOnlyboolean–Hide the sell tab (default false)

No output schema declared.

No examples provided.

build_show_choices ~250

Build a Show Choices block (102 opener + a 402 branch per choice + optional 403 When-Cancel branch + 404 closer, each branch terminated like the editor) for insertion via insert_event_commands. Pass per-choice `branches` (each an EventCommand[] — e.g. from build_show_text) to fill the branch bodies. Read-only: returns { commands }.

NameTypeReqDescription
backgroundstring–Choice window background (default window)
branchesarray–Commands per choice (same order as choices); omitted/short = empty branches
cancelBrancharray–Commands for a "When Cancel" branch (adds a 403 block; cancel routes here)
cancelTypeinteger–Without a cancelBranch: 0-based choice index the Cancel button maps to, or -1 Disallow (default -1)
choicesarrayyesThe choice labels shown to the player
defaultTypeinteger–0-based default (highlighted) choice, or -1 none (default 0)
indentinteger–Indentation level of the block (default 0)
positionstring–Choice window position (default right)

No output schema declared.

No examples provided.

build_show_text ~325

Build a Show Text event-command sequence (101 setup + one 401 line per text line) for insertion via insert_event_commands. Supports face image (from list_assets("faces")), window background/position, and the MZ name-box speaker. MZ does NOT word-wrap: keep each line under ~55 chars (~38 with a face) or it is cut off at the window edge (warned, never blocked) — or pass `wrap: true` to word-wrap automatically to that same width (escape codes like \C[n] do not count) and split into as many 4-line message boxes as needed. Read-only: returns { commands, warnings? }, writes nothing.

NameTypeReqDescription
backgroundstring–Window background (default window)
faceIndexinteger–Face index 0–7 in the sheet (default 0)
faceNamestring–Face image basename ("" = none, default)
indentinteger–Indentation level (default 0)
linesarrayyesMessage lines (one entry per visual line)
positionstring–Window position (default bottom)
speakerNamestring–MZ name-box speaker name (default "")
wrap––Auto word-wrap to the message-window width (the same width the line-length warning uses) and split into 4-line boxes. true/"soft" reflows all lines as one paragraph; "hard" keeps each entry (and \n)…

No output schema declared.

No examples provided.

build_transfer_player ~176

Build a Transfer Player (201) event command for insertion via insert_event_commands — move the party to (x, y) on a map. With designation "variable", mapId/x/y are variable ids resolved at runtime. Read-only: returns { command }.

NameTypeReqDescription
designationstring–direct: mapId/x/y are literal; variable: they are variable ids (default direct)
directionstring–Facing after transfer (default retain)
fadestring–Fade style (default black)
indentinteger–Indentation level (default 0)
mapIdintegeryesDestination map id (or a variable id if designation=variable)
xintegeryesDestination tile x (or a variable id)
yintegeryesDestination tile y (or a variable id)

No output schema declared.

No examples provided.

build_troop_page ~404

Build a troop battle-event page { conditions, list, span } from a compact trigger — no hand-built 12-field conditions object. `when` keys (ANDed, at least one): turn [a, b] (turn a + b*X; b 0 = only turn a), enemyHpBelow [enemyIndex, pct] (0-based troop slot, NOT enemy id), actorHpBelow [actorId, pct], switch id, turnEnd true. `span`: battle (runs once per battle, default), turn (once per turn), moment (re-runs while the condition holds — guard it with a switch). Timing (turn-based battles): an enemy action pattern with conditionType 1 / [a, b] is chosen during turn N's input phase (troop turnCount N-1, +1) and a troop page turn [a, b] is checked once turn N's action phase starts (turnCount N), so matching [a, b] land on the same battle turn N — the page runs before anyone acts; add turnEnd: true to run it after that turn resolves instead (the classic telegraph: warn at the end of the wind-up turn, strike next turn). Turn 0 = battle start. With b > 0 use span "turn", or a "battle" page fires only once. `commands` come from the build_* tools (build_show_text, build_battle_command, …); the end marker is appended. Read-only: returns { page } — land it with add_troop_page (or create_troop/update_troop `pages`).

NameTypeReqDescription
commandsarray–The page's event commands (e.g. from build_* tools); default empty
spanstring–How often the page may run (default battle)
whenobjectyesTrigger; every key given is ANDed, at least one required

No output schema declared.

No examples provided.

call_common_event ~115

Build a "Common Event" event command (code 117) that calls the given common event, for insertion into an event page via insert_event_commands. Validates the common event exists. Read-only: returns `{ command }` (matching the build_* tools, so it composes into a thenBranch/commands array); writes nothing.

NameTypeReqDescription
commonEventIdintegeryesThe ID of the common event to call (must exist)
indentinteger–Indentation level in the target list (default 0)

No output schema declared.

No examples provided.

check_passability ~173

Check whether a map cell can be walked onto, reproducing the engine's layered passage rule: the stacked tiles at (x, y) are examined upper-layer first, and the first non-[*] tile decides each direction. Reads the map's tileset flags. Returns per-direction passability (down/left/right/up — true = a character can walk off the cell that way), the cell's terrain tag, the stacked tile ids, and — when `direction` is given — a single `passable` boolean for that direction. Read-only.

NameTypeReqDescription
directionstring–Optional: also report a single passable boolean for this direction
mapIdintegeryesThe map id to inspect
xintegeryesTile x coordinate
yintegeryesTile y coordinate

No output schema declared.

No examples provided.

create_actor ~265

Create a new actor in data/Actors.json. Only `name` is required; omitted fields use the editor's new-actor defaults (class 1, level 1-99, five empty equip slots, no traits). Allocates and returns the next unused actor id. NOTE: an actor's physical accuracy comes from its class + own traits — a class/actor with no Hit Rate trait (xparam id 0: trait { code: 22, dataId: 0, value: 0.95 }) always misses physical actions. The built-in class 1 has one; a custom class needs it added.

NameTypeReqDescription
battlerNamestring––
characterIndexinteger––
characterNamestring––
classIdinteger––
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
equipsarray––
faceIndexinteger––
faceNamestring––
initialLevelnumber––
maxLevelnumber––
namestringyes–
nicknamestring––
notestring––
profilestring––
traitsarray––

No output schema declared.

No examples provided.

create_armor ~269

Create a new armor in data/Armors.json. Only `name` is required; omitted fields use the editor's new-armor defaults (Shield equip slot, no stat bonuses). `params` is a flat 8-length stat bonus; `etypeId` is the equip slot (System.json equipTypes: 2 Shield, 3 Head, 4 Body, 5 Accessory). Allocates and returns the next unused armor id.

NameTypeReqDescription
atypeIdinteger–Armor type id (System.json armorTypes)
descriptionstring–In-game description text
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
etypeIdinteger–Equip slot (equipTypes: 2 Shield, 3 Head, 4 Body, 5 Accessory)
iconIndexinteger–Icon index (IconSet.png)
namestringyesArmor name
notestring–Note field
paramsarray–8 flat stat bonuses [maxHP, maxMP, atk, def, mat, mdf, agi, luk]
priceinteger–Buy price
traitsarray–Trait objects { code, dataId, value }

No output schema declared.

No examples provided.

create_buff_skill ~134

Create a buff skill (simplified)

NameTypeReqDescription
buffTypeintegeryesBuff type (2=ATK, 3=DEF, 4=MAT, 5=MDF, 6=AGI)
descriptionstring–Skill description
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
mpCostnumberyesMP cost
namestringyesSkill name
scopeintegeryesTarget scope (7=ally all, 11=user)
turnsnumberyesNumber of turns the buff lasts

No output schema declared.

No examples provided.

create_chest ~496

Create a complete, placed treasure chest on a map in one call — the two-page self-switch idiom done correctly, so the chest can never be looted twice. Page 1 (closed) is an action-button, priority-`same` event that optionally shows `text`, gives the contents, then flips its self switch; page 2 (opened) is gated on that self switch, shows the opened graphic and does nothing. `kind` picks the payout: item/weapon/armor (needs `id`) or gold. On the RTP `!Chest` sheet the open/closed states are the *direction* rows of one character block (down = closed, up = open), which is what closedDirection/openedDirection default to. Throws if the item/weapon/armor `id` does not exist; warns (never blocks) on an unknown characterName or a chest with no graphic.

NameTypeReqDescription
amountinteger–How many (or how much gold) to give; default 1
characterIndexinteger–Which chest in the sheet (0-7); default 0
characterNamestring–Chest sprite basename from list_assets("characters"), e.g. "!Chest"
closedDirectionstring–Direction row showing the CLOSED chest; default "down"
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
forceboolean–Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block re…
idinteger–The item/weapon/armor ID to give (omit for kind "gold")
kindstringyesWhat the chest gives; item/weapon/armor require `id`
mapIdintegeryesThe ID of the map to place the chest on
namestring–Event name (editor label); default "Chest"
openedDirectionstring–Direction row showing the OPENED chest; default "up"
selfSwitchstring–Self switch channel marking the chest looted; default "A"
textarray–Optional message shown on opening, e.g. ["Found a Potion!"]
xintegeryesX tile position
yintegeryesY tile position

No output schema declared.

No examples provided.

create_class ~333

Create a new character class in data/Classes.json. Only `name` is required; omitted fields use the editor's new-class defaults (EXP curve [30,20,30,30], no traits/learnings, a linear param curve to maxLevel). Allocates and returns the next unused class id. NOTE: a class with no Hit Rate trait (xparam id 0: trait { code: 22, dataId: 0, value: 0.95 }) makes its actors always miss physical actions — pass one in `traits` for a combat-ready class. Likewise every learned skill's stypeId needs an Add Skill Type trait ({ code: 41, dataId: stypeId, value: 1 }) or the skill-type command never appears (warned, never blocked).

NameTypeReqDescription
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
expParamsarray–EXP curve: [basis, extra, accelerationA, accelerationB]
learningsarray–Learned-skill entries { level, skillId, note }
maxLevelinteger–Highest level the param curve covers (default 99); sizes the params matrix
namestringyesClass name shown in the database
notestring–Note field
paramsarray–8 param growth curves, each maxLevel+1 long: [maxHP,maxMP,atk,def,mat,mdf,agi,luk]
traitsarray–Trait objects { code, dataId, value }

No output schema declared.

No examples provided.

create_common_event ~311

Create a new common event (reusable event-command list) in data/CommonEvents.json. Only `name` is required; omitted fields use the editor's new-slot defaults (empty command list, trigger 0 = call-only, switchId 1). Allocates and returns the next unused id. A structurally invalid command list refuses the write (nothing is saved) — pass force: true to override.

NameTypeReqDescription
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
forceboolean–Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block re…
listarray–Event-command list { code, indent, parameters }; must end with code 0
namestringyesCommon event name shown in the database
switchIdinteger–Switch that gates an Autorun/Parallel trigger (ignored when trigger is 0)
triggerinteger–How it runs on its own: 0 None (call-only), 1 Autorun, 2 Parallel
verboseboolean–Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/…

No output schema declared.

No examples provided.

create_damage_skill ~139

Create a damage-dealing skill (simplified)

NameTypeReqDescription
damageFormulastringyesDamage formula (e.g., "a.mat * 4")
descriptionstring–Skill description
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
elementIdinteger–Element ID (0=none, 2=fire, 3=ice, 4=thunder)
mpCostnumberyesMP cost
namestringyesSkill name
scopeintegeryesTarget scope (1=enemy single, 2=enemy all)

No output schema declared.

No examples provided.

create_enemy ~393

Create a new enemy in data/Enemies.json. Only `name` is required; omitted fields use the editor's new-enemy defaults (100 HP, one Attack action, no drops). Allocates the next unused enemy id and returns `{ enemy, warnings? }` (warn-by-default: a `battlerName` not found in img/enemies (img/sv_enemies for a side-view project) is flagged, never blocked). Throws if an `actions[].skillId` or a `dropItems[].dataId` (item/weapon/armor by `kind`) references a record that does not exist. NOTE: an enemy with no Hit Rate trait (xparam id 0: trait { code: 22, dataId: 0, value: 0.95 }) always misses physical actions — pass one in `traits` if the enemy should land basic attacks.

NameTypeReqDescription
actionsarray–Action patterns { skillId, conditionType, conditionParam1, conditionParam2, rating }
battlerHueinteger–Battler hue rotation 0-360
battlerNamestring–Battler graphic filename (img/enemies; img/sv_enemies when System.optSideView)
dropItemsarray–Drop-item objects { kind, dataId, denominator }
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
expinteger–EXP granted when defeated
goldinteger–Gold granted when defeated
namestringyesEnemy name shown in battle and the database
notestring–Note field
paramsarray–8 base params: [maxHP, maxMP, atk, def, mat, mdf, agi, luk]
traitsarray–Trait objects { code, dataId, value }

No output schema declared.

No examples provided.

create_healing_skill ~109

Create a healing skill (simplified)

NameTypeReqDescription
descriptionstring–Skill description
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
healFormulastringyesHeal formula (e.g., "a.mat * 3 + 100")
mpCostnumberyesMP cost
namestringyesSkill name
scopeintegeryesTarget scope (7=ally all, 11=user)

No output schema declared.

No examples provided.

create_item ~386

Create a new item in data/Items.json. Only `name` is worth passing; omitted fields use the editor's new-item defaults (Regular Item, consumable, no effects). Allocates and returns the next unused item id. An effect referencing a missing record throws: Add/Remove State (code 21/22) → state, Learn Skill (43) → skill, Common Event (44) → common event.

NameTypeReqDescription
animationIdinteger–Animation id shown on use
consumableboolean–Consumed on use
damageobject–Damage object { type, elementId, formula, variance, critical }
descriptionstring–In-game description text
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
effectsarray–Effect objects { code, dataId, value1, value2 }
hitTypeinteger–0 certain, 1 physical, 2 magical
iconIndexinteger–Icon index (IconSet.png)
itypeIdinteger–Item type: 1 Regular, 2 Key Item, 3 Hidden A, 4 Hidden B
namestringyesItem name
notestring–Note field
occasioninteger–Usable: 0 always, 1 battle, 2 menu, 3 never
priceinteger–Buy price (sells for half)
repeatsinteger–Number of hits/repeats
scopeinteger–Target scope (0 none, 1 one enemy, 7 one ally, …)
speedinteger–Speed correction (positive acts earlier)
successRateinteger–Success rate percent
tpGaininteger–User TP gained on use

No output schema declared.

No examples provided.

create_map ~183

Create a new blank map: writes a new data/MapNNN.json (all tiles unpainted) and registers it in the map tree (MapInfos.json). Allocates the next unused map id and returns it. Paint tiles afterward with paint_tiles/fill_area (autotile-aware) and add events with create_map_event/create_npc.

NameTypeReqDescription
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
heightinteger–Height in tiles (default 13)
namestringyesMap name shown in the editor map tree
parentIdinteger–Parent map id in the tree; 0 (default) = top level
tilesetIdinteger–Tileset id (default 1)
widthinteger–Width in tiles (default 17)

No output schema declared.

No examples provided.

create_map_event ~546

Create a new event on a map. Each page is merged onto a blank "New Event" page (trigger 0 action-button, priority 0 below characters, no graphic, empty command list, standing move type), so you only supply the fields that differ — pass e.g. `{ image: { characterName: 'Actor1', characterIndex: 0 }, trigger: 3, list: [...] }` and the rest is filled in. Nested `image`/`conditions` deep-merge; an omitted `list` becomes a valid empty (code-0-terminated) list. Omit `pages` entirely for a bare one-page event. For the common "talking NPC" case prefer create_npc. An action-button page meant to fire from facing (doors, entrances, signs) needs `priorityType: 1` — with the default 0 (below) it only fires when stood on, so on an impassable tile it can never trigger (this is refused, not written; pass force: true to override). A structurally invalid command list is refused the same way. A page with no graphic, priority 1 and through off on a walkable tile is an invisible wall — warned (not refused); give it priority 0 or through: true if it should be walked past. Exempt: an action-button page over a drawn upper-layer (B–E) object — the solid-landmark idiom. Page fields: `image` { characterName, characterIndex, direction (2 down/4 left/6 right/8 up), pattern, tileId }, `trigger` (0 action-button/1 player-touch/2 event-touch/3 autorun/4 parallel), `priorityType` (0 below/1 same/2 above), `moveType` (0 fixed/1 random/2 approach/3 custom), `conditions`, `list`.

NameTypeReqDescription
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
forceboolean–Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block re…
mapIdintegeryesThe ID of the map
namestringyesEvent name
notestring–Event note field
pagesarray–Event pages; each is merged onto a blank page so you can pass only the differing fields. Omit for one blank page.
xintegeryesX tile position
yintegeryesY tile position

No output schema declared.

No examples provided.

create_move_route ~224

Build a movement route from a named pattern (patrol/approach/flee/wander/custom) instead of raw move-command codes. Read-only: returns { moveRoute, warnings? }. Use the route as an event page’s autonomous moveRoute (update_map_event with moveType 3), or feed it to set_movement_route for a forced route in an event command list.

NameTypeReqDescription
commandsarray–custom only: raw move commands { code, parameters }
directionstring–patrol only: primary direction, walked out and back (default right)
patternstringyespatrol (walk a direction and back), approach (toward player), flee (away from player), wander (random), or custom (your own move commands)
repeatboolean–Loop the route (patterns loop by default)
skippableboolean–Skip a step when movement is blocked
stepsinteger–patrol only: steps per leg (default 3)
waitboolean–Wait for the route to finish before continuing

No output schema declared.

No examples provided.

create_npc ~544

Create a complete, placed NPC event on a map in one call — a graphic + trigger + a talk list. Provide `text` (built into a Show Text sequence, with optional face/speaker; `wrap: true` word-wraps paragraphs into 4-line message boxes) or an explicit `commands` array (commands wins if both given). Defaults to a solid, action-button NPC facing down. Warns (never blocks) on an unknown characterName, and on NO graphic at all (an NPC with no characterName is invisible in-game — use create_map_event for an intentionally-invisible trigger). The one-shot "make a talking NPC that says X" primitive.

NameTypeReqDescription
characterIndexinteger–Sprite index 0–7 in the sheet
characterNamestring–Sprite sheet basename (from list_assets("characters"))
commandsarray–Explicit command list (from the build_* tools); overrides `text` if given
directionstring–Facing direction (default down)
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
faceIndexinteger–text: face index 0–7
faceNamestring–text: face image basename (from list_assets("faces"))
forceboolean–Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block re…
mapIdintegeryesThe ID of the map to place the NPC on
namestringyesEvent name (editor label)
patterninteger–Sprite frame 0–2 (default 1 = idle when a sprite is set)
prioritystring–Stacking vs. the player (default same = solid)
speakerNamestring–text: MZ name-box speaker name
textarray–Dialogue lines shown when the NPC is triggered (built as Show Text)
throughboolean–Let the player pass through (default false)
triggerstring–What starts the event (default action_button)
wrap––Auto word-wrap to the message-window width (the same width the line-length warning uses) and split into 4-line boxes. true/"soft" reflows all lines as one paragraph; "hard" keeps each entry (and \n)…
xintegeryesX tile position
yintegeryesY tile position

No output schema declared.

No examples provided.

create_plugin_command ~225

Build an RPG Maker MZ plugin command (event command code 357) for insertion into an event page via add_event_command. Validates against the plugins this project actually ships (scanned from their js/plugins/*.js @command/@arg annotations) merged over a small built-in allowlist — warn-by-default: an unknown plugin/command, a stray arg, or a plugin that is installed but disabled in js/plugins.js produces a warning but never blocks. Args are normalized to the editor’s string-valued shape. Read-only: returns { command, warnings? }, writes nothing.

NameTypeReqDescription
argsobject–Command arguments as { name: value }; values are stored as strings on disk
commandNamestringyesThe command key the plugin registered (event command parameters[1])
indentinteger–Indentation level in the target list (default 0)
labelstring–Editor display label (parameters[2]); defaults to the command key
pluginNamestringyesPlugin filename without .js (event command parameters[0])

No output schema declared.

No examples provided.

create_skill ~535

Create a new skill with custom properties. Omitted fields use new-skill defaults: stypeId 1 (Magic), scope 1, occasion 1 (battle only), hitType derived — 0 certain for recovery or ally/user scopes, else 2 magical for Magic skills, else 1 physical if it deals damage, else 0. An effect referencing a missing record throws: Add/Remove State (code 21/22) → state, Learn Skill (43) → skill, Common Event (44) → common event.

NameTypeReqDescription
animationIdinteger–Animation ID
damageobject–Damage configuration
descriptionstring–Skill description
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
effectsarray–Skill effects (buffs, debuffs, states, etc.)
hitTypeinteger–0 certain hit, 1 physical (HIT/EVA, counterable), 2 magical (MEV, reflectable). Default derived from stypeId/scope/damage
iconIndexinteger–Icon index (0-1000+)
message1string–Battle message (line 1, %1 = user name)
message2string–Battle message line 2
mpCostnumber–MP cost
namestringyesSkill name
notestring–Note field (notetags)
occasioninteger–Usable: 0 always, 1 battle only (default), 2 menu only, 3 never
repeatsinteger–Number of hits (1-9). Default 1
requiredWtypeId1integer–Required weapon type 1 (0=none)
requiredWtypeId2integer–Required weapon type 2 (0=none)
scopeinteger–Target scope (1=enemy single, 2=enemy all, 7=ally all, etc.)
speedinteger–Speed correction (-2000..2000; positive acts earlier). Default 0
stypeIdinteger–Skill type (0=none — typical for enemy-only skills, not sealed by Silence; 1=magic, 2=special, etc.). Default 1
successRateinteger–Success rate percent. Default 100
tpCostnumber–TP cost
tpGaininteger–User TP gained on use. Default 0

No output schema declared.

No examples provided.

create_state ~492

Create a new state (status condition like Poison/Sleep) in data/States.json. Only `name` is required; omitted fields use the editor's new-state defaults (no restriction, priority 50, no auto-removal, 1-turn duration). Allocates and returns the next unused state id.

NameTypeReqDescription
autoRemovalTiminginteger–Auto-removal timing: 0 none, 1 at action end, 2 at turn end
chanceByDamageinteger–Chance (%) of removal per damage instance when removeByDamage
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
iconIndexinteger–Icon shown on the battler/status (0 = none)
maxTurnsinteger–Maximum duration in turns when auto-removed
message1string–Message when an actor gains the state
message2string–Message when an enemy gains the state
message3string–Message when the state persists
message4string–Message when the state is removed
messageTypeinteger–Engine's message routing form
minTurnsinteger–Minimum duration in turns when auto-removed
motioninteger–SV-actor motion (0 normal, 2 sleep, 3 dead, …)
namestringyesState name shown in the database and battle messages
notestring–Note field
overlayinteger–Overlay animation index (0 = none)
priorityinteger–Icon-slot display priority 0-100 (default 50)
releaseByDamageboolean–Whether damage can release the state
removeAtBattleEndboolean–Remove automatically when the battle ends
removeByDamageboolean–Remove when the battler takes damage
removeByRestrictionboolean–Remove when the battler's restriction changes
removeByWalkingboolean–Remove after walking a number of steps
restrictioninteger–Behavior restriction: 0 none, 1 attack enemy, 2 attack anyone, 3 attack ally, 4 cannot move
stepsToRemoveinteger–Steps to walk off the state when removeByWalking
traitsarray–Trait objects { code, dataId, value }

No output schema declared.

No examples provided.

create_state_skill ~165

Create a state-inflicting skill (poison, sleep, etc.). Throws if `stateId` does not exist in States.json (create the state first with create_state).

NameTypeReqDescription
chancenumberyesSuccess chance (0.0-1.0)
descriptionstring–Skill description
dryRunboolean–Preview only: return a diff of what would change without writing to disk.
mpCostnumberyesMP cost
namestringyesSkill name
scopeintegeryesTarget scope (1=enemy single, 2=enemy all)
stateIdintegeryesState ID (4=poison, 5=blind, 6=silence, 8=confusion, etc.)

No output schema declared.

No examples provided.

Install

How do I install the io.github.Redseb/rpgmaker-mz-mcp server?

io.github.Redseb/rpgmaker-mz-mcp runs locally as an npm package, launched with npx -y rpgmaker-mz-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · rpgmaker-mz-mcp

# add to Claude Code
claude mcp add redseb-rpgmaker-mz-mcp -- npx -y rpgmaker-mz-mcp
Common questions

What is the io.github.Redseb/rpgmaker-mz-mcp server?

io.github.Redseb/rpgmaker-mz-mcp is listed in the public MCP registry as io.github.Redseb/rpgmaker-mz-mcp. MCP server for RPG Maker MZ: maps, tile painting, events, database editing, and validation. This page covers its npm package (rpgmaker-mz-mcp).

Is the io.github.Redseb/rpgmaker-mz-mcp server safe to use?

io.github.Redseb/rpgmaker-mz-mcp scores 81 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.Redseb/rpgmaker-mz-mcp server expose?

io.github.Redseb/rpgmaker-mz-mcp exposes 128 tools: get_project, set_project, update_actor, create_actor, search_actors, and 123 more. Their descriptions and schemas cost roughly 24,829 tokens of context every time the server is loaded.

Is the io.github.Redseb/rpgmaker-mz-mcp server still maintained?

io.github.Redseb/rpgmaker-mz-mcp is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.Redseb/rpgmaker-mz-mcp server under?

io.github.Redseb/rpgmaker-mz-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.