sbox mcp——机顶盒的mcp服务器
   
通过模型上下文协议为s&box游戏引擎提供人工智能驱动的编辑器自动化。
______________________________________________________________________
建筑
flowchart LR
AI["AI Client\n(Claude, etc.)"]
MCP["MCP Server\n(.NET 9)"]
Bridge["s&box Editor\nBridge Addon"]
AI |stdio| MCP
MCP |WebSocket :29015| BridgeMCP服务器公开了以下工具 标准 (由Claude Desktop或Claude Code等AI客户端使用)。它通过某种方式转发命令 WebSocket 与在s&box编辑器中运行的Bridge插件的连接,该编辑器在实时场景中执行这些插件并返回结果。
______________________________________________________________________
特性
- 场景操纵 --创建、克隆、重新分配、转换和删除游戏对象
- 组件编辑 --添加、检查和修改组件属性,包括s和box资源类型(模型、材质、颜色、矢量3)
- 云资产 --从s&box云存储中搜索、获取和挂载资产;自动添加到项目PackageReferences
- 标签管理 --在GameObjects上添加、删除和列出标签
- 文件操作 --读写项目文件;
.cs文件转到code/目录自动 - 模式 --启动/停止播放模式并检查状态
- 编辑器控件 --选择、撤消/重做、保存、场景信息
- 代码执行 --在编辑器上下文中运行C#表达式和控制台命令
- 零部件编写 --通过MCP编写新的C#组件并将其附加到GameObjects
______________________________________________________________________
先决条件
- s和box编辑器 (适用于Bridge Addon)
- .NET 9 SDK — 只有从源头上建设。 预构建版本是自包含的。
______________________________________________________________________
设置
快速安装(推荐)
- 下载最新
sbox-mcp--win-x64.zip从 发布页面.
- 在任何你喜欢的地方提取它——只需选择一个你不会移动的稳定位置。zip包含:
- SboxMcp.Server.exe --独立的MCP服务器(不需要.NET运行时)。 - bridge/ --编辑器加载源文件。
- 在客户端注册MCP服务器(替换 `` 无论你在哪里解压zip):
克劳德代码:
claude mcp add -s user sbox -- "\SboxMcp.Server.exe"克劳德桌面/其他MCP客户端:
{
"mcpServers": {
"sbox": {
"command": "\\SboxMcp.Server.exe"
}
}
}- 将网桥插件复制到您的s和box安装中:
cp -r bridge/* "/addons/tools/Code/McpBridge/"当s&box编辑器打开时,插件会自动启动。可停靠 MCP电桥 面板显示连接状态、命令计数和活动日志。
从源代码构建
如果你想从源代码构建,你需要 .NET 9 SDK:
git clone https://github.com/StephenSHorton/sbox-mcp.git
cd sbox-mcp
dotnet build sbox-mcp.sln --configuration Release然后使用注册服务器 dotnet run:
claude mcp add -s user sbox -- dotnet run --project /path/to/src/SboxMcp.Server -c Release并将网桥复制到您的s&box安装中:
cp -r src/SboxMcp.Bridge/code/* "/addons/tools/Code/McpBridge/"______________________________________________________________________
可用工具
场景(10个工具)
| 工具 | 说明 |
|---|---|
scene_list_objects | 列出场景中的所有游戏对象 |
scene_get_object | 获取包含组件的详细游戏对象信息 |
scene_create_object | 创建新游戏对象 |
scene_delete_object | 删除游戏对象 |
scene_find_objects | 按名称搜索游戏对象(支持 * 通配符) |
scene_set_transform | 设置位置/旋转/比例 |
scene_get_hierarchy | 以缩进文本的形式获取完整的场景树 |
scene_clone_object | 复制游戏对象 |
scene_reparent_object | 将游戏对象移动到其他父对象 |
scene_load | 在编辑器中打开场景文件 |
场景搜索(2个工具)
| 工具 | 说明 |
|---|---|
scene_find_by_component | 查找具有特定组件类型的所有对象 |
scene_find_by_tag | 查找具有特定标记的所有对象 |
组件(5个工具)
| 工具 | 说明 |
|---|---|
component_list | 列出游戏对象上的组件 |
component_get | 获取组件属性和值 |
component_set | 设置组件属性(控制柄模型、材质、颜色、矢量3、角度) |
component_add | 按类型名称添加组件 |
component_remove | 移除组件 |
标签(3个工具)
| 工具 | 说明 |
|---|---|
tag_add | 向游戏对象添加标签 |
tag_remove | 从游戏对象中删除标签 |
tag_list | 列出游戏对象上的所有标签 |
云资产(4个工具)
| 工具 | 说明 |
|---|---|
asset_search | 搜索s&box云资产存储 |
asset_fetch | 获取特定云包的元数据 |
asset_mount | 挂载云包(自动添加到项目PackageReferences) |
asset_browse_local | 浏览本地项目资产 |
编辑器(8个工具)
| 工具 | 说明 |
|---|---|
editor_get_selection | 获取当前选定的游戏对象 |
editor_select_object | 按ID选择游戏对象 |
editor_undo | 撤消上次操作 |
editor_redo | 重做上次操作 |
editor_save_scene | 保存当前场景 |
editor_play | 启动播放模式 |
editor_stop | 停止播放模式 |
editor_is_playing | 检查编辑器是否处于播放模式 |
editor_scene_info | 获取场景名称、路径和脏状态 |
editor_console_output | 获取最近的控制台日志条目 |
文件和执行(5个工具)
| 工具 | 说明 |
|---|---|
file_read | 读取项目文件 |
file_write | 编写项目文件(.cs 文件自动目标 code/ 目录) |
file_list | 列出带有glob模式的项目文件 |
project_info | 获取项目元数据 |
execute_csharp | 在编辑器上下文中执行C# |
console_run | 运行控制台命令 |
get_bridge_status | 检查网桥连接状态 |
______________________________________________________________________
云资产工作流
MCP服务器可以从s&box资产存储中搜索、挂载和使用云资产:
1. asset_search "barrel" → find available assets
2. asset_mount "polyhaven.barrel_03" → download and mount
3. component_set Model → "polyhaven.barrel_03" → auto-fetches, mounts, and loads当云资源被挂载或设置在组件上时,它会自动添加到项目的 PackageReferences 在 .sbproj 因此,它在编辑器重新启动时仍然存在。
______________________________________________________________________
配置
| 变量 | 默认值 | 描述 |
|---|---|---|
SBOX_MCP_PORT | 29015 | 用于网桥连接的WebSocket端口 |
______________________________________________________________________
发展
构建
dotnet build sbox-mcp.sln跑
dotnet run --project src/SboxMcp.Server部署网桥更改
cp -r src/SboxMcp.Bridge/code/* "/addons/tools/Code/McpBridge/"s&box热重新加载C#更改。只有编译失败时才需要重新启动。
项目结构
sbox-mcp/
├── src/
│ ├── SboxMcp.Server/ # .NET 9 MCP server (stdio transport)
│ │ ├── Tools/ # MCP tool definitions
│ │ └── Bridge/ # WebSocket server + message types
│ └── SboxMcp.Bridge/ # s&box Roslyn addon
│ └── code/
│ ├── Handlers/ # Command handlers (Scene, Component, Asset, Editor, File)
│ ├── CommandRouter.cs # Routes commands to handlers
│ └── McpEditorTool.cs # Editor dock widget
├── .github/workflows/
├── sbox-mcp.sln
└── README.md______________________________________________________________________
运作原理
- AI客户端将MCP服务器作为子进程启动,并通过以下方式进行通信 标准 使用模型上下文协议。
- 当AI调用工具时,MCP服务器对请求进行序列化,并通过 WebSocket 到s&box编辑器中运行的Bridge插件。
- Bridge插件对实时场景执行请求(读取/写入游戏对象、组件、资产、文件等),并返回JSON响应。
- MCP服务器通过stdio将响应转发回AI客户端。
服务器在端口冲突时自动杀死过时的实例,因此多个会话不会死锁。
______________________________________________________________________
贡献
欢迎拉取请求。对于重大更改,请先打开一个问题来讨论您想要更改的内容。
该项目根据 MIT许可证.
______________________________________________________________________
致谢
- Facepunch工作室 s&box游戏引擎和编辑器
- 人类 为了 模型上下文协议 规格
