关于 Tripwire
Tripwire 是面向 Roblox 开发者的 MCP 服务,可让编码 Agent 操作 Roblox Studio 和 Open Cloud。它将游戏编辑、模拟测试与无头测试、安全检查及云端操作结合起来。
主要功能
- 01检查和编辑 Studio 实例及脚本
- 02通过模拟输入驱动游戏测试
- 03运行无头 Luau 测试
- 04标记客户端信任漏洞
- 05调用 Roblox Open Cloud API
适用场景
- 01通过 Agent 检查或修改 Roblox 游戏
- 02自动执行游戏测试并查看运行输出
- 03检查游戏代码中的客户端信任风险
- 04管理 DataStores 等 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 制作
一个 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 开发者。
- 将服务接入 MCP 客户端(只需一条命令或一小段配置,见下文的 安装)。
- 安装 Studio 插件,以便 Studio 工具能够连接 Studio(见安装步骤中的插件部分)。
- 在 Studio 中打开 place,启用 Game Settings > Security > Allow HTTP Requests,然后点击 Tripwire 工具栏按钮,并在面板中按下 Connect。面板会显示 Connected,Output 中会打印
[Tripwire v...] connected。 - 让 Agent 运行
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 客户端
任何通过 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. 创建密钥
- 前往 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,或设为
0.0.0.0/0以允许任意 IP(本地使用时最简单)。如有需要,可设置过期时间。 - 点击 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_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 图像,以便 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
在一步撤销操作中为多个实例设置一个属性(原子执行或尽力执行)。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
标记使用客户端提供的值但未进行验证的服务器处理程序。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
删除有序数据存储条目。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
永久删除密钥。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 Users | open_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。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。