mcpField
T
Tripwire

Tripwire

本地服务
github.com/aliboIly开发工具39 周前更新

关于 Tripwire

Tripwire 是面向 Roblox 开发者的 MCP 服务,可让编码 Agent 操作 Roblox Studio 和 Open Cloud。它将游戏编辑、模拟测试与无头测试、安全检查及云端操作结合起来。

主要功能

  1. 01检查和编辑 Studio 实例及脚本
  2. 02通过模拟输入驱动游戏测试
  3. 03运行无头 Luau 测试
  4. 04标记客户端信任漏洞
  5. 05调用 Roblox Open Cloud API

适用场景

  1. 01通过 Agent 检查或修改 Roblox 游戏
  2. 02自动执行游戏测试并查看运行输出
  3. 03检查游戏代码中的客户端信任风险
  4. 04管理 DataStores 等 Open Cloud 服务

MCP 相关

它向 MCP 客户端提供 Roblox Studio 控制、测试、安全分析和 Open Cloud 操作工具。Studio 工具通过插件桥接;无头测试和云端工具需要 Open Cloud 密钥。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"aliboily-tripwire": {
"command": "npx",
"args": [
"-y",
"tripwire-roblox"
],
"env": {
"ROBLOX_OPEN_CLOUD_KEY": "<ROBLOX_OPEN_CLOUD_KEY>",
"ROBLOX_UNIVERSE_ID": "<ROBLOX_UNIVERSE_ID>",
"ROBLOX_PLACE_ID": "<ROBLOX_PLACE_ID>"
}
}
}
}
启动命令npx -y tripwire-roblox
需要配置的环境变量
ROBLOX_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmtripwire-roblox0.2.5

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Tripwire

由 alibolly 制作

npm CI MCP Registry License: MIT

一个 MCP 服务,可让 AI 编码 Agent 真正控制 Roblox Studio 和 Roblox Open Cloud, 并提供其他 Studio MCP 不具备的测试与安全防护层。

Tripwire 可让助手读取、写入和编辑数据模型,通过模拟输入驱动游戏测试,在真实引擎中以无头模式运行代码化测试,标记游戏代码中的客户端信任漏洞,并调用 Open Cloud API(DataStores、MessagingService、Memory Stores 等)。Studio 工具无需 API 密钥;无头测试、资产和 Open Cloud 工具需要 Open Cloud 密钥。


要求

  • 一个 MCP 客户端:Claude Code、Codex、Gemini,或任何通过 stdio 使用 MCP 的客户端。
  • Roblox Studio,用于 Studio 工具。这些工具无需 API 密钥。
  • Node.js,仅在使用 npx 运行服务时需要。预构建二进制文件无需 Node。
  • 对于无头测试、资产和 Open Cloud 工具:已发布的 place 和 Roblox Open Cloud API 密钥。请参阅 Open Cloud 设置。

快速开始

Tripwire 面向通过 AI 编码 Agent 操控 Studio 的 Roblox 开发者。

  1. 将服务接入 MCP 客户端(只需一条命令或一小段配置,见下文的 安装)。
  2. 安装 Studio 插件,以便 Studio 工具能够连接 Studio(见安装步骤中的插件部分)。
  3. 在 Studio 中打开 place,启用 Game Settings > Security > Allow HTTP Requests,然后点击 Tripwire 工具栏按钮,并在面板中按下 Connect。面板会显示 Connected,Output 中会打印 [Tripwire v...] connected。
  4. 让 Agent 运行 studio_status。Studio 显示已连接即表示桥接正常工作。
  5. 可选:添加 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 客户端

任何通过 stdio 使用 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. 创建密钥
  1. 前往 create.roblox.com/dashboard/credentials 并登录。
  2. 点击 Create API Key,为密钥命名(例如 Tripwire)。
  3. 在 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。
  4. 在 Security 下,将 Accepted IP Addresses 设为你设备的 IP,或设为 0.0.0.0/0 以允许任意 IP(本地使用时最简单)。如有需要,可设置过期时间。
  5. 点击 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。地点必须 发布到 Roblox,Open Cloud 才能对其执行操作。

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 时会自动选择。
### 读取和检查
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_logStudio 最近的 Output 条目(消息、类型、时间戳)。
get_selection当前在 Studio 中选中的实例。
get_class_info查询 Roblox 类的成员(属性、方法、事件)及其类型,并合并继承的成员。通过内置的 API 反射转储回答,因此无需 Studio 或密钥。
空间查询(只读)
raycast发射一条射线并报告第一个命中对象(实例、位置、法线、材质、距离)或未命中;可选择排除一个子树。
get_bounding_box获取 Model 或 BasePart 的世界空间边界框(中心和尺寸)。
find_spawns列出指定路径下的 SpawnLocation:位置、是否启用,以及是否为中立。
capture_screenshot将 Studio 视口截取为 JPEG 图像,以便 Agent 查看场景。需要连接插件并启用 Allow Mesh / Image APIs(Game Settings,Security)。仅限编辑模式。
编辑(每项操作均为一步撤销)
create_instance创建指定类的实例,可选设置名称和初始属性。
delete_instance销毁实例及其后代。
set_property设置一个有类型的属性(基础类型、Vector3、Color3、UDim2、CFrame、EnumItem 或实例引用)。
update_script_source通过脚本编辑器替换脚本源代码(受支持的写入方式)。
insert_model按 ID 插入资源,可选择重新定位或解包。
mass_create在一步撤销操作中创建多个实例(原子执行,或尽力执行并返回每项结果)。
mass_set_property在一步撤销操作中为多个实例设置一个属性(原子执行或尽力执行)。
### Playtest 和输入
start_playtest启动 F5 Playtest(服务器和客户端 DataModel,以及一个玩家);注入游戏内运行器。
stop_playtest停止 F5 Playtest(尽力而为;F5 拆卸可能需要更长时间才能完成确认)。
start_simulation启动 F8 运行(仅服务器模拟,不含客户端或玩家)。
stop_simulation停止 F8 运行(干净停止)。
simulate_mouse_input在 F5 Playtest 期间点击或移动屏幕坐标处的鼠标。
simulate_keyboard_input在 F5 Playtest 期间按下某个键(轻触/按下/释放)或输入文本。
character_navigation让本地角色朝世界坐标位置行走;报告其是否到达目标。
get_playtest_output获取正在运行的 Playtest 输出日志,汇总服务器和客户端对等端的日志。将上次调用返回的 cursor 作为 since 传入,即可仅获取新增行;缓冲区有大小限制,避免长时间会话导致卡顿。
reset_playtest_output清除 Playtest 的输出缓冲区,让下次读取从头开始,无需重启 Studio。
run_luau_live在正在运行的 F5 Playtest 服务器中执行 Luau 并返回结果,以便检查运行中的游戏(例如 Humanoid 的状态、NPC 的位置、路径的航点),而无需添加 print 并重新播放。需要已启动 Playtest,且测试 place 中的 ServerScriptService.LoadStringEnabled 已启用。与 run_luau 不同,后者针对已发布的 place 以无头模式运行。
测试和无头执行(Open Cloud)
run_luau在已发布的 place 中以无头模式运行 Luau 脚本;返回结果和日志。
run_tests在已发布的 place 中运行无头测试套件,并报告通过/失败情况及消息。
run_test_file以无头模式按名称运行单个 spec。
list_tests列出在已发布的 place 中发现的 spec 文件及其测试用例。
write_test将 roblox-ts 测试 spec 写入磁盘;重新构建并发布后,run_tests 会运行该测试。
安全审查(静态分析,无需密钥)
review_security审查游戏源代码中的客户端信任问题和未经验证的远程调用问题,并为每项提供建议的服务器端修复方案。
scan_remotes列出服务器远程处理程序及其各自由客户端控制的参数。
scan_client_trust标记使用客户端提供的值但未进行验证的服务器处理程序。
### 资源与发布(Open Cloud)
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读取一个有序数据存储条目。
set_ordered_entry将有序数据存储条目设为(插入或更新)非负整数。
increment_ordered_entry以原子操作的方式增加有序数据存储条目的值。
delete_ordered_entry删除有序数据存储条目。
### 消息与内存(Open Cloud)
publish_message向 MessagingService 主题发布消息(可触达正在运行的生产服务)。
memory_sorted_map_set设置(插入或更新)Memory Store 有序映射项,并指定 TTL 和排序键。
memory_sorted_map_get读取 Memory Store 有序映射项。
memory_sorted_map_list按排序顺序列出有序映射项。
memory_sorted_map_delete删除有序映射项。
memory_queue_add将项添加到 Memory Store 队列,并指定优先级和 TTL。
memory_queue_read读取队列中的项;返回一个供丢弃调用使用的 readId。
memory_queue_discard根据 readId 永久移除已读取的批次。
flush_memory_store清空 universe(LIVE 或 TEST 范围)中的所有 Memory Store 结构并等待完成。
Universe、place 与服务
get_universe获取已配置 universe 的元数据。
update_universe语音聊天、私有服务价格和各平台的加入开关。
get_place获取已配置 place 的元数据。
update_place更新 place 的名称、描述或服务容量。
restart_servers将运行中的服务迁移到最新发布版本;默认仅迁移过时的服务,也可选择逐步迁移。
list_game_servers列出运行某个 place 版本的在线服务:玩家、运行时长、作业 ID。
get_game_server_logs根据作业 ID 获取在线服务的日志行,是 get_playtest_output 的生产环境对应工具。
translate_text使用 Roblox 翻译服务将文本翻译成一种或多种语言。
引擎 Instance API(Open Cloud,无需 Studio)
cloud_list_instance_children列出已发布 place 中某个实例的子项。从 root 开始。
cloud_get_instance读取已发布 place 中某个实例的详细信息。
cloud_update_instance在已发布 place 中重命名实例,或设置脚本的 Source、Enabled 或 RunContext。
内容审核(Open Cloud)
list_user_restrictions列出曾在该 universe 或 place 被封禁的用户。
get_user_restriction获取单个用户的封禁状态和原因。
set_user_restriction封禁(永久或定时,可附带原因,也可选择不扩展到小号)或解除用户封禁。会将其从在线服务中踢出。
list_user_restriction_logs封禁和解封变更的审计日志。
密钥(Open Cloud)
list_secrets列出 universe 的密钥,仅包含元数据。
create_secret / update_secret为 HttpService:GetSecret 存储值。上传前,会在你的设备上使用 universe 的公钥进行加密封装。
delete_secret永久删除密钥。
### 变现与创作者商城(Open Cloud)
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 执行(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)sorted-map 和 queue 工具、flush_memory_store
Messaging Service(universe-messaging-service:publish)publish_message
用户限制(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
用户和库存(user.advanced:read、user.social:read、user.inventory-item:read)get_user、generate_user_thumbnail、list_inventory
通知(user.user-notification:write)send_notification
订阅(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 Usersopen_cloud_request

你可以做什么

  • 根据提示词构建场景。 创建和批量创建实例、设置类型化属性、插入模型并编写脚本,每项操作都会成为独立的撤销步骤。
  • 在 CI 中测试游戏玩法。 编写测试规范,通过 Open Cloud 在真实引擎中以无头模式运行,并根据结果决定是否通过拉取请求。
  • 在漏洞上线前发现它们。 安全审查器会标记信任客户端输入的服务端处理程序,并提出服务端修复方案;同一检查也会在每个 PR 上自动运行。
  • 进行真实的游戏测试。 进入 Play 模式、发送键盘和鼠标输入、让角色走到指定位置、读取合并后的服务端和客户端输出,然后停止。
  • 检查正在运行的 place。 读取实例树、按名称或属性搜索、读取和 grep 脚本,并获取 Output 日志。
  • 自动化 Open Cloud。 为测试固件填充 DataStores、发布 place、广播 MessagingService 主题,或查询用户、群组和库存。

已知限制

这些是平台限制,并非错误。在这里写明,是为了让你事先了解。

  • F5 播放测试停止仅尽力而为。stop_playtest 可能无法生效,因为插件和正在运行的游戏属于不同的 DataModel。stop_simulation(F8)可以正常停止。如果 F5 播放测试无法停止,请在 Studio 中按下 Stop。
  • 游戏内操作通过注入的运行器执行。播放测试期间的输入、运行时状态和停止操作会通过桥接转发,而不是直接调用插件。
  • 无头测试在服务器上下文中运行。Open Cloud 会在服务器上运行你已发布的场景,此时 RunService:IsStudio() 为 false,且插件 API 不可用。可用它测试服务器和游戏逻辑以及安全性,不适用于 Studio 插件或客户端输入行为。
  • 与 Roblox 内置 Assistant 的工具对等性需要手动维护。
  • Roblox 方面的多个 Open Cloud 系统处于 Beta 或实验阶段(Instance API、用户限制、密钥、游戏服务器、分析功能,以及 open_cloud_request 背后的所有内容)。其结构可能会变化,而 open_cloud_request 返回的是原始响应,不会整理格式。

Tripwire 由一人利用业余时间维护。Issues 和 pull requests 通常会在约一周内收到回复。回复较慢不代表不会回复。


故障排查

Studio 工具超时或提示没有已连接的 Studio。 插件尚未连接。安装 Tripwire.rbxmx,重启 Studio,点击 Tripwire 工具栏按钮,然后在面板中按下 Connect。面板状态和 Output 中的 [Tripwire v...] connected 均可确认连接成功。

插件提示 HTTP 被阻止。 在当前打开的场景中,启用 Game Settings > Security > Allow HTTP Requests。这是最常见的配置问题。没有此设置,Studio 无法连接本地桥接服务。

Output 显示插件和服务器的版本不匹配。 已安装的 .rbxmx 版本过旧。重新构建它(npx rbxtsc && rojo build --output Tripwire.rbxmx),将其复制到 Plugins 文件夹,然后重启 Studio。插件会显示其编译版本,因此前缀会告诉你实际安装的版本;面板标题也会显示相同版本。

Open Cloud 工具返回 401 Invalid API Key。 API 密钥本身未被接受:它可能已重新生成、过期,或复制不完整。所有工具都会以相同方式失败。请在 Creator Dashboard 上重新创建或复制密钥,替换 ROBLOX_OPEN_CLOUD_KEY,然后重新连接 MCP 服务。

Open Cloud 工具返回 403 或权限范围错误。 密钥缺少该工具所需的权限范围、universe 或 place 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 工具均为其自行开发。


贡献

欢迎提交 Bug 报告、功能建议和补丁。有关环境设置、构建门禁以及分支和提交规则,请参阅 CONTRIBUTING.md;有关各部分如何协同工作,请参阅 ARCHITECTURE.md。参与本项目即表示你同意遵守行为准则。

发现安全问题?请勿公开提交 issue。有关私下披露的流程,请参阅 SECURITY.md。

更新日志

每个版本的发行说明请查看 Releases 页面。


许可证

MIT。请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。