rpgmaker-xp-mcp について
rpgmaker-xp-mcpは、MCPクライアントから自然言語で操作するツールを通じて、RPG Maker XPのプロジェクトデータを読み書きできます。ネイティブの`.rxdata`ファイルを直接編集し、エディターを開かずにマップのPNGプレビューを生成します。
主な機能
- 01XPプロジェクトデータファイルの読み書き
- 02アクター、アイテム、スキル、マップ、イベントの管理
- 03マップタイルの作成と編集
- 04アセット参照とマップ接続の検証
- 05マップとタイルセットのPNG画像出力
活用シーン
- 01ゲームデータベース項目の作成や更新
- 02マップ作成とレイアウトプレビューの確認
- 03複数マップにわたる会話やイベントの検索
- 04不足アセットや到達不能なマップの確認
MCP 対応
サーバーはstdio経由でMCPクライアントと通信し、RPG Maker XPのプロジェクトデータを読み書き、検証、描画する65種類のツールを公開します。プロジェクトのネイティブ`.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 のゲームを作成できます。
「HPを200回復し、150ゴールドで購入できる回復ポーションを作成して。」 「北東に池のある40×30の森のマップを作って、表示して。」 「マップ3で、セリフに王様への言及があるNPCをすべて探して。」
これは、RPG Maker XP プロジェクトの .rxdata ファイル(アクター、スキル、アイテム、マップ、イベント、スクリプト、システムデータ)を直接読み書きし、マップのプレビューを PNG にレンダリングする MCP サーバーです。エディターを開かずに、作成したものを確認できます。
XP 独自の Ruby 1.8 Marshal 形式を扱います。エクスポート、変換、サイドファイルへの保存は行いません。実際のプロジェクトを編集し、エディターで通常どおり開けます。
⚠️ 初回実行の前にお読みください
1. サーバーの実行中は RPG Maker XP エディターを閉じてください。 エディターはすべてのデータファイルをメモリに保持し、保存時にそれらをすべて書き換えます。エディターを開いたままにすると、このサーバーが変更した内容はすべて上書きされます。作業を失う最もよくある原因です。
2. まずプロジェクトをバックアップしてください。 Data/ フォルダー全体を安全な場所にコピーしてください。サーバーも独自にバックアップを作成しますが、それでも行ってください。理由は次のとおりです。
3. 自動バックアップはバージョン履歴ではありません。 セッション中にファイルへ初めて書き込む前に、サーバーは元のファイルを Data/.mcp-backup/ にコピーします。これはファイルごと、セッションごとに .bak ファイルが1つ作成されるということです。次のセッションでは上書きされます。直前の作業からは保護できますが、1週間前に壊してしまった内容からは保護できません。大切なプロジェクトなら、git に保存してください。
4. 変更後はゲームをテストしてください。 ファイルの構造が正しくても、ゲームにとって不適切な場合があります。
MCP とは?
Model Context Protocol は、AI アシスタントが外部ツールを使うための標準規格です。このサーバーはチャットプログラムではなく、独自のインターフェースもありません。MCP クライアントが接続するバックエンドです。
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 を操作するためです。ただし、正直にお伝えすべき注意点が2つあります。Essentials はエンジンの上に独自の規約を重ねており(独自のデータファイル、非常に大きな Scripts.rxdata、PBS テキストファイルなど)、このサーバーはそれらについて何も把握していません。また、プロジェクトのサイズが大きいため、上記のバックアップの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
その後、以下の設定では、コマンドとして dist/index.js のパスを指定して node を使用してください。
設定
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 経由でローカルモデルを使う
このサーバーは標準的な MCP over stdio で通信するため、Claude 以外のあらゆる MCP クライアントで動作します。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 のアクターは、MZ 形式の特徴ではなく parameters Table(6×100。各レベルの MaxHP、MaxSP、STR、DEX、AGI、INT)を使用します。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 にダメージ計算式はありません。ダメージは、ステータス影響率(物理は atk_f/str_f、魔法は int_f)で補正した power を、対象の pdef_f/mdef_f で軽減した値です。負の power は回復を意味します。 create_buff_skill はありません。XP にバフシステムはないため、ステートを使用してください。
対象範囲:0=なし、1=敵1体、2=敵全体、3=味方1体、4=味方全体、 5=味方1体(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 に保存されています。get_map は includeTiles: true が指定されていない場合、タイルの Table を要約します。イベントはイベント ID をキーとするハッシュです。
add_show_text は、XP のメッセージ構造(1行目=コード 101、続きの行=401、1つのボックスにつき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 の順に描画=エディターの Layer 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 バリエーションの象限テーブルを使用)を使って、3 つのレイヤーすべてを合成します。オプション:layers、scale、region、drawGrid、drawEvents、passability。Data/.mcp-preview/map<NNN>.png に書き込み、パスを返します。
レイアウトのプレビューのみ — 優先度/頭上要素の描画順、フォグ、パノラマ、天候は含まれません。また、オートタイルのアニメーションにはフレーム 0 を使用します。
アセットのインポート検証
classify_asset · verify_tileset · register_tileset
キャンバスの寸法だけでシートを分類すると、別のエンジン向けに作成されたアセットが気付かないうちに誤ってインポートされます。そのため、これらのツールは真のコンテンツタイルサイズを検出します(キャンバスを均等に分割できる候補を使ったエッジ周期性に基づき、標準の32pxを優先します)。さらに、ファイル名の特徴も確認します。$/! の接頭辞がある場合は、タイルセットではなく Characters に配置する単一オブジェクトのスプライトです。A1~A5 は、コンテンツが32pxではない場合に限りMV/MZオートタイルシートを示し、それ以外の場合はバトラーのバリエーションです。
verify_tileset はグリッドを重ねたプレビューを作成し、インポート前にスケールの問題を確認できるようにします。register_tileset は、シートに合ったサイズの通行設定/優先度/地形のテーブルを含む、保護機能付きの Tilesets.rxdata エントリーを追加します。また、明示的に強制されない限り、標準形式ではないアセットの登録を拒否します。
データベース、スクリプト、システム
データベース — get_database · get_database_entry · update_database_entry
専用ツールがないもの(Classes、States、Enemies、Troops、CommonEvents、Tilesets…)も含め、すべてのデータベースファイルに汎用的にアクセスできます。タイルセットの通行可否は passages テーブルに格納されています。0 = 通行可能、1/2/4/8 = 下/左/右/上を通行不可、15 = 通行不可、+64 = 茂み、+128 = カウンターです。
スクリプト — get_scripts · get_script · update_script · create_script ·
search_scripts
zlib の処理を含む、RGSS スクリプトへの完全なアクセスを提供します。ソースは [magic, name, zlib-deflated code] のトリプレットとして保存されます。スクリプトごとのマジックナンバーはエディターでは意味を持ちません。慣例として、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 のエンコーディング ivar を付けずに生のバイト文字列として書き込まれます。そうしないと XP の Ruby 1.8 / RGSS104E で読み込めません。
ゲームのタイトルは MZ と異なり、System データではなく Game.ini に格納されています。
RMXP のインストールに含まれるテンプレート .rxdata ファイル 16 個のうち、15 個はラウンドトリップ後もバイト単位で同一です。例外は Scripts.rxdata です。ラウンドトリップテストでは失敗扱いにせず、対象から除外します。このファイルには zlib 圧縮されたソースがバイナリー文字列として格納されているため、データベースの他の部分で使われる UTF-8 のパスではなく、生のパス(readRxdataRaw)が必要です。スクリプトツールは正しく処理します。スキップするのはラウンドトリップテストのみです。
プロジェクトを保護する動作
- 自動バックアップ — セッション中にファイルへ初めて書き込む前に、元のファイルを
Data/.mcp-backup/<name>.bakにコピーします(Game.iniの場合はプロジェクトのルート)。冒頭の警告をご覧ください。バックアップはファイルごとにセッション中 1 回です。 - 保存リビジョンマーカー — マップおよびイベントの書き込み時に、エディターと同様に
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 | レベルデザイン:3 層モデル、優先度と通行可能性、複数タイルにまたがるオブジェクトのルール、構成 |
| SKILL_CREATION_GUIDE.md | XP のダメージモデルの詳細と、スキル作成ツール |
| TILESET-CATALOG.md | 根拠に基づくタイルの識別、オブジェクトのグループ化、信頼度のルール |
| CONTENT-SOURCES.md | create_script でインストールできる、ライセンスを確認済みの RGSS1 スクリプトライブラリのカタログ |
| 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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。