{"name":"io.github.DiegoLopez0208/rpgmaker-mv-ultimate","slug":"diegolopez0208-rpgmaker-mv-ultimate","title":"RPG Maker MV Ultimate MCP","description":"RPG Maker MV Ultimate: AI copilot to generate, edit and understand RPG Maker MV projects (MCP)","url":"https://mcp.market/server/diegolopez0208-rpgmaker-mv-ultimate","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":40,"stars":25,"forks":3,"downloads_week":166,"last_push_at":"2026-09-08T14:50:38.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/DiegoLopez0208/RpgMakerMVUltimate-MCP","website":null,"version":"5.16.1","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"rpgmaker-mv-mcp","version":"5.16.1","transport":{"type":"stdio"},"environmentVariables":[{"description":"Absolute path to the RPG Maker MV project to edit (the folder with data/ and js/). The server starts without it; needed for real editing, or call set_project_path at runtime.","name":"RPGMAKER_PROJECT_PATH"},{"description":"Base URL of an OpenAI-compatible vision endpoint to enable analyze_image mode \"ai\" (e.g. https://api.openai.com or http://localhost:11434). Unset = vision disabled; every other tool works offline.","name":"VISION_API_URL"},{"description":"Bearer token for the vision endpoint (only sent when set).","isSecret":true,"name":"VISION_API_KEY"},{"description":"Vision model name to request (e.g. gpt-4o, llava). Defaults to meta/llama-3.2-90b-vision-instruct.","name":"VISION_MODEL"},{"description":"Set to 1 to also advertise the 101 legacy v4 tool names (they remain callable regardless of this flag).","name":"RPGMV_LEGACY_TOOLS"}]}],"tools":[{"name":"add_common_event_command","description":"Append one event command to an existing common event's command list, inserted before the terminator so the list stays valid; data/CommonEvents.json is written immediately. Returns the updated common event. Fails with an error if the common event ID does not exist. Commands run in list order — call repeatedly to build a sequence. This is the common-event counterpart of add_event_command (which targ","write_action":false,"price_micros":0,"input_schema":null},{"name":"add_enemy_to_troop","description":"Append one enemy to an existing troop at an automatically computed battle position (spread across the screen); data/Troops.json is written immediately. Returns the updated troop object. Fails with an error if the troop does not exist; the enemy ID is not validated, so confirm it with get_enemy. Use create_troop to build a formation from scratch.","write_action":false,"price_micros":0,"input_schema":null},{"name":"add_event_command","description":"Append one event command (Show Text, Transfer Player, Control Switches, etc.) to a page of an existing map event, inserted just before the page's terminator so the page stays valid. The map file is written to disk immediately. Returns the updated command list length. Fails with an error if the map, event, or page index does not exist. Commands run in list order — call this repeatedly to build a se","write_action":false,"price_micros":0,"input_schema":null},{"name":"analyze_image","description":"Analyze images related to the project. mode \"ai\" sends a project image file (tileset, character sheet, map screenshot, battler) to an external OpenAI-compatible Vision API and returns {analysis, model, tokens_used} — NETWORK SIDE EFFECT: the resized JPEG leaves your machine to the endpoint configured via VISION_API_URL / VISION_API_KEY / VISION_MODEL env vars; fails if the path escapes the project","write_action":false,"price_micros":0,"input_schema":null},{"name":"connect_maps","description":"Create a pair of transfer events so the player can walk between two maps in both directions: one event on map A teleporting to B's position, and one on map B teleporting back. Both map files are written to disk immediately. Returns the two created event IDs. Fails with an error if either map does not exist. Use create_teleport_event instead when you only need a one-way transfer.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_actor","description":"Create a new playable actor and persist it to data/Actors.json immediately (the file on disk is rewritten; close the RPG Maker editor or it may overwrite the change). The actor is assigned the next free ID automatically. Omitted fields get sensible engine defaults (level 1, class 1, max level 99). Returns the complete created actor object including its new id, which you need for update_actor or pa","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_armor","description":"Create a new armor piece and persist it to data/Armors.json immediately with the next free ID. Returns the complete created armor object including its new id — use that ID in actor equips, create_chest, or create_shop. Fails with an error if Armors.json cannot be read or written. Use create_weapon for weapons and create_item for consumables.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_boss_enemy","description":"Convenience wrapper around create_enemy for boss fights: creates an enemy with boosted default stats/rewards and a two-phase action pattern (normal attack plus a special skill used more as HP drops). Persisted to data/Enemies.json immediately with the next free ID. Returns the complete created enemy object including its new id — pair it with create_troop and create_boss_event to stage the fight. F","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_buff_skill","description":"Convenience wrapper around create_skill for stat buffs: creates a skill that raises one parameter on the target for a set number of turns (engine buff system, stacks to 2 levels of +25% each). Persisted to data/Skills.json immediately with the next free ID. Returns the complete created skill object including its new id. Fails with a validation error if required arguments are missing. Use create_sk","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_chest","description":"High-level helper: create a treasure chest on a map as a ready-to-play 2-page event — page 1 plays the open animation, gives the listed items, and turns on Self Switch A; page 2 shows the chest already opened so it cannot be looted twice. The map file is written to disk immediately. Returns the created event including its id. Fails with an error if the map does not exist; item IDs are NOT validate","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_class","description":"Create a new actor class (defines stat growth, EXP curve, learnable skills, and traits) and persist it to data/Classes.json immediately with the next free ID. Returns the complete created class object including its new id — assign it to actors via create_actor/update_actor classId. Fails with an error if Classes.json cannot be read or written.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_common_event","description":"Create a new common event and persist it to data/CommonEvents.json immediately with the next free ID. With trigger 0 it only runs when called from another event (command code 117); with trigger 1 (autorun, blocks the player) or 2 (parallel, background) it runs whenever its switchId is ON — so always pair trigger>0 with a real switch or it will loop forever from game start. Returns the complete cre","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_damage_skill","description":"Convenience wrapper around create_skill for offensive skills: creates an HP-damage, physical-hit, can-crit skill in data/Skills.json (written immediately) with the next free ID. Returns the complete created skill object including its new id. Fails with a validation error if required arguments are missing or malformed. Use create_skill instead when you need TP costs, multi-hit, drain, custom messag","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_database_entry","description":"Create a new entry in an RPG Maker MV database with the next free ID; the data file is written immediately. Returns the complete created object including its new id. Two forms: with `entity` + `data` it creates a raw entry (omitted fields get engine defaults; data.name is expected); with `preset` it builds a ready-to-use entry from a recipe — damage_skill {name, mpCost, scope, formula, element?, a","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_enemy","description":"Create a new enemy and persist it to data/Enemies.json immediately with the next free ID. Returns the complete created enemy object including its new id. To make it appear in battle, add it to a troop afterwards (create_troop, add_enemy_to_troop, or create_random_encounter_troop). Fails with an error if Enemies.json cannot be read or written. For boss-tier enemies with a preset action pattern, cre","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_healing_skill","description":"Convenience wrapper around create_skill for restorative skills: creates an HP-recover skill usable in battle and menu, persisted to data/Skills.json immediately with the next free ID. Returns the complete created skill object including its new id. Fails with a validation error if required arguments are missing or malformed. Use create_skill instead for MP restoration, revival, or heal-plus-status ","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_inn","description":"High-level helper: create an innkeeper event with the classic inn flow — asks the player (Yes/No choice), checks gold, deducts the cost, fades out, fully recovers the party, and fades back in; refuses if the player cannot pay. The map file is written to disk immediately. Returns the created event including its id. Fails with an error if the map does not exist. For a general store use create_shop.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_item","description":"Create a new consumable item (potion, scroll, key item) and persist it to data/Items.json immediately with the next free ID. Omitted fields get engine defaults (consumable, usable from menu, scope = one ally). Returns the complete created item object including its new id — use that ID in create_chest, create_shop, or event commands. Fails with an error if Items.json cannot be read or written. Use ","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_map","description":"Create a new map file (data/MapNNN.json) with the next free map ID and register it in MapInfos.json — both files are written to disk immediately. With a `theme`, also generates a tile layout; when `tilesetId` is provided with a theme, reads the tileset's real tile IDs for a coherent layout including shadow/region layers. Returns the new map's id, name, and dimensions — keep the id for create_npc, ","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_map_event","description":"Create a new low-level event on a map at the given position and persist the map file immediately; the event gets the next free event ID. If you pass no `pages`, the event is created with one empty page that does nothing until you add commands with add_event_command. Returns the created event object including its new id. Fails with an error if the map does not exist. For common patterns prefer the ","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_npc","description":"High-level helper: create a talking NPC on a map as a ready-to-play 2-page event — page 1 shows the dialogue on action button and turns on Self Switch A; page 2 (active once A is on) shows the last dialogue line for repeat talks. The map file is written to disk immediately. Returns the created event including its id. Fails with a validation error if arguments are malformed or the map does not exis","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_random_encounter_troop","description":"Convenience wrapper around create_troop: creates a troop from a list of enemy IDs with battle positions computed automatically (evenly spread). Persisted to data/Troops.json immediately with the next free ID. Returns the complete created troop including its new id — add it to a map's encounter list or use it in events. Enemy IDs are not validated; confirm them with get_enemies first. Use create_tr","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_shop","description":"High-level helper: create a shopkeeper event that opens the buy/sell screen (Shop Processing) with the given goods when the player talks to it. The map file is written to disk immediately. Returns the created event including its id. Fails with an error if the map does not exist; item IDs in goods are NOT validated — confirm them with get_items/get_weapons/get_armors or the shop will sell null entr","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_skill","description":"Create a new skill with full control over every property (damage formula, costs, scope, effects, traits) and persist it to data/Skills.json immediately with the next free ID. Returns the complete created skill object including its new id — link it to classes via create_class/update_class learnings or to enemies via action patterns. Fails with an error if Skills.json cannot be read or written. For ","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_state","description":"Create a new status condition (ailment or buff) and persist it to data/States.json immediately with the next free ID. The state's gameplay impact comes from its `traits` (e.g. a poison state needs an HP-regen trait with a negative value: {code: 22, dataId: 7, value: -0.1} for -10% HP per turn) and `restriction`. Returns the complete created state object including its new id — inflict it via create","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_state_skill","description":"Convenience wrapper around create_skill for status-infliction skills (poison, sleep, paralysis): creates a magical-hit skill whose only effect is adding one state with a given chance. Persisted to data/Skills.json immediately with the next free ID. Returns the complete created skill object including its new id. Fails with a validation error if required arguments are missing. The state itself must ","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_teleport_event","description":"High-level helper: create a one-way transfer event (door, stairs, cave entrance) that moves the player to a position on another map. The source map file is written to disk immediately. Returns the created event including its id. Fails with an error if the source map does not exist; the DESTINATION is not validated, so double-check destMapId/destX/destY or the player will teleport into a void — val","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_troop","description":"Create a new troop (enemy formation) with explicit member positions and persist it to data/Troops.json immediately with the next free ID. Returns the complete created troop object including its new id — use that ID in create_boss_event, map encounter lists, or Battle Processing commands. Enemy IDs in members are NOT validated; confirm them with get_enemies first. For auto-positioned members, creat","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_weapon","description":"Create a new weapon and persist it to data/Weapons.json immediately with the next free ID. Returns the complete created weapon object including its new id — use that ID in actor equips, create_chest, or create_shop. Fails with an error if Weapons.json cannot be read or written. Use create_item for consumables and create_armor for defensive gear.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_actor","description":"DESTRUCTIVE: delete an actor by setting its entry in data/Actors.json to null (written immediately; not undoable — re-create it if needed). If the actor is in the starting party (System.json partyMembers) or referenced by events, those references break — update them first. The ID is never reused. Returns the deleted actor object for reference. Fails with an error if the ID does not exist.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_class","description":"DESTRUCTIVE: delete a class by setting its entry in data/Classes.json to null (written to disk immediately; not undoable — re-create it if needed). Actors still referencing this classId will break at runtime; reassign them with update_actor first. The ID is never reused by create_class. Returns the deleted class object for reference. Fails with an error if the ID does not exist.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_database_entry","description":"DESTRUCTIVE: delete a database entry by nulling it out in its data file (written immediately; not undoable — re-create it if needed; IDs are never reused). References elsewhere are NOT cleaned up and will break at runtime: actors in the starting party, classes assigned to actors, skills in class learnings/enemy actions, items in chests/shops, enemies in troops, states in skill effects, troops in m","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_enemy","description":"DESTRUCTIVE: delete an enemy by setting its entry in data/Enemies.json to null (written immediately; not undoable). Troops that still include this enemy will reference a null entry and may break battles — check get_troops and update affected troops first. The ID is never reused. Returns the deleted enemy object for reference. Fails with an error if the ID does not exist.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_item","description":"DESTRUCTIVE: delete an item, weapon, or armor by setting its entry to null in the database chosen by `type` (Items.json, Weapons.json, or Armors.json; written immediately; not undoable). Chests, shops, actor equips, and events referencing the ID will give/sell nothing or break — update them first. The ID is never reused. Returns the deleted object for reference. Fails with an error if the ID does ","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_map_event","description":"DESTRUCTIVE: remove an event from a map (written to disk immediately; not undoable — fetch it first with get_map_event if you may want it back). Other events that target it by ID (e.g. Set Event Location) will break. Returns the deleted event object for reference. Fails with an error if the map or event does not exist.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_skill","description":"DESTRUCTIVE: delete a skill by setting its entry in data/Skills.json to null (written immediately; not undoable). Class learnings, enemy action patterns, and actors who already know the skill will reference a null entry — clean those up first (get_classes, get_enemies). Never delete skills 1 (Attack) or 2 (Guard); the engine uses them directly. The ID is never reused. Returns {deleted: <skill>} fo","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_state","description":"DESTRUCTIVE: delete a state by setting its entry in data/States.json to null (written immediately; not undoable). Skills, items, and traits referencing this state ID will silently stop working or error — search for references first. NEVER delete state 1 (KO); the battle engine requires it. The ID is never reused. Returns the deleted state object. Fails with an error if the ID does not exist.","write_action":true,"price_micros":0,"input_schema":null},{"name":"duplicate_map","description":"Copy an existing map — tiles, events, and settings — into a brand-new map file with the next free map ID, registered in MapInfos.json (both files written immediately). The source map is not modified. Returns the new map's id and name; transfer events in the copy still point to their ORIGINAL destinations, so review them with get_map_events and fix with update_map_event. Fails with an error if the ","write_action":false,"price_micros":0,"input_schema":null},{"name":"edit_map","description":"Modify existing maps; the affected map files / MapInfos.json are written immediately. `action` selects the edit: \"fill_layer\" overwrites an ENTIRE tile layer with one tile ID (destructive, not undoable; layers: 0-1 ground, 2-3 upper, 4 shadow bits 0-15, 5 region IDs 0-255; tileId 0 clears; find valid IDs with get_project_context detail \"tileset\"); \"set_display_names\" sets the player-visible displa","write_action":false,"price_micros":0,"input_schema":null},{"name":"fill_map_layer","description":"Overwrite an ENTIRE tile layer of a map with one tile ID, replacing whatever was painted there before — destructive and not undoable, the map file is written immediately. Returns a confirmation with the map ID and layer filled. Fails with an error if the map does not exist or the layer index is out of range. Useful for laying base terrain before placing details; use tileId 0 to clear a layer. To i","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_map","description":"Create a new map file (next free map ID, registered in MapInfos.json; both files written immediately). `mode` selects the generator: \"blank\" makes an empty map you paint later (edit_map fill_layer); \"themed\" generates a simple tile layout for a theme using the tileset's real tiles; \"procedural\" is the full generator — for themes with matching RTP reference templates (town, dungeon, interior, castl","write_action":true,"price_micros":0,"input_schema":null},{"name":"generate_map_batch","description":"Generate several procedural maps in one call (same engine as generate_map_v3); each spec creates a new map file written to disk immediately. Returns an array of results with each map's key, mapId, and seed — use those mapIds with connect_maps to link them into a world. Fails with an error if any spec has an unknown theme; maps generated before the failure remain on disk. Prefer this over repeated ","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_map_v3","description":"Procedurally generate a complete map (terrain via Perlin noise / BSP dungeons / cellular-automata caves depending on theme) and write it to a new data/MapNNN.json plus MapInfos.json immediately. By default also places themed events (NPCs, chests, bosses, transfers). Returns {mapId, seed, width, height, eventCount}; save the seed to regenerate the identical map later. Fails with an error if the the","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_actor","description":"Read-only: fetch a single actor object from data/Actors.json by its numeric ID. Returns the full actor (name, classId, equips, traits, etc.) or null if the ID is out of range or was deleted. Prefer this over get_actors when you already know the ID, to keep responses small.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_actors","description":"Read-only: list every actor (playable character) defined in the project's data/Actors.json. Returns an array of full actor objects (null placeholder entries are filtered out); returns an empty array if no actors exist. Use this to discover actor IDs before calling get_actor, update_actor, or delete_actor; use search_actors if you only know part of a name.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_animation","description":"Read-only: fetch one animation from data/Animations.json by ID, including its frame and timing data. Returns the animation object, or null if the ID is out of range. Prefer this over get_animations when you know the ID and want details like frame count.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_animations","description":"Read-only: list every battle/skill animation from data/Animations.json (id, name, source image, frames, timings). Returns an array of animation objects; empty array if none. Use this to pick valid animationId values for skills, items, and events — this server cannot create new animations, so choose from the existing ones.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_armors","description":"Read-only: list all armors from data/Armors.json (shields, headgear, body armor, accessories). Returns an array of full armor objects; empty array if none. Use search_items with type \"armor\" to filter by name instead of listing everything.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_class","description":"Read-only: fetch one class from data/Classes.json by ID, including its parameter curves, EXP formula, skill learnings, and traits. Returns the class object, or null if the ID is out of range or deleted. Prefer this over get_classes when you know the ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_classes","description":"Read-only: list every class from data/Classes.json (stat growth curves, learnable skills, traits). Returns an array of full class objects; empty array if none. Use get_class for one entry or search_classes to find an ID by name.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_common_events","description":"Read-only: list every common event from data/CommonEvents.json (reusable command sequences callable from any event, or auto-running via a switch). Returns an array of full common event objects including their command lists; empty array if none. Use this to find IDs before update_common_event or add_common_event_command.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_enemies","description":"Read-only: list every enemy from data/Enemies.json (stats, drops, action patterns, traits). Returns an array of full enemy objects; empty array if none. Use get_enemy for one entry or search_enemies to find an ID by name. Note: enemies appear in battle only through troops (see get_troops).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_enemy","description":"Read-only: fetch one enemy from data/Enemies.json by ID, including stats, EXP/gold rewards, drop items, and action patterns. Returns the enemy object, or null if the ID is out of range or deleted. Prefer this over get_enemies when you know the ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_game_title","description":"Read-only: return just the game title string from System.json (the name shown on the title screen and window bar). Lighter than get_system when the title is all you need.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_items","description":"Read-only: list all consumable items from data/Items.json (potions, keys, quest items — not weapons or armors). Returns an array of full item objects; empty array if none. Use get_weapons / get_armors for equipment, or search_items to filter by name.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_map","description":"Read-only: load a complete map file (data/MapNNN.json) by ID: dimensions, tileset, the full tile data array (width × height × 6 layers), all events, encounter lists, and BGM settings. Returns the full map object — this can be large for big maps; if you only need events use get_map_events, and for a visual overview use render_map_ascii. Fails with an error if the map file does not exist.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_map_event","description":"Read-only: fetch a single event from a map by event ID, including all its pages, conditions, graphics, and command lists. Returns the event object, or null if the event ID does not exist on that map. Fails with an error if the map file itself does not exist. Use get_map_events to discover event IDs first.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_map_events","description":"Read-only: list all events on one map (NPCs, chests, doors, triggers) without the tile data, keeping the response small. Returns an array of event objects with id, name, x, y, and pages. Fails with an error if the map file does not exist. Use get_map_event for a single event, or search_map_events to find events by name.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_map_infos","description":"Read-only: list the project's map tree from data/MapInfos.json — every map's id, name, parentId (folder structure), and editor ordering, but NOT tile or event data. Returns an array of map info objects. Use this to discover map IDs; then call get_map for a specific map's full contents.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_project_context","description":"Read-only: pre-digested project knowledge — CALL THIS FIRST in a session. `detail` selects the depth: \"full\" (default) returns id+name lists for every database, switch/variable names, starting position, and available sprite filenames per img/ folder — everything needed to create content without inventing broken references; \"summary\" is a cheap health check (entry counts per data file); \"assets\" sc","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_skill","description":"Read-only: fetch one skill object from data/Skills.json by its numeric ID, including damage formula, MP/TP cost, scope, and effects. Returns null (not an error) if the ID is out of range or the skill was deleted, so check the result before using it. Prefer this over get_skills when you know the ID; use search_skills to find an ID by name.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_skills","description":"Read-only: list all skills from data/Skills.json (attack skills, magic, abilities usable by actors and enemies). Returns an array of full skill objects; empty array if none. Use get_skill when you already know the ID, or search_skills to filter by name or description.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_state","description":"Read-only: fetch one state from data/States.json by ID, including restriction, duration, removal conditions, and traits. Returns the state object, or null if the ID is out of range or deleted. Note: state 1 is the engine's KO/Death state — avoid repurposing it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_states","description":"Read-only: list every state (status condition: poison, sleep, KO, buffs) from data/States.json. Returns an array of full state objects; empty array if none. Use get_state for one entry or search_states to find an ID by name. State IDs are referenced by skills (effect code 21) and traits.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_switches","description":"Read-only: list all game switch names from System.json as an array indexed by switch ID (index 0 is unused; unnamed switches are empty strings). Switches are the project's global boolean flags used in event conditions. Use this to find a free or existing switch ID before set_switch_name, create_common_event, or create_puzzle_switch.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_system","description":"Read-only: return the entire data/System.json — game title, starting party and position, switch/variable name lists, vehicle settings, terms, sounds, and more. The response can be large; prefer the focused tools (get_switches, get_variables, get_game_title) when you need just one piece. Returns the full system object.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_tileset","description":"Read-only: fetch one tileset from data/Tilesets.json by ID, including its tilesetNames (image files from img/tilesets/), mode, and the flags array encoding passability per tile. Returns the tileset object, or null if the ID is out of range. For categorized, ready-to-use tile IDs prefer get_tile_ids_for_tileset.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_tilesets","description":"Read-only: list every tileset configuration from data/Tilesets.json (which image sheets each map style uses, plus per-tile passability/terrain flags). Returns an array of full tileset objects; empty array if none. Use get_tileset for one entry, or scan_project_assets / get_tile_ids_for_tileset for a digested view of usable tile IDs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_troop","description":"Read-only: fetch one troop from data/Troops.json by ID, including its enemy members with screen positions and any battle event pages. Returns the troop object, or null if the ID is out of range or deleted. Prefer this over get_troops when you know the ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_troops","description":"Read-only: list every troop (enemy formation used in battles) from data/Troops.json, including member enemy IDs/positions and battle event pages. Returns an array of full troop objects; empty array if none. Troop IDs are what battle commands and create_boss_event reference — enemies alone never appear in battle.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_variables","description":"Read-only: list all game variable names from System.json as an array indexed by variable ID (index 0 is unused; unnamed variables are empty strings). Variables are the project's global numeric values used in event logic. Use this to find a free or existing variable ID before set_variable_name or event commands that reference variables.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_weapons","description":"Read-only: list all weapons from data/Weapons.json. Returns an array of full weapon objects including params (stat bonuses) and traits; empty array if none. Use search_items with type \"weapon\" to filter by name instead of listing everything.","write_action":false,"price_micros":0,"input_schema":null},{"name":"manage_map_event","description":"Create, modify or remove events on a map; the map file is written immediately. action \"create\" without preset makes a low-level event at x/y (empty page unless `pages` given; add behavior later with add_command). action \"create\" WITH preset builds a complete, ready-to-play event: \"npc\" (2-page dialogue NPC: {name, dialogues[], characterName?, characterIndex?}), \"chest\" (one-time loot: {items: [{ty","write_action":true,"price_micros":0,"input_schema":null},{"name":"organize_map_tree","description":"Re-parent maps in the editor's map tree by setting each map's parentId in MapInfos.json (written to disk immediately). Purely organizational — gameplay, transfers, and tile data are unaffected. Returns the updated tree entries. Map IDs that do not exist are skipped and reported. Tip: a map used as a folder is just a normal map; create one with create_map first if needed.","write_action":false,"price_micros":0,"input_schema":null},{"name":"populate_map_events","description":"Bulk-add several events of one kind (npc, chest, or boss) to an existing map at automatically chosen walkable positions; the map file is written to disk immediately. Returns the list of created events with their IDs and positions. Fails with an error if the map does not exist or the eventType is unknown. Use the individual helpers (create_npc, create_chest, create_boss_event) when you need exact p","write_action":false,"price_micros":0,"input_schema":null},{"name":"query_database","description":"Read-only: query any RPG Maker MV database (data/*.json). Three forms depending on arguments: no id/query lists every non-null entry of the entity; `id` fetches one entry (returns null, not an error, if it does not exist); `query` does a case-insensitive name search (items/weapons/armors/skills also match descriptions). Returns an array (list/search) or a single object/null (id). Use this to disco","write_action":false,"price_micros":0,"input_schema":null},{"name":"query_map","description":"Read-only: inspect maps. `view` selects what you get: \"infos\" lists the map tree from MapInfos.json (ids, names, folder parentIds — no mapId needed); \"full\" returns one complete MapNNN.json (dimensions, 6-layer tile data, events — can be large); \"events\" lists a map's events (with `query`, filters by name, case-insensitive); \"event\" returns one event by eventId (null if absent); \"validate\" lints a","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_actors","description":"Read-only: case-insensitive substring search over actor names and nicknames in data/Actors.json. Returns an array of matching actor objects (empty array if nothing matches — not an error). Use this when you know a name fragment but not the ID; use get_actors to list everything.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_classes","description":"Read-only: case-insensitive substring search over class names in data/Classes.json. Returns an array of matching class objects; empty array if nothing matches. Use this to find a class ID by name; use get_classes for the full list.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_enemies","description":"Read-only: case-insensitive substring search over enemy names in data/Enemies.json. Returns an array of matching enemy objects; empty array if nothing matches. Use this to find an enemy ID by name; use get_enemies for the full list.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_items","description":"Read-only: case-insensitive substring search over names and descriptions in one equipment database (items, weapons, or armors — chosen by `type`, default \"item\"). Returns an array of matching objects; empty array if nothing matches. Use this to find IDs by name; use the get_items / get_weapons / get_armors tools to list a full database.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_map_events","description":"Read-only: case-insensitive substring search over event names on one map. Returns an array of matching event objects with their IDs and positions; empty array if nothing matches. Fails with an error if the map does not exist. Use this to locate an event for update_map_event or delete_map_event without dumping the whole map.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_skills","description":"Read-only: case-insensitive substring search over skill names and descriptions in data/Skills.json. Returns an array of matching skill objects; empty array if nothing matches. Use this to find a skill ID by name; use get_skills for the full list or get_skill when you know the ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_states","description":"Read-only: case-insensitive substring search over state names in data/States.json. Returns an array of matching state objects; empty array if nothing matches. Use this to find a state ID by name before create_state_skill or skill effects.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_map_display_names","description":"Set the player-visible display name of several maps in one call (the name briefly shown on screen when entering a map). Each affected map file is written to disk immediately. Returns a summary of updated maps. Maps that do not exist are reported as errors in the result. Use update_map_event/organize_map_tree for other map metadata; this only touches displayName.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_project_path","description":"Switch this server to a DIFFERENT RPG Maker MV project directory for all subsequent tool calls (session-wide side effect; persists until changed again or the server restarts). Validates that the path contains data/System.json and fails with an error otherwise, leaving the previous project active. Returns the new active path. Without this tool, the RPGMAKER_PROJECT_PATH environment variable set at ","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_switch_name","description":"Rename a game switch in System.json (written to disk immediately). This is documentation only — it does not change any event logic or the switch's runtime value, but good names keep event conditions understandable. Returns the updated switch list entry. Fails with an error if the ID is out of the switch array's range.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_variable_name","description":"Rename a game variable in System.json (written to disk immediately). This is documentation only — it does not change any event logic or the variable's runtime value. Returns the updated variable list entry. Fails with an error if the ID is out of the variable array's range.","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_actor","description":"Partially update an existing actor in data/Actors.json: only the keys present in `fields` are overwritten, all other properties are preserved. The file is written to disk immediately and there is no undo, so read the actor first (get_actor) if you need to restore values later. Returns the full actor object after the update. Fails with an error if no actor exists with the given ID.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_class","description":"Partially update an existing class in data/Classes.json: only the keys present in `fields` are overwritten (note: passing `learnings` or `traits` replaces the whole array, it does not merge). The file is written to disk immediately; no undo. Returns the full class object after the update. Fails with an error if the class ID does not exist.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_common_event","description":"Partially update an existing common event in data/CommonEvents.json: only the keys present in `fields` are overwritten (passing `list` replaces the whole command list). Written to disk immediately; no undo. Returns the full common event after the update. Fails with an error if the ID does not exist. To append a single command instead of replacing the list, use add_common_event_command.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_database_entry","description":"Partially update an existing database entry: only the keys in `fields` are overwritten (arrays like traits/learnings/actions are replaced wholesale, not merged); the data file is written immediately and there is no undo, so fetch current values with query_database first if you may revert. Returns the full entry after the update. Fails with an error if the ID does not exist. Special append forms th","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_enemy","description":"Partially update an existing enemy in data/Enemies.json: only the keys present in `fields` are overwritten (array fields like actions and dropItems are replaced wholesale, not merged). Written to disk immediately; no undo. Returns the full enemy object after the update. Fails with an error if the enemy ID does not exist.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_game_title","description":"Change the game title in System.json (written to disk immediately); this is what appears on the title screen and the game window. Returns the new title. Other System.json fields are untouched — use update_starting_position for the start location.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_item","description":"Partially update an existing item, weapon, or armor: only the keys present in `fields` are overwritten. Writes the corresponding data file (Items.json, Weapons.json, or Armors.json) to disk immediately; there is no undo. Returns the full object after the update. Fails with an error if no entry exists with the given ID and type. The `type` argument selects which database file is modified — passing ","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_map_event","description":"Partially update an existing map event: only the keys present in `fields` are overwritten (e.g. move it by setting x/y, rename it, or replace its pages). The map file is written to disk immediately; replacing `pages` discards the old pages entirely, so fetch them first with get_map_event if you need to merge. Returns the full event object after the update. Fails with an error if the map or event d","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_skill","description":"Partially update an existing skill in data/Skills.json: only the keys present in `fields` are overwritten, everything else is preserved. The file is written to disk immediately; there is no undo, so fetch the current values with get_skill first if you may need to revert. Returns the full skill object after the update. Fails with an error (\"Skill with ID N not found\") if the ID does not exist or wa","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_starting_position","description":"Set where a new game begins: the player's starting map and tile coordinates in System.json (written to disk immediately). Returns the new starting position. The map ID and coordinates are NOT validated against existing maps, so verify with get_map_infos first — a bad value makes new games start in a void. Does not affect saved games.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_state","description":"Partially update an existing state in data/States.json: only the keys present in `fields` are overwritten (the traits array is replaced wholesale). Written to disk immediately; no undo. Returns the full state object after the update. Fails with an error if the state ID does not exist. Be careful editing state 1 (KO) — the engine depends on it.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_tileset","description":"Partially update a tileset in data/Tilesets.json: only the keys present in `fields` are overwritten (e.g. swap an image in tilesetNames or adjust flags). Written to disk immediately; no undo. CAUTION: every map using this tileset is visually affected, and malformed flags break passability project-wide — read the current object with get_tileset first. Returns the full tileset object after the updat","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-20T20:13:02.766Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T20:13:02.693Z","components":{"code":{"score":25,"max":25,"notes":["241 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 12 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"rpgmaker-mv-mcp","version":"5.16.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-08-31T20:27:42.294Z","repositoryUrl":"git+https://github.com/DiegoLopez0208/RpgMakerMVUltimate-MCP.git","weeklyDownloads":166}],"repo":{"found":true,"owner":"DiegoLopez0208","repo":"RpgMakerMVUltimate-MCP","archived":false,"pushedAt":"2026-09-08T14:50:38Z","stars":25,"forks":3,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/87457333?v=4","ownerCreatedAt":"2021-07-15T02:21:33Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/87457333?v=4&s=128","source":"github"},"presence":{"stars":25,"forks":3,"downloadsWeek":166,"license":"MIT","lastPushAt":"2026-09-08T14:50:38.000Z","score":40}}}},"grade_history":[],"reviews":[]}