RPG Maker MZ Authoring MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@RPG Maker MZ Authoring MCP Create a treasure chest event on Map 3 that gives a Bronze Key."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
RPG Maker MZ Authoring MCP
A local Model Context Protocol server that lets an AI agent inspect, author, validate and safely modify RPG Maker MZ projects. It works with semantic event blocks and typed database records instead of raw JSON.
Eventing: maps, events, pages, page settings, and an Event IR that compiles to native MZ commands. Unsupported commands are preserved exactly.
Database: all database categories with normalized views, patch updates, traits/effects/actions/drops collections, note tags, templates, and reference analysis.
Shared safety layer: preview-first change sets, full validation of the resulting state, backups, atomic writes, stale-edit detection, a transaction log and rollback.
Workflow skills: a Claude Code plugin with skills for NPCs, quests, cutscenes, map placement, database design, audits and more. See Skills.
Supported: RPG Maker MZ 1.x project data (verified on 1.10.0). Node.js 20.10+ to run, 22.12+ to develop and test. Known limitations: LIMITATIONS.md. Milestone status: docs/STATUS.md.
Install
Requires Node.js 20.10+. Installing compiles the TypeScript automatically (prepare script) and puts an rpgmz-mcp
command on your PATH, so it doesn't matter where the source code lives.
# from GitHub
npm install -g github:NixonMSilva/mcp-rpg-maker-mz
# or from a local clone (the command follows your working copy; re-run `npm run build` after changes)
git clone https://github.com/NixonMSilva/mcp-rpg-maker-mz.git
cd mcp-rpg-maker-mz
npm install
npm linkTo update a GitHub install, run the same npm install -g github:... command again.
Run it on a project (read-only by default). --project is the project folder, the one that contains game.rmmzproject
and data/:
rpgmz-mcp --project "C:/path/to/MyGame" # inspect + preview only
rpgmz-mcp --project "C:/path/to/MyGame" --allow-write # allow committing previewsStarted by hand, it only waits for an MCP client. Register it with Claude Code instead (below).
Option | Env var | Meaning |
|
| Project roots; the first is selected at startup |
|
| Enable |
|
| Backups and transaction log, relative to the project (default |
|
| Let |
Claude Code
On Windows, npm commands are .cmd shims, so launch them through cmd /c:
claude mcp add rpgmaker-mz -- cmd /c rpgmz-mcp --project "C:/path/to/MyGame" --allow-writemacOS / Linux:
claude mcp add rpgmaker-mz -- rpgmz-mcp --project "/path/to/MyGame" --allow-writeOr add a .mcp.json to the folder you open Claude Code in. Use forward slashes or \\ in JSON paths, and on
macOS/Linux use "command": "rpgmz-mcp" without cmd /c:
{
"mcpServers": {
"rpgmaker-mz": {
"command": "cmd",
"args": ["/c", "rpgmz-mcp", "--project", "C:/path/to/MyGame", "--allow-write"]
}
}
}Without a global install, point at the built file instead: node "C:/path/to/repo/dist/index.js" --project ....
Close the project in the RPG Maker MZ editor before applying changes, or reload it afterwards without saving. The
editor keeps data in memory and overwrites external changes when you save. The server warns when RPGMZ.exe is running.
Related MCP server: RPG Maker MZ MCP Server
How an agent uses it
get_project_info→list_maps→get_map_summary/describe_map_event. To place or move events, look at the map first:render_map(PNG with coordinates),get_map_passability(text grid of where the player can walk),get_tile_info(is this spot free?) andfind_path(ready-made movement routes).get_event_logicreturns the Event IR with block ids and arevision.get_event_ir_referencedocuments every block.Edit with
append_event_blocks,insert_event_blocks,replace_event_block,move_event_block,remove_event_block,update_event_page_settings,create_map_event,create_event_from_template, and so on. Each returns a change set preview: semantic diff, native diff, and errors/warnings/info.apply_changes { changeSetId, acknowledgeWarnings?, confirm? }commits it with a backup.rollback_transactionundoes a commit.
For database-aware events, resolve names first (database_resolve_reference { category: "item", name: "Bronze Key" }).
Use preview_changes to create a record and the event that uses it in one atomic change set.
{ "type": "conditional", "condition": { "type": "item", "itemId": 12 },
"then": [ { "type": "show_text", "text": "The gate opens." }, { "type": "control_switches", "switchId": 4, "value": "on" } ],
"else": [ { "type": "show_text", "text": "It's locked." } ] }Skills
The repo is also a Claude Code plugin (rpgmz) with workflow skills. They teach an agent how to combine the tools for common
RPG Maker tasks: which tools to call in which order, engine rules that are easy to get wrong, and when to stop and ask the user. Claude
loads a skill automatically when a request matches its description, and you can also invoke one by name.
Skill | Use it for |
The commit loop every write ends with: preview, review diagnostics, acknowledge or confirm, apply, verify, roll back | |
Getting oriented and explaining maps, events, common events, switches/variables, plugins and the database | |
Choosing free, reachable tiles for events and transfer destinations, and generating movement routes | |
Talking NPCs: dialogue, choices, state-dependent branches, shops, inns | |
Multi-stage quests driven by a stage variable, item turn-ins and rewards, as an explicit state machine | |
Treasure chests, doors and transfer tiles, levers and switch-controlled gates | |
One-shot story scenes (step-on or switch-gated autorun) with movement, fades, audio and waits | |
Minimal, revision-safe edits to existing map events, common events and troop pages | |
Creating and balancing items, skills, equipment, enemies, states, actors, class curves and note tags | |
Finding every use of a switch, variable, record or event before deleting or repurposing it | |
Read-only health check: broken references, flow problems, unreachable areas, events that never trigger | |
Authoring |
The skills don't start the MCP server. Register it as described above. Skills refer to tools by their bare names
(get_map_summary). Claude Code exposes them as mcp__<server name>__<tool>.
Install as a plugin (Claude Code):
/plugin marketplace add NixonMSilva/mcp-rpg-maker-mz
/plugin install rpgmz@rpgmaker-mz-mcpPlugin skills are namespaced, so to invoke one explicitly type /rpgmz:npc-dialogue. Update later with /plugin marketplace update rpgmaker-mz-mcp.
Or copy them: copy the folders under skills/ into ~/.claude/skills/ (all your projects) or into
<your project>/.claude/skills/ (one project). Copied skills are invoked without a namespace, for example /npc-dialogue.
Tools (75)
Area | Tools |
Project |
|
Map awareness |
|
Event inspection |
|
Event writes |
|
Validation |
|
Database inspection |
|
Database writes |
|
Change sets |
|
Resources: rpgmz://docs/event-ir, rpgmz://project, rpgmz://maps/{mapId}, rpgmz://maps/{mapId}/events/{eventId},
rpgmz://common-events/{id}, rpgmz://database/{category}/{id}.
Prompts: create_npc_interaction, create_quest_npc, create_treasure_chest, modify_existing_event,
give_item_in_event, design_database_entry.
Safety model
All file access is confined to the configured project root, with traversal and symlink-escape checks. Only
data/*.jsoncan be written. Plugin and project JavaScript is never executed.Writes are previewed and validated against the complete resulting project state. Errors block a write, warnings need
acknowledgeWarnings, and destructive changes needconfirm.Before writing, every base file's content hash is re-checked. If the editor or anything else changed a file, the preview is rejected.
Originals are backed up to
.rpgmz-mcp/backups/<transaction>/. Files are replaced through temp file + rename, and if a multi-file write fails midway, every file is restored.IDs are never renumbered. Unknown fields, plugin data, unsupported commands and the editor's exact JSON layout are preserved, so an edit changes only the affected line.
Inserting JavaScript requires
allowScript=true, which an agent should set only when the user asked for it.
Development
npm install # also builds dist/
npm test
npm run typechecknpm testruns unit, integration and round-trip tests.Real-project round-trip test (optional, read-only). It is skipped unless you point it at real
datafolders, either withRPGMZ_TEST_DATA_DIRS(path-delimited) or with a gitignoredtests/real-data.local.json:{ "dataDirs": ["C:/path/to/MyGame/data", "C:/path/to/RPG Maker MZ/newdata/data"] }npm run docsregenerates docs/EVENT_IR.md from the block definitions.tests/fixtures/mz-projectis a small synthetic MZ project generated bytests/fixtures/build-fixture.mjs. It contains no RPG Maker data, only the same native shapes. Re-run the script after changing it.Design notes: docs/ARCHITECTURE.md. Verified native structures: docs/NATIVE_FORMATS.md.
License
MIT. RPG Maker is a trademark of Gotcha Gotcha Games / KADOKAWA. This project is not affiliated with them and contains no RPG Maker data or engine code (the test fixture is synthetic).
Available Tools
75 toolsanalyze_event_flowAnalyze event flowBRead-onlyIdempotent
Heuristic logic analysis (labelled as heuristics, never auto-fixed): unreachable blocks, contradicted/redundant conditions, loops without exit, autorun pages that never end, shadowed pages, unused self switches, switches set but never read on the map, common event call cycles.
Inputs: mapId, scope, eventId, troopId, +2 more.
append_event_blocksappend event blocksA
Append Event IR blocks at the end of a command list (map page, common event or troop page). No revision needed.
Preview-first: returns a change set (semantic + native diff, validation). Pass apply=true to commit immediately when the preview is clean.
Inputs: blocks (required), apply, mapId, eventId, +6 more.
apply_changesApply change setADestructive
Commit a previously previewed change set. Re-checks file revisions (rejects stale previews), backs up originals, writes atomically, and rolls back on failure. Requires --allow-write.
Inputs: changeSetId (required), confirm, acknowledgeWarnings.
apply_event_changesApply change setADestructive
Commit a previously previewed change set. Re-checks file revisions (rejects stale previews), backs up originals, writes atomically, and rolls back on failure. Requires --allow-write. (Alias of apply_changes; any change set id is accepted.)
Inputs: changeSetId (required), confirm, acknowledgeWarnings.
clone_event_pageclone event pageA
Clone a page (deep copy) into the same event or another event on the same map.
Preview-first: returns a change set (semantic + native diff, validation). Pass apply=true to commit immediately when the preview is clean.
Inputs: mapId (required), eventId (required), pageIndex (required), apply, +5 more.
create_event_from_templatecreate event from templateA
Create a complete event from a template: npc (dialogue), treasure_chest, door (transfer), quest_npc (multi-stage via a variable), switch_lever, cutscene_trigger. Use list_event_templates for parameters. The result is previewed like any other change.
Preview-first: returns a change set (semantic + native diff, validation). Pass apply=true to commit immediately when the preview is clean.
Inputs: x (required), y (required), mapId (required), template (required), +6 more.
create_event_pagecreate event pageA
Add a page to an event (appended by default). Remember: the engine activates the highest-numbered page whose conditions are met.
Preview-first: returns a change set (semantic + native diff, validation). Pass apply=true to commit immediately when the preview is clean.
Inputs: mapId (required), eventId (required), page, apply, +4 more.
create_map_eventcreate map eventA
Create a map event with a new ID (lowest free slot, as the editor does) and one or more pages. Each page: {settings?, blocks?}. Defaults match a blank editor page (action button, below characters, no graphic).
Preview-first: returns a change set (semantic + native diff, validation). Pass apply=true to commit immediately when the preview is clean.
Inputs: x (required), y (required), mapId (required), name, +6 more.
database_apply_changesApply change setADestructive
Commit a previously previewed change set. Re-checks file revisions (rejects stale previews), backs up originals, writes atomically, and rolls back on failure. Requires --allow-write. (Alias of apply_changes; any change set id is accepted.)
Inputs: changeSetId (required), confirm, acknowledgeWarnings.
database_compare_recordsCompare recordsCRead-onlyIdempotent
Structural differences between two records of the same category.
Inputs: a (required), b (required), category (required).
database_create_recorddatabase create recordA
Create a database record with the next ID (max+1). Optionally start from a template (database_list_templates) and override fields (patch paths, e.g. "damage.formula"), collections (traits/effects/learnings/actions/dropItems/members) and noteTags. Returns the new ID.
Preview-first: returns a change set (normalized + native diff, validation incl. reverse references). Pass apply=true to commit immediately when the preview is clean.
Inputs: name (required), category (required), id, apply, +9 more.
database_delete_recorddatabase delete recordADestructive
DESTRUCTIVE: delete a record without renumbering. mode "clear" (default) replaces it with a blank record in the same slot; "truncate_last" removes the highest ID only. The preview lists every known reference. Apply with apply_changes + confirm.
Preview-first: returns a change set (normalized + native diff, validation incl. reverse references). Destructive: apply only via apply_changes with confirm.
Inputs: id (required), category (required), mode, apply, +3 more.
database_describe_schemaDatabase schemaCRead-onlyIdempotent
Patchable fields (with types, ranges, enums, reference kinds) and collections of a category.
Inputs: category (required).
database_duplicate_recorddatabase duplicate recordA
Duplicate a record (deep copy, new ID = max+1). Referenced records (class, skills, states, equipment...) are NOT duplicated; the copy references the same IDs.
Preview-first: returns a change set (normalized + native diff, validation incl. reverse references). Pass apply=true to commit immediately when the preview is clean.
Inputs: id (required), category (required), name, apply, +3 more.
database_edit_collectiondatabase edit collectionA
Edit a nested collection (traits, effects, learnings, actions, dropItems, members, flashTimings, soundTimings) with typed ops: {op:"add", entry, index?} | {op:"update", index, entry (partial), fingerprint?} | {op:"remove", index, fingerprint?} | {op:"move", from, to}. update/remove/move need expectedRevision (collections..revision from database_get_record). Trait/effect codes and dataIds accept labels (e.g. code "State Resist", dataId "Poison").
Preview-first: returns a change set (normalized + native diff, validation incl. reverse references). Pass apply=true to commit immediately when the preview is clean.
Inputs: id (required), ops (required), category (required), collection (required), +5 more.
database_edit_notedatabase edit noteA
Edit a record's note: {op:"set_tag", tag, value?} (value omitted = flag tag ), {op:"remove_tag", tag}, or {op:"replace", note}. Unrelated tags and text are preserved exactly.
Preview-first: returns a change set (normalized + native diff, validation incl. reverse references). Pass apply=true to commit immediately when the preview is clean.
Inputs: id (required), op (required), category (required), tag, +6 more.
database_find_referencesFind references to a recordBRead-onlyIdempotent
Every known reference to a record from events, common events, troops and other records (run before deleting or repurposing a record).
Inputs: id (required), category (required).
database_get_recordGet database recordBRead-onlyIdempotent
Normalized record: fields with enum labels and reference names, collections (traits/effects/...) with per-collection revision and per-entry fingerprints, note tags, unmodeled (plugin) fields. detailed=true includes the native JSON. For system omit id.
Inputs: category (required), id, detailed.
database_list_categoriesDatabase categoriesBRead-onlyIdempotent
Available database categories with record counts and max IDs.
Inputs: no named parameters.
database_list_recordsList database recordsBRead-onlyIdempotent
Concise record summaries of a category (paginated). Blank (unnamed) slots are hidden unless includeBlank=true.
Inputs: category (required), limit, offset, includeBlank, +1 more.
database_list_templatesDatabase templatesARead-onlyIdempotent
Record templates for database_create_record (template + templateParams).
Inputs: no named parameters.
database_preview_changesPreview database changes (batch)A
Preview several operations as one atomic change set; the complete resulting state is validated (records, references, reverse references). Operations: create_map_event, update_map_event, delete_map_event, create_event_page, clone_event_page, delete_event_page, update_event_page_settings, reorder_event_pages, update_common_event, create_event_from_template, append_event_blocks, insert_event_blocks, replace_event_block, remove_event_block, move_event_block, replace_event_logic, database_create_record, database_update_record, database_duplicate_record, database_delete_record, database_edit_collection, database_edit_note, database_set_class_curve.
Inputs: operations (required), apply, allowScript, description, +1 more.
database_resolve_referenceResolve database referenceARead-onlyIdempotent
Validate a category+ID, or find a record by name (exact matches first, then partial candidates). Use before authoring events that reference database records; ask the user when ambiguous.
Inputs: category (required), id, name.
database_search_recordsSearch database recordsCRead-onlyIdempotent
Search records by name, note, description or note-tag metadata across one or more categories.
Inputs: text (required), limit, fields, categories.
database_set_class_curvedatabase set class curveA
Regenerate one class parameter curve from level-1 and level-99 values (shape linear | ease_in | ease_out), or set all 100 values explicitly.
Preview-first: returns a change set (normalized + native diff, validation incl. reverse references). Pass apply=true to commit immediately when the preview is clean.
Inputs: param (required), classId (required), apply, shape, +6 more.
database_update_recorddatabase update recordA
Patch selected fields of a record (patch semantics; other fields untouched). Keys are field paths ("mpCost", "damage.formula" or {"damage": {"formula": ...}}); enums accept labels ("scope": "All Enemies"). For system use id 0 or omit id; system also accepts "switches.", "variables.", "terms.messages.", etc.
Preview-first: returns a change set (normalized + native diff, validation incl. reverse references). Pass apply=true to commit immediately when the preview is clean.
Inputs: patch (required), category (required), id, apply, +3 more.
database_validate_categoryValidate database categoryBRead-onlyIdempotent
Record validation (types, enums, ranges, required native fields), reference validation and advisory design diagnostics for a category or selected IDs.
Inputs: category (required), ids.
delete_event_pagedelete event pageADestructive
DESTRUCTIVE: delete one page (later pages shift down). Preview-only; apply with apply_changes + confirm.
Preview-first: returns a change set (semantic + native diff, validation). Destructive: apply only via apply_changes with confirm.
Inputs: mapId (required), eventId (required), pageIndex (required), apply, +3 more.
delete_map_eventdelete map eventADestructive
DESTRUCTIVE: delete a map event (its slot becomes null; other event IDs never change). Always preview-only; apply with apply_changes + confirm.
Preview-first: returns a change set (semantic + native diff, validation). Destructive: apply only via apply_changes with confirm.
Inputs: mapId (required), eventId (required), apply, allowScript, +2 more.
describe_event_pageDescribe event pageARead-onlyIdempotent
Human-readable description of a page: conditions, graphic, trigger, priority, movement and the command flow with block ids.
Inputs: mapId, eventId, troopId, pageIndex, +1 more.
describe_map_eventDescribe map eventBRead-onlyIdempotent
Human-readable description of an event and ALL its pages (page priority explained).
Inputs: mapId (required), eventId (required).
discard_changesDiscard change setARead-only
Drop a pending change set (nothing on disk is touched).
Inputs: changeSetId (required).
find_pathFind walking pathARead-onlyIdempotent
Shortest walking route between two cells using the engine's passage rules. Returns route command names (move_up, ...) and a ready-to-use set_movement_route block. With from={eventId} the event is the mover (blocked by any non-through event). adjacent=true (default when to is an event) stops next to the target and turns to face it.
Inputs: to (required), from (required), mapId (required), assume, +3 more.
find_referencesFind referencesBRead-onlyIdempotent
Reverse lookup: every known reference to a switch, variable, database record, common event, map, or map event (refKind "event" needs mapId). Includes low-confidence matches inferred from script text.
Inputs: id (required), refKind (required), mapId, eventId.
get_change_setGet change setCRead-onlyIdempotent
Full preview (diffs, diagnostics) of a pending change set.
Inputs: changeSetId (required).
get_common_eventGet common eventBRead-onlyIdempotent
A common event's trigger, condition switch and logic description (detailed=true also returns the Event IR).
Inputs: commonEventId (required), detailed.
get_event_ir_referenceEvent IR referenceBRead-onlyIdempotent
Documentation of every Event IR block type, condition, route command and convention.
Inputs: no named parameters.
get_event_logicGet event logic (IR)BRead-onlyIdempotent
The Event IR of a command list with block ids, the revision token required by path-based edits, and whether the semantic view is complete (raw_command blocks are opaque but preserved).
Inputs: mapId, eventId, troopId, pageIndex, +1 more.
get_event_pageGet event pageARead-onlyIdempotent
Page settings plus readable logic (with block ids) and the list revision. Works for map event pages, common events and troop pages. detailed=true adds the full Event IR.
Inputs: mapId, eventId, troopId, detailed, +2 more.
get_event_page_nativeGet native page dataBRead-onlyIdempotent
Raw native JSON of a page / common event / troop page, for debugging.
Inputs: mapId, eventId, troopId, pageIndex, +1 more.
get_map_eventGet map eventBRead-onlyIdempotent
Event metadata and every page's settings (conditions, graphic, trigger, priority, movement), command counts, logic revisions and a short preview.
Inputs: mapId (required), eventId (required).
get_map_passabilityMap passability gridARead-onlyIdempotent
Text map of where the player can walk, using the engine's exact passage rules (directional tile bits, star tiles, wall tops, counters, blocking events). Returns an ASCII grid (2 characters per cell: walls drawn between cells), reachability from an origin (default: player start or the first transfer arrival), the separate walkable areas, and every event with its active page and whether the player can trigger it. Works without image support.
Inputs: mapId (required), from, assume, region, +3 more.
get_map_summaryMap summaryBRead-onlyIdempotent
Map metadata (size, tileset, display name, note) and a summary of every event.
Inputs: mapId (required).
get_plugin_commandsPlugin command schemasARead-onlyIdempotent
Commands and arguments declared in a plugin's annotation header (js/plugins/.js, read as text, never executed). Schemas are INFERRED from annotations; use them to author plugin_command blocks without inventing names.
Inputs: pluginName (required).
get_project_infoProject infoARead-onlyIdempotent
Project root, detected engine/editor version, write mode, available data files and plugin count. Call this first.
Inputs: no named parameters.
get_tile_infoTile infoARead-onlyIdempotent
Facts about one or more cells: tile ids per layer (sheet, autotile kind/shape, flags), blocked sides, exits, shadow, region, terrain tag, ladder/bush/counter/damage, events on it, reachability, and free (exit + no event + reachable): use it to check spots before placing NPCs or transfer destinations.
Inputs: mapId (required), x, y, from, +3 more.
insert_event_blocksinsert event blocksA
Insert blocks at a position (before/after a block id, or into a branch of a container). Requires the list revision.
Preview-first: returns a change set (semantic + native diff, validation). Pass apply=true to commit immediately when the preview is clean.
Inputs: blocks (required), position (required), revision (required), apply, +8 more.
list_common_eventsList common eventsCRead-onlyIdempotent
Common event IDs, names and triggers (paginated).
Inputs: limit, offset, nameContains.
list_event_templatesList event templatesARead-onlyIdempotent
Event templates usable with create_event_from_template, with their parameters.
Inputs: no named parameters.
list_map_eventsList map eventsCRead-onlyIdempotent
Event IDs, names, coordinates, page counts and triggers on a map (paginated).
Inputs: mapId (required), limit, offset, nameContains.
list_mapsList mapsARead-onlyIdempotent
Enumerate maps from MapInfos.json (IDs, names, tree parent and order). Map files are resolved by ID, never by display name.
Inputs: parentId, nameContains.
list_pending_changesPending change setsARead-onlyIdempotent
Change sets previewed but not yet applied (expire after 1 hour).
Inputs: no named parameters.
list_pluginsList pluginsBRead-onlyIdempotent
Plugins from js/plugins.js with status and parameters (parsed as data; plugin code is never executed).
Inputs: enabledOnly.
list_projectsList configured projectsBRead-onlyIdempotent
Projects configured at server start (--project). The selected one is used by all tools.
Inputs: no named parameters.
list_switchesList switchesBRead-onlyIdempotent
Game switches with names and how many event/common-event/troop references use each. onlyFree=true lists unnamed, unreferenced IDs to use for new logic without conflicts.
Inputs: limit, offset, onlyFree, nameContains.
list_transactionsTransaction logBRead-onlyIdempotent
Committed (and failed) write transactions with changed files, revisions and backup locations, newest first.
Inputs: limit.
list_variablesList variablesBRead-onlyIdempotent
Game variables with names and how many event/common-event/troop references use each. onlyFree=true lists unnamed, unreferenced IDs to use for new logic without conflicts.
Inputs: limit, offset, onlyFree, nameContains.
move_event_blockmove event blockA
Move a block (with its branches) to another position in the same list; indentation is adjusted. Requires the list revision.
Preview-first: returns a change set (semantic + native diff, validation). Pass apply=true to commit immediately when the preview is clean.
Inputs: blockId (required), position (required), revision (required), apply, +8 more.
preview_changesPreview changes (batch)A
Preview several operations as ONE atomic change set (cross-domain; any registered operation is accepted, so events and database records can be changed together). The whole resulting project state is validated; nothing is written until apply_changes. Operations: create_map_event, update_map_event, delete_map_event, create_event_page, clone_event_page, delete_event_page, update_event_page_settings, reorder_event_pages, update_common_event, create_event_from_template, append_event_blocks, insert_event_blocks, replace_event_block, remove_event_block, move_event_block, replace_event_logic, database_create_record, database_update_record, database_duplicate_record, database_delete_record, database_edit_collection, database_edit_note, database_set_class_curve.
Inputs: operations (required), apply, allowScript, description, +1 more.
preview_event_changesPreview event changes (batch)A
Preview several operations as ONE atomic change set (event-focused; any registered operation is accepted, so events and database records can be changed together). The whole resulting project state is validated; nothing is written until apply_changes. Operations: create_map_event, update_map_event, delete_map_event, create_event_page, clone_event_page, delete_event_page, update_event_page_settings, reorder_event_pages, update_common_event, create_event_from_template, append_event_blocks, insert_event_blocks, replace_event_block, remove_event_block, move_event_block, replace_event_logic, database_create_record, database_update_record, database_duplicate_record, database_delete_record, database_edit_collection, database_edit_note, database_set_class_curve.
Inputs: operations (required), apply, allowScript, description, +1 more.
remove_event_blockremove event blockA
Remove one block (and its nested branches) by id. Requires the list revision.
Preview-first: returns a change set (semantic + native diff, validation). Pass apply=true to commit immediately when the preview is clean.
Inputs: blockId (required), revision (required), apply, mapId, +7 more.
render_mapRender map imageARead-onlyIdempotent
PNG image of a map (or a region) as the game draws it: tile layers with real autotiles, shadows, event sprites, plus a coordinate grid with x/y axis labels, event id boxes (colored by trigger), the player start (S) and transfer arrivals (T). Overlays: passability (blocked cells + walls), reachable (from the player start, a transfer arrival or reachableFrom), regions. Use it to understand the layout before placing events; use get_map_passability for exact walkability.
Inputs: mapId (required), grid, scale, assume, +5 more.
reorder_event_pagesreorder event pagesA
Reorder pages: order lists current pageIndexes in their new order (a permutation). Changes which page wins when several are active.
Preview-first: returns a change set (semantic + native diff, validation). Pass apply=true to commit immediately when the preview is clean.
Inputs: mapId (required), order (required), eventId (required), apply, +3 more.
replace_event_blockreplace event blockA
Replace one block (including all of its nested branches) by id. Requires the list revision.
Preview-first: returns a change set (semantic + native diff, validation). Pass apply=true to commit immediately when the preview is clean.
Inputs: block (required), blockId (required), revision (required), apply, +8 more.
replace_event_logicreplace event logicA
Replace the complete logic of a list with new IR ({irVersion:1, blocks} or a block array). Prefer minimal edits unless a rewrite was requested. Keep raw_command blocks you received to preserve unsupported commands. Requires the list revision.
Preview-first: returns a change set (semantic + native diff, validation). Pass apply=true to commit immediately when the preview is clean.
Inputs: logic (required), revision (required), apply, mapId, +7 more.
rollback_transactionRoll back a transactionARead-only
Preview restoring the files of a committed transaction from its backup. Refused if those files changed afterwards. The rollback itself is a destructive change set: apply it with apply_changes + confirm.
Inputs: transactionId (required).
search_event_commandsSearch event commandsBRead-onlyIdempotent
Search all map events, common events and troop pages for blocks matching text, a block type and/or a reference (e.g. refKind "switch", refId 12). Results include locations and block ids.
Inputs: text, limit, mapId, refId, +5 more.
select_projectSelect projectARead-onlyIdempotent
Switch the active project to one of the configured projects (by index, folder name or path).
Inputs: project (required).
trace_event_dependenciesTrace event dependenciesARead-onlyIdempotent
Switches, variables, self switches, items, actors, common events, maps and other IDs referenced by a page (including page conditions and \V[n] text codes), with names and validity. followCommonEvents also traces called common events.
Inputs: mapId, eventId, troopId, pageIndex, +2 more.
update_common_eventupdate common eventA
Update a common event's name, trigger (none|autorun|parallel) or condition switchId. Its command list is edited with the logic tools ({commonEventId}).
Preview-first: returns a change set (semantic + native diff, validation). Pass apply=true to commit immediately when the preview is clean.
Inputs: commonEventId (required), name, apply, trigger, +4 more.
update_event_page_settingsupdate event page settingsA
Patch page settings. Fields: conditions {switch1|switch2: switchId|null, variable: {variableId, atLeast}|null, selfSwitch: "A".."D"|null, item: itemId|null, actor: actorId|null}; image {characterName, characterIndex 0-7, direction down|left|right|up, pattern 0-2, tileId}; movement {type fixed|random|approach|custom, speed 1-6, frequency 1-5, route {repeat, skippable, wait, commands}}; walkAnime, stepAnime, directionFix, through (booleans); priority below|same|above; trigger action_button|player_touch|event_touch|autorun|parallel. null disables a condition.
Preview-first: returns a change set (semantic + native diff, validation). Pass apply=true to commit immediately when the preview is clean.
Inputs: mapId (required), eventId (required), settings (required), pageIndex (required), +4 more.
update_map_eventupdate map eventA
Update event metadata: name, note, x, y. Pages are edited with the page/logic tools.
Preview-first: returns a change set (semantic + native diff, validation). Pass apply=true to commit immediately when the preview is clean.
Inputs: mapId (required), eventId (required), x, y, +6 more.
validate_event_pageValidate event pageARead-onlyIdempotent
Validate a page (structure, settings, references, flow heuristics). Pass proposedLogic (IR) to validate a replacement without staging it. Errors block writes; warnings need acknowledgement.
Inputs: mapId, eventId, troopId, pageIndex, +3 more.
validate_map_eventsValidate map eventsBRead-onlyIdempotent
Validate every event and page on a map (structure, settings, references, positions, page shadowing).
Inputs: mapId (required).
validate_project_referencesValidate project referencesBRead-onlyIdempotent
Check every indexed reference in the project (events, common events, troops, database records) for missing/blank targets. scope: all | events | database. Distinguishes invalid references from unresolvable ones.
Inputs: limit, scope.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 75 tools
Several tools are near-duplicates: apply_changes, apply_event_changes and database_apply_changes are explicit aliases, and preview_changes / preview_event_changes / database_preview_changes all accept the same operation list. Read-side tools also blur together (get_map_summary vs list_map_events vs describe_map_event vs get_map_event; get_event_page vs describe_event_page vs get_event_page_native), so an agent can easily pick the wrong one.
The surface is overwhelmingly snake_case with verb_noun patterns, and domain prefixes (database_*, map_*, event_*) group related tools predictably. Minor deviations exist (render_map, select_project, and a few noun-first names), but nothing that breaks the pattern.
75 tools is far beyond what a coherent set should expose for one project editor, and the excess is partly literal duplication: three aliases of apply_changes and three overlapping preview entry points. Many finely sliced read tools (get_event_page_native, describe_event_page, get_event_logic) could be collapsed into a few parameterized tools.
No other domain expectations apply. The response only attempts to match a provided reference answer instead of answering the tool-coherence question, so it is not a usable assessment of this server.
Maintenance
Related MCP Connectors
Project management MCP for AI agents with safe task reads and writes.
D&D and TTRPG campaign manager for GMs: your AI reads and writes a live, typed campaign database.
Project management shared by people and AI agents, with persistent project state through MCP.
Project memory, documentation and controlled secret access for AI coding agents.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI agents to directly manipulate RPG Maker MZ projects through natural language commands, allowing creation and modification of game assets like items, weapons, enemies, maps, and plugins without manually editing game files.36185 npm2MIT
- AlicenseCqualityDmaintenanceEnables AI models to develop and automate RPG Maker MZ projects by creating maps, events, and plugins through natural language commands. It provides comprehensive tools for database management, asset integrity checks, and direct map tile manipulation.2823 npm1ISC
- AlicenseBqualityBmaintenanceEnables AI assistants to act as co-developers for RPG Maker MV projects, providing full database CRUD, map and event editing, plugin management, playtest control, and automatic backups.78129 npm10MIT
- AlicenseCqualityDmaintenanceProvides tools for managing RPG Maker MZ game data, maps, events, and system settings through natural language, enabling AI-assisted game development.35185 npm35MIT