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 · SCANNED SEP 20

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

Available components

0 this week 79 Trust /100
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
  • 31 of 95 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability68
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 19486 tokens (~163/item across 119 items; 119 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 Management87
  • Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
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 4 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 119 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
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
// .cursor/mcp.json
{
  "mcpServers": {
    "redseb-rpgmaker-mz-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "rpgmaker-mz-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "redseb-rpgmaker-mz-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "rpgmaker-mz-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add redseb-rpgmaker-mz-mcp -- npx -y rpgmaker-mz-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "redseb-rpgmaker-mz-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "rpgmaker-mz-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add redseb-rpgmaker-mz-mcp --command npx --arg -y --arg rpgmaker-mz-mcp
# ~/.hermes/config.yaml
mcp_servers:
  redseb-rpgmaker-mz-mcp:
    command: "npx"
    args: ["-y", "rpgmaker-mz-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "redseb-rpgmaker-mz-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "rpgmaker-mz-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add redseb-rpgmaker-mz-mcp -t stdio -c npx -a -y rpgmaker-mz-mcp
// mcp.json
{
  "mcpServers": {
    "redseb-rpgmaker-mz-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "rpgmaker-mz-mcp"
      ]
    }
  }
}
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.

  • 19 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 17 Sept 26 0
    • Stability: 0.97 → pass security
  • 16 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 10 Sept 26 0
    • Stability: 0.97 → pass security
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 20 Sept 2026 · Analysed npm/rpgmaker-mz-mcp@1.2.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 95 packages
Packages resolved 95
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 119 exposed · ~19,486 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
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
levelintegeryesLevel at which the skill is learned
notestringOptional note for the learning entry
skillIdintegeryesThe skill learned (must exist in data/Skills.json)

No output schema declared.

No examples provided.

add_event_command ~189

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
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
eventIdintegeryesThe ID of the event
forcebooleanWrite 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
positionintegerInsertion index; defaults to end of the list

No output schema declared.

No examples provided.

batch_create ~260

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 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
dryRunbooleanPreview 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_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
canEscapebooleanAllow the party to escape (default false)
canLosebooleanContinue the event if the party loses (default false)
indentintegerIndentation level (default 0)
troopstringHow the troop is chosen (default direct)
troopIdintegerdirect: 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
allowKnockoutbooleanhp: allow the change to reduce HP to 0/death (default false)
indentintegerIndentation level (default 0)
kindstringyesWhich actor change to build
operandobjecthp/mp/exp/level: the amount (constant/variable)
operationstringhp/mp/exp/level: gain or lose (default increase)
showLevelUpbooleanexp/level: show the level-up message (default false)
stateIdintegerstate: the state id
stateOperationstringstate: 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
indentintegerIndentation 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
includeEquipbooleanweapon/armor: also count equipped copies (default false)
indentintegerIndentation 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
indentintegerIndentation level (default 0)
initializebooleanadd 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, …)
indentintegerIndentation level (default 0)
kindstringyesPlay an animation or a balloon icon
waitbooleanHold 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
elseBrancharrayCommands for the Else branch; presence (even empty) adds the 411 Else block
indentintegerIndentation level of the block (default 0)
thenBrancharrayCommands 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
endIdintegerswitch: inclusive range end (default = switchId, a single switch)
indentintegerIndentation level (default 0)
namestringself_switch: which self switch
scopestringyes"switch" (global, by id/range) or "self_switch" (this event, A–D)
switchIdintegerswitch: the switch id (range start)
valuestringSet 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
endIdintegerInclusive range end (default = variableId, a single variable)
indentintegerIndentation level (default 0)
operandobjectyesThe right-hand operand of the Control Variables command
operationstringArithmetic 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
framesintegerwait: number of frames (60 = 1 second)
indentintegerIndentation level (default 0)
kindstringyesWhich flow command to build
namestringlabel/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
indentintegerIndentation level (default 0)
maxLengthintegerMax 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
blendstringshow: blend mode (default normal)
indentintegerIndentation level (default 0)
kindstringyesShow a picture or erase a slot
namestringshow: picture basename (from list_assets("pictures"))
opacitynumbershow: opacity 0–255 (default 255)
originstringshow: anchor point (default upper_left)
pictureIdintegeryesPicture slot 1–100
scaleXnumbershow: horizontal scale % (default 100)
scaleYnumbershow: vertical scale % (default 100)
xnumbershow: screen x in pixels (default 0)
ynumbershow: 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
indentintegerIndentation level (default 0)
kindstringyesWhich audio channel to play on
namestringyesAudio basename (from list_assets, extension stripped)
pannumberPan -100–100 (default 0)
pitchnumberPitch 50–150 (default 100)
volumenumberVolume 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
colorarraytint: [red,green,blue,gray] (−255…255); flash: [red,green,blue,intensity] (0…255)
durationnumbertint/flash/shake: frames (default 60)
indentintegerIndentation level (default 0)
kindstringyesWhich screen effect to build
powernumbershake: strength 1–9 (default 5)
speednumbershake: speed 1–9 (default 5)
waitbooleantint/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)
indentintegerIndentation level (default 0)
purchaseOnlybooleanHide 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
backgroundstringChoice window background (default window)
branchesarrayCommands per choice (same order as choices); omitted/short = empty branches
cancelBrancharrayCommands for a "When Cancel" branch (adds a 403 block; cancel routes here)
cancelTypeintegerWithout a cancelBranch: 0-based choice index the Cancel button maps to, or -1 Disallow (default -1)
choicesarrayyesThe choice labels shown to the player
defaultTypeinteger0-based default (highlighted) choice, or -1 none (default 0)
indentintegerIndentation level of the block (default 0)
positionstringChoice window position (default right)

