RPG Maker MV Ultimate — AI copilot (MCP): generate maps, edit the database & events, and understand your project (validate references, explain why an event never fires, critique maps).
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
claude mcp add rpgmakermvultimate-mcp -- npx -y rpgmaker-mv-mcp{
"mcpServers": {
"rpgmakermvultimate-mcp": {
"command": "npx",
"args": ["-y", "rpgmaker-mv-mcp"]
}
}
}MCP Servers overview
<div align="center">
# 🎮 RPG Maker MV Ultimate
### An AI copilot that builds, understands and *watches* your RPG Maker MV game
[](https://www.npmjs.com/package/rpgmaker-mv-mcp)
[](https://www.npmjs.com/package/rpgmaker-mv-mcp)
[](https://github.com/DiegoLopez0208/RpgMakerMVUltimate-MCP/actions/workflows/ci.yml)
[](https://registry.modelcontextprotocol.io)
[](https://nodejs.org)
[](LICENSE)
**[Quick start](#-quick-start) · [What it does](#-what-it-does) · [Map generation](#️-map-generation) · [Live bridge](#-the-live-bridge) · [Intelligence](#-project-intelligence) · [Tools](#-the-13-tools)**
</div>
---
A [Model Context Protocol](https://modelcontextprotocol.io/) server that lets an AI agent work on a **real RPG Maker MV project on disk** — database, maps, events, plugins, system — through **17 consolidated tools** validated against the actual engine, so what comes out is coherent and playable.
It does three things that are usually missing:
| | |
|---|---|
| 🏗️ **Builds** | Generates maps that look hand-made, wires events from presets, and edits every database with real IDs instead of invented ones. |
| 🧠 **Understands** | Reads the whole project and answers *why the door never opens*, *which map nobody can reach*, *which skill breaks the game*. |
| 👀 **Watches** | Runs the game and reports back: exceptions, player position, screenshots — and reloads a map you just edited without losing the save. |
<br>
## ⚡ Quick start
**1 — Add it to your MCP client.** No clone needed; the package ships an executable.
```json
{
"mcpServers": {
"rpgmaker-mv": {
"command": "npx",
"args": ["-y", "rpgmaker-mv-mcp"],
"env": {
"RPGMAKER_PROJECT_PATH": "C:/path/to/your/RPGMakerMV/project"
}
}
}
}
```
<details>
<summary>Claude Code one-liner, and running from source</summary>
<br>
```bash
# Claude Code, user scope
claude mcp add rpgmaker --scope user \
--env RPGMAKER_PROJECT_PATH="C:/path/to/project" \
-- npx -y rpgmaker-mv-mcp
```
```bash
# From source
git clone https://github.com/DiegoLopez0208/RpgMakerMVUltimate-MCP
cd RpgMakerMVUltimate-MCP
npm install && npm run build
RPGMAKER_PROJECT_PATH=/path/to/your/project npm start
```
MCP clients load tool definitions once at startup, so **restart the client** after adding or upgrading the server.
</details>
**2 — Point it at a project.** `RPGMAKER_PROJECT_PATH` is the folder containing `data/`, `js/` and `index.html`. The server starts without it; call `set_project_path` at runtime instead if you prefer.
**3 — Let the agent look around first.**
```
get_project_context { detail: "full" } → what exists, with real IDs
analyze_project { view: "overview" } → health, counts, unreachable maps
```
Works with Claude Desktop, Claude Code, opencode, and any MCP-compatible client.
<br>
## 🧭 What it does
```mermaid
flowchart LR
A["🤖 Agent"] -->|"generate_map · manage_map_event"| B["📁 Project on disk"]
B -->|"validate · balance · metrics"| A
B -->|"playtest"| C["🎮 Running game"]
C -->|"exceptions · position · screenshots"| A
A -->|"reload_map"| C
```
The bottom half of that loop is what the bridge adds. Before it, the agent wrote files and hoped.
<br>
## 🗺️ Map generation
Two paths, both behind `generate_map`. Pick by whether your project uses RTP art.
| | `mode: "procedural"` *(default)* | `mode: "semantic"` |
|---|---|---|
| **How** | Clones a hand-authored map from the **106 bundled RTP templates**, closest size first | Lays out a **mission graph**, then paints it through a tileset profile |
| **Looks like** | Real multi-tile buildings, walls, furniture | Rooms and corridors shaped by what the space is *for* |
| **Tilesets** | RTP, or close to it | **Any** — DLC, itch.io, custom |
| **Guarantees** | Same `seed` → same map | Same `seed` → same map, and the key is always reachable **before** the door it opens |
### The knowledge-driven path
```json
{ "mode": "procedural", "theme": "town", "name": "Riverbend", "width": 40, "height": 30 }
```
Themes with a matching template — **town, village, dungeon, interior, castle, world** and more — clone a real map instead of painting tile noise. Themes without one (**beach, swamp, desert…**) fall back to Perlin terrain, BSP dungeons and cellular caves. Combat themes auto-wire random encounters from your existing troops; town and village auto-create enterable house interiors with two-way warps.
> **Themes** · `forest` `town` `village` `castle` `dungeon` `cave` `beach` `desert` `swamp` `ruins` `interior` `snow` `harbor` `volcano` `sewer` `fortress` `magic_forest` `magic_interior` `space_interior` `space_exterior` `world`
Other modes: `blank` (empty canvas), `themed` (simple layout), `template` (one specific bundled map), `batch` (many at once), `duplicate` (copy an existing map).
### The tileset-independent path
The bundled templates are raw MV map JSON, so their tile IDs only mean anything on RTP sheets. Change the tileset and the map turns to noise. `semantic` keeps the layout abstract until the last moment:
```
manage_system { action: "mine_templates" } # learn from THIS project
generate_map { mode: "semantic", tilesetId: 5, rooms: 6, seed: 42 }
```
- **Mining** reads every map you already made and derives semantic layouts (ground / wall / water / prop / door, multi-tile props kept whole), a **tileset profile** naming the concrete tile your project uses for each role, and token adjacency counts. Nothing in the project is modified — everything lands in `.mcp-cache/`.
- **Generating** builds the mission first — entrance → key → locked door → treasure → boss → exit, plus side rooms — as a graph whose edges are the only ways through, *then* paints it. Because the lock is an edge and the key sits on the entrance side of it, the map is **solvable by construction**. Autotile shapes are recomputed at the end from the finished neighbourhood, never guessed cell by cell.
- The result includes `markers` naming the cell of every mission role, which is where to put events with `manage_map_event`.
- Pass a mined `templateId` (e.g. `"mined-3"`) to re-materialise one of your **own** maps onto a different tileset.
<br>
## 🔌 The live bridge
`playtest` on its own is fire-and-forget: the game opens and nothing comes back. The bridge closes the loop.
```
manage_system { action: "install_bridge_plugin" } # once per project
manage_system { action: "bridge_start" } # opens ws://127.0.0.1:32123
manage_system { action: "playtest" } # the game connects on its own
manage_system { action: "bridge_telemetry", types: ["exception", "log"] }
```
```mermaid
sequenceDiagram
participant A as 🤖 Agent
participant S as 🖥️ MCP server
participant G as 🎮 Game (nwjs)
A->>S: edit_map
S->>S: atomic write to Map002.json
A->>S: bridge_command reload_map
S->>G: reload_map
G->>G: reserveTransfer + _needsMapReload
G-->>S: reload_complete
A->>S: take_screenshot
S->>G: capture_screenshot
G-->>S: PNG in base64
S-->>A: path for analyze_image
A->>S: record_video start / stop
S->>G: MediaRecorder on the game canvas
G-->>S: WebM in base64
S-->>A: path for video evidence
```
- **📡 Telemetry** — exceptions with stack traces, `console.error`/`warn`, scene changes, player position, *which event command is executing* (so a hung event can be pinpointed), FPS and heap. Frames are consumed as you read them unless you pass `peek`.
- **♻️ Hot reload** — `reload_map` re-reads the current `MapXXX.json` and rebuilds the scene **without losing party state**: it reserves a transfer to the player's own position with `_needsMapReload`, the engine's own reload seam, rather than rebuilding `Spriteset_Map` by hand. `reload_database` re-reads one data file; `System.json` and `Tilesets.json` need a fresh playtest and are refused with an explanation.
- **📸 Screenshots** — `take_screenshot { name: "collision-proof" }` captures the live playtest through the MCP plugin, saves a timestamped PNG under `.mcp-cache/screenshots/`, and returns its path for inspection or QA evidence. No shell screenshot command is involved. `manage_system { action: "bridge_screenshot" }` remains as a compatibility alias.
- **🎥 Video evidence** — `record_video { action: "start", name: "npc-dialogue" }` begins a silent WebM capture of the live game canvas; `record_video { action: "stop" }` saves it under `.mcp-cache/recordings/` and returns its path. Agents can stage repeatable scenes with the allowlisted `interact` command and fixed-button `press_button` input—there is still no arbitrary script or `eval` command.
> ### 🔒 Security
> The plugin **returns before anything else runs** unless the game is under NW.js *and* was launched with a `test` argument. A deployed build a player double-clicks never reaches the socket code, or even `require('fs')`.
>
> It checks every argument rather than only `argv[0]` the way `Utils.isOptionValid` does, because `playtest` passes the project path first. So a deployed build *deliberately* launched with a literal `test` argument would get past the guard — and then find no handshake file, and never connect.
>
> The server binds `127.0.0.1` only, refuses any upgrade carrying a browser `Origin` (cross-site WebSocket hijacking), and requires the session token from `.mcp-bridge.json` — compared in constant time — within 5 seconds or the connection is dropped.
>
> The command surface is a fixed allowlist with **no `eval` primitive*What people ask about RpgMakerMVUltimate-MCP
What is DiegoLopez0208/RpgMakerMVUltimate-MCP?
+
DiegoLopez0208/RpgMakerMVUltimate-MCP is mcp servers for the Claude AI ecosystem. RPG Maker MV Ultimate — AI copilot (MCP): generate maps, edit the database & events, and understand your project (validate references, explain why an event never fires, critique maps). It has 26 GitHub stars and its last recorded update is dated 2026-10-05.
How do I install RpgMakerMVUltimate-MCP?
+
You can install RpgMakerMVUltimate-MCP by cloning the repository (https://github.com/DiegoLopez0208/RpgMakerMVUltimate-MCP) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is DiegoLopez0208/RpgMakerMVUltimate-MCP safe to use?
+
Our security agent has analyzed DiegoLopez0208/RpgMakerMVUltimate-MCP and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains DiegoLopez0208/RpgMakerMVUltimate-MCP?
+
DiegoLopez0208/RpgMakerMVUltimate-MCP is maintained by DiegoLopez0208. The last recorded GitHub activity is dated 2026-10-05, with 0 open issues.
Are there alternatives to RpgMakerMVUltimate-MCP?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy RpgMakerMVUltimate-MCP to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/diegolopez0208-rpgmakermvultimate-mcp)<a href="https://claudewave.com/repo/diegolopez0208-rpgmakermvultimate-mcp"><img src="https://claudewave.com/api/badge/diegolopez0208-rpgmakermvultimate-mcp" alt="Featured on ClaudeWave: DiegoLopez0208/RpgMakerMVUltimate-MCP" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
The fastest path to AI-powered full stack observability, even for lean teams.