背景: ゲームを作りたかっただけなのに
私はGodotでゲームを作っています。AIにコードを書かせる流れは当然試しましたが、既存のGodot向けMCPサーバーは機能が足りなかった。
無料のMCPサーバー(godot-mcpなど)は約13ツールで、シーンやスクリプトのファイル操作が中心です。ゲームを起動することすらできない。コードを生成して「あとは自分で動かして確認してね」という状態でした。
私が欲しかったのは、AIに丸投げしたらビルドからテストまで勝手にやってくれるワークフローです。自分にかかる手間を極限まで小さくしたい。特に「ビルドして動かして確認して、ダメだったら修正してもう一回」というサイクルを、AIが自律的に回せるようにしたかった。
ないなら作るしかない、ということで Godot MCP Pro を作りました。84ツール、14カテゴリ。ゲームの起動・入力シミュレーション・スクリーンショット取得・ランタイム分析まで全部入りのMCPサーバーです。
この記事では、そのデモとして1つのプロンプトだけでリバーシゲームを完成させ、AIが自らプレイテストする様子を紹介します。
デモ: 1プロンプトでリバーシを作ってテストまで
空のGodotプロジェクトに対して、以下のプロンプトを1回投げただけです。
このGodotプロジェクトにリバーシ(オセロ)ゲームを完成させてください。
シーンは1つ(main.tscn)、スクリプトも1つ(main.gd)で構成し、
描画はすべて _draw() で行います。スプライトやテクスチャは不要です。
要件:
- 8x8の盤面。濃い緑の背景、さらに暗いグリッド線、ダークブルーグレーのページ背景
- 黒と白の円形の駒(アウトライン付き)
- 有効な手には黄色の半透明ハイライト
- 最後に置いた駒に赤い円のインジケーター
- 標準リバーシルール: 8方向の相手駒を挟んでひっくり返す
- 黒が先手。置ける場所がない場合は自動パス
- ひっくり返しアニメーション: scale X 1→0→1、アニメーション中は入力をブロック
- UI: ScoreLabel(上部)、TurnLabel(下部)、MessageLabel(中央)、RestartButton
ビルド後、メインシーンに設定し、プロジェクトをリロードしてからプレイしてください。
その後、自分でプレイテストしてください:
1. スクリーンショットを撮って、初期盤面が正しく描画されていることを確認
2. simulate_mouse_clickで有効なセルをクリックして、合計4手プレイ
3. 各手の後にスクリーンショットを撮影して検証
4. 何か問題があれば、シーンを停止し、バグを修正して最初からテストし直す
ポイントは後半の「自分でプレイテストしてください」の部分。これがあるから、AIはビルドして終わりではなく、自分でゲームを起動してテストするフローに入ります。
何が起きたか
ビルドフェーズ(約2分)
AIは以下のツールを自律的に呼び出して、ゲームを組み上げました。
| 順序 | ツール | やったこと |
|---|---|---|
| 1 | create_script |
main.gd — 盤面ロジック、描画、UI、全て_draw()で実装 |
| 2 | create_scene |
main.tscn を作成 |
| 3 |
open_scene → attach_script
|
シーンを開いてスクリプトをアタッチ |
| 4 |
add_node ×4 |
ScoreLabel, TurnLabel, MessageLabel, RestartButton |
| 5 | save_scene |
シーンを保存 |
| 6 | set_project_setting |
メインシーンに設定 |
| 7 |
reload_project → play_scene
|
リロードしてゲーム起動 |
ここまではまだ「よくあるAIコード生成」の延長に見えるかもしれません。次からが本題です。
プレイテストフェーズ(約2分)
AIがゲームを起動した後、スクリーンショットを撮って盤面を確認 → マウスクリックで手を打つ → 結果をスクリーンショットで検証というサイクルを自分で回し始めました。
手1(黒 D3): simulate_mouse_click(370, 210)
→ スクリーンショット → 「手1成功。黒4、白1。D4の白が黒にひっくり返りました」
手2(白 C3): simulate_mouse_click(310, 210)
→ スクリーンショット → 「手2成功。黒3、白3。反転が正常動作」
ここまでは順調。問題は手3からです。
手3(黒 B2): simulate_mouse_click(250, 150)
→ スクリーンショット → 「B2は有効手ではなかったようです。スコアが変わっていません」
→ 盤面の黄色ハイライトを確認して C4 に自動修正 → 成功
手4(白 E2): simulate_mouse_click(430, 150)
→ スクリーンショット → 「E2も有効手ではなかったようです」
→ 有効手を特定して E3 に自動修正 → 成功
手3と手4で無効な手を打ってしまったのですが、AIはスクリーンショットからスコアが変わっていないことを検出し、盤面上の黄色いハイライト(有効手の位置)を読み取って正しいセルに修正しています。
これが私が作りたかったワークフローです。「バグがあれば修正せよ」とプロンプトに書くだけで、AIが自発的にデバッグフローを回してくれる。既存のMCPサーバーでは、ゲームの起動もスクリーンショットの取得もできないので、このループは原理的に不可能でした。
レポート
最後にAIは検証結果をまとめて報告してきました:
| 機能 | 状態 |
|---|---|
| 8x8盤面(濃い緑背景、暗いグリッド線) | OK |
| 黒・白の円形駒(アウトライン付き) | OK |
| 有効手の黄色ハイライト | OK |
| 最後の手に赤いインジケーター | OK |
| 8方向のひっくり返しルール | OK |
| ひっくり返しアニメーション(scale X) | OK |
| スコア・ターン表示 | OK |
| パス自動処理 | OK |
| リスタートボタン | OK |
なぜ既存のMCPでは足りなかったのか
「AIがゲームをテストする」には、最低限こういうツールが必要です:
-
ゲームを起動・停止する (
play_scene/stop_scene) -
実行中のゲームにキー入力やマウスクリックを送る (
simulate_mouse_click等) -
実行中のゲーム画面を見る (
get_game_screenshot) -
実行中のゲーム状態を読む (
get_game_scene_tree,get_game_node_properties)
既存のMCPサーバーはファイル操作中心なので、1〜4がすべて欠けています。コードは書けるけど、動かして確認する部分は人間がやるしかなかった。
Godot MCP Proでは、これらの「ランタイム系」ツールを最初から設計に組み込みました。だからAIが「ビルド → 起動 → テスト → 修正」のサイクルを自律的に回せます。
アーキテクチャ
AIアシスタント ←--stdio/MCP--→ Node.jsサーバー ←--WebSocket--→ Godotエディタプラグイン
- MCP(Model Context Protocol): Anthropicが策定したオープンプロトコル。AIにツールを提供する標準規格
- WebSocket: エディタとの双方向リアルタイム通信。10秒間隔のheartbeat + 自動再接続
- EditorUndoRedoManager経由: AIが行った変更はすべてCtrl+Zで取り消し可能
84ツール / 14カテゴリ
| カテゴリ | 数 | 概要 |
|---|---|---|
| プロジェクト | 7 | ファイルシステム、設定、UID変換 |
| シーン | 9 | 作成・削除・インスタンス・再生・停止 |
| ノード | 11 | 追加・削除・移動・プロパティ・シグナル |
| スクリプト | 6 | 一覧・読取・作成・編集・アタッチ |
| エディタ | 8 | スクリーンショット・エラー取得・GDScript実行 |
| 入力シミュレーション | 5 | キーボード・マウス・アクション・シーケンス |
| ランタイム分析 | 4 | ライブシーンツリー・プロパティ監視 |
| アニメーション | 6 | 作成・トラック・キーフレーム |
| タイルマップ | 6 | セル操作・矩形塗り・情報取得 |
| テーマ・UI | 6 | 色・定数・フォント・スタイルボックス |
| シェーダー | 6 | 作成・編集・パラメータ設定 |
| バッチ処理 | 5 | 検索・一括変更・依存関係 |
| プロファイリング | 2 | パフォーマンスモニター |
| エクスポート | 3 | プリセット・ビルド |
入力シミュレーション・ランタイム分析・シグナル管理は、現時点で他のGodot向けMCPサーバーにはない機能です。
実際のゲーム開発でどう使っているか
リバーシのデモは派手ですが、日常的に助かっているのはもっと地味な場面です:
- UIの配置やプロパティ設定: 「このLabelのフォントサイズを24にして、アンカーを中央上に」— AIがエディタ上で直接変更
- シグナル接続: ボタンのpressedシグナルを繋ぐ作業をAIに任せる
- プロトタイピング: 新しいメカニクスを「こういう動きにして」と投げてビルド&テストまで一気に
- バグ調査: 「ゲームを起動してこの操作をした後のプレイヤーの状態を見て」— AIがランタイムのプロパティを読んで報告
まとめ
ゲームを作りたかった。AIにコードを書かせるだけでは、結局「動かして確認」は自分でやるしかなかった。既存のMCPサーバーにはゲームの起動やテストに必要な機能がなかった。だから作りました。
Godot MCP Pro — 84ツール・14カテゴリ・$5 買い切り・アップデート無料