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
describe_tile ~195

Decode a raw RPG Maker MZ tile id into its tileset sheet (A1–A5, B–E), and for autotiles its kind + shape slot (0–47) and autotile geometry (floor/wall/waterfall). Read-only inspection helper — raw tile ids are opaque integers, this makes one legible. Returns { tileId, empty, sheet, sheetIndex, autotile, kind?, shape?, autotileType? }. Pass `tilesetId` to also inspect the sheet PNG and report `transparent` (true = the tile is see-through and needs an opaque base tile on a lower layer; painting it on layer 0 alone shows the map void) + `transparentPercent`.

NameTypeReqDescription
tileIdintegeryesThe raw tile id to decode
tilesetIdintegerTileset id — when given, also report the tile transparency (needs-a-base) flag

No output schema declared.

No examples provided.

fill_area ~204

Fill a rectangular area of a map with one tile id, with automatic autotiling — a filled autotile region borders itself correctly (and re-borders any same-kind tiles it touches). Flat tiles fill uniformly. Defaults to the lower ground layer (0). For region ids, fill layer 5 with the region number as tileId.

NameTypeReqDescription
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
heightintegeryesRectangle height in tiles
layerintegerZ-layer 0-5 (default 0 = lower ground; 5 = region id)
mapIdintegeryesThe ID of the map
tileIdintegeryesTile id to fill with (autotile base or raw)
widthintegeryesRectangle width in tiles
xintegeryesLeft tile position of the rectangle
yintegeryesTop tile position of the rectangle

No output schema declared.

No examples provided.

find_tile ~342

Find tiles in a tileset by a case-insensitive SUBSTRING match on their catalog name — a quick bridge from a name fragment like 'grass' or 'forest' to a paintable tile id. This is a literal substring match, NOT synonym/semantic search: 'water' matches 'Endless Waterfall' but not 'Sea' or 'Pond' (their names lack the substring). To browse the actual tile names first, use get_tile_catalog with a `sheet` filter, then search a fragment you see. Set `searchDescriptions: true` to also match the free-text description a project catalog carries (custom sheets named by the tileset-catalog skill — their names are terse, the descriptions say what the tile looks like); built-in RPG Maker entries have no description, so this only widens the search over custom sheets. Returns matching catalog entries (name, sheet, tile id, autotile kind, `source`, `matchedIn` [which fields matched], `transparent` [true = needs an opaque base on a lower layer], plus `description`/`confidence`/`manual` for project catalog drafts). Covers the default Overworld tileset plus custom sheets cataloged into data/tilecatalog/ (via the tileset-catalog skill). Read-only.

NameTypeReqDescription
querystringyesSubstring to match, e.g. 'grass' or 'forest' (literal substring, no synonyms)
searchDescriptionsbooleanAlso match project-catalog tile descriptions, not just names (default false — names only)
tilesetIdintegeryesTileset id (from Tilesets.json / the map)

No output schema declared.

No examples provided.

get_database ~193

Read a database table in full: actors, classes, items, weapons, armors, skills, enemies, troops, states, or common_events. Returns the raw 1-indexed array (slot 0 is null), or — with `id` — that single record, or null if no such record exists. These are full records: prefer list_names for an id→name index, or search_actors/search_items/search_skills to find records by name, and reach for this only when you need every field. Maps and tilesets are not here: use get_map_infos/get_map and get_tilesets/get_tile_flags. Read-only.

NameTypeReqDescription
idintegerReturn just this record (null if missing); omitted = the whole table
typestringyesWhich table to read: actors, classes, items, weapons, armors, skills, enemies, troops, states, or common_events.

No output schema declared.

No examples provided.

get_game_title ~14

Get the game title

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_map ~133

Get map data by ID. The tile `data` array can be huge on a painted map (width*height*6 ints) and blow the MCP token limit, so pass includeData:false to omit it (you get dataTileCount instead) and read tiles with get_map_region when needed. includeData defaults to true for backward compatibility.

NameTypeReqDescription
includeDatabooleanInclude the full tile `data` array (default true). Pass false to omit it (returns dataTileCount) and avoid the token cost of a big painted map.
mapIdintegeryesThe ID of the map to retrieve

No output schema declared.

No examples provided.

get_map_dimensions ~35

Get the width and height (in tiles) of a map

NameTypeReqDescription
mapIdintegeryesThe ID of the map

No output schema declared.

No examples provided.

get_map_event ~43

Get a specific event from a map

NameTypeReqDescription
eventIdintegeryesThe ID of the event
mapIdintegeryesThe ID of the map

No output schema declared.

No examples provided.

get_map_events ~30

Get all events from a specific map

NameTypeReqDescription
mapIdintegeryesThe ID of the map

No output schema declared.

No examples provided.

get_map_infos ~15

Get information about all maps

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_map_region ~196

Read the raw tile ids in a rectangular window of one map layer — a token-cheap alternative to get_map for inspecting part of a painted map. Returns `tiles` as a 2D array (rows top→bottom, each left→right) of raw engine tile ids. The rectangle must lie fully within the map bounds (throws otherwise). layer defaults to 0 (see set_map_tile for the z-layer meanings).

NameTypeReqDescription
heightintegeryesWindow height in tiles
layerintegerZ-layer 0-5 (0-1 lower, 2-3 upper, 4 shadow, 5 region); default 0
mapIdintegeryesThe ID of the map
widthintegeryesWindow width in tiles
xintegeryesLeft edge of the window (tile column)
yintegeryesTop edge of the window (tile row)

No output schema declared.

No examples provided.

get_party ~38

Get the starting party — the actor ids the game begins with. Returns `{ partyMembers }`, rhyming with set_party's input/output shape.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_project ~40

Get the project directory the server is currently operating on: its path, whether it is a valid RPG Maker MZ project, and the game title it holds.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_starting_position ~23

Get the game starting position ({ mapId, x, y })

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_switches ~15

Get all game switch names

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_system ~12

Get system data

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_terms ~40

Get the game vocabulary/terms: the `basic`, `commands`, `params` string arrays and the `messages` map (menu labels, system messages).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_tile_catalog ~386

Get the semantic tile catalog for a tileset: the named tiles (e.g. 'Grassland A', 'Forest', 'Sea') in each of its image sheets, each with its representative tile id and a `source` ('builtin' = RPG Maker's own labels; 'project' = a draft name from the vision-bootstrap skill). Project (custom-sheet) entries also carry the skill's `description`, `confidence` ('high'/'medium'/'low'), and `manual` (true = a human verified it) so you can gauge how trustworthy a draft name is. Autotile entries (A1–A4) return the kind's base tile id — feed it to a paint command, which recomputes the shape from neighbours. Covers the default Overworld tileset (World_A1/A2/B/C) plus any custom sheets cataloged into data/tilecatalog/ (via the tileset-catalog skill); still-uncovered sheets are omitted. **Called WITHOUT `sheet` it returns only a per-sheet index (name + entry count) to stay within the tool-output limit — a full tileset can hold thousands of named tiles. Pass `sheet` (filename 'World_A2' or slot role 'A2') to list one sheet's actual tile entries.** Sheet-filtered entries also carry `transparent` (true = the tile is see-through and needs an opaque base tile on a lower layer — painting it on layer 0 alone shows the map void; e.g. trees/objects/overlays). Read-only.

NameTypeReqDescription
sheetstringRestrict to one sheet by filename ('World_A2') or role ('A2'). Omit to get a per-sheet summary (counts only) instead of every entry.
tilesetIdintegeryesTileset id (from Tilesets.json / the map)

No output schema declared.

No examples provided.

get_tile_flags ~164

Decode a tileset's flag word for a single tile id into a legible view: 4-direction passability (down/left/right/up — true = walkable that way), the [*] 'star' overlay bit, ladder/bush/counter/damage-floor flags, and terrain tag (0–7). Read-only inspection of data/Tilesets.json flags[]. Note passability here is for the tile in isolation; a real cell's passability layers its stacked tiles — use check_passability for that. Returns { tilesetId, tileId, tile, flags }.

NameTypeReqDescription
tileIdintegeryesThe raw tile id whose flags to decode
tilesetIdintegeryesTileset id (from Tilesets.json / the map)

No output schema declared.

No examples provided.

get_tilesets ~131

List every tileset in the project with its id, name, mode (0 world / 1 area), and the image sheets it uses (labelled A1–A4, A5, B–E; empty slots omitted). Use this to discover valid tilesetId values (needed by find_tile, get_tile_catalog, paint_tiles, fill_area, place_object, get_tile_flags, set_tile_flags, check_passability) and to see which sheets each tileset is built from. For a plain id→name list, list_names(type:"tilesets") is even cheaper. Read-only.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_title_screen ~75

Get the title screen settings: title1Name/title2Name (background layers, from list_assets("titles1"/"titles2") — title2Name draws over title1Name), titleBgm (the AudioFile that plays while it is shown), and drawTitle (whether the game title text is drawn over the art).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_types ~53

Get one System.json type-name array — the named lists other data references by index: elements, skillTypes, weaponTypes, armorTypes, or equipTypes.

NameTypeReqDescription
categorystringyesWhich type-name array to read

No output schema declared.

No examples provided.

get_variables ~14

Get all game variable names

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

insert_event_commands ~391

Insert a pre-built sequence of event commands (from the build_* builders) into any of the three command lists an MZ project has — the mutating companion to the read-only builders. Splices before the list’s end marker (or at `position`). target "map_event" (the default) needs mapId + eventId + pageIndex; "common_event" needs commonEventId; "troop_page" needs troopId + pageIndex. The resulting list is validated before writing: a structural problem (wrong parameter count for a command code, a list left unterminated) refuses the write and saves nothing — pass force: true to override. Advisory findings (unrecognized code, over-long text line) are returned as `warnings` and never block. Returns { target, id, list, warnings? }.

NameTypeReqDescription
commandsarrayyesThe event commands to insert (e.g. the `commands` from a build_* tool)
commonEventIdintegertarget "common_event": the common event id
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
eventIdintegertarget "map_event": the event id
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…
mapIdintegertarget "map_event": the map id
pageIndexintegertarget "map_event"/"troop_page": zero-based page index
positionintegerInsertion index; defaults to the end of the list
targetstringWhich command list to insert into (default map_event)
troopIdintegertarget "troop_page": the troop id

No output schema declared.

No examples provided.

list_allocated_ids ~233

Show which switch / variable / common-event IDs are already spoken for, derived from the project's own JSON (never a hand-maintained list, which would drift the moment someone edited in the RPG Maker editor). An id counts as allocated if it is declared (a System.json label, a CommonEvents row) OR referenced anywhere — event page conditions and command lists, common events, troop pages, and Common Event skill/item effects. Use this before reusing an id, and pass `id` to answer "where is switch 23 actually used?" before touching it. Returns { count, highest, gaps, declaredCapacity, allocated[], coverage }. Read-only. To claim a fresh id instead, use next_free_id.

NameTypeReqDescription
idintegerReport just this id — whether it is allocated, its label, and every place it is referenced. Omitted = the whole namespace.
typestringyesWhich id namespace: switch, variable, or common_event. Database rows (actors, items, …) are not here — create_*/batch_create assign those ids, and list_names shows what exists.

No output schema declared.

No examples provided.

list_assets ~141

List the available asset filenames (extension stripped) for one asset kind — the exact names RPG Maker's data references (a sprite/face/tileset/audio name). Use it to validate a graphic or audio name before wiring it into an event; a wrong filename fails silently at runtime. Fails soft: an unused asset directory returns an empty list.

NameTypeReqDescription
typestringyesAsset kind to list. Images: characters, faces, tilesets, pictures, parallaxes, battlebacks1, battlebacks2, enemies, sv_actors, sv_enemies, titles1, titles2, system. Audio: bgm, bgs, me, se.

No output schema declared.

No examples provided.

list_names ~98

Cheap names-only index for a database table. Returns { id, name } entries instead of full records — use it to look up or sanity-check IDs before wiring them into events, without paying the token cost of a full get_*/search_* dump.

NameTypeReqDescription
typestringyesWhich table to index: actors, classes, items, weapons, armors, skills, enemies, troops, states, common_events, tilesets, or maps.

No output schema declared.

No examples provided.

list_plugin_commands ~118

List every plugin command create_plugin_command can validate (plugin filename → command key → args): the plugins this project actually ships, scanned from their js/plugins/*.js annotations, merged over a small built-in allowlist. Pass pluginName to narrow to one plugin. Read-only. Use scan_plugins for the richer per-project view (arg types/defaults, enabled state); an unlisted plugin command can still be built, it just isn’t validated.

NameTypeReqDescription
pluginNamestringOptional: restrict to one plugin (its filename without .js)

No output schema declared.

No examples provided.

next_free_id ~238

Reserve the next unallocated switch / variable / common-event ID(s) instead of picking one by hand. Ids are handed out strictly above every id already declared or referenced, so two sessions editing the same project over time cannot silently claim the same switch — a collision that never crashes and only surfaces hours into a playtest as a door that is inexplicably already open. Pass `reuseGaps: true` to fill holes below the highest id first (off by default: a hole is often an id claimed in notes but not yet written). Read-only — it suggests ids, it does not write them; name what you take with set_switch_name / set_variable_name so the next session sees the claim.

NameTypeReqDescription
countintegerHow many consecutive free ids to return (default 1)
reuseGapsbooleanFill unallocated holes below the highest id first (default false)
typestringyesWhich id namespace: switch, variable, or common_event. Database rows (actors, items, …) are not here — create_*/batch_create assign those ids, and list_names shows what exists.

No output schema declared.

No examples provided.

object_tiles ~207

Expand a top-left flat tile id + a width×height size into the grid of tile ids that object occupies on the sheet — feed the returned `tiles` straight into place_object. This handles the flat sheets' two-half-column layout, where the tile below id N is NOT N+16 (indices 0–127 are the left half of the sheet, 128–255 the right), which is otherwise painful to compute by hand. Get the top-left id from find_tile/get_tile_catalog. Read-only. Throws if topLeftId isn't a flat id or the rectangle runs off the 16×16 sheet; warns if the tileset lacks that sheet.

NameTypeReqDescription
heightintegeryesObject height in tiles
tilesetIdintegeryesThe tileset id the object belongs to
topLeftIdintegeryesRaw flat tile id of the object's top-left cell (from find_tile/get_tile_catalog)
widthintegeryesObject width in tiles

No output schema declared.

No examples provided.

paint_tiles ~190

Paint specific tiles onto a map, with automatic autotiling. Each cell is set to its tile id; if that id is an autotile (A1-A4, e.g. a catalog 'kind' base from find_tile), its shape and its neighbours' shapes are recomputed from same-kind adjacency so borders/corners line up. Flat tiles are painted as-is. Defaults to the lower ground layer (0). Higher-level than set_map_tile, which is a single raw tile with no autotiling.

NameTypeReqDescription
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
layerintegerZ-layer 0-5 (default 0 = lower ground; 0-3 tiles, 4 shadow, 5 region id)
mapIdintegeryesThe ID of the map
tilesarrayyesCells to paint

No output schema declared.

No examples provided.

place_object ~318

Place a multi-tile B/C object (a house, tree, fountain, …) on a map and report its passability. `tiles` is the object's block of flat tile ids as rows (top to bottom), each row left to right; a 0 leaves that cell untouched so L-shaped/irregular objects work. Stamped onto the upper tile layer (2) by default so it draws over the ground. Unlike paint_tiles this does NOT autotile (objects are flat sheet tiles) — instead it uses the tileset flags to warn when a footprint cell sits on impassable terrain or overwrites an existing tile, and returns the resulting per-cell passability plus the `collision` cells the object turns into a solid obstacle. Warn-by-default: never refuses a placement. Get tile ids from find_tile/get_tile_catalog.

NameTypeReqDescription
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
layerintegerZ-layer 0-3 to stamp onto (default 2 = upper tile layer, drawn over the ground)
mapIdintegeryesThe ID of the map
tilesarrayyesThe object as a rectangular grid of tile ids: rows top→bottom, each row left→right. 0 = a transparent cell (left untouched).
xintegeryesLeft (top-left) tile x of where the object is placed
yintegeryesTop (top-left) tile y of where the object is placed

No output schema declared.

No examples provided.

resize_map ~146

Resize a map to new width/height, safely repadding every z-layer of its tile data (existing tiles kept where the old and new grids overlap; new cells blank; shrinking crops). This is the ONLY safe way to change a map's dimensions — update_map refuses a width/height change because it would not resize the tile array. Warns about any event left outside the new bounds.

NameTypeReqDescription
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
heightintegeryesNew height in tiles
mapIdintegeryesThe ID of the map to resize
widthintegeryesNew width in tiles

No output schema declared.

No examples provided.

scan_plugins ~209

Discover the plugin commands this project actually has, by parsing the @command/@arg annotations in js/plugins/*.js and the enabled/disabled state in js/plugins.js. Use it to find out what create_plugin_command can call and with which args — it reports every command's key, label, description and args (name/type/default), plus whether the plugin is enabled in the editor's Plugin Manager (a disabled plugin's commands never run). create_plugin_command validates against this scan automatically, so you don't need to call this first; it's for discovery. Pass pluginName to narrow to one plugin, or enabledOnly:true to skip plugins that are installed but switched off. Read-only. NOTE: MZ has no 'required argument' annotation, so scanned args are checked for unknown names only, never for missing ones.

NameTypeReqDescription
enabledOnlybooleanOnly report plugins enabled in js/plugins.js (default false)
pluginNamestringOptional: restrict to one plugin (its filename without .js)

No output schema declared.

No examples provided.

search_actors ~30

Search actors by name or nickname

NameTypeReqDescription
searchTermstringyesThe search term to find actors

No output schema declared.

No examples provided.

search_enemies ~32

Search enemies by name (case-insensitive)

NameTypeReqDescription
searchTermstringyesThe search term to find enemies

No output schema declared.

No examples provided.

search_items ~29

Search items by name or description

NameTypeReqDescription
searchTermstringyesThe search term to find items

No output schema declared.

No examples provided.

search_map_events ~44

Search events on a map by name

NameTypeReqDescription
mapIdintegeryesThe ID of the map
searchTermstringyesThe search term to find events

No output schema declared.

No examples provided.

search_skills ~26

Search skills by name or description

NameTypeReqDescription
searchTermstringyesSearch term

No output schema declared.

No examples provided.

search_troops ~33

Search troops by name (case-insensitive)

NameTypeReqDescription
searchTermstringyesThe search term to find troops

No output schema declared.

No examples provided.

set_class_param_curve ~156

Replace one of a class's 8 parameter growth curves. paramId is 0-7 ([maxHP,maxMP,atk,def,mat,mdf,agi,luk]); values must match the existing curve length (same max level).

NameTypeReqDescription
classIdintegeryesThe ID of the class to edit
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
paramIdintegeryesWhich param: 0 maxHP,1 maxMP,2 atk,3 def,4 mat,5 mdf,6 agi,7 luk
valuesarrayyesNew curve, indexed by level; must match the existing curve length

No output schema declared.

No examples provided.

set_currency_unit ~61

Set the currency unit shown next to gold amounts (e.g. "G", "Gold").

NameTypeReqDescription
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
unitstringyesThe currency unit string

No output schema declared.

No examples provided.

set_encounters ~183

Set a map's random-encounter list (replaces it wholesale) and optionally its encounterStep (average steps between encounters). Each encounter is { troopId, weight?, regionSet? }: weight biases the random pick (default 5), regionSet restricts it to those map region ids (empty/omitted = anywhere). Every troopId is validated against Troops.json — a non-existent troop throws. Prefer this over update_map for encounters (it validates and hides the on-disk shape).

NameTypeReqDescription
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
encounterStepintegerAverage number of steps between encounters (unchanged if omitted)
encountersarrayyesThe full encounter list to set (replaces any existing entries)
mapIdintegeryesThe ID of the map

No output schema declared.

No examples provided.

set_event_page ~505

Update an existing event page's graphic and behavior in one call, without rebuilding the whole page or touching its command list: sprite (characterName/characterIndex/direction/pattern or a tileId), trigger, priority, movement (type/speed/frequency/route), and the through/walkAnime/stepAnime/directionFix flags. Graphic fields merge onto the current image; warns (never blocks) on an unknown characterName. Refuses the write if the change would leave the event unreachable (an action-button page with priority `below` on an impassable tile) — pass force: true to override.

NameTypeReqDescription
characterIndexintegerSprite index 0–7 in the sheet
characterNamestringSprite sheet basename (from list_assets("characters")); "" = no sprite
directionstringFacing direction of the sprite
directionFixbooleanLock the facing direction
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…
indentinteger(unused; page-level tool)
mapIdintegeryesThe ID of the map
moveFrequencyintegerMovement frequency 1–5 (3 = normal)
moveRouteobjectAutonomous move route (from create_move_route); pairs with moveType "custom"
moveSpeedintegerMovement speed 1–6 (4 = normal)
moveTypestringAutonomous movement (custom uses moveRoute)
pageIndexintegeryesZero-based page index
patternintegerSprite animation frame 0–2 (1 = idle)
prioritystringStacking vs. the player: below/same/above characters (same = solid)
stepAnimebooleanAnimate in place while stopped
throughbooleanLet the player/others pass through the event
tileIdintegerUse a tile as the graphic instead of a sprite (0 = none)
triggerstringWhat starts the page
walkAnimebooleanAnimate the walk cycle while moving

No output schema declared.

No examples provided.

set_map_tile ~151

Set a single raw tile ID at (x, y) on a given z-layer (0-5). Note: tile IDs are raw engine integers; this is a low-level primitive without autotile/passability awareness.

NameTypeReqDescription
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
layerintegeryesZ-layer 0-5 (0-1 lower, 2-3 upper, 4 shadow, 5 region)
mapIdintegeryesThe ID of the map
tileIdintegeryesRaw tile ID
xintegeryesX tile position
yintegeryesY tile position

No output schema declared.

No examples provided.

set_movement_route ~285

Insert a forced "Set Movement Route" (event command 205, plus the 505 continuation rows the editor expects) into an event page’s command list, moving a character as part of that page. characterId: -1 player, 0 this event, N event id. Pass a moveRoute from create_move_route. A structurally invalid route or page refuses the write (nothing is saved) — pass force: true to override.

NameTypeReqDescription
characterIdintegeryesTarget character: -1 player, 0 this event, N event id on the map
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…
indentintegerIndentation level in the list (default 0)
mapIdintegeryesThe ID of the map
moveRouteobjectyesThe move route to force (e.g. from create_move_route)
pageIndexintegeryesZero-based page index
positionintegerInsertion index; defaults to the end of the list

No output schema declared.

No examples provided.

set_party ~69

Set the starting party (the actor ids the game begins with, in order). Every id must reference an existing actor.

NameTypeReqDescription
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
partyMembersarrayyesOrdered actor ids for the starting party

No output schema declared.

No examples provided.

set_project ~76

Point the server at a different RPG Maker MZ project directory for the rest of the session (overrides RPGMAKER_PROJECT_PATH until the server restarts). The directory must contain game.rmmzproject and data/System.json.

NameTypeReqDescription
pathstringyesPath to the RPG Maker MZ project directory (a leading ~ is expanded).

No output schema declared.

No examples provided.

set_switch_name ~123

Set a switch name. Grows the project's switch list if the id is past the end (padded to the editor's 20-slot block), so an id from next_free_id can always be labelled. Naming a switch as soon as you claim it is what makes it visible to the next session — see list_allocated_ids.

NameTypeReqDescription
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
namestringyesThe name to assign
switchIdintegeryesThe 1-based switch ID

No output schema declared.

No examples provided.

set_term ~123

Set one vocabulary term. For category 'basic'/'commands'/'params' the key is a numeric index (as a string); for 'messages' it's a message key (e.g. 'actorDamage'). Returns the updated terms.

NameTypeReqDescription
categorystringyesWhich term group to edit
dryRunbooleanPreview only: return a diff of what would change without writing to disk.
keystringyesIndex (for basic/commands/params) or message key (for messages)
valuestringyesThe new term text

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.