关于 rpgmaker-xp-mcp
rpgmaker-xp-mcp 让 MCP 客户端通过自然语言驱动的工具读取和编辑 RPG Maker XP 项目数据。它直接处理原生 `.rxdata` 文件,还能生成地图布局的 PNG 预览,无需打开编辑器。
主要功能
- 01读取和编辑 XP 项目数据文件
- 02管理角色、物品、技能、地图和事件
- 03创建和修改地图图块
- 04验证资源引用和地图连通性
- 05将地图和图块集渲染为 PNG 图像
适用场景
- 01创建或更新游戏数据库条目
- 02制作地图并查看布局预览
- 03跨地图查找对话或事件
- 04检查项目中的缺失资源或不可达地图
MCP 相关
该服务通过 stdio 与 MCP 客户端通信,提供 65 种工具,用于读取、写入、验证和渲染 RPG Maker XP 项目数据。它直接编辑项目的原生 `.rxdata` 文件。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y rpgmaker-xp-mcpRPGMAKER_PROJECT_PATHPath to the RPG Maker XP project folder — the one containing Game.rxproj and Data/.RPGMAKER_RTP_PATHPath to the RPG Maker XP RTP assets. Defaults to the Steam install; set this only if your RTP lives elsewhere.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
65收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
RPG Maker XP MCP 服务
只需描述你的想法,即可构建 RPG Maker XP 游戏。
“制作一瓶可恢复 200 点 HP、售价 150 金币的治疗药水。” “创建一张 40×30 的森林地图,在东北方放一个池塘,然后给我看看。” “找出地图 3 上所有对话中提到国王的 NPC。”
这是一个 MCP 服务,可直接读取和写入 RPG Maker XP 项目的 .rxdata
文件,包括角色、技能、物品、地图、事件、脚本和系统数据;还会将地图渲染为 PNG 预览图,让你无需打开编辑器也能查看构建结果。
它使用 XP 原生的 Ruby 1.8 Marshal 格式。不会导出、转换或将数据保存在旁路文件中:它会编辑你的真实项目,编辑器也能正常打开修改后的项目。
⚠️ 首次运行前请阅读
1. 服务运行期间,请关闭 RPG Maker XP 编辑器。 编辑器会将所有数据文件保存在内存中,并在保存时重写每个文件。如果编辑器处于打开状态,它会覆盖此服务所做的所有更改。这是导致工作成果丢失最常见的原因。
2. 请先备份项目。 将整个 Data/ 文件夹复制到安全位置。尽管服务会自行备份,也请务必这样做,因为:
3. 自动备份不是版本历史。 在某个会话中首次写入文件之前,服务会将原始文件复制到 Data/.mcp-backup/。每个文件每个会话只会有 一个 .bak 文件——下一个会话会覆盖它。它只能保护你免受最近一次操作的影响,无法挽回一周前造成的损坏。如果你的项目很重要,请将它纳入 git 管理。
4. 修改后请测试游戏。 文件在结构上有效,也仍可能不适用于你的游戏。
什么是 MCP?
模型上下文协议(Model Context Protocol)是一种让 AI 助手使用外部工具的标准方式。此服务不是聊天程序,也没有自己的界面——它是由 MCP 客户端连接的后端。
你需要使用这类客户端。常见选择包括:
- Claude Code — 基于终端
- Claude Desktop — 桌面应用
- Open WebUI、Cursor、Windsurf 或其他支持 MCP 的客户端 — 也包括通过 Ollama 使用本地模型的客户端(见下文)
如果你从未使用过 MCP 客户端,可以先试试 Claude Desktop;配置部分提供了可直接复制粘贴的配置。
要求
| Node.js | 18 或更高版本 |
| MCP 客户端 | Claude Desktop、Claude Code 或任何支持 MCP 的应用 |
| RPG Maker XP 项目 | 包含 Game.rxproj 和 Data/ 的文件夹 |
| RPG Maker XP 本体 | 如果项目使用 RTP 资源,则为必需 |
运行时会从你自己的安装目录读取 RTP(默认图块、自动图块、角色精灵和音频)。本项目不会打包或再分发任何 Enterbrain 资源。
能用于 Pokémon Essentials 吗?
从结构上说,可以——Essentials 游戏也是 RPG Maker XP 项目,这里的每个工具都针对标准 .rxdata 运行。但有两点需要说明:Essentials 在引擎之上添加了自己的约定(包括自有数据文件、体积庞大的 Scripts.rxdata 和 PBS 文本文件),而此服务并不了解这些内容;此外,Essentials 项目体积较大,因此尤其要确保遵循上文的备份建议 2。读取、地图操作和数据库编辑都能正常进行。
安装
发布的软件包已包含构建产物,因此无需构建。大多数客户端都可以通过 npx 按需启动服务。
npm install -g rpgmaker-xp-mcp
从源代码安装
git clone https://github.com/SerifeusStudio/rpgmaker-xp-mcp.git
cd rpgmaker-xp-mcp
npm install
npm run build
然后在下方的配置中,将 node 设为命令,并使用 dist/index.js 的路径。
配置
使用 RPGMAKER_PROJECT_PATH 指定项目路径——也就是包含 Game.rxproj 和 Data/ 的文件夹。如果你的 RTP 位于特殊位置,也请设置 RPGMAKER_RTP_PATH;默认路径为 Steam 版 RPG Maker XP 的安装目录。
Claude Code
claude mcp add --scope user rpgmaker-xp \
--env "RPGMAKER_PROJECT_PATH=C:\path\to\your\project" \
-- npx -y rpgmaker-xp-mcp
Claude Desktop
%APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"rpgmaker-xp": {
"command": "npx",
"args": ["-y", "rpgmaker-xp-mcp"],
"env": {
"RPGMAKER_PROJECT_PATH": "C:/path/to/your/xp/project"
}
}
}
}
重启客户端,然后通过提出只读请求检查是否已连接:
“列出我项目中的演员。”
如果返回了名称,说明已完成设置。故障排查请参阅 SETUP.md。
通过 Ollama 使用本地模型
该服务通过 stdio 使用标准 MCP,因此可与任何 MCP 客户端配合使用,而不仅限于 Claude。Ollama 尚无自己的 MCP 客户端,因此本地模型需要通过桥接连接。
Open WebUI 通过 OpenAPI 代理 mcpo 原生支持 MCP。将相同的 mcpServers 配置块保存为 mcpo.json,然后:
uvx mcpo --port 8000 --config mcpo.json
在 Open WebUI 中将 http://localhost:8000/rpgmaker-xp 注册为工具服务。
终端: ollmcp 可将 MCP 服务直接连接到本地 Ollama 模型。
选择工具调用能力出色的模型(较新的 Qwen 或 Llama instruct 模型)。较小的模型难以可靠地连续完成多次调用,而这在此处很重要——地图创作本质上是多步骤的。
它不会做什么
安装前值得了解:
- 仅支持 XP。 它无法读取 VX、VX Ace、MV 或 MZ 项目。这些项目的数据格式不同(
.rvdata、.rvdata2、JSON)。 - 不会生成美术或音频。 它可以导入、分类和验证你已有的图像,但不能绘制图像。
- 除了存储你提供的内容外,不会为你编写 RGSS 脚本——它将
Scripts.rxdata作为数据管理,正确性由你和模型负责。 - 无法运行或测试你的游戏。
render_map显示的是静态布局预览,而非游戏过程。 - 不了解 Pokémon Essentials 自身的系统(PBS 文件、插件约定、数据类)。
可用工具(65)
演员
get_actors · get_actor · update_actor · create_actor · search_actors
XP 演员使用 parameters Table(6×100——每级对应 MaxHP、MaxSP、STR、DEX、AGI、INT),而非 MZ 风格的特性。create_actor 默认会生成线性成长曲线。装备栏位为 weapon_id 和 armor1_id–armor4_id(盾牌/头盔/身体/饰品)。
物品与装备
get_items · get_weapons · get_armors · get_skills · update_item ·
search_items · create_weapon · create_armor
create_weapon/create_armor 会使用编辑器默认字段(可覆盖任意字段),将内容追加到 Weapons.rxdata/Armors.rxdata。护甲 kind:0=盾牌,1=头盔,2=身体,3=饰品。
技能
get_skill · create_skill · create_damage_skill · create_healing_skill ·
create_state_skill · update_skill · search_skills
XP 没有伤害公式。伤害由 power 按属性影响比率缩放(物理攻击使用 atk_f/str_f,魔法攻击使用 int_f),并受目标的 pdef_f/mdef_f 减免。**负数 power = 治疗。**没有 create_buff_skill——XP 没有增益系统,请使用状态。
范围:0=无,1=单个敌人,2=所有敌人,3=单个盟友,4=所有盟友, 5=单个盟友(HP 0),6=所有盟友(HP 0),7=使用者。
地图与事件
get_map · get_map_infos · get_map_events · get_map_event ·
update_map_event · create_map_event · create_transfer_event ·
search_map_events · add_event_command · add_show_text
地图位于 Data/MapXXX.rxdata。除非设置 includeTiles: true,否则 get_map 会汇总图块 Table。事件是以事件 ID 为键的哈希表。
add_show_text 会处理 XP 的消息结构(首行为代码 101,后续行为 401,每个文本框 4 行)。XP 特有规则:代码 101 直接携带文本(不同于 VX+);选项文本会同时冗余存储在 102 数组和 402 分支中,必须保持同步;移动路线代码为 209/509。
地图制作(绘制图块)
get_map_design_guide · get_map_size_advisory · create_map ·
get_map_tiles · set_map_tiles · fill_region · apply_autotile ·
scatter_tiles
apply_autotile 会绘制自动图块,并根据 8 邻接关系为每个单元计算无缝边缘变体——可提供有机形状的 blob(池塘、湖泊、森林)、cells 列表(河流、弯曲路径),或 region 矩形(仅适用于矩形地板)。scatter_tiles 会按目标密度分散杂物,也可选择使用焦点渐变。二者结合使用,可以避免出现块状池塘和细节挤在角落的问题,让地图不再显得像程序生成的。参见 MAP-DESIGN.md §5b。
图层(Map.data z,绘制顺序为 z0→z1→z2 = 编辑器图层 1/2/3)按用途分配:z0 地形(自动图块),z1 地面杂物(优先级 0),z2 高空元素(优先级 > 0——玩家会从树冠和屋顶后方走过)。
图块 ID:0 = 空;48–383 = 自动图块(slot=id/48-1,variant=id%48);≥384 = 普通图块(col=(id-384)%8,row=(id-384)/8)。
制作地图前请先加载 get_map_design_guide——create_map 也会直接返回其中的核心规则。get_map_size_advisory 会报告现有地图的屏幕数量、目标焦点数量、建议的散布密度和超大地图警告。
验证
validate_assets · validate_connectivity
validate_assets 会扫描每个数据文件中引用的图像和音频文件名——图块集、自动图块、全景图、雾效、战斗背景、角色、战斗角色和图标图像、动画、窗口皮肤、标题、游戏结束画面、转场、BGM/BGS/ME 和地图事件精灵——并报告磁盘上不存在文件的引用。否则,这些失效引用要等到运行时才会静默暴露。它会先检查项目的 Graphics/ 和 Audio/,再检查 RTP,并且不论扩展名如何,均按基本文件名匹配。
validate_connectivity 会构建世界地图转移图,并报告无法从起始地图到达的地图、指向缺失地图或越界图块的转移,以及死路。
图块集识别与预览
create_tileset_identification_harness · get_tileset_catalog ·
save_tileset_catalog · validate_tileset_catalog · render_tileset_atlas ·
render_map
create_tileset_identification_harness 会生成一个以证据为先的审查包:源图、带有烧录图块 ID 标签的副本、独立的透明图块图像、源行、自动图块源、引擎元数据、目录模板和交互式浏览器页面。经审核的标签、预期用途、对象网格、图层和置信度都保存在独立目录中,因此通行性或视觉相似性不会被悄然当作语义判断。参见 TILESET-CATALOG.md。
render_tileset_atlas 会将图块集渲染为带标签的 PNG——图像按比例缩放并带网格,每个图块都烧录有 ID,显示通行性圆点(红色 = 阻挡,橙色 = 部分阻挡),并附有 7 个自动图块槽位的图例。
render_map 会在编辑器外将地图的图块图层渲染为平面俯视 PNG 预览图,让你能看到自己制作的内容。它会使用图块集图像(ID ≥ 384)及其自动图块(ID 48–383,通过交叉验证的 48 种变体象限表)合成全部三层。选项:layers、scale、region、drawGrid、drawEvents、passability。文件写入 Data/.mcp-preview/map<NNN>.png,并返回路径。
仅提供布局预览——不包含优先级/高空元素绘制顺序、雾效、全景图或天气,自动图块动画使用第 0 帧。
素材导入验证
classify_asset · verify_tileset · register_tileset
仅按画布尺寸对图块表排序,会悄悄错误导入为其他引擎制作的素材。因此,这些工具会检测真实的内容图块尺寸(通过边缘周期性判断候选尺寸,候选尺寸必须能整除画布,并优先选择原生的 32px),并根据文件名进行识别:$/! 前缀表示属于 Characters 的单个对象精灵,而非图块集;只有当内容尺寸不是 32px 时,A1–A5 才表示 MV/MZ 自动图块表,否则就是战斗者变体。
verify_tileset 会生成网格叠加预览,让你在导入前看清缩放问题。register_tileset 会添加受保护的 Tilesets.rxdata 条目,其通行度/优先级/地形 Table 的大小与图块表匹配;对于非原生素材,除非明确强制,否则会拒绝添加。
数据库、脚本与系统
数据库 — get_database · get_database_entry · update_database_entry
通用访问所有数据库文件,包括没有专用工具的文件(Classes、States、Enemies、Troops、CommonEvents、Tilesets……)。图块集的通行设置位于 passages Table 中:0 = 可通行;1/2/4/8 = 阻挡下/左/右/上方;15 = 不可通行;+64 灌木;+128 计数器。
脚本 — get_scripts · get_script · update_script · create_script ·
search_scripts
完整访问 RGSS 脚本,并处理 zlib。源码以 [magic, name, zlib-deflated code] 三元组的形式存储;每个脚本的 magic number 对编辑器没有实际意义。按照惯例,create_script 会在 Main 上方插入脚本。二进制安全——脚本数据不会经过 UTF-8 转换。
系统 — get_system · get_variables · set_variable_name ·
get_switches · set_switch_name · get_game_title · update_game_title ·
update_starting_position
工作原理
Marshal 层
.rxdata 文件使用随附的、修复过错误的
@hyrious/marshal 副本(src/vendor/marshal/)
进行解析,并转换为普通 JSON。Ruby 对象会转换为
{ "_class": "RPG::Actor", ... },实例变量作为字段(不带开头的
@)。
随附副本的原因: 上游版本 ≤0.3.3 会错误解码负的多字节 Marshal
整数——−150 会被解码为 +106。在 XP 中,治疗的威力为负数,因此这个错误会在保存时
悄无声息地把每个治疗技能都变成伤害技能。详情见
research/REPORT.md。
RGSS 二进制类 Table(图块和参数网格)、Color 和 Tone 都有专用编解码器。保存时,字符串会以原始字节字符串写入,不附带 Ruby 1.9 编码实例变量,否则 XP 的 Ruby 1.8 / RGSS104E 会拒绝加载它们。
游戏标题保存在 Game.ini 中,而不是 System 数据中——这点与 MZ 不同。
RMXP 安装目录中 16 个模板 .rxdata 文件里,有 15 个往返转换后字节完全一致。唯一例外是 Scripts.rxdata,往返测试会排除它而不是报错:它将 zlib 压缩的源代码存储为二进制字符串,因此需要使用原始路径(readRxdataRaw),而不是数据库其余部分使用的 UTF-8 路径。脚本工具能够正确处理它;只有往返测试会跳过它。
保护项目的行为
- 自动备份 — 在会话中首次写入任何文件之前,会将原文件复制到
Data/.mcp-backup/<name>.bak(Game.ini则复制到项目根目录)。请参阅顶部的警告:每个文件每个会话备份一次。 - 保存修订标记 — 写入地图和事件时会重新生成
System.magic_number,与编辑器的行为一致,确保现有存档重新加载已更改的地图,而不是保留过期副本。 - 事件列表不变量 — 保存时会规范化命令列表:每条命令都会包含 code/indent/parameters,并确保末尾有
{code: 0, indent: 0, parameters: []}终止符。 - 经验证的引擎数学逻辑 — 技能工具会说明从
Game_Battler 3提取的 XP 实际伤害算法,辅助函数也经过校准,符合默认数据库惯例(治疗技能的威力为负数,int_f为 50)。
如何让每个客户端都能获取规范
服务会提供自己的指引,因此任何 MCP 客户端都能获取这些规范——而不仅限于能够读取此仓库的客户端:
- 服务说明会在连接时发送(治理规则 + 地图设计规则),并由大多数客户端注入上下文。
- 指南以 MCP 资源(
rpgmaker-xp://docs/…)形式提供:map-design、tileset-catalog、authoring、wisdom。 get_map_design_guide会返回完整指南;create_map会内联返回核心规则。
测试
npm run build
node test/roundtrip.mjs # Marshal round-trip against real RMXP data
node test/tools.mjs # end-to-end tool tests on a scratch project
node test/server-smoke.mjs # MCP stdio handshake + tool calls
node test/render.mjs # renderer: autotile table + PNG renders
node test/tileset-catalog.mjs # catalog validation
node test/authoring.mjs # map authoring primitives
node test/connectivity.mjs # transfer-graph validation
node test/validate.mjs # asset reference checking
node test/extract-scripts.mjs # Scripts.rxdata extraction
往返测试会加载 RMXP 安装目录中新建项目模板中的每个 .rxdata 文件,将其转换为 JSON 后再转回,并验证输出的字节是否完全一致。渲染测试需要本地 RMXP 图像资源(Steam RTP 安装目录和
library/Valentine90-ABS 测试资源);如果缺少这些资源,测试会跳过而不是失败;自动图块表完整性检查始终会运行。
文档
| 文档 | 内容 |
|---|---|
| SETUP.md | 安装与配置指南、故障排查 |
| EXAMPLES.md | 操作示例——可以提出哪些需求,以及由此生成的工具调用 |
| AUTHORING-XP.md | 面向 XP 编写内容,以及此服务如何充当治理层,在人类和模型共同编辑项目时确保项目保持规范一致 |
| MAP-DESIGN.md | 关卡设计:三层模型、优先级与可通行性、多格对象规则、构图 |
| SKILL_CREATION_GUIDE.md | 深入介绍 XP 的伤害模型,以及技能创建工具 |
| TILESET-CATALOG.md | 以证据为先的图块识别、对象分组、置信度规则 |
| CONTENT-SOURCES.md | 经过许可证审核的 RGSS1 脚本库目录,可使用 create_script 安装 |
| WISDOM.md | 汇总的工程笔记:Marshal 层、战斗计算、事件系统,以及与编辑器共存 |
| research/ | 事件命令表、RGSS 类定义、解码器错误报告 |
致谢
基于 k4zuki0539/-rpgmaker-mz-mcp 分叉
(RPG Maker MZ MCP Server,MIT 许可证),随后为 RPG Maker XP 重新编写。MZ
版本针对 MZ 的 JSON 数据;本分叉直接读取和写入 XP 的 Ruby 1.8
Marshal .rxdata,并新增技能、脚本、数据库和渲染工具、经过字节验证的 Marshal 编解码器、地图创作和地图渲染功能。
保留了上游作者署名和 MIT 许可证——详见 LICENSE。
由 SerifeusStudios 维护。
第三方组件及其许可证列于
THIRD-PARTY-NOTICES.md。
RPG Maker XP 是 Enterbrain / Gotcha Gotcha Games 的产品。本项目与其无关联,也不包含任何引擎资源。
许可证
MIT——© 2025 k4zuki0539(原 MZ MCP)和 © 2026 SerifeusStudios(XP 分叉)。
详见 LICENSE 和 THIRD-PARTY-NOTICES.md。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。