Tripwire について
Tripwireは、コーディングエージェントでRobloxを開発する人向けのMCPサーバーです。Roblox Studioの編集やプレイテストに加え、ヘッドレステスト、セキュリティ検査、Open Cloud操作を提供します。
主な機能
- 01Studioのインスタンスとスクリプトの検査・編集
- 02入力をシミュレートしたプレイテスト
- 03Luauのヘッドレステスト実行
- 04クライアント信頼に関する脆弱性の検出
- 05Roblox Open Cloud APIの呼び出し
活用シーン
- 01エージェント経由でRobloxゲームを検査・編集
- 02プレイテストを自動化し実行ログを確認
- 03ゲームコードのクライアント信頼リスクを調査
- 04DataStoresなどOpen Cloudサービスを管理
MCP 対応
MCPクライアントにRoblox Studioの操作、テスト、セキュリティ分析、Open Cloud操作のツールを公開します。Studioツールはプラグイン経由で接続し、ヘッドレステストとクラウドツールにはOpen Cloudキーが必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y tripwire-robloxROBLOX_OPEN_CLOUD_KEYシークレットOpen Cloud API key. Needed for the headless test and Open Cloud tools; the Studio path does not use it.ROBLOX_UNIVERSE_IDUniverse id the Open Cloud tools target. Set it alongside the key and place id.ROBLOX_PLACE_IDPlace id the Open Cloud tools target. Set it alongside the key and universe id.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Tripwire
alibolly が作成
AI コーディングエージェントが Roblox Studio と Roblox Open Cloud を実際に操作できるようにする MCP サーバーです。 他の Studio MCP にはない、テストとセキュリティのレイヤーを備えています。
Tripwire を使うと、アシスタントはデータモデルの読み取り、書き込み、編集、シミュレートされた入力によるプレイテストの実行、実際のエンジンでのヘッドレスなコードテスト、ゲームコードにおけるクライアント信頼の悪用の検出、Open Cloud API(DataStores、MessagingService、Memory Stores など)の呼び出しができます。Studio ツールに API キーは不要です。ヘッドレステスト、アセット、Open Cloud のツールには Open Cloud キーを使用します。
要件
- MCP クライアント:Claude Code、Codex、Gemini、または stdio 経由で MCP に対応する任意のクライアント。
- Studio ツールを使用する場合は、Roblox Studio が必要です。API キーは不要です。
- サーバーを
npxで実行する場合に限り、Node.js が必要です。ビルド済みバイナリには Node は不要です。 - ヘッドレステスト、アセット、Open Cloud のツールには、公開済みの place と Roblox Open Cloud API キーが必要です。Open Cloud のセットアップを参照してください。
クイックスタート
Tripwire は、AI コーディングエージェントを通じて Studio を操作する Roblox 開発者向けです。
- MCP クライアントにサーバーを接続します(コマンド 1 つ、または短い設定ブロックを使用します。以下のインストールを参照)。
- Studio ツールから Studio に接続できるよう、Studio プラグインをインストールします(「インストール」のプラグイン手順を参照)。
- Studio で place を開き、Game Settings > Security > Allow HTTP Requests をオンにします。次に Tripwire ツールバーのボタンをクリックし、パネルで Connect を押します。パネルに Connected と表示され、Output に
[Tripwire v...] connectedと出力されます。 - エージェントに
studio_statusを実行するよう依頼します。Studio に接続できていれば、ブリッジが動作しています。 - 任意:ヘッドレステスト、アセット、Open Cloud のツール用に Open Cloud キーを追加します(「Open Cloud のセットアップ」を参照)。
インストール
Tripwire のサーバーは単一のバイナリです。最も簡単な実行方法は npx を使うことです。プラットフォーム用のビルド済みバイナリが取得されるため、Rust ツールチェーンをインストールする必要はありません。手動でのバイナリ利用やソースからのビルドをご希望ですか?このセクションの最後にある「その他の方法」をご覧ください。
Claude Code
次のコマンドを実行します。
claude mcp add --transport stdio tripwire -- npx -y tripwire-roblox
または、プロジェクトの .mcp.json(もしくは ~/.claude.json)に追加します。
{
"mcpServers": {
"tripwire": {
"type": "stdio",
"command": "npx",
"args": ["-y", "tripwire-roblox"]
}
}
}
Codex
~/.codex/config.toml に追加します。
[mcp_servers.tripwire]
command = "npx"
args = ["-y", "tripwire-roblox"]
または、codex mcp add tripwire -- npx -y tripwire-roblox を実行します。
Gemini
~/.gemini/settings.json(もしくはプロジェクトの .gemini/settings.json)に追加します。
{
"mcpServers": {
"tripwire": {
"command": "npx",
"args": ["-y", "tripwire-roblox"]
}
}
}
または、gemini mcp add tripwire npx -y tripwire-roblox を実行します。
その他の MCP クライアント
標準入出力経由で MCP を利用するクライアントであれば、実行できます。
command: npx
args: ["-y", "tripwire-roblox"]
その他の方法:ビルド済みバイナリ、またはソースからビルド
ビルド済みバイナリ(Node 不要)。 Releases ページからプラットフォーム用のアーカイブ(例:tripwire-server-vX.Y.Z-aarch64-apple-darwin.tar.gz)をダウンロードして展開し、クライアントの command に展開した tripwire-server を、args は空の状態で指定します。
ソースからビルド(Rust が必要です)。
git clone https://github.com/aliboIly/Tripwire.git
cd Tripwire/server
cargo build --release # produces server/target/release/tripwire-server
次に、クライアントの command にそのバイナリのパスを指定します。
Studio プラグイン(Studio ツールに必要)
Studio ツールは、ローカルサーバーにロングポーリングする小さなプラグインを介して Studio に接続します。Releases ページから Tripwire.rbxmx を取得するか、次のコマンドでビルドします。
cd Tripwire/plugin
npm install
npx rbxtsc
rojo build --output Tripwire.rbxmx
cp Tripwire.rbxmx ~/Documents/Roblox/Plugins/ # macOS; Windows: %LOCALAPPDATA%\Roblox\Plugins
Studio を再起動し、Game Settings > Security > Allow HTTP Requests を有効にしてから、ツールバーの Tripwire ボタンをクリックし、パネルで Connect を押します。パネルに Connected と表示され、Output に [Tripwire v...] connected と出力されます。
Open Cloud キー(ヘッドレステスト、アセット、Open Cloud ツール用)
Studio ツールにキーは必要ありません。Open Cloud ツールには必要です。詳しい手順については、以下のOpen Cloud のセットアップをご覧ください。
Open Cloud のセットアップ
Tripwire の大半は認証情報を必要としません。以下のツールは Roblox Open Cloud を呼び出すため、認証情報が必要です。run_luau、ヘッドレステスト(run_tests、run_test_file、list_tests)、および以下の Open Cloud セクションにあるすべてのツール(アセット、公開、データストア、メッセージング、メモリ、ユニバースとサーバー、Engine Instance API、モデレーション、シークレット、収益化、Creator Store、グループ、分析、プラットフォーム、open_cloud_request)が対象です。認証には Roblox Open Cloud API キーを使用します。
自己責任でご利用ください。 Open Cloud キーは、エクスペリエンスに対して実際の操作権限を持つ認証情報です。付与するスコープによっては、稼働中の DataStore の読み取りや上書き、プレイスの新しいバージョンの公開、アカウントへのアセットのアップロード、サーバーへのメッセージ送信が可能になります。パスワードと同様に扱ってください。実際に使うスコープだけを付与し、自分の IP のみに制限し、決してコミットせず、漏えいした場合は失効させてください。このキーを使って行う操作については、ご自身が責任を負います。Tripwire は Roblox と提携しておらず、Roblox の承認も受けていません。
1. キーを作成する
- create.roblox.com/dashboard/credentials にアクセスしてサインインします。
- Create API Key をクリックし、名前を付けます(例:
Tripwire)。 - Access Permissions で、使用するツールに必要な API システムだけを追加し、それぞれに必要な操作を許可して、対象をエクスペリエンスに限定します。ダッシュボードで選択できるすべてのシステムに対応するツールがあります。対応表は、以下の権限とツールを参照してください。概要は次のとおりです。
- Luau Execution(書き込み):
run_luauとヘッドレステスト。 - universe-places(書き込み):
publish_place。 - Assets(読み取り+書き込み)と Asset Permissions:アセットツール。
- DataStores と Ordered DataStores:データストアツール。
- Messaging Service(パブリッシュ)と Memory Stores:それぞれに対応するツール。
- Universe、Place、Instance、User Restrictions、Secrets、Analytics:ユニバース、サーバー、インスタンス、モデレーション、シークレット、アナリティクスのツール。
- Developer Products、Game Passes、Creator Store:収益化とストアのツール。
- User/Group/Inventory/Subscription/Notification:プラットフォーム、グループ、エンゲージメントのツール。
- それ以外(レガシーおよび実験的なシステム):
open_cloud_request。
- Luau Execution(書き込み):
- Security で、Accepted IP Addresses にお使いのマシンの IP アドレスを設定するか、任意の IP アドレスを許可する場合は
0.0.0.0/0を設定します(ローカルでの使用にはこちらが最も簡単です)。必要に応じて有効期限も設定してください。 - Save & Generate Key をクリックし、キー文字列をコピーします。キーが表示されるのは一度だけです。
2. ユニバース ID とプレース ID を確認する
Studio のコマンドバー(View、次に Command Bar)で、次を実行します。
print("universe", game.GameId, "place", game.PlaceId)
GameId が ROBLOX_UNIVERSE_ID、PlaceId が ROBLOX_PLACE_ID です。Open Cloud が操作するには、プレースが Roblox に
公開済みである必要があります。
3. Tripwire に認証情報を設定する
リポジトリのルートに .env を作成します。このファイルは gitignore に登録されており、サーバーが自動的に読み込みます。
ROBLOX_OPEN_CLOUD_KEY=paste_the_key_here
ROBLOX_UNIVERSE_ID=000000
ROBLOX_PLACE_ID=000000
ROBLOX_CREATOR_USER_ID=000000 # only for upload_asset (your user id)
代わりに、同じ変数を MCP クライアントの env ブロックに記述することもできます(こちらの設定が優先されます)。
どちらを変更した場合も、MCP サーバーに再接続してください。各ツールは、キーに必要なスコープが付与されていれば動作し、スコープが不足している場合は Roblox 独自のエラーを返すため、必要に応じてスコープを追加できます。
ツール
接続
studio_status
Studio が接続されているかどうか、アクティブなプレース、その他に接続されている Studio を確認します。ping_studio
プラグイン経由で ping を往復させ、ライブブリッジが動作していることを確認します。list_studios
接続中または最近検出された Studio をすべて一覧表示します。プレース、アクティブかどうか、最終検出時刻、プレイテストの状態を確認できます。set_active_studio
ツールの対象とする接続済み Studio を選択します(ID、ID のプレフィックス、またはプレース名で指定)。Studio が 1 つの場合は自動的に選択されます。get_file_tree
パス(デフォルトではゲーム全体)から、深さを指定してインスタンスツリーを一覧表示します。get_instance_children
インスタンスの直接の子(名前とクラス)を一覧表示します。get_instance_properties
インスタンスの名前、クラス、完全なパス、属性、および一般的なエンジンプロパティ(Position、Size、Color、Material、Anchored、Text など)の厳選された項目を読み取ります。search_objects
名前に検索語を含むインスタンスを検索します。必要に応じて、完全一致するクラス、またはクラスとそのサブクラス(isA)で絞り込めます。search_by_property
プロパティが値と一致するインスタンスを検索します。必要に応じて、完全一致するクラス、またはクラスとそのサブクラス(isA)で絞り込めます。get_script_source
Script、LocalScript、またはModuleScriptのソースを読み取ります。grep_scripts
スクリプトのソースから部分文字列を検索し、パス、行番号、行を返します。get_output_log
Studio Outputの最近のエントリ(メッセージ、種類、タイムスタンプ)を取得します。get_selection
現在Studioで選択されているインスタンスを取得します。get_class_info
Robloxクラスのメンバー(プロパティ、メソッド、イベント)とその型を調べます。継承されたメンバーも含まれます。バンドルされたAPIリフレクションダンプから回答するため、Studioもキーも必要ありません。空間(読み取り専用)
raycast
レイを飛ばし、最初のヒット(インスタンス、位置、法線、マテリアル、距離)またはヒットなしを報告します。除外するサブツリーを指定することもできます。get_bounding_box
ModelまたはBasePartのワールド空間でのバウンディングボックス(中心とサイズ)を取得します。find_spawns
パス以下のSpawnLocationを一覧表示します。位置、有効かどうか、中立かどうかも含まれます。capture_screenshot
エージェントがシーンを確認できるよう、StudioのビューポートをJPEG画像としてキャプチャします。プラグインの接続と、Allow Mesh / Image APIsの有効化(Game Settings、Security)が必要です。編集モード専用です。編集(各操作が1回の元に戻す操作になります)
create_instance
クラスのインスタンスを作成します。名前と初期プロパティは任意で指定できます。delete_instance
インスタンスとその子孫を破棄します。set_property
型付きプロパティを1つ設定します(プリミティブ、Vector3、Color3、UDim2、CFrame、EnumItem、またはインスタンス参照)。update_script_source
スクリプトエディターを通じてスクリプトのソースを置き換えます(サポートされている書き込み方法)。insert_model
IDでアセットを挿入します。位置の変更や展開も任意で行えます。mass_create
1回の元に戻す操作で多数のインスタンスを作成します(アトミック、またはアイテムごとの結果を返すベストエフォート)。mass_set_property
1回の元に戻す操作で多数のインスタンスに同じプロパティを設定します(アトミックまたはベストエフォート)。start_playtest
F5 プレイテストを開始します(プレイヤーを含むサーバーとクライアントの DataModel)。ゲーム内ランナーを挿入します。stop_playtest
F5 プレイテストを停止します(ベストエフォートです。F5 の終了処理が確認より長くかかる場合があります)。start_simulation
F8 実行を開始します(サーバーのみのシミュレーションで、クライアントやプレイヤーは含まれません)。stop_simulation
F8 実行を停止します(クリーンに停止します)。simulate_mouse_input
F5 プレイテスト中に、画面座標でマウスをクリックまたは移動します。simulate_keyboard_input
F5 プレイテスト中に、キーを押す(タップ/押下/離す)か、テキストを入力します。character_navigation
ローカルキャラクターをワールド内の位置まで歩かせ、目標に到達したかどうかを報告します。get_playtest_output
実行中のプレイテストの出力ログです。サーバーとクライアントの各ピアのログを集約します。新しい行のみを取得するには、前回の呼び出しで取得した cursor を since として渡します。長時間のセッションで処理が停止しないよう、バッファのサイズには上限があります。reset_playtest_output
Studio を再起動せずにプレイテストの出力バッファを消去し、次回の読み取りを新しい状態から開始します。run_luau_live
実行中のゲームを調査できるよう、F5 プレイテストのサーバー上で Luau を評価して結果を返します(Humanoid の状態、NPC の位置、パスのウェイポイントなど)。print を追加して再実行する必要はありません。アクティブなプレイテストと、テスト用プレースで有効になっている ServerScriptService.LoadStringEnabled が必要です。公開済みプレースに対してヘッドレスで実行する run_luau とは異なります。テストとヘッドレス実行(Open Cloud)
run_luau
公開済みプレースで Luau スクリプトをヘッドレス実行し、結果とログを返します。run_tests
公開済みプレースでテストスイートをヘッドレス実行し、メッセージとともに成功/失敗を報告します。run_test_file
名前を指定して、単一の spec をヘッドレス実行します。list_tests
公開済みプレースで検出された spec ファイルと各ケースを一覧表示します。write_test
roblox-ts のテスト spec をディスクに書き込みます。再ビルドして公開すると、run_tests で実行されます。セキュリティレビュー(静的解析、キー不要)
review_security
ゲームのソースをレビューし、クライアントを信頼している箇所や検証されていないリモート処理の問題を特定します。それぞれにサーバー側での修正案を提示します。scan_remotes
サーバー側のリモートハンドラーと、それぞれのクライアント制御パラメーターを一覧表示します。scan_client_trust
クライアントから提供された値を検証せずに使用しているサーバーハンドラーを指摘します。upload_asset
ローカルファイルをRobloxアセット(Decal、Audio、Model、Animation、Video)としてアップロードし、assetIdを返します。get_asset
アセットのメタデータ(種類、名前、説明、モデレーション状態、現在のリビジョン)を取得します。update_asset
アセットの名前または説明を変更するか、Modelの場合は新しいコンテンツを新しいバージョンとしてアップロードします。list_asset_versions
アセットのバージョンと、それぞれのモデレーション状態を一覧表示します。rollback_asset_version
アセットを以前のバージョンに戻します。archive_asset / restore_asset
アセットをサイトやエクスペリエンスから非表示にするか、再び表示します。list_asset_quotas
アップロードの上限と、それぞれの使用量を確認します。download_asset
アセットのコンテンツ(モデル、画像、またはプレイスファイル)をローカルパスにダウンロードします。grant_asset_permissions
所有するアセットに対する権限(Use、Edit、Download)を、ユーザー、グループ、ロールセット、ユニバース、または全員に付与します。publish_place
ローカルのプレイスファイル(.rbxl/.rbxlx)をエクスペリエンスの新しいバージョンとして公開します。DataStores(Open Cloud)
list_datastores
ユニバース内の標準データストアを一覧表示します。list_datastore_entries
データストア内のエントリーキーを一覧表示します。scopeは任意です。-を指定すると、すべてのスコープを一覧表示します。get_datastore_entry
エントリーの値とメタデータ、または以前のrevisionを読み取ります。set_datastore_entry
エントリーを作成または上書きします(値と、任意のユーザー/属性)。delete_datastore_entry
エントリーを論理削除します(30日後に完全削除されます)。increment_datastore_entry
数値エントリーに整数をアトミックに加算します。list_datastore_entry_revisions
エントリーのリビジョン履歴を新しい順に一覧表示します。delete_datastore / undelete_datastore
データストア全体を30日後に削除するよう設定するか、その設定を取り消します。snapshot_datastores
すべてのデータストアのスナップショットを作成し、以降の各キーへの書き込みでバージョン付きバックアップを保持します。移行の前に実行してください。list_ordered_entries
順序付きデータストアのエントリーを、値の昇順または降順で一覧表示します。get_ordered_entry
順序付きデータストアのエントリーを1件読み取ります。set_ordered_entry
順序付きデータストアのエントリーに、0以上の整数を設定します(存在しない場合は作成し、存在する場合は更新します)。increment_ordered_entry
順序付きデータストアのエントリーに値をアトミックに加算します。delete_ordered_entry
順序付きデータストアのエントリーを削除します。publish_message
MessagingService のトピックにメッセージを公開します(実行中の本番サーバーに届きます)。memory_sorted_map_set
TTL とソートキーを指定して、Memory Store のソート済みマップ項目を設定(アップサート)します。memory_sorted_map_get
Memory Store のソート済みマップ項目を読み取ります。memory_sorted_map_list
ソート順でソート済みマップ項目を一覧表示します。memory_sorted_map_delete
ソート済みマップ項目を削除します。memory_queue_add
優先度と TTL を指定して、Memory Store のキューに項目を追加します。memory_queue_read
キューから項目を読み取ります。破棄の呼び出しに使用する readId が返されます。memory_queue_discard
readId を指定して、読み取り済みのバッチを完全に削除します。flush_memory_store
ユニバース内のすべての Memory Store 構造(LIVE または TEST のスコープ)を消去し、完了まで待機します。ユニバース、プレース、サーバー(Open Cloud)
get_universe
設定済みユニバースのメタデータを取得します。update_universe
ボイスチャット、プライベートサーバーの価格、プラットフォームごとの参加切り替え設定を更新します。get_place
設定済みプレースのメタデータを取得します。update_place
プレースの名前、説明、またはサーバーサイズを更新します。restart_servers
稼働中のサーバーを最新の公開バージョンに移行します。デフォルトでは古いサーバーのみが対象で、オプションで段階的に移行できます。list_game_servers
特定のプレースバージョンを実行している稼働中サーバーの、プレイヤー数、稼働時間、ジョブ ID を取得します。get_game_server_logs
ジョブ ID を指定して、稼働中サーバーのログ行を取得します。get_playtest_output の本番環境版です。translate_text
Roblox の翻訳サービスを使用して、テキストを 1 つ以上の言語に翻訳します。Engine Instance API(Open Cloud、Studio 不要)
cloud_list_instance_children
公開済みプレース内のインスタンスの子を一覧表示します。root から開始してください。cloud_get_instance
公開済みプレース内のインスタンスの詳細を読み取ります。cloud_update_instance
公開済みプレース内のインスタンスの名前を変更するか、スクリプトの Source、Enabled、RunContext を設定します。モデレーション(Open Cloud)
list_user_restrictions
ユニバースまたはプレースから過去に一度でも BAN されたユーザーを一覧表示します。get_user_restriction
特定のユーザーの BAN 状態と理由を取得します。set_user_restriction
ユーザーを BAN(理由を指定した永久または期間限定の BAN。オプションで別アカウントへの適用を除外可能)または BAN 解除します。稼働中のサーバーからユーザーを退出させます。list_user_restriction_logs
BAN および BAN 解除の変更履歴を監査ログで確認します。シークレット(Open Cloud)
list_secrets
ユニバースのシークレットを一覧表示します。取得できるのはメタデータのみです。create_secret / update_secret
HttpService:GetSecret 用の値を保存します。アップロード前に、マシン上でユニバースの公開鍵を使って封印されます。delete_secret
シークレットを完全に削除します。list_developer_products / get_developer_product
価格と販売状態を含む開発者製品です。create_developer_product / update_developer_product
開発者製品を作成または編集します。名前、説明、Robux の価格、販売状態、アイコンを設定できます。list_game_passes / get_game_pass
価格と販売状態を含むゲームパスです。create_game_pass / update_game_pass
ゲームパスを作成または編集します。search_creator_store
クリエイターストアでモデル、プラグイン、オーディオ、デカール、メッシュ、動画、フォントを検索します。insert_modelで使用するアセット ID を返します。get_creator_store_asset
ストアの出品について、クリエイター、評価、価格、アセットの詳細を取得します。get_creator_store_product
自身のストア製品の価格、公開状態、制限を取得します。グループ(Open Cloud)
get_group
グループのメタデータを取得します。list_group_memberships
グループのメンバーとその役職を取得します。ユーザーまたは役職で絞り込めます。list_group_roles
グループの役職とランクを取得します。list_group_join_requests / resolve_group_join_request
保留中の参加リクエストを取得し、承認または却下します。set_group_role
メンバーに役職を割り当てるか、役職を削除します。プラットフォーム、エンゲージメント、分析(Open Cloud)
get_user
ユーザーの公開プロフィールを取得します。generate_user_thumbnail
ユーザーのアバターの顔写真を画像 URL として取得します。list_inventory
ユーザーのインベントリ項目を取得します。種類または ID で絞り込めます。send_notification
ユーザーにエクスペリエンスの通知を送信します(Creator Dashboard のテンプレートを使用)。get_subscription
ユーザーのサブスクリプション製品への加入状況を取得します。query_analytics
期間を指定し、ディメンションごとに分類・絞り込みを行って、指標(DAU、セッション数、収益など)を取得します。または、ディメンションで指定可能な値を取得します。その他すべて(Open Cloud)
open_cloud_request
キーを付加して、apis.roblox.com配下の任意のエンドポイントを呼び出します。メソッド、ホスト相対パス、クエリ、JSON ボディを指定します。従来のシステムや実験的なシステム(バッジ、ローカライズテーブル、Team Create、ゲームイベント、サムネイル、広告、プレイスのバージョン履歴、クリエイターストア製品)にはこの方法でアクセスします。キーが送信されるのは、このホストだけです。Creator Dashboard でキーに追加できる各 API システムと、それを使用するツールです。スコープ名は、ダッシュボードや Roblox のエラーメッセージで使用されているものです。
| 権限(スコープ) | ツール |
|---|---|
Luau Execution (universe.place.luau-execution-session) | run_luau、run_tests、run_test_file、list_tests |
Places (universe-places:write、universe.place) | publish_place、update_place、get_place |
Universe (universe:read、universe:write) | update_universe、restart_servers、translate_text、list_game_servers、get_game_server_logs |
Instance (universe.place.instance) | cloud_list_instance_children、cloud_get_instance、cloud_update_instance |
Data Stores (universe-datastores.control、.objects、.versions) | DataStores セクション:エントリ、リビジョン、ストアの削除、スナップショット |
Ordered Data Stores (universe.ordered-data-store.scope.entry) | list/get/set/increment/delete_ordered_entry |
Memory Stores (memory-store.sorted-map、.queue、:flush) | ソート済みマップおよびキューのツール、flush_memory_store |
Messaging Service (universe-messaging-service:publish) | publish_message |
User Restrictions (universe.user-restriction) | list/get/set_user_restriction、list_user_restriction_logs |
Secrets (universe.secret) | list/create/update/delete_secret |
Assets (asset:read、asset:write) | upload_asset、get_asset、update_asset、list_asset_versions、rollback_asset_version、archive_asset、restore_asset、list_asset_quotas |
Asset Permissions (asset-permissions:write) | grant_asset_permissions |
Legacy Assets (legacy-asset:manage) | download_asset |
Developer Products (developer-product) | list/get/create/update_developer_product |
Game Passes (game-pass) | list/get/create/update_game_pass |
Creator Store (creator-store-product) | search_creator_store、get_creator_store_asset、get_creator_store_product。作成と更新には open_cloud_request を使用 |
Groups (group:read、group:write) | get_group、list_group_memberships、list_group_roles、list_group_join_requests、resolve_group_join_request、set_group_role |
Users and Inventory (user.advanced:read、user.social:read、user.inventory-item:read) | get_user、generate_user_thumbnail、list_inventory |
Notifications (user.user-notification:write) | send_notification |
Subscriptions (universe.subscription-product.subscription:read) | get_subscription |
Analytics (universe.analytics:read) | query_analytics |
| その他すべて:Ads、Game Events、Thumbnails、Creator Store saves、Legacy Badges、Legacy Develop、Legacy Followings、Legacy Game Internationalization、Legacy Groups、Legacy Localization Tables、Legacy Publish、Legacy Team Collaboration、Legacy Users | open_cloud_request |
できること
- プロンプトからシーンを構築します。 インスタンスを作成・一括作成し、型付きプロパティを設定し、モデルを挿入してスクリプトを書き込みます。それぞれの操作は、個別に元に戻せます。
- CI でゲームプレイをテストします。 テスト仕様を記述し、Open Cloud 経由で実際のエンジン上でヘッドレス実行して、その結果をプルリクエストのマージ条件にできます。
- リリース前にエクスプロイトを検出します。 セキュリティレビュー担当がクライアントの入力を信頼しているサーバーハンドラーにフラグを立て、サーバー側での修正を提案します。同じチェックがすべての PR で自動的に実行されます。
- 実際のプレイテストを実施します。 Play モードに入り、キーボードとマウスの入力を送り、キャラクターを目的の場所まで歩かせ、サーバーとクライアントの出力をまとめて読み取ってから停止します。
- ライブのプレースを調査します。 インスタンスツリーを読み取り、名前やプロパティで検索し、スクリプトを読み取って grep し、Output ログを取得します。
- Open Cloud を自動化します。 テスト用フィクスチャとして DataStores にデータを投入したり、プレースを公開したり、MessagingService のトピックにメッセージをブロードキャストしたり、ユーザー、グループ、インベントリを検索したりできます。
既知の制限
これらはプラットフォームの制限であり、バグではありません。あらかじめ把握していただけるよう、ここに記載しています。
- F5 のプレイテスト停止はベストエフォートです。プラグインと実行中のゲームは別々の DataModel であるため、
stop_playtestが機能しない場合があります。stop_simulation(F8)を使えば確実に停止できます。F5 のプレイテストが停止しない場合は、Studio で「Stop」を押してください。 - プレイ中のアクションは、注入されたランナーを経由します。プレイテスト中の入力、実行時の状態、停止はプラグインから直接呼び出されるのではなく、ブリッジ経由で中継されます。
- ヘッドレステストはサーバーコンテキストで実行されます。Open Cloud は公開済みのプレースをサーバー上で実行するため、
RunService:IsStudio()は false になり、プラグイン API も利用できません。サーバーやゲームプレイのロジック、セキュリティテストには使用できますが、Studio プラグインやクライアント入力の動作には使用できません。 - Roblox に組み込まれている Assistant とのツールの同等性は、手作業で維持されています。
- Open Cloud のいくつかのシステムは、Roblox 側でベータ版または試験段階です(Instance API、ユーザー制限、シークレット、ゲームサーバー、分析、および
open_cloud_requestの背後にあるすべての機能)。仕様が変更される可能性があり、open_cloud_requestは整形されていない生のレスポンスを返します。
Tripwire は、1 人が空き時間にメンテナンスしています。Issue やプルリクエストには、通常 1 週間ほどで返信します。返信が遅いからといって、対応しないという意味ではありません。
トラブルシューティング
Studio のツールがタイムアウトする、または Studio に接続されていないと表示されます。 プラグインが接続されていません。Tripwire.rbxmx をインストールして Studio を再起動し、Tripwire のツールバーボタンをクリックして、パネルの「Connect」を押してください。パネルのステータスと Output の [Tripwire v...] connected という行の両方で、接続を確認できます。
プラグインが HTTP がブロックされていると報告します。 開いているプレースで、ゲーム設定 > セキュリティ > HTTP リクエストを許可 をオンにしてください。これはセットアップ時に最もよく発生する問題です。これを有効にしないと、Studio はローカルブリッジに接続できません。
Output に、プラグインとサーバーのバージョンが一致しないと表示されます。 インストールされている .rbxmx が古くなっています。再ビルドし(npx rbxtsc && rojo build --output Tripwire.rbxmx)、Plugins フォルダーにコピーしてから Studio を再起動してください。プラグインはコンパイル済みのバージョンを出力するため、接頭辞から実際にインストールされているバージョンを確認できます。パネルのヘッダーにも同じバージョンが表示されます。
Open Cloud のツールが 401 Invalid API Key を返します。 キー自体が受け付けられていません。再生成された、期限切れになった、または一部しか貼り付けられていない可能性があります。すべてのツールで同じエラーが発生します。Creator Dashboard でキーを作成し直すか、もう一度コピーし、ROBLOX_OPEN_CLOUD_KEY を置き換えて、MCP サーバーに再接続してください。
Open Cloud のツールが 403 またはスコープエラーを返します。 キーにそのツールが必要とするスコープがない、ユニバース ID またはプレース ID が間違っている、あるいはプレースが公開されていない可能性があります。Creator Dashboard でスコープを追加し(必要なスコープはツールの説明に記載されています)、ID を確認して、MCP サーバーに再接続してください。エラーテキストは Roblox 独自のものなので、不足している項目が示されます。
run_tests が最新の変更を認識しません。 公開済みのプレースを読み込むため、先に公開してください。rojo serve が更新するのはライブ編集セッションのみであり、Open Cloud が実行する内容は更新されません。
npx がサーバーを取得できません。 Node.js がインストールされていないか、初回ダウンロード時にネットワーク接続がありません。Node をインストールするか、Releases ページからビルド済みバイナリを使い、command にそのパスを指定してください(Install の Alternatives を参照)。
サーバーがブリッジのポートが使用中だと報告します。 前のサーバーがまだポート 44331 を使用しています。以前の MCP セッションまたは古いプロセスを終了してから、再接続してください。
先行事例
Studio の実行時アプローチ(ローカルサーバーをロングポーリングするプラグインと、プレイ中に注入されるランナー)は、 boshyxd/robloxstudio-mcp と Chrrxs/robloxstudio-mcp のアイデアを参考にしています。Tripwire は独立したゼロからの実装であり、ヘッドレステストハーネス、CI セキュリティレビューアー、Open Cloud のツール群は独自に開発されたものです。
コントリビューション
バグ報告、機能のアイデア、パッチを歓迎します。セットアップ、ビルドゲート、ブランチとコミットのルールについてはCONTRIBUTING.mdを、各要素の連携についてはARCHITECTURE.mdをご覧ください。参加することで、行動規範に同意したものとみなされます。
セキュリティ上の問題を見つけましたか?公開のIssueは作成しないでください。非公開での報告方法については、SECURITY.mdをご覧ください。
変更履歴
各バージョンのリリースノートはリリースページにあります。
ライセンス
MITです。LICENSEをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。