No output schema declared.

No examples provided.

build_show_text ~214

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). Read-only: returns { commands, warnings? }, writes nothing.

NameTypeReqDescription
backgroundstringWindow background (default window)
faceIndexintegerFace index 0–7 in the sheet (default 0)
faceNamestringFace image basename ("" = none, default)
indentintegerIndentation level (default 0)
linesarrayyesMessage lines (one entry per visual line)
positionstringWindow position (default bottom)
speakerNamestringMZ name-box speaker name (default "")

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
designationstringdirect: mapId/x/y are literal; variable: they are variable ids (default direct)
directionstringFacing after transfer (default retain)
fadestringFade style (default black)
indentintegerIndentation 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.

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)
indentintegerIndentation 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
directionstringOptional: 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
dryRunbooleanPreview 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
atypeIdintegerArmor type id (System.json armorTypes)
descriptionstringIn-game description text
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
etypeIdintegerEquip slot (equipTypes: 2 Shield, 3 Head, 4 Body, 5 Accessory)
iconIndexintegerIcon index (IconSet.png)
namestringyesArmor name
notestringNote field
paramsarray8 flat stat bonuses [maxHP, maxMP, atk, def, mat, mdf, agi, luk]
priceintegerBuy price
traitsarrayTrait 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)
descriptionstringSkill description
dryRunbooleanPreview 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
amountintegerHow many (or how much gold) to give; default 1
characterIndexintegerWhich chest in the sheet (0-7); default 0
characterNamestringChest sprite basename from list_assets("characters"), e.g. "!Chest"
closedDirectionstringDirection row showing the CLOSED chest; default "down"
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
forcebooleanWrite 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…
idintegerThe 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
namestringEvent name (editor label); default "Chest"
openedDirectionstringDirection row showing the OPENED chest; default "up"
selfSwitchstringSelf switch channel marking the chest looted; default "A"
textarrayOptional 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
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
expParamsarrayEXP curve: [basis, extra, accelerationA, accelerationB]
learningsarrayLearned-skill entries { level, skillId, note }
maxLevelintegerHighest level the param curve covers (default 99); sizes the params matrix
namestringyesClass name shown in the database
notestringNote field
paramsarray8 param growth curves, each maxLevel+1 long: [maxHP,maxMP,atk,def,mat,mdf,agi,luk]
traitsarrayTrait objects { code, dataId, value }

No output schema declared.

No examples provided.

create_common_event ~247

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
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
forcebooleanWrite 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…
listarrayEvent-command list { code, indent, parameters }; must end with code 0
namestringyesCommon event name shown in the database
switchIdintegerSwitch that gates an Autorun/Parallel trigger (ignored when trigger is 0)
triggerintegerHow it runs on its own: 0 None (call-only), 1 Autorun, 2 Parallel

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")
descriptionstringSkill description
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
elementIdintegerElement 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 ~370

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 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
actionsarrayAction patterns { skillId, conditionType, conditionParam1, conditionParam2, rating }
battlerHueintegerBattler hue rotation 0-360
battlerNamestringBattler graphic filename (img/enemies)
dropItemsarrayDrop-item objects { kind, dataId, denominator }
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
expintegerEXP granted when defeated
goldintegerGold granted when defeated
namestringyesEnemy name shown in battle and the database
notestringNote field
paramsarray8 base params: [maxHP, maxMP, atk, def, mat, mdf, agi, luk]
traitsarrayTrait objects { code, dataId, value }

