Skip to main content
Glama
RPG Maker MZ Authoring MCP

RPG Maker MZ Authoring MCP

by NixonMSilva

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
RPGMZ_PROJECTYesPath-delimited list of project roots; the first is selected at startup. Equivalent to the repeatable --project option. Each path must be the project folder containing game.rmmzproject and data/.
RPGMZ_MCP_STATE_DIRNoDirectory for backups and the transaction log, relative to the project. Equivalent to --state-dir..rpgmz-mcp
RPGMZ_MCP_ALLOW_WRITENoSet to 1 to enable apply_changes (writes). Otherwise the server is read-only. Equivalent to --allow-write.0
RPGMZ_MCP_ALLOW_ANY_PROJECTNoSet to 1 to let select_project open unconfigured paths. Off by default. Equivalent to --allow-any-project.0

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

RPG Maker MZ authoring server (events + database). Start with get_project_info. Read before writing: describe_map_event / get_event_logic / database_get_record. Before placing or moving events, look at the map: render_map (image) and get_map_passability (exact walkability); get_tile_info checks spots, find_path builds movement routes. Every write tool returns a PREVIEW change set (semantic + native diff, validation). Commit with apply_changes (or apply=true for clean, non-destructive edits). pageIndex is zero-based. Path-based logic edits need the list revision from get_event_logic. IDs are never renumbered. Resolve database references by name with database_resolve_reference instead of guessing IDs; pick new switches/variables with list_switches/list_variables onlyFree=true. Only set allowScript=true when the user explicitly asked for JavaScript.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_project_infoA

Project root, detected engine/editor version, write mode, available data files and plugin count. Call this first.

list_projectsB

Projects configured at server start (--project). The selected one is used by all tools.

select_projectA

Switch the active project to one of the configured projects (by index, folder name or path).

list_mapsA

Enumerate maps from MapInfos.json (IDs, names, tree parent and order). Map files are resolved by ID, never by display name.

get_map_summaryB

Map metadata (size, tileset, display name, note) and a summary of every event.

list_map_eventsC

Event IDs, names, coordinates, page counts and triggers on a map (paginated).

get_map_eventB

Event metadata and every page's settings (conditions, graphic, trigger, priority, movement), command counts, logic revisions and a short preview.

list_common_eventsC

Common event IDs, names and triggers (paginated).

get_common_eventB

A common event's trigger, condition switch and logic description (detailed=true also returns the Event IR).

list_pluginsB

Plugins from js/plugins.js with status and parameters (parsed as data; plugin code is never executed).

get_plugin_commandsA

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.

list_switchesB

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.

list_variablesB

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.

apply_changesA

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.

apply_event_changesA

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.)

database_apply_changesA

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.)

list_pending_changesA

Change sets previewed but not yet applied (expire after 1 hour).

get_change_setC

Full preview (diffs, diagnostics) of a pending change set.

discard_changesA

Drop a pending change set (nothing on disk is touched).

list_transactionsB

Committed (and failed) write transactions with changed files, revisions and backup locations, newest first.

rollback_transactionA

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.

get_event_pageA

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.

describe_event_pageA

Human-readable description of a page: conditions, graphic, trigger, priority, movement and the command flow with block ids.

describe_map_eventB

Human-readable description of an event and ALL its pages (page priority explained).

get_event_logicB

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).

get_event_page_nativeB

Raw native JSON of a page / common event / troop page, for debugging.

search_event_commandsB

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.

trace_event_dependenciesA

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.

find_referencesB

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.

get_event_ir_referenceB

Documentation of every Event IR block type, condition, route command and convention.

list_event_templatesA

Event templates usable with create_event_from_template, with their parameters.

validate_event_pageA

Validate a page (structure, settings, references, flow heuristics). Pass proposedLogic (IR) to validate a replacement without staging it. Errors block writes; warnings need acknowledgement.

validate_map_eventsB

Validate every event and page on a map (structure, settings, references, positions, page shadowing).

validate_project_referencesB

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.

analyze_event_flowB

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.

create_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.

update_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.

delete_map_eventA

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.

create_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.

clone_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.

delete_event_pageA

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.

update_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.

reorder_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.

update_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.

create_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.

append_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.

insert_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.

replace_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.

remove_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.

move_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.

replace_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.

preview_event_changesA

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.

preview_changesA

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.

render_mapA

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.

get_map_passabilityA

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.

get_tile_infoA

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.

find_pathA

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.

database_list_categoriesB

Available database categories with record counts and max IDs.

database_list_recordsB

Concise record summaries of a category (paginated). Blank (unnamed) slots are hidden unless includeBlank=true.

database_get_recordB

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.

database_search_recordsC

Search records by name, note, description or note-tag metadata across one or more categories.

database_resolve_referenceA

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.

database_find_referencesB

Every known reference to a record from events, common events, troops and other records (run before deleting or repurposing a record).

database_validate_categoryB

Record validation (types, enums, ranges, required native fields), reference validation and advisory design diagnostics for a category or selected IDs.

database_compare_recordsC

Structural differences between two records of the same category.

database_list_templatesA

Record templates for database_create_record (template + templateParams).

database_describe_schemaC

Patchable fields (with types, ranges, enums, reference kinds) and collections of a category.

database_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.

database_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.

database_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.

database_delete_recordA

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.

database_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.

database_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.

database_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.

database_preview_changesA

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.

Prompts

Interactive templates invoked by user choice

NameDescription
create_npc_interactionGuided workflow to add a talking NPC with optional choices/branches.
create_quest_npcGuided workflow for an NPC whose behavior depends on quest progress.
create_treasure_chestChest with a reward, self switch and opened page.
modify_existing_eventMinimal, safe edit of an existing event.
give_item_in_eventCreate an event that gives a database item resolved by name.
design_database_entryCreate or tune an item, skill, weapon, armor, enemy or state.

Resources

Contextual data attached and managed by the client

NameDescription
event-ir-referenceEvery Event IR block type, condition and convention
project-infoRoot, versions, write mode and map list of the active project

TDQS

C2.9/5.0

Scored across 75 tools

Disambiguation2/5

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.

Naming Consistency4/5

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.

Tool Count2/5

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.

Completeness1/5

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

ActivityMaintained
ResponsivenessNo recent community issues