{"name":"io.github.SerifeusStudio/rpgmaker-xp-mcp","slug":"serifeusstudio-rpgmaker-xp-mcp","title":null,"description":"Author RPG Maker XP games in natural language: read, write and render RGSS1 .rxdata.","url":"https://mcp.market/server/serifeusstudio-rpgmaker-xp-mcp","rating":null,"grade":"A","score":88,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":26,"stars":4,"forks":3,"downloads_week":78,"last_push_at":"2026-09-16T00:08:10.000Z","license":"NOASSERTION"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/SerifeusStudio/rpgmaker-xp-mcp","website":null,"version":"1.1.3","remotes":[],"packages":[{"registryType":"npm","identifier":"rpgmaker-xp-mcp","version":"1.1.3","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the RPG Maker XP project folder — the one containing Game.rxproj and Data/.","isRequired":true,"name":"RPGMAKER_PROJECT_PATH"},{"description":"Path to the RPG Maker XP RTP assets. Defaults to the Steam install; set this only if your RTP lives elsewhere.","name":"RPGMAKER_RTP_PATH"}]}],"tools":[{"name":"add_event_command","description":"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=T","write_action":false,"price_micros":0,"input_schema":null},{"name":"add_show_text","description":"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 \\ for line breaks.","write_action":false,"price_micros":0,"input_schema":null},{"name":"apply_autotile","description":"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: `blob` (organic roundish shape — USE for ponds/lakes/forest patches); `path` (autotile-safe road/trail/river through waypoints, width >=2); `cells` (arbitrary [x,y] list); or `region` (rect — only for rectangular","write_action":false,"price_micros":0,"input_schema":null},{"name":"classify_asset","description":"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 n","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_actor","description":"Create a new actor with RMXP defaults (linear stat growth curves unless a parameters Table is provided)","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_armor","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_damage_skill","description":"Create a damage-dealing skill (simplified). Set physical=true for ATK/PDEF based damage, otherwise INT/MDEF based (magic). Engine formula: damage = (power + ATK*atk_f/100 - PDEF*pdef_f/200 - MDEF*mdef_f/200) * (20 + STR*str_f/100 + DEX*dex_f/100 + AGI*agi_f/100 + INT*int_f/100) / 20. Reference: default-DB Fire is power 140, sp 75.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_healing_skill","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_map","description":"Create a new map. SIZE IS THE FIRST DESIGN DECISION: a map is N screens of 20x15 tiles, so pass a `purpose` (interior/room/town/dungeon/overworld/region) to get a sensible default size, or set width/height explicitly. Returns the new map id and a size_advisory (screens, target focal-point count, scatter density, oversize warnings) plus the design guide. Writes the next-free MapXXX.rxdata (blank Ta","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_map_event","description":"Create a new event on a map. If pages are omitted, a default empty page is created.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_script","description":"Create a new RGSS script. By default it is inserted just above \"Main\" (the conventional slot for custom scripts).","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_skill","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_state_skill","description":"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).","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_tileset_identification_harness","description":"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 uncatal","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_transfer_event","description":"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","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_weapon","description":"Create a new weapon (appended to Weapons.rxdata). Defaults match the RMXP editor; override any field. Equippable in the weapon slot.","write_action":true,"price_micros":0,"input_schema":null},{"name":"fill_region","description":"Fill a rectangle of a layer with one tile id (or the whole layer if `rect` is omitted). Tile id 0 clears. For autotiles this places the base variant (P1) — smart edges come with apply_autotile.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_actor","description":"Get a specific actor by ID, including its 6x100 parameters table (MaxHP, MaxSP, STR, DEX, AGI, INT per level)","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_actors","description":"Get all actors from the RPG Maker XP project (parameter tables omitted)","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_armors","description":"Get all armors from the project","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_database","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_database_entry","description":"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)","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_game_title","description":"Get the game title (from Game.ini)","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_items","description":"Get all items from the project","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_map","description":"Get map data by ID (Data/MapXXX.rxdata). Tile data is summarized unless includeTiles is true.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_map_design_guide","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_map_event","description":"Get a specific event from a map","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_map_events","description":"Get all events from a specific map","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_map_infos","description":"Get information about all maps (names, parent, order)","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_map_size_advisory","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_map_tiles","description":"Read a map's tile ids as a 2D grid (rows top-to-bottom). Returns one layer if `layer` is given, else all three. Tile id 0 = empty, 48..383 = autotiles, >=384 = regular tiles. Use `region` to crop and avoid large payloads.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_script","description":"Get an RGSS script's Ruby source code by index","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_scripts","description":"List all RGSS scripts in Scripts.rxdata (index, name, source length)","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_skill","description":"Get a specific skill by ID","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_skills","description":"Get all skills from the project","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_switches","description":"Get all game switch names (index = switch ID)","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_system","description":"Get system data (System.rxdata: party, elements, switches, variables, vocabulary, start position, audio settings)","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_tileset_catalog","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_variables","description":"Get all game variable names (index = variable ID)","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_weapons","description":"Get all weapons from the project","write_action":false,"price_micros":0,"input_schema":null},{"name":"register_tileset","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"render_map","description":"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 ","write_action":false,"price_micros":0,"input_schema":null},{"name":"render_tileset_atlas","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"save_tileset_catalog","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"scatter_tiles","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_actors","description":"Search actors by name","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_items","description":"Search items, weapons and armors by name or description","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_map_events","description":"Search events on a map by name","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_scripts","description":"Search all RGSS script sources with a regex pattern; returns matching lines with script name and line number","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_skills","description":"Search skills by name or description","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_map_tiles","description":"Stamp a 2D block of tile ids into a layer with its top-left at (x, y). `grid` is rows of ids (0 clears a cell). Cells outside the map are skipped. Preview with render_map.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_switch_name","description":"Set a switch name","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_variable_name","description":"Set a variable name","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_actor","description":"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)","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_database_entry","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_game_title","description":"Update the game title (in Game.ini)","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_item","description":"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, ...)","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_map_event","description":"Update a map event's properties (name, x, y, pages)","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_script","description":"Replace an RGSS script's source code and/or name","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_skill","description":"Update a skill's properties","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_starting_position","description":"Update the party starting position (map ID and coordinates in System.rxdata)","write_action":true,"price_micros":0,"input_schema":null},{"name":"validate_assets","description":"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","write_action":false,"price_micros":0,"input_schema":null},{"name":"validate_connectivity","description":"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, warning","write_action":false,"price_micros":0,"input_schema":null},{"name":"validate_tileset_catalog","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"verify_tileset","description":"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 ","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":88,"grade":"A","scanned_at":"2026-11-04T06:34:00.393Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-04T06:34:00.376Z","components":{"code":{"score":25,"max":25,"notes":["41 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":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":12,"max":15,"notes":["last push 49 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-xp-mcp","version":"1.1.3","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-08-12T03:38:22.366Z","repositoryUrl":"git+https://github.com/SerifeusStudio/rpgmaker-xp-mcp.git","weeklyDownloads":78}],"repo":{"found":true,"owner":"SerifeusStudio","repo":"rpgmaker-xp-mcp","archived":false,"pushedAt":"2026-09-16T00:08:10Z","stars":4,"forks":3,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/193643736?v=4","ownerCreatedAt":"2025-01-03T20:33:11Z","license":"NOASSERTION"},"icon":{"url":"https://avatars.githubusercontent.com/u/193643736?v=4&s=128","source":"registry","width":128,"height":128},"presence":{"stars":4,"forks":3,"downloadsWeek":78,"license":"NOASSERTION","lastPushAt":"2026-09-16T00:08:10.000Z","score":26}}}},"grade_history":[],"reviews":[]}