3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Godotでゲームを作りたかったのに既存MCPの機能が足りなかったので、AIが自分でデバッグまでしてくれるMCPサーバーを作った

3
Last updated at Posted at 2026-02-24

背景: ゲームを作りたかっただけなのに

私は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_sceneattach_script シーンを開いてスクリプトをアタッチ
4 add_node ×4 ScoreLabel, TurnLabel, MessageLabel, RestartButton
5 save_scene シーンを保存
6 set_project_setting メインシーンに設定
7 reload_projectplay_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がゲームをテストする」には、最低限こういうツールが必要です:

  1. ゲームを起動・停止する (play_scene / stop_scene)
  2. 実行中のゲームにキー入力やマウスクリックを送る (simulate_mouse_click 等)
  3. 実行中のゲーム画面を見る (get_game_screenshot)
  4. 実行中のゲーム状態を読む (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 買い切り・アップデート無料

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?