fix(mcp): add shared operations and secure scene APIs

This commit is contained in:
Aymeric Rabot
2026-04-27 17:10:25 -04:00
parent 058ee747c9
commit 8dfd1a9429
81 changed files with 1332 additions and 1786 deletions
+30 -31
View File
@@ -1,6 +1,5 @@
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
import type { SceneBridge } from '../bridge/scene-bridge'
import type { SceneStore } from '../storage/types'
import type { SceneOperations } from '../operations'
import { registerApplyPatch } from './apply-patch'
import { registerCheckCollisions } from './check-collisions'
import { registerConstructionTools } from './construction-tools'
@@ -34,35 +33,35 @@ import { registerVariantTools } from './variants'
* separately via `registerVisionTools` (Agent E).
*
* Scene-lifecycle tools (save/load/list/delete/rename scene) are registered
* when a `store` is provided; callers that pass `undefined` skip them.
* when persistence operations are available.
*/
export function registerTools(server: McpServer, bridge: SceneBridge, store?: SceneStore): void {
registerGetScene(server, bridge)
registerGetNode(server, bridge)
registerDescribeNode(server, bridge)
registerFindNodes(server, bridge)
registerSceneQueryTools(server, bridge)
registerMeasure(server, bridge)
registerConstructionTools(server, bridge, store)
registerRoomTools(server, bridge, store)
registerApplyPatch(server, bridge, store)
registerCreateLevel(server, bridge, store)
registerCreateWall(server, bridge, store)
registerPlaceItem(server, bridge, store)
registerCutOpening(server, bridge, store)
registerSetZone(server, bridge, store)
registerDuplicateLevel(server, bridge, store)
registerDeleteNode(server, bridge, store)
registerUndo(server, bridge, store)
registerRedo(server, bridge, store)
registerExportJson(server, bridge)
registerExportGlb(server, bridge)
registerValidateScene(server, bridge)
registerCheckCollisions(server, bridge)
registerTemplateTools(server, bridge, store)
if (store) {
registerSceneLifecycleTools(server, bridge, store)
registerVariantTools(server, bridge, store)
registerPhotoToSceneTool(server, bridge, store)
export function registerTools(server: McpServer, operations: SceneOperations): void {
registerGetScene(server, operations)
registerGetNode(server, operations)
registerDescribeNode(server, operations)
registerFindNodes(server, operations)
registerSceneQueryTools(server, operations)
registerMeasure(server, operations)
registerConstructionTools(server, operations)
registerRoomTools(server, operations)
registerApplyPatch(server, operations)
registerCreateLevel(server, operations)
registerCreateWall(server, operations)
registerPlaceItem(server, operations)
registerCutOpening(server, operations)
registerSetZone(server, operations)
registerDuplicateLevel(server, operations)
registerDeleteNode(server, operations)
registerUndo(server, operations)
registerRedo(server, operations)
registerExportJson(server, operations)
registerExportGlb(server, operations)
registerValidateScene(server, operations)
registerCheckCollisions(server, operations)
registerTemplateTools(server, operations)
if (operations.hasStore) {
registerSceneLifecycleTools(server, operations)
registerVariantTools(server, operations)
registerPhotoToSceneTool(server, operations)
}
}