No output schema declared.

No examples provided.

create_healing_skill ~109

Create a healing skill (simplified)

NameTypeReqDescription
descriptionstringSkill description
dryRunbooleanPreview 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 ~373

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
animationIdintegerAnimation id shown on use
consumablebooleanConsumed on use
damageobjectDamage object { type, elementId, formula, variance, critical }
descriptionstringIn-game description text
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
effectsarrayEffect objects { code, dataId, value1, value2 }
hitTypeinteger0 certain, 1 physical, 2 magical
iconIndexintegerIcon index (IconSet.png)
itypeIdintegerItem type: 1 Regular, 2 Key Item, 3 Hidden A, 4 Hidden B
namestringyesItem name
notestringNote field
occasionintegerUsable: 0 always, 1 battle, 2 menu, 3 never
priceintegerBuy price (sells for half)
repeatsintegerNumber of hits/repeats
scopeintegerTarget scope (0 none, 1 one enemy, 7 one ally, …)
successRateintegerSuccess rate percent
tpGainintegerUser 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
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
heightintegerHeight in tiles (default 13)
namestringyesMap name shown in the editor map tree
parentIdintegerParent map id in the tree; 0 (default) = top level
tilesetIdintegerTileset id (default 1)
widthintegerWidth in tiles (default 17)

No output schema declared.

No examples provided.

create_map_event ~477

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. 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
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
forcebooleanWrite 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
notestringEvent note field
pagesarrayEvent 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
commandsarraycustom only: raw move commands { code, parameters }
directionstringpatrol 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)
repeatbooleanLoop the route (patterns loop by default)
skippablebooleanSkip a step when movement is blocked
stepsintegerpatrol only: steps per leg (default 3)
waitbooleanWait for the route to finish before continuing

No output schema declared.

No examples provided.

create_npc ~458

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) 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
characterIndexintegerSprite index 0–7 in the sheet
characterNamestringSprite sheet basename (from list_assets("characters"))
commandsarrayExplicit command list (from the build_* tools); overrides `text` if given
directionstringFacing direction (default down)
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
faceIndexintegertext: face index 0–7
faceNamestringtext: face image basename (from list_assets("faces"))
forcebooleanWrite 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)
patternintegerSprite frame 0–2 (default 1 = idle when a sprite is set)
prioritystringStacking vs. the player (default same = solid)
speakerNamestringtext: MZ name-box speaker name
textarrayDialogue lines shown when the NPC is triggered (built as Show Text)
throughbooleanLet the player pass through (default false)
triggerstringWhat starts the event (default action_button)
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
argsobjectCommand arguments as { name: value }; values are stored as strings on disk
commandNamestringyesThe command key the plugin registered (event command parameters[1])
indentintegerIndentation level in the target list (default 0)
labelstringEditor 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 ~229

Create a new skill with custom properties. An effect referencing a missing record throws: Add/Remove State (code 21/22) → state, Learn Skill (43) → skill, Common Event (44) → common event.

NameTypeReqDescription
animationIdintegerAnimation ID
damageobjectDamage configuration
descriptionstringSkill description
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
effectsarraySkill effects (buffs, debuffs, states, etc.)
iconIndexintegerIcon index (0-1000+)
message1stringBattle message
mpCostnumberMP cost
namestringyesSkill name
scopeintegerTarget scope (1=enemy single, 2=enemy all, 7=ally all, etc.)
stypeIdintegerSkill type (1=magic, 2=special, etc.)
tpCostnumberTP cost

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
autoRemovalTimingintegerAuto-removal timing: 0 none, 1 at action end, 2 at turn end
chanceByDamageintegerChance (%) of removal per damage instance when removeByDamage
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
iconIndexintegerIcon shown on the battler/status (0 = none)
maxTurnsintegerMaximum duration in turns when auto-removed
message1stringMessage when an actor gains the state
message2stringMessage when an enemy gains the state
message3stringMessage when the state persists
message4stringMessage when the state is removed
messageTypeintegerEngine's message routing form
minTurnsintegerMinimum duration in turns when auto-removed
motionintegerSV-actor motion (0 normal, 2 sleep, 3 dead, …)
namestringyesState name shown in the database and battle messages
notestringNote field
overlayintegerOverlay animation index (0 = none)
priorityintegerIcon-slot display priority 0-100 (default 50)
releaseByDamagebooleanWhether damage can release the state
removeAtBattleEndbooleanRemove automatically when the battle ends
removeByDamagebooleanRemove when the battler takes damage
removeByRestrictionbooleanRemove when the battler's restriction changes
removeByWalkingbooleanRemove after walking a number of steps
restrictionintegerBehavior restriction: 0 none, 1 attack enemy, 2 attack anyone, 3 attack ally, 4 cannot move
stepsToRemoveintegerSteps to walk off the state when removeByWalking
traitsarrayTrait 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)
descriptionstringSkill description
dryRunbooleanPreview 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.

create_transfer ~428

Create a complete, placed map-transfer event in one call, using whichever of the two working idioms you pick. `idiom: "action_button"` (default) makes a priority-`same` event the player faces and presses — the right shape for a solid landmark (building, dungeon mouth, door); `idiom: "player_touch"` makes an invisible priority-`below` doormat the player walks onto — for interior exits and map-edge gaps. `direction` is the facing the player lands with, `fade` the screen transition. Throws if the destination map does not exist; warns if the destination tile is outside that map, if the characterName is unknown, or if the event can never fire from where it sits.

NameTypeReqDescription
characterIndexintegerSprite index 0-7 in the sheet
characterNamestringOptional sprite basename (a doormat is normally left invisible)
directionstringFacing after the transfer; default "retain"
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
fadestringScreen fade during the transfer; default "black"
forcebooleanWrite 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…
idiomstringaction_button = face a solid landmark and press (priority same, default); player_touch = walk onto a doormat (priority below)
mapIdintegeryesThe ID of the map the trigger is placed on
namestringEvent name (editor label); default "Transfer"
targetMapIdintegeryesThe ID of the destination map
targetXintegeryesX tile the player lands on
targetYintegeryesY tile the player lands on
xintegeryesX tile position of the trigger
yintegeryesY tile position of the trigger

No output schema declared.

No examples provided.

create_troop ~201

Create a new troop (enemy battle group) in data/Troops.json. `name` is required; `members` defaults to empty and `pages` to one blank battle-event page. Every member.enemyId must reference an existing enemy. A structurally invalid battle-event page refuses the write (nothing is saved) — pass force: true to override.

NameTypeReqDescription
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
forcebooleanWrite 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…
membersarrayPlaced enemies; each references an existing enemyId
namestringyesTroop name shown in the database
pagesarrayBattle-event pages { conditions, list, span }; defaults to one blank page

No output schema declared.

No examples provided.

create_weapon ~236

Create a new weapon in data/Weapons.json. Only `name` is required; omitted fields use the editor's new-weapon defaults (Weapon equip slot, no stat bonuses). `params` is a flat 8-length stat bonus [maxHP, maxMP, atk, def, mat, mdf, agi, luk]. Allocates and returns the next unused weapon id.

NameTypeReqDescription
animationIdintegerAttack animation id
descriptionstringIn-game description text
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
iconIndexintegerIcon index (IconSet.png)
namestringyesWeapon name
notestringNote field
paramsarray8 flat stat bonuses [maxHP, maxMP, atk, def, mat, mdf, agi, luk]
priceintegerBuy price
traitsarrayTrait objects { code, dataId, value }
wtypeIdintegerWeapon type id (System.json weaponTypes)

No output schema declared.

No examples provided.

delete_map ~106

Delete a map: remove its entry from the map tree (MapInfos.json) and delete its data/MapNNN.json file. The deleted map's direct children are reparented onto its parent (not deleted), so removing one node doesn't wipe a whole sub-tree. Does not touch System.json.

NameTypeReqDescription
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
mapIdintegeryesThe ID of the map to delete

No output schema declared.

No examples provided.

delete_map_event ~66

Delete an event from a map by ID

NameTypeReqDescription
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
eventIdintegeryesThe ID of the event
mapIdintegeryesThe ID of the map

No output schema declared.

No examples provided.

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 79 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 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 119 tools: get_project, set_project, update_actor, create_actor, search_actors, and 114 more. Their descriptions and schemas cost roughly 19,486 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 20 September 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.