bulc_create_room
Create rectangular rooms in building designs by specifying position, dimensions, and floor level for architectural planning and layout development.
Instructions
Create a new rectangular room at the specified position. All coordinates are in centimeters (cm). Use bulc_get_spatial_context first if you need to position relative to existing rooms. Example: To create a 5m x 4m room, use width=500, depth=400.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X coordinate of bottom-left corner in centimeters | |
| y | Yes | Y coordinate of bottom-left corner in centimeters | |
| width | Yes | Room width in centimeters (X direction). 1m = 100cm | |
| depth | Yes | Room depth in centimeters (Y direction). 1m = 100cm | |
| name | No | Room name for display (e.g., 'Living Room', '거실') | |
| level | No | Floor level index. 0 = ground floor, 1 = first floor. Default: current level |
Implementation Reference
- src/tools/room.ts:211-218 (handler)Core handler logic for the 'bulc_create_room' tool. Validates input using CreateRoomSchema and sends a 'create_room' command to the BULC client via sendCommand.case "bulc_create_room": { const validated = CreateRoomSchema.parse(args); result = await client.sendCommand({ action: "create_room", params: validated, }); break; }
- src/tools/room.ts:168-175 (schema)Zod validation schema used in the handler to parse and validate parameters for creating a rectangular room (x, y, width, depth, optional name and level).const CreateRoomSchema = z.object({ x: z.number(), y: z.number(), width: z.number().positive(), depth: z.number().positive(), name: z.string().optional(), level: z.number().int().optional(), });
- src/tools/room.ts:8-49 (registration)Tool registration object defining name, description, input schema, and annotations for 'bulc_create_room' in the roomTools array, exposed to MCP ListTools.{ name: "bulc_create_room", description: "Create a new rectangular room at the specified position. " + "All coordinates are in centimeters (cm). " + "Use bulc_get_spatial_context first if you need to position relative to existing rooms. " + "Example: To create a 5m x 4m room, use width=500, depth=400.", inputSchema: { type: "object" as const, properties: { x: { type: "number", description: "X coordinate of bottom-left corner in centimeters", }, y: { type: "number", description: "Y coordinate of bottom-left corner in centimeters", }, width: { type: "number", description: "Room width in centimeters (X direction). 1m = 100cm", }, depth: { type: "number", description: "Room depth in centimeters (Y direction). 1m = 100cm", }, name: { type: "string", description: "Room name for display (e.g., 'Living Room', '거실')", }, level: { type: "integer", description: "Floor level index. 0 = ground floor, 1 = first floor. Default: current level", }, }, required: ["x", "y", "width", "depth"], }, annotations: { readOnlyHint: false, destructiveHint: true, }, },
- src/index.ts:68-71 (registration)Routing logic in main MCP CallTool handler that dispatches 'bulc_*_room' tool calls to the specific handleRoomTool function.// Room tools if (name.startsWith("bulc_") && name.includes("room")) { return await handleRoomTool(name, safeArgs); }
- src/index.ts:40-42 (registration)Includes roomTools (containing bulc_create_room) into the complete allTools list provided to MCP ListToolsRequestHandler.const allTools = [ ...contextTools, // 8 tools: spatial context, home info, levels, undo/redo, save ...roomTools, // 5 tools: create, create_polygon, list, modify, delete