rpgmaker-xp-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| RPGMAKER_RTP_PATH | No | Path to the RPG Maker XP RTP installation. Defaults to the Steam RPG Maker XP install location. | |
| RPGMAKER_PROJECT_PATH | Yes | Path to the RPG Maker XP project folder containing Game.rxproj and Data/. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_actorsB | Get all actors from the RPG Maker XP project (parameter tables omitted) |
| get_actorA | Get a specific actor by ID, including its 6x100 parameters table (MaxHP, MaxSP, STR, DEX, AGI, INT per level) |
| update_actorB | Update an actor's properties (XP fields: name, class_id, initial_level, final_level, exp_basis, exp_inflation, character_name, character_hue, battler_name, battler_hue, weapon_id, armor1_id..armor4_id, weapon_fix, armor1_fix..armor4_fix, parameters) |
| create_actorA | Create a new actor with RMXP defaults (linear stat growth curves unless a parameters Table is provided) |
| search_actorsC | Search actors by name |
| get_itemsB | Get all items from the project |
| get_weaponsB | Get all weapons from the project |
| get_armorsB | Get all armors from the project |
| get_skillsA | Get all skills from the project |
| get_skillA | Get a specific skill by ID |
| create_skillA | Create a new skill with full control over RPG::Skill fields. XP has no damage formulas: damage = power scaled by stat influence rates (atk_f/str_f for physical, int_f for magical). Negative power heals. |
| create_damage_skillA | Create a damage-dealing skill (simplified). Set physical=true for ATK/PDEF based damage, otherwise INT/MDEF based (magic). Engine formula: damage = (power + ATKatk_f/100 - PDEFpdef_f/200 - MDEFmdef_f/200) * (20 + STRstr_f/100 + DEXdex_f/100 + AGIagi_f/100 + INT*int_f/100) / 20. Reference: default-DB Fire is power 140, sp 75. |
| create_healing_skillA | Create a healing skill (simplified). In XP healing is negative power. Amount healed = power * (20 + INT*int_f/100) / 20 with int_f=50 (default-DB convention), so it scales with the caster's INT. Reference: default-DB Heal is power 150, sp 80. |
| create_state_skillA | Create a state-inflicting skill (poison, sleep, etc.). State IDs come from States.rxdata (XP defaults: 3=poison, 5=blind, 6=silence, 7=confuse, 8=sleep, 9=paralyze). |
| update_skillC | Update a skill's properties |
| search_skillsB | Search skills by name or description |
| update_itemB | Update an item's properties (XP fields: name, icon_name, description, scope, occasion, price, consumable, recover_hp, recover_sp, parameter_type, parameter_points, element_set, plus_state_set, minus_state_set, ...) |
| search_itemsA | Search items, weapons and armors by name or description |
| create_weaponA | Create a new weapon (appended to Weapons.rxdata). Defaults match the RMXP editor; override any field. Equippable in the weapon slot. |
| create_armorA | Create a new armor (appended to Armors.rxdata). kind: 0=shield, 1=helmet, 2=body, 3=accessory. Defaults match the RMXP editor; override any field. |
| get_mapA | Get map data by ID (Data/MapXXX.rxdata). Tile data is summarized unless includeTiles is true. |
| get_map_infosA | Get information about all maps (names, parent, order) |
| get_map_eventsA | Get all events from a specific map |
| get_map_eventC | Get a specific event from a map |
| update_map_eventB | Update a map event's properties (name, x, y, pages) |
| create_map_eventB | Create a new event on a map. If pages are omitted, a default empty page is created. |
| search_map_eventsB | Search events on a map by name |
| add_event_commandA | Add a single command to an event page (for Show Text prefer add_show_text). Common XP codes: 101=Show Text first line (401=continuation lines), 102=Show Choices [[texts...],cancelType] (each 402 branch repeats its choice text and must stay in sync), 111=Conditional Branch, 121=Control Switches, 122=Control Variables, 123=Control Self Switch [ch,0=on/1=off], 125=Change Gold, 126=Change Items, 201=Transfer Player, 209=Set Move Route (509=continuation), 223=Change Screen Color Tone, 355=Script. indent must increase by 1 inside branch blocks; the trailing code-0 terminator is preserved automatically. |
| add_show_textA | Add a Show Text message to an event page. Handles XP's 101/401 structure automatically: first line of each box is code 101, continuation lines are 401, and text longer than 4 lines is split into multiple message boxes. Use \n for line breaks. |
| create_transfer_eventA | Wire two maps together: create a Transfer Player (command 201) event at (x,y) on a map that warps the player to (targetX,targetY) on targetMapId. trigger 0 = action button (a door — give it a graphic); trigger 1 = player touch (an edge teleport — leave it invisible). Validates both endpoints exist and are in-bounds before writing. Use validate_connectivity afterwards to check the whole world graph. |
| validate_connectivityA | Build and validate the world transfer graph. Scans every map's events for Transfer Player (201) commands, checks each targets a real map at in-bounds coords, computes reachability from System.start_map_id, and flags orphan maps (no inbound transfer) and unreachable maps. Variable-designated transfers are reported as dynamic (runtime destination, unverifiable). Returns nodes, edges, errors, warnings, and a summary; set diagram=true for a Mermaid flowchart. |
| get_map_design_guideA | Return the level/map design guide (MAP-DESIGN.md): layer roles (z0 terrain / z1 ground clutter / z2 overhead), tile priority & passability, the multi-tile-object no-overlap rule, composition principles, and the authoring workflow. Load this before authoring or editing maps. |
| create_mapA | Create a new map. SIZE IS THE FIRST DESIGN DECISION: a map is N screens of 20x15 tiles, so pass a |
| get_map_size_advisoryA | Size advisory for an EXISTING map: screens (ceil(w/20)*ceil(h/15)), target focal-point and path-junction counts, recommended scatter density, approx clutter tile budget, and oversize/purpose-mismatch warnings. Use this first when editing a map so size and tile budget guide the design. Optionally pass a purpose to check the size against its sweet spot. |
| get_map_tilesA | Read a map's tile ids as a 2D grid (rows top-to-bottom). Returns one layer if |
| set_map_tilesA | Stamp a 2D block of tile ids into a layer with its top-left at (x, y). |
| fill_regionA | Fill a rectangle of a layer with one tile id (or the whole layer if |
| apply_autotileA | Paint an autotile (slot 0..6 = tileset autotile_names index) and compute the correct edge variant per cell from 8-neighbour connectivity (seamless coastlines/paths/cliffs). Supply ONE of: |
| scatter_tilesA | Scatter clutter tile ids over a region with natural random distribution at a target density (fraction of cells), skipping occupied cells. Optional focal point with falloff for a density gradient (denser near a landmark). Use for flowers/bushes/rocks/tall grass instead of hand-placing lone tiles — fixes sparse/corner-clustered decoration. Deterministic given seed. |
| get_databaseA | List all entries of a database file. Kinds: classes, states, enemies, troops, common_events, tilesets, animations (also actors/skills/items/weapons/armors). Tables and command lists are summarized; use get_database_entry for full data. |
| get_database_entryB | Get one full database entry by ID, including Tables (tileset passages/priorities/terrain_tags, enemy element_ranks, class element_ranks) and event command lists (common events, troop pages) |
| update_database_entryA | Update any database entry's properties (e.g. a class's weapon_set, a state's rates, an enemy's stats, tileset passability Tables). Tables must be written as { "_class": "Table", dim, xsize, ysize, zsize, data: [...] }. Tileset passages: value 0=passable, 1/2/4/8 = down/left/right/up blocked, 15=impassable, +64 bush, +128 counter. |
| get_scriptsA | List all RGSS scripts in Scripts.rxdata (index, name, source length) |
| get_scriptA | Get an RGSS script's Ruby source code by index |
| update_scriptA | Replace an RGSS script's source code and/or name |
| create_scriptA | Create a new RGSS script. By default it is inserted just above "Main" (the conventional slot for custom scripts). |
| search_scriptsA | Search all RGSS script sources with a regex pattern; returns matching lines with script name and line number |
| get_systemA | Get system data (System.rxdata: party, elements, switches, variables, vocabulary, start position, audio settings) |
| get_variablesA | Get all game variable names (index = variable ID) |
| set_variable_nameD | Set a variable name |
| get_switchesA | Get all game switch names (index = switch ID) |
| set_switch_nameC | Set a switch name |
| get_game_titleA | Get the game title (from Game.ini) |
| update_game_titleA | Update the game title (in Game.ini) |
| update_starting_positionB | Update the party starting position (map ID and coordinates in System.rxdata) |
| validate_assetsA | Scan all data files for referenced graphic/audio filenames (tilesets, autotiles, panoramas, fogs, battlebacks, character/battler/icon graphics, animations, windowskin/title/gameover/transition, BGM/BGS/ME, and map event sprites) and report any with no matching file on disk. Checks the project Graphics/ and Audio/ first, then the RTP (RPGMAKER_RTP_PATH). Catches broken references that are otherwise silent until runtime. |
| classify_assetA | Inspect a PNG before import and report whether it is a native RMXP asset. Goes beyond canvas dimensions: fingerprints the filename ($/! object sprites, MV/MZ A1-A5 autotile sheets, 48px-divisible MV dimensions) AND detects the true CONTENT tile size via edge-periodicity (16/24/32/48/64px). Catches assets that look fine by size but render 1.5x/2x too large in RMXP's 32px grid, and assets that are not tilesets at all. Returns tier, recommended conversion op, target category, and flags. No writes. |
| verify_tilesetA | Render an asset with two overlaid grids — the RMXP 32px grid (red) and the detected content grid (cyan) — and write a preview PNG for multimodal review. If a tile motif fills a 2x2 block of red cells the art is 64px (too big); if red and cyan coincide it is native 32px. Returns the preview path, detected tile size, and an alignment verdict. Read the returned preview_png to confirm visually before registering. |
| register_tilesetA | Create a Tilesets.rxdata entry for a graphic already in Graphics/Tilesets, sizing the passability/priority/terrain Tables to the image (384 + height/4). GUARDED: refuses object sprites, MV A-series sheets, non-256px-wide, or non-32px-content assets (pass force:true to override). This is the gate that keeps mis-classified art out of the database. |
| render_tileset_atlasA | Render a labeled atlas of a tileset to a PNG: the tileset graphic scaled with a grid, each regular tile's id burned in, passability indicators, and the 7 autotile slots. This is a quick numeric reference, not semantic proof; use create_tileset_identification_harness before assigning map-design roles. |
| create_tileset_identification_harnessA | Create a review bundle for one tileset that separates engine facts from semantic claims. Produces the exact source sheet, isolated transparent tile images, source-row strips, manifest.json (priority, passage flags, alpha bounds), catalog templates, and an interactive index.html for identifying single tiles and rectangular multi-tile objects. Use this before assigning map-design roles to an uncataloged tileset. |
| get_tileset_catalogA | Read the structured semantic catalog for a tileset together with its generated engine-fact manifest and validation summary. Absence from the catalog means unreviewed, not safe to infer. |
| save_tileset_catalogA | Validate and save reviewed semantic findings for a tileset. Accepts incremental tile/object/autotile arrays or the complete catalog JSON exported by the review page. Generated engine facts cannot be overwritten by catalog claims. |
| validate_tileset_catalogA | Validate a tileset catalog against its engine manifest. Reports invalid ids, malformed object grids, contradictory layer/priority choices, transparent z0 placement, and unreviewed tiles. strict=true requires every regular tile to have a reviewed entry. |
| render_mapA | Render a map's tile layers to a flat top-down PNG preview (outside the editor) and return the file path. Composites all 3 tile layers using the tileset graphic and autotiles. Use this to SEE a map you built/edited and self-check it. Layout preview only: no priority/overhead draw-order, fog/panorama/weather, autotile animation (frame 0), or event sprites. Reads project Graphics/ then falls back to the RTP (override base with RPGMAKER_RTP_PATH). Writes to Data/.mcp-preview/ by default; Read the returned path to view it. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Map design guide | Level/map design: the three-layer model (terrain/clutter/overhead), tile priority & passability, multi-tile no-overlap rule, composition, authoring workflow. |
| Tileset identification harness | Evidence-first workflow for identifying tile semantics, grouping multi-tile objects, assigning confidence, and validating catalogs before map authoring. |
| Authoring & governance | Particularities of writing for RPG Maker XP and how this MCP acts as a governance layer to prevent drift. |
| Engineering wisdom | Marshal layer, battle math, event system, tileset model, coexisting with the editor. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SerifeusStudio/rpgmaker-xp-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server