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
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
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 47 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
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
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
claude mcp add redseb-rpgmaker-mz-mcp -- npx -y rpgmaker-mz-mcp
{
"mcpServers": {
"redseb-rpgmaker-mz-mcp": {
"command": "npx",
"args": [
"-y",
"rpgmaker-mz-mcp"
]
}
}
} {
"servers": {
"redseb-rpgmaker-mz-mcp": {
"command": "npx",
"args": [
"-y",
"rpgmaker-mz-mcp"
]
}
}
} codex mcp add redseb-rpgmaker-mz-mcp -- npx -y rpgmaker-mz-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"redseb-rpgmaker-mz-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"rpgmaker-mz-mcp"
],
"enabled": true
}
}
} openclaw mcp add redseb-rpgmaker-mz-mcp --command npx --arg -y --arg rpgmaker-mz-mcp
mcp_servers:
redseb-rpgmaker-mz-mcp:
command: "npx"
args: ["-y", "rpgmaker-mz-mcp"] {
"McpServers": {
"redseb-rpgmaker-mz-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"rpgmaker-mz-mcp"
]
}
}
} assistant mcp add redseb-rpgmaker-mz-mcp -t stdio -c npx -a -y rpgmaker-mz-mcp
{
"mcpServers": {
"redseb-rpgmaker-mz-mcp": {
"command": "npx",
"args": [
"-y",
"rpgmaker-mz-mcp"
]
}
}
} 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
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 →
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 →
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`.
| Name | Type | Req | Description |
|---|---|---|---|
| tileId | integer | yes | The raw tile id to decode |
| tilesetId | integer | – | Tileset 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.
| Name | Type | Req | Description |
|---|---|---|---|
| dryRun | boolean | – | Preview only: return a diff of what would change without writing to disk. |
| height | integer | yes | Rectangle height in tiles |
| layer | integer | – | Z-layer 0-5 (default 0 = lower ground; 5 = region id) |
| mapId | integer | yes | The ID of the map |
| tileId | integer | yes | Tile id to fill with (autotile base or raw) |
| width | integer | yes | Rectangle width in tiles |
| x | integer | yes | Left tile position of the rectangle |
| y | integer | yes | Top 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.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Substring to match, e.g. 'grass' or 'forest' (literal substring, no synonyms) |
| searchDescriptions | boolean | – | Also match project-catalog tile descriptions, not just names (default false — names only) |
| tilesetId | integer | yes | Tileset 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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | – | Return just this record (null if missing); omitted = the whole table |
| type | string | yes | Which 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.
| Name | Type | Req | Description |
|---|---|---|---|
| includeData | boolean | – | Include the full tile `data` array (default true). Pass false to omit it (returns dataTileCount) and avoid the token cost of a big painted map. |
| mapId | integer | yes | The 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
| Name | Type | Req | Description |
|---|---|---|---|
| mapId | integer | yes | The ID of the map |
No output schema declared.
No examples provided.
get_map_event ~43
Get a specific event from a map
| Name | Type | Req | Description |
|---|---|---|---|
| eventId | integer | yes | The ID of the event |
| mapId | integer | yes | The ID of the map |
No output schema declared.
No examples provided.
get_map_events ~30
Get all events from a specific map
| Name | Type | Req | Description |
|---|---|---|---|
| mapId | integer | yes | The 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).
| Name | Type | Req | Description |
|---|---|---|---|
| height | integer | yes | Window height in tiles |
| layer | integer | – | Z-layer 0-5 (0-1 lower, 2-3 upper, 4 shadow, 5 region); default 0 |
| mapId | integer | yes | The ID of the map |
| width | integer | yes | Window width in tiles |
| x | integer | yes | Left edge of the window (tile column) |
| y | integer | yes | Top 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.
| Name | Type | Req | Description |
|---|---|---|---|
| sheet | string | – | Restrict to one sheet by filename ('World_A2') or role ('A2'). Omit to get a per-sheet summary (counts only) instead of every entry. |
| tilesetId | integer | yes | Tileset 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 }.
| Name | Type | Req | Description |
|---|---|---|---|
| tileId | integer | yes | The raw tile id whose flags to decode |
| tilesetId | integer | yes | Tileset 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.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | yes | Which 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? }.
| Name | Type | Req | Description |
|---|---|---|---|
| commands | array | yes | The event commands to insert (e.g. the `commands` from a build_* tool) |
| commonEventId | integer | – | target "common_event": the common event id |
| dryRun | boolean | – | Preview only: return a diff of what would change without writing to disk. |
| eventId | integer | – | target "map_event": the event id |
| force | boolean | – | 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… |
| mapId | integer | – | target "map_event": the map id |
| pageIndex | integer | – | target "map_event"/"troop_page": zero-based page index |
| position | integer | – | Insertion index; defaults to the end of the list |
| target | string | – | Which command list to insert into (default map_event) |
| troopId | integer | – | target "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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | – | Report just this id — whether it is allocated, its label, and every place it is referenced. Omitted = the whole namespace. |
| type | string | yes | Which 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.
| Name | Type | Req | Description |
|---|---|---|---|
| type | string | yes | Asset 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.
| Name | Type | Req | Description |
|---|---|---|---|
| type | string | yes | Which 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.
| Name | Type | Req | Description |
|---|---|---|---|
| pluginName | string | – | Optional: 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.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | How many consecutive free ids to return (default 1) |
| reuseGaps | boolean | – | Fill unallocated holes below the highest id first (default false) |
| type | string | yes | Which 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.
| Name | Type | Req | Description |
|---|---|---|---|
| height | integer | yes | Object height in tiles |
| tilesetId | integer | yes | The tileset id the object belongs to |
| topLeftId | integer | yes | Raw flat tile id of the object's top-left cell (from find_tile/get_tile_catalog) |
| width | integer | yes | Object 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.
| Name | Type | Req | Description |
|---|---|---|---|
| dryRun | boolean | – | Preview only: return a diff of what would change without writing to disk. |
| layer | integer | – | Z-layer 0-5 (default 0 = lower ground; 0-3 tiles, 4 shadow, 5 region id) |
| mapId | integer | yes | The ID of the map |
| tiles | array | yes | Cells 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.
| Name | Type | Req | Description |
|---|---|---|---|
| dryRun | boolean | – | Preview only: return a diff of what would change without writing to disk. |
| layer | integer | – | Z-layer 0-3 to stamp onto (default 2 = upper tile layer, drawn over the ground) |
| mapId | integer | yes | The ID of the map |
| tiles | array | yes | The object as a rectangular grid of tile ids: rows top→bottom, each row left→right. 0 = a transparent cell (left untouched). |
| x | integer | yes | Left (top-left) tile x of where the object is placed |
| y | integer | yes | Top (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.
| Name | Type | Req | Description |
|---|---|---|---|
| dryRun | boolean | – | Preview only: return a diff of what would change without writing to disk. |
| height | integer | yes | New height in tiles |
| mapId | integer | yes | The ID of the map to resize |
| width | integer | yes | New 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.
| Name | Type | Req | Description |
|---|---|---|---|
| enabledOnly | boolean | – | Only report plugins enabled in js/plugins.js (default false) |
| pluginName | string | – | Optional: restrict to one plugin (its filename without .js) |
No output schema declared.
No examples provided.
search_actors ~30
Search actors by name or nickname
| Name | Type | Req | Description |
|---|---|---|---|
| searchTerm | string | yes | The search term to find actors |
No output schema declared.
No examples provided.
search_enemies ~32
Search enemies by name (case-insensitive)
| Name | Type | Req | Description |
|---|---|---|---|
| searchTerm | string | yes | The search term to find enemies |
No output schema declared.
No examples provided.
search_items ~29
Search items by name or description
| Name | Type | Req | Description |
|---|---|---|---|
| searchTerm | string | yes | The search term to find items |
No output schema declared.
No examples provided.
search_map_events ~44
Search events on a map by name
| Name | Type | Req | Description |
|---|---|---|---|
| mapId | integer | yes | The ID of the map |
| searchTerm | string | yes | The search term to find events |
No output schema declared.
No examples provided.
search_skills ~26
Search skills by name or description
| Name | Type | Req | Description |
|---|---|---|---|
| searchTerm | string | yes | Search term |
No output schema declared.
No examples provided.
search_troops ~33
Search troops by name (case-insensitive)
| Name | Type | Req | Description |
|---|---|---|---|
| searchTerm | string | yes | The 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).
| Name | Type | Req | Description |
|---|---|---|---|
| classId | integer | yes | The ID of the class to edit |
| dryRun | boolean | – | Preview only: return a diff of what would change without writing to disk. |
| paramId | integer | yes | Which param: 0 maxHP,1 maxMP,2 atk,3 def,4 mat,5 mdf,6 agi,7 luk |
| values | array | yes | New 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").
| Name | Type | Req | Description |
|---|---|---|---|
| dryRun | boolean | – | Preview only: return a diff of what would change without writing to disk. |
| unit | string | yes | The 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).
| Name | Type | Req | Description |
|---|---|---|---|
| dryRun | boolean | – | Preview only: return a diff of what would change without writing to disk. |
| encounterStep | integer | – | Average number of steps between encounters (unchanged if omitted) |
| encounters | array | yes | The full encounter list to set (replaces any existing entries) |
| mapId | integer | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| characterIndex | integer | – | Sprite index 0–7 in the sheet |
| characterName | string | – | Sprite sheet basename (from list_assets("characters")); "" = no sprite |
| direction | string | – | Facing direction of the sprite |
| directionFix | boolean | – | Lock the facing direction |
| dryRun | boolean | – | Preview only: return a diff of what would change without writing to disk. |
| eventId | integer | yes | The ID of the event |
| force | boolean | – | 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… |
| indent | integer | – | (unused; page-level tool) |
| mapId | integer | yes | The ID of the map |
| moveFrequency | integer | – | Movement frequency 1–5 (3 = normal) |
| moveRoute | object | – | Autonomous move route (from create_move_route); pairs with moveType "custom" |
| moveSpeed | integer | – | Movement speed 1–6 (4 = normal) |
| moveType | string | – | Autonomous movement (custom uses moveRoute) |
| pageIndex | integer | yes | Zero-based page index |
| pattern | integer | – | Sprite animation frame 0–2 (1 = idle) |
| priority | string | – | Stacking vs. the player: below/same/above characters (same = solid) |
| stepAnime | boolean | – | Animate in place while stopped |
| through | boolean | – | Let the player/others pass through the event |
| tileId | integer | – | Use a tile as the graphic instead of a sprite (0 = none) |
| trigger | string | – | What starts the page |
| walkAnime | boolean | – | Animate 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.
| Name | Type | Req | Description |
|---|---|---|---|
| dryRun | boolean | – | Preview only: return a diff of what would change without writing to disk. |
| layer | integer | yes | Z-layer 0-5 (0-1 lower, 2-3 upper, 4 shadow, 5 region) |
| mapId | integer | yes | The ID of the map |
| tileId | integer | yes | Raw tile ID |
| x | integer | yes | X tile position |
| y | integer | yes | Y 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.
| Name | Type | Req | Description |
|---|---|---|---|
| characterId | integer | yes | Target character: -1 player, 0 this event, N event id on the map |
| dryRun | boolean | – | Preview only: return a diff of what would change without writing to disk. |
| eventId | integer | yes | The ID of the event |
| force | boolean | – | 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… |
| indent | integer | – | Indentation level in the list (default 0) |
| mapId | integer | yes | The ID of the map |
| moveRoute | object | yes | The move route to force (e.g. from create_move_route) |
| pageIndex | integer | yes | Zero-based page index |
| position | integer | – | Insertion 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.
| Name | Type | Req | Description |
|---|---|---|---|
| dryRun | boolean | – | Preview only: return a diff of what would change without writing to disk. |
| partyMembers | array | yes | Ordered 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.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | Path 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.
| Name | Type | Req | Description |
|---|---|---|---|
| dryRun | boolean | – | Preview only: return a diff of what would change without writing to disk. |
| name | string | yes | The name to assign |
| switchId | integer | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | yes | Which term group to edit |
| dryRun | boolean | – | Preview only: return a diff of what would change without writing to disk. |
| key | string | yes | Index (for basic/commands/params) or message key (for messages) |
| value | string | yes | The new term text |
No output schema declared.
No examples provided.
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.