MCP Server
by| Summary | AI coding MCP server with 48 tools |
|---|---|
| Description |
In-editor MCP server for s&box — drive the editor in natural language with Claude Code (or any MCP client). Editor open = MCP up, close = gone. No subprocess, no WebSocket bridge, no reconnect dance. What it can do (48 tools) Scene graph (12) — scene_list_objects, scene_get_object, scene_create_object, scene_delete_object, scene_clone_object, scene_reparent_object, scene_set_transform, scene_get_hierarchy, scene_load, scene_find_objects (wildcards), scene_find_by_component, scene_find_by_tag Components (5) — component_list, component_get, component_set (typed: Model, Material, Color, Vector3, Angles, cloud-asset idents), component_add, component_remove Tags (3) — tag_add, tag_remove, tag_list Cloud assets (4) — asset_search (s&box library), asset_fetch, asset_mount (auto-pins into .sbproj PackageReferences), asset_browse_local Editor (11) — editor_get_selection, editor_select_object, editor_undo/editor_redo, editor_save_scene, editor_take_screenshot (CameraComponent → PNG), editor_play/editor_stop/editor_is_playing, editor_scene_info, editor_console_output Files & execution (7) — file_read, file_write (.cs → code/, else Assets/), file_list (glob), project_info, console_run, execute_csharp (Roslyn scripting when available), get_server_status Docs & API search (6) — built-in crawler over docs.facepunch.com (180+ pages) and the Facepunch API schema (1,800+ types): • sbox_search_docs (fuzzy search, optional category filter) • sbox_get_doc_page (Markdown, chunked output) • sbox_list_doc_categories • sbox_search_api (types + members) • sbox_get_api_type (full type details — methods, properties, fields, XML docs) • sbox_cache_status Features under the hood • HTTP/SSE transport on localhost:29015 — no external processes • Reflection-based tool discovery via [McpToolGroup] + [McpTool] attributes — new tool = new method with an attribute • Main-thread dispatch — all editor-API calls land safely on the editor's main thread (no Qt crash) • Dirty tracking via FullUndoSnapshot + OnEdited + reflection setters — close-without-save prompt works • Process singleton — survives hot-reloads, no bind-conflict loop • Dock UI with live status, request counter, uptime, activity log • Graceful degradation — Roslyn-scripting fallback, multi-stage schema-URL resolver, doc-crawl cold-start retry Setup in 30 seconds • Clone the repo • s&box: File → Open Project → src/SboxMcp/.sbproj • claude mcp add --transport http -s user sbox http://localhost:29015/mcp • Done — Claude sees all 48 tools Architecture Claude / MCP client ── HTTP :29015 ──> s&box editor ├── McpHttpServer (HttpListener) ├── ToolRegistry (reflection) ├── HandlerDispatcher (main-thread) ├── Handlers/ (editor APIs) └── DocsService (crawler + fuzzy index) One process. 48 tools. Direct access to every editor API. Ask Claude what you want.In-editor MCP server for s&box — drive the editor in natural language with Claude Code (or any MCP client). Editor open = MCP up, close = gone. No subprocess, no WebSocket bridge, no reconnect dance.
What it can do (48 tools)
Scene graph (12) — scene_list_objects, scene_get_object, scene_create_object, scene_delete_object, scene_clone_object, scene_reparent_object, scene_set_transform, scene_get_hierarchy, scene_load, scene_find_objects (wildcards), scene_find_by_component, scene_find_by_tag
Components (5) — component_list, component_get, component_set (typed: Model, Material, Color, Vector3, Angles, cloud-asset idents), component_add, component_remove
Tags (3) — tag_add, tag_remove, tag_list
Cloud assets (4) — asset_search (s&box library), asset_fetch, asset_mount (auto-pins into .sbproj PackageReferences), asset_browse_local
Editor (11) — editor_get_selection, editor_select_object, editor_undo/editor_redo, editor_save_scene, editor_take_screenshot (CameraComponent → PNG), editor_play/editor_stop/editor_is_playing, editor_scene_info, editor_console_output
Files & execution (7) — file_read, file_write (.cs → code/, else Assets/), file_list (glob), project_info, console_run, execute_csharp (Roslyn scripting when available), get_server_status
Docs & API search (6) — built-in crawler over docs.facepunch.com (180+ pages) and the Facepunch API schema (1,800+ types):
• sbox_search_docs (fuzzy search, optional category filter)
• sbox_get_doc_page (Markdown, chunked output)
• sbox_list_doc_categories
• sbox_search_api (types + members)
• sbox_get_api_type (full type details — methods, properties, fields, XML docs)
• sbox_cache_status
Features under the hood
• HTTP/SSE transport on localhost:29015 — no external processes
• Reflection-based tool discovery via [McpToolGroup] + [McpTool] attributes — new tool = new method with an attribute
• Main-thread dispatch — all editor-API calls land safely on the editor's main thread (no Qt crash)
• Dirty tracking via FullUndoSnapshot + OnEdited + reflection setters — close-without-save prompt works
• Process singleton — survives hot-reloads, no bind-conflict loop
• Dock UI with live status, request counter, uptime, activity log
• Graceful degradation — Roslyn-scripting fallback, multi-stage schema-URL resolver, doc-crawl cold-start retry
Setup in 30 seconds
• Clone the repo
• s&box: File → Open Project → src/SboxMcp/.sbproj
• claude mcp add --transport http -s user sbox http://localhost:29015/mcp
• Done — Claude sees all 48 tools
Architecture
Claude / MCP client ── HTTP :29015 ──> s&box editor
├── McpHttpServer (HttpListener)
├── ToolRegistry (reflection)
├── HandlerDispatcher (main-thread)
├── Handlers/ (editor APIs)
└── DocsService (crawler + fuzzy index)
One process. 48 tools. Direct access to every editor API. Ask Claude what you want.
|
| Votes | 👍10 👎1 ❤️8 |
| Error Rate | 0% |
| Usage |
6 players
27 sessions
1 hour playtime
3 minutes avg session
Totals captured
|
| Data | {} |
| Version | Created | Size (modified) | Files | Changes |
|---|---|---|---|---|
| 225138 | 34.8 MB | 212 +212 | Changes on 2026-05-01 |
Loading history…