A side-by-side look at the Rpgmaker Xp MCP and Unity Biome MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Rpgmaker Xp MCP for gaming work as a local process; choose Unity Biome MCP for gaming as a local process. You can also run both side by side in one mcpServers block.
RPGMAKER_PROJECT_PATH, RPGMAKER_RTP_PATH.get_actors, get_actor, update_actor.get_hierarchy, scene, search_scene.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Gaming | Gaming |
| Quality signal | 59/100 · Good | 63/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | RPGMAKER_PROJECT_PATHRPGMAKER_RTP_PATH | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 4 | 30 |
| Directory activity | 4 views 0 installs 0 upvotes | 2 views 0 installs 0 upvotes |
| Tools | 65 | 40 |
| Full listing | View Rpgmaker Xp MCP | View Unity Biome MCP |
get_actorsGet all actors from the RPG Maker XP project (parameter tables omitted)get_actorGet a specific actor by ID, including its 6x100 parameters table (MaxHP, MaxSP, STR, DEX, AGI, INT per level)update_actorUpdate 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_actorCreate a new actor with RMXP defaults (linear stat growth curves unless a parameters Table is provided)search_actorsSearch actors by nameget_itemsGet all items from the projectget_weaponsGet all weapons from the projectget_armorsGet all armors from the projectget_skillsGet all skills from the projectget_skillGet a specific skill by IDcreate_skillCreate 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_skillCreate 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.get_hierarchyScene hierarchy as text tree. For finding specific object by name/type use search_scene. Max 3000 nodes. Use filter/depth to narrow. Set components=true to see component types. Set compress=true to group repeated slots/points/meshes. Set summary=true for compact root-only counts (60-100 tokens). Set incremental=true to get NO_CHANGE if scene unchanged since last call. full=True: bypass distillation. scene: filter to a single scene by name (multi-scene only).sceneScene management. action: new|open|save|discard|open_additive|close|set_active|list|save_copy.
path: required for open/open_additive/close/set_active/save_copy. For save,
omit it to save to the current path; an untitled scene requires a path.
scene: save/discard/save_copy target when multiple scenes loaded (identifies by name).
save_copy: writes current dirty state to path as backup; active scene reference unchanged.
include_unsaved: always True — save_copy always captures current in-memory state.search_sceneSearch scene objects. Syntax: name text, t:Component, tag=Tag, layer=N, active=bool. Combine with spaces.
root: scope search to subtree (path or None for whole scene).
limit: max results (default 50; 0=unlimited).
scene: filter to a single scene by name (multi-scene only).get_componentComponent properties as key-value. For MULTIPLE objects, use inspect(paths='a,b,c') instead — 1 call vs N.
fields: comma-separated field names to keep (e.g. 'mass,position') — projects the result to save tokens; shows requested fields even at default values. Aliases: position, rotation, scale, mass, enabled, active, name.
full=True: bypass distillation, return raw response. compress=True: strip default values before transfer.
component: alias for type= (backward-compat with set_property naming). type= wins when both provided.inspectGet components for multiple objects at once. paths: comma-separated. components: comma-separated types (default: all).
find_type: component type to find — populates paths automatically (replaces explicit paths).
fields: comma-separated field names to keep across all objects — projects the result to save tokens. full=True: bypass distillation. compress=True: strip default values before transfer.set_propertySet component property (Edit Mode, SerializedObject — for Play Mode use `invoke_method` or `execute_code`).
find_type: component type — bulk-sets prop on all matching objects without specifying paths.
For GO rename use rename_object(). ObjectReference: scene path (/Player), asset path (Assets/X.mat), sub-asset (Assets/X.fbx::ClipName), &ref (e.g. &1) or $hexId (legacy), #instanceID (legacy), or 'null'. dry_run=True shows what would change without applying.
ref_component_type: when value is a plain scene path and the field expects a specific Component type (e.g. 'BoxCollider'), appends '::TypeName' to the value so C# resolves the correct component. Ignored when value already contains '::'.
effects: mutates scene via SerializedObject, creates an undo entry. Verify with get_component after.create_objectCreate new GameObject. components: comma-separated types to add on creation. primitive: Cube|Sphere|Cylinder|Capsule|Plane|Quad. prefab_path: instantiate from prefab asset. scene: create in named loaded scene (omit = active scene).set_activeSet GameObject active/inactive.delete_objectDelete GameObject by instance ID or scene path. Deletes scene objects. No confirmation required. Provide one. force=True to delete non-empty containers.manage_componentAdd or remove a component. Mutates scene. No confirmation required. action: 'add' or 'remove' ONLY (no 'enable'/'disable' — use set_property with prop='m_Enabled' for that). type: short name (e.g. 'Button') or full namespace (e.g. 'UnityEngine.UI.Button').set_parentReparent existing GameObject. parent=null → move to scene root. world_position_stays=True (default): preserves world transform. False: stays local to new parent.lint_scene_refsRead-only linter for scene references in DSL scripts or batch commands.
path: project-relative path to .playtest file.
snippet: inline DSL or batch commands to lint (mutually exclusive with path).
Checks: unresolved aliases, embedded aliases, missing objects, ambiguous names.
Returns: 'OK: no issues' or severity-tagged issues (ERROR/WARN) with file:line:token.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"rpgmaker-xp-mcp": {
"command": "npx",
"args": [
"-y",
"rpgmaker-xp-mcp"
],
"env": {
"RPGMAKER_PROJECT_PATH": "YOUR_RPGMAKER_PROJECT_PATH_HERE",
"RPGMAKER_RTP_PATH": "YOUR_RPGMAKER_RTP_PATH_HERE"
}
}
}
}
{
"mcpServers": {
"german-krasnikov-unity-biome-mcp": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/german-krasnikov/unity-biome-mcp.git#subdirectory=server",
"unity-biome-mcp"
]
}
}
}