mcpField
R
rpgmaker-xp-mcp

rpgmaker-xp-mcp

本地服务
github.com/SerifeusStudio开发工具46 周前更新

关于 rpgmaker-xp-mcp

rpgmaker-xp-mcp 让 MCP 客户端通过自然语言驱动的工具读取和编辑 RPG Maker XP 项目数据。它直接处理原生 `.rxdata` 文件,还能生成地图布局的 PNG 预览,无需打开编辑器。

主要功能

  1. 01读取和编辑 XP 项目数据文件
  2. 02管理角色、物品、技能、地图和事件
  3. 03创建和修改地图图块
  4. 04验证资源引用和地图连通性
  5. 05将地图和图块集渲染为 PNG 图像

适用场景

  1. 01创建或更新游戏数据库条目
  2. 02制作地图并查看布局预览
  3. 03跨地图查找对话或事件
  4. 04检查项目中的缺失资源或不可达地图

MCP 相关

该服务通过 stdio 与 MCP 客户端通信,提供 65 种工具,用于读取、写入、验证和渲染 RPG Maker XP 项目数据。它直接编辑项目的原生 `.rxdata` 文件。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"serifeusstudio-rpgmaker-xp": {
"command": "npx",
"args": [
"-y",
"rpgmaker-xp-mcp"
],
"env": {
"RPGMAKER_PROJECT_PATH": "<RPGMAKER_PROJECT_PATH>",
"RPGMAKER_RTP_PATH": "<RPGMAKER_RTP_PATH>"
}
}
}
}
启动命令npx -y rpgmaker-xp-mcp
需要配置的环境变量
RPGMAKER_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmrpgmaker-xp-mcp1.1.3

工具

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.js18 或更高版本
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。

`create_transfer_event` 会关联两张地图,并在写入前验证两个端点均存在且位于有效范围内。之后运行 `validate_connectivity`。 完整的 110 个代码表见 [`research/event-commands.md`](research/event-commands.md)。
地图制作(绘制图块)

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。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。