🚀 GB Studio Agentic MCPサーバー - GameBoyゲーム作成用
学生や子供、自分自身のためにテンプレートを拡張するためのプロンプトを提供します。


🚀 クイックスタート
- インストール:
npm install -g gbstudio-claude-mcp
- サーバーの起動:
gbstudio-claude-mcp
- Claude Desktopとの接続 (詳細は
TUTORIAL.md を参照)
- Claudeへのプロンプト: "Review and test my application logic"
以上です。Claudeがレビュー、拡張、またはプレイ可能なゲームテンプレートを生成し、GB Studioで学生と一緒に繰り返し改善することができます。
✨ 主な機能
バイブコーディング、LLM、そして現代教育
14年間、子供たちにプログラミング、電子工作、3D印刷、ゲーム開発を教えてきた中で、私はこのことを学びました。最良の教育ツールは単に作業を容易にするだけでなく、学習を報酬のある活動に変えます。GB Studioはそのようなツールの1つです。これは視覚的なゲームビルダーで、Game Boyの開発環境を提供し、学生、教育者、ホビーistに物理的なハードウェア向けの開発を可能にします。GB Studioと大規模言語モデル(LLM)の可能性に関する教育を組み合わせることで、学生たちにLLMを依存するのではなく、統合する方法を示すことができます。
バイブコーディングとは?
「バイブコーディング」は単なる流行語ではありません。これはパラダイムシフトです。構文の壁を取り払ったプログラミングで、作成者はセミコロンの暗記ではなく、流れ、ロジック、アイデアに集中できます。Scratch、App Inventor、GB Studioなどのツールはこの哲学を体現しています。これらは障壁を取り除き、プログラミングを本質的に重要なこと、つまり創造性と問題解決に焦点を当てます。
子供たちにとって、バイブコーディングは彼らが育っていく中で身近なものです。これにより、彼らは構文の海に溺れることなく、プログラミングの「なぜ」と「どうするか」に集中することができます。これは単に便利なだけでなく、システム、デザイン、ロジックを考える能力があるが、伝統的なコーディングの急な学習曲線に阻まれている学生たちにとって重要です。
LLMの教育における役割
ChatGPTのような大規模言語モデルは教育分野で激しい議論を巻き起こしていますが、それには理由があります。不注意に使用すると、思考をコピーアンドペーストの考え方に置き換える不正行為のツールになりますが、目的を持って使用すると、本当の学習を加速する足場になります。違いはツール自体ではなく、私たちがそれを使う方法です。
Clawdbot MCPサーバーの目的
これがまさに私がClawdbot MCPサーバーを構築した理由です。LLMをGB Studioと直接統合することで、ユーザーと教師は以下のことができます。
- プロジェクトの足場を提供: シンプルなプロンプトからスターターテンプレート、アセット、イベントフローを生成します。
- 自動テスト: スモークテストを実行してバグを検出し、プロジェクトのロジックを検証します。
- 反復を促進: 提案や例を提供することで、学生がプロジェクトを改良するのを支援します。
ゲームはゼロから作成することもできますが、AAAクラスのゲームにはならないので、期待値を適切に設定してください。
ポンゲーム(Game Boy)
オリジナルのGame Boy用のポンゲームのクローンを作成します。2つのパドル、ボール、スコアカウンターがあります。プレイヤーは左のパドルを操作し、右のパドルはAIによって制御されます。シンプルなモノクログラフィックとオーソドックスなGBの効果音を使用します。プレイ可能なポンゲームのすべてのシーン、アクター、アセットを生成します。
パックマン(Game Boy Color)
Game Boy Color用のパックマンスタイルの迷路ゲームを作成します。プレイヤーは迷路をナビゲートし、ペレットを収集し、ゴーストを避けます。少なくとも1つの迷路レイアウト、基本的なAIを持つ4つのゴースト、そしてカラフルなグラフィックを含みます。プレイ可能なデモに必要なすべてのシーン、アクター、アセットを生成します。
マリオブラザーズスタイルのプラットフォーマー(Game Boy Color)
Game Boy Color用のマリオブラザーズをヒントにしたプラットフォーマーをデザインします。プレイヤーは走り、ジャンプし、敵を踏みつけることができます。3つのレベル、パワーアップ、コイン、そして各レベルの終わりに旗があります。明るいパレットとキャッチーな背景音楽を使用します。クラシックなプラットフォーマー体験のためのすべてのシーン、アクター、アセットを生成します。
宇宙シューティングゲーム(Game Boy)
オリジナルのGame Boy用の垂直スクロール型の宇宙シューティングゲームを作成します。プレイヤーは宇宙船を操作し、敵を撃ち、障害物を避けます。複数の敵の種類、パワーアップ、そしてボス戦を含みます。クラシックなGBグラフィックとチップチューンの効果音を使用します。プレイ可能なシューティングゲームのすべてのシーン、アクター、アセットを生成します。
📦 インストール
npmを使ってグローバルにインストールします。
npm install -g gbstudio-claude-mcp
ローカル環境の設定(.env)
ローカル開発のために、APIキーと設定をプロジェクトのルートにある .env ファイルに保存します。これにより、シークレット情報がソース管理から除外され、GitHub Actionsで使用されるパターンと一致します。
- プロジェクトのルートに
.env ファイルを作成します。CLAUDE_API_KEY=your-claude-api-key-here
# 必要に応じて他のキーを追加
- [dotenv] を使用すると、サーバーは自動的に
.env から変数を読み込みます。
.env ファイルはデフォルトでgitignoreされています。
.env ファイルをソース管理にコミットしないでください。
💻 使用例
基本的な使用法
サーバーを起動します。
gbstudio-claude-mcp
サーバーはデフォルトで http://localhost:3000 で実行されます。MCPクライアント(例: Claude Desktop)をこのサーバーに接続するように設定します。完全なセットアップとトラブルシューティングについては、このドキュメントの末尾にリンクされているチュートリアルを参照してください。
エンドツーエンドの使用例(WindowsとLinux/macOS)
このサーバーを使用してGB Studioゲームを構築するための完全なステップバイステップガイドについては、TUTORIAL.md を参照してください。これにはスクリーンショットとWindowsとLinux/macOSのトラブルシューティングヒントが含まれています。
MCPプロトコルのサポート
このパッケージは Model Context Protocol (MCP) をサポートしています。Claude Desktopや他のMCPクライアントと共に使用するために、サーバーをMCP stdioモードで実行することができます。
npm run build:mcp
node build/mcp.js
MCP stdioサーバーは http://localhost:3000 のローカルREST APIにプロキシします。そのため、最初にRESTサーバーを起動してください。別のポートを使用するには、GBSTUDIO_API_URL(完全なURL)または GBSTUDIO_API_PORT(ポート番号)を設定します。
gbstudio-claude-mcp
または、MCPクライアントの設定に以下を追加します。
{
"mcpServers": {
"gbstudio-mcp": {
"command": "node",
"args": ["/absolute/path/to/build/mcp.js"]
}
}
}
Clawdbot / Moltbot互換性
ClawdbotとMoltbotは、AgentSkills互換の SKILL.md ファイルを介してツールを検出します。このリポジトリには以下の場所に1つ含まれています。
skills/gbstudio-mcp/SKILL.md
互換性はトランスポートに依存します。
- Clawdbotがstdio MCPサーバーを子プロセスとして実行できる場合、
node build/mcp.js が機能します。
- Clawdbotの設定がHTTP+SSE MCPサーバーを期待している場合、ブリッジが必要です。このMCPサーバーはstdioのみです。
- REST APIのみを実行する場合、ClawdbotはMCPとしてツールを自動検出しません。
Moltbotでスキルを有効にするには、以下のようなエントリを追加します。
{
"skills": {
"load": {
"extraDirs": [
"~/.clawdbot/skills"
],
"watch": true,
"watchDebounceMs": 250
},
"entries": {
"gbstudio-mcp": {
"enabled": true,
"env": {}
}
}
}
}
📚 ドキュメント
プロジェクト構造
src/index.ts — メインサーバーとエンドポイントのロジック
tests/ — すべてのエンドポイントのJestテストスイート
tests/poachermon/ — 統合テスト用の実際のGB Studioプロジェクト
gbstudio_api_endpoints.csv — すべての計画されたエンドポイントのカタログ
ローカル開発
- リポジトリをクローンします。
git clone https://github.com/eoinjordan/gb-studio-agent
cd gb-studio-agent
- Node.jsをインストールします(推奨: v21.7.1または互換バージョン)
- 依存関係をインストールします。
npm install
- 開発サーバーを起動します。
npm run dev
- テストスイートを実行します。
npm test
エンドポイントの説明
ヘルスチェック
GET /health — ヘルスチェック用に { status: "ok" } を返します。
Claude APIキーの確認
GET /claude-key — 環境に CLAUDE_API_KEY が設定されている場合は { present: true } を返し、そうでない場合は404エラーとともに { present: false } を返します。
プロジェクトの検索
POST /find_project — 指定されたディレクトリから最初の .gbsproj ファイルを検索します。
- リクエストボディ:
{ startPath: string }
- レスポンス:
{ projectPath: string } または見つからない場合は404エラー
インベントリの取得
POST /inventory — GB Studioプロジェクトのルートからシーン、アクター、トリガー、アセットをリストします。
- リクエストボディ:
{ projectRoot: string }
- レスポンス:
{ scenes, actors, triggers, assets } またはエラー時は404/400エラー
プロジェクトの検証
POST /validate — GB Studioプロジェクトの構造を検証します(有効な .gbsproj ファイルと必要なフィールドのチェック)。
- リクエストボディ:
{ projectRoot: string }
- レスポンス: 有効な場合は
{ valid: true, message: string, scenes: number } を返し、無効または必要なフィールドが欠けている場合は400/404エラーとともにエラーメッセージを返します。
- エラーケース:
projectRoot が欠けている場合、または .gbsproj が無効または必要なフィールドが欠けている場合は400エラー
projectRoot が存在しない場合、または .gbsproj ファイルが見つからない場合は404エラー
シーンの作成
POST /scene/create — 指定されたGB Studioプロジェクトに新しいシーンを追加します。
- リクエストボディ:
{ projectRoot: string, scene: object }
- レスポンス: 成功時は
{ success: true, scene } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
アクターの作成
POST /actor/create — 指定されたシーンに新しいアクターを作成します。
- リクエストボディ:
{ projectRoot: string, sceneId: string, actor: object }
- レスポンス: 成功時は
{ success: true, actor } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
背景の作成
POST /background/create — プロジェクトに新しい背景を作成します。
- リクエストボディ:
{ projectRoot: string, background: object }
- レスポンス: 成功時は
{ success: true, background } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
スプライトの作成
POST /sprite/create — プロジェクトに新しいスプライトを作成します。
- リクエストボディ:
{ projectRoot: string, sprite: object }
- レスポンス: 成功時は
{ success: true, sprite } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
音楽の作成
POST /music/create — プロジェクトに新しい音楽トラックを作成します。
- リクエストボディ:
{ projectRoot: string, music: object }
- レスポンス: 成功時は
{ success: true, music } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
サウンドエフェクトの作成
POST /sound/create — プロジェクトに新しいサウンドエフェクトを作成します。
- リクエストボディ:
{ projectRoot: string, sound: object }
- レスポンス: 成功時は
{ success: true, sound } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
タイルセットの作成
POST /tileset/create — プロジェクトに新しいタイルセットを作成します。
- リクエストボディ:
{ projectRoot: string, tileset: object }
- レスポンス: 成功時は
{ success: true, tileset } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
トリガーの作成
POST /trigger/create — 指定されたシーンに新しいトリガーを作成します。
- リクエストボディ:
{ projectRoot: string, sceneId: string, trigger: object }
- レスポンス: 成功時は
{ success: true, trigger } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
変数の作成
POST /variable/create — プロジェクトに新しい変数を作成します。
- リクエストボディ:
{ projectRoot: string, variable: object }
- レスポンス: 成功時は
{ success: true, variable } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
スクリプトの作成
POST /script/create — プロジェクトに新しいスクリプトを作成します。
- リクエストボディ:
{ projectRoot: string, script: object }
- レスポンス: 成功時は
{ success: true, script } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
パレットの作成
POST /palette/create — プロジェクトに新しいパレットを作成します。
- リクエストボディ:
{ projectRoot: string, palette: object }
- レスポンス: 成功時は
{ success: true, palette } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
フォントの作成
POST /font/create — プロジェクトに新しいフォントを作成します。
- リクエストボディ:
{ projectRoot: string, font: object }
- レスポンス: 成功時は
{ success: true, font } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
エモートの作成
POST /emote/create — プロジェクトに新しいエモートを作成します。
- リクエストボディ:
{ projectRoot: string, emote: object }
- レスポンス: 成功時は
{ success: true, emote } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
アバターの作成
POST /avatar/create — プロジェクトに新しいアバターを作成します。
- リクエストボディ:
{ projectRoot: string, avatar: object }
- レスポンス: 成功時は
{ success: true, avatar } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
定数の作成
POST /constant/create — プロジェクトに新しい定数を作成します。
- リクエストボディ:
{ projectRoot: string, constant: object }
- レスポンス: 成功時は
{ success: true, constant } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
アクタープレファブの作成
POST /prefab/actor/create — プロジェクトに新しいアクタープレファブを作成します。
- リクエストボディ:
{ projectRoot: string, actorPrefab: object }
- レスポンス: 成功時は
{ success: true, actorPrefab } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
トリガープレファブの作成
POST /prefab/trigger/create — プロジェクトに新しいトリガープレファブを作成します。
- リクエストボディ:
{ projectRoot: string, triggerPrefab: object }
- レスポンス: 成功時は
{ success: true, triggerPrefab } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
設定の更新
POST /settings/update — プロジェクトの設定を更新します。
- リクエストボディ:
{ projectRoot: string, settings: object }
- レスポンス: 成功時は
{ success: true, settings } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
メタデータの更新
POST /metadata/update — プロジェクトのメタデータを更新します。
- リクエストボディ:
{ projectRoot: string, metadata: object }
- レスポンス: 成功時は
{ success: true, metadata } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
エンジンフィールド値の作成
POST /engine-field-value/create — プロジェクトに新しいエンジンフィールド値を作成します。
- リクエストボディ:
{ projectRoot: string, engineFieldValue: object }
- レスポンス: 成功時は
{ success: true, engineFieldValue } を返し、エラー時は400/404/500エラーとともにエラーメッセージを返します。
Claudeキーの設定
POST /claude/key — 環境にClaude APIキーを設定します。
- リクエストボディ:
{ key: string }
- レスポンス: 成功時は
{ success: true } を返し、エラー時は400エラーとともにエラーメッセージを返します。
ゲームのエンドツーエンド構築
このMCPサーバーとClaudeを使用してGB Studioゲームを構築するには、以下の手順を実行します。
- プロジェクトの検索:
/find_project を使用して既存の .gbsproj ファイルを見つけるか、ディレクトリから開始します。
- プロジェクトの検証:
/validate を使用してプロジェクトが有効であることを確認します。
- インベントリの取得:
/inventory を使用して現在のシーン、アクター、トリガー、アセットをリストします。
- シーンの作成:
/scene/create を使用して新しいシーンを追加します。
- アクターの作成:
/actor/create を使用してシーンにアクターを追加します。
- アセットの作成: 作成エンドポイント(現在はスタブ)を使用してスプライト、背景などを追加します。
- 設定/メタデータの更新: 更新エンドポイントを使用してプロジェクトを構成します。
- ビルド/エクスポート: (将来的に)ビルドエンドポイントを使用してゲームをコンパイルします。
すべてのエンドポイントは現在完全に機能しています。
サンプルプロンプト
異なるゲームジャンルの詳細なサンプルプロンプトと完全なエンドツーエンドのワークフローについては、TUTORIAL.md を参照してください。
テストカバレッジ
すべてのエンドポイントは tests/ ディレクトリ内のJestテストによってカバーされています。すべての機能を検証するには npm test を実行してください。テストは実際のサンプルプロジェクトを使用しています。
パブリッシュ
新しいバージョンをパブリッシュするには、以下の手順を実行します。
package.json のバージョンを更新します。
- プロジェクトをビルドします。
npm run build
- npmにログインします。
npm login --auth-type=legacy
- npmにパブリッシュします。
npm publish --access public
詳細については、npmのパブリッシュドキュメントを参照してください。
コントリビュート
- リポジトリをフォークします。
- 機能ブランチを作成します。
- 変更を加え、テストを追加します。
- https://github.com/eoinjordan/gb-studio-agent にプルリクエストを送信します。
📄 ライセンス
MITライセンスの下で公開されています。