Roblox工作室MCP
实验。 这是一项正在进行的积极工作。API将发生变化,功能可能会中断,渲染的屏幕截图是块状近似值,而不是像素精确的预览。使用风险自负。欢迎投稿和bug报告。
用于通过AI编码工具控制Roblox Studio的MCP(模型上下文协议)服务器,如 OpenCode。提供工作区探索、实例操作、脚本管理、工具箱集成、播放测试控件和视口渲染。
建筑
OpenCode / Claude ──stdio/MCP──> MCP Server (Node.js) ──HTTP──> Studio Plugin (Lua)
:28821 bridge polls for commandsMCP服务器在上运行一个小型HTTP服务器 127.0.0.1:28821Roblox Studio插件每250毫秒轮询一次此服务器上的挂起命令,在Studio中执行这些命令,并将结果发布回来。
设置
1.安装依赖项并构建
npm install
npm run build2.安装Studio插件
自动:
npm run install-plugin手册:
复制 plugin/RobloxStudioMCP.server.lua 到您的Roblox Studio插件文件夹:
| 平台 | 路径 |
|---|---|
| macOS | ~/Documents/Roblox/Plugins/ |
| 窗户 | %LOCALAPPDATA%\Roblox\Plugins\ |
3.激活插件
在Studio中,单击 MCP电桥 工具栏中的按钮。将出现一个状态小部件,显示连接状态。
注: 插件HTTP请求不受“允许HTTP请求”游戏设置的限制。该设置仅适用于游戏脚本——插件可以自由地进行HTTP调用。
4.配置OpenCode
包括 opencode.json 从项目根运行OpenCode时有效:
{
"mcp": {
"roblox-studio": {
"type": "local",
"command": ["node", "dist/index.js"],
"environment": {
"ROBLOX_MCP_PORT": "28821"
}
}
},
"default_agent": "studio"
}如果你想在其他项目中使用它,请使用绝对路径 dist/index.js 在命令数组中。
工具(6个合并)
所有工具都使用 action 参数以选择特定操作。
roblox_get --只读查询
| 动作 | 描述 |
|---|---|
ping | 检查插件连接状态并获取位置信息 |
tree | 实例层次结构的ASCII树视图 |
search | 按名称子字符串和/或类名搜索 |
instance | 获取特定实例的详细信息 |
properties | 读取实例的所有公共属性 |
descendants_summary | 带有后代计数的类细分 |
selection | 获取当前选定的实例 |
output_log | 读取最近的输出窗口条目 |
texture_info | 获取实例和子体的纹理/贴花资源ID |
roblox_manage --实例突变
| 动作 | 描述 |
|---|---|
create | 创建具有属性的零件、模型、文件夹等 |
create_multiple | 一次批量创建多个实例 |
update | 更新属性(位置、大小、颜色等) |
reset_pivot | 将模型的WorldPivot重置为边界框中心 |
delete | 销毁实例(可撤消) |
clone | 使用可选重命名/重解析进行克隆 |
reparent | 将实例移动到新的父级 |
set_selection | 选择特定实例 |
undo | 撤消上次操作 |
redo | 重做上次未执行的操作 |
roblox_script --脚本CRUD和执行
| 动作 | 描述 |
|---|---|
create | 创建脚本/LocalScript/ModuleScript |
read | 读取脚本源和元数据 |
update | 更新源代码(适用于开放编辑器) |
execute | 在Studio上下文中执行Lua代码段 |
roblox_scene --相机和截图
| 动作 | 描述 |
|---|---|
screenshot | 渲染当前视口的PNG(几何体+颜色+材质,无纹理) |
move_camera | 在实例上明确定位相机或自动取景 |
roblox_toolbox --创作者商店
| 动作 | 描述 |
|---|---|
search | 搜索免费型号/贴花/音频 |
insert | 按ID插入工具箱资产 |
strip_scripts | 从插入的模型中删除所有脚本 |
roblox_playtest --测试会话
| 动作 | 描述 |
|---|---|
start | 开始游戏测试会话 |
stop | 停止当前的游戏测试 |
status | 获取当前状态(编辑/运行/播放) |
move_camera | 在游戏测试期间移动相机 |
fire_click | 点击探测器 |
fire_proximity | 触发邻近提示 |
get_state | 读取游戏状态(玩家、排行榜统计) |
execute | 在现场游戏环境中运行Lua |
实例路径
实例由点分隔的路径引用 game:
Workspace -- game.Workspace
Workspace.SpawnLocation -- a SpawnLocation in Workspace
ServerScriptService.GameScript -- a script in ServerScriptService
ReplicatedStorage.Modules.Utils -- nested path代理
OpenCode代理定义包含在 .opencode/agents/studio.md。它使用Roblox Studio领域知识和工具使用模式配置AI。这 opencode.json 将其设置为默认代理。
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
ROBLOX_MCP_PORT | 28821 | HTTP网桥端口 |
已知限制
- 截图 是从几何数据渲染的软件,没有纹理、照明或后处理。它们显示的是形状、颜色和空间关系,而不是Studio视口的实际外观。
- 播放测试控制 用途
RunService:Run()/:Stop()它适用于服务器端测试,但不能完全复制Play Solo(没有本地玩家角色)。 - 工具箱搜索 点击公共Roblox API,并可能受到费率限制。
- 脚本执行 运行通过
require()在临时ModuleScript上。在此上下文中,某些API可能不可用。 - 实例路径 使用点分隔的名称,因此实例
.以他们的名义将无法正确解析。
许可证
麻省理工学院
