bulc_get_fds_status
Check the current status of FDS fire simulations in BULC Building Designer, including progress, simulation time, and estimated completion.
Instructions
Get current FDS simulation status. Returns running state, progress, current simulation time, and estimated completion.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/tools/fds-run.ts:154-237 (handler)The handleFdsRunTool function serves as the main handler for all FDS run tools, including bulc_get_fds_status. It uses a switch statement to dispatch to the appropriate BULC client command based on the tool name.export async function handleFdsRunTool( name: string, args: Record<string, unknown> ): Promise<{ content: Array<{ type: string; text: string }>; isError?: boolean }> { const client = getBulcClient(); try { let result; switch (name) { case "bulc_preview_fds": { const validated = PreviewFdsSchema.parse(args); result = await client.sendCommand({ action: "preview_fds", params: validated, }); break; } case "bulc_validate_fds": { result = await client.sendCommand({ action: "validate_fds", params: {}, }); break; } case "bulc_export_fds": { const validated = ExportFdsSchema.parse(args); result = await client.sendCommand({ action: "export_fds", params: validated, }); break; } case "bulc_run_fds": { const validated = RunFdsSchema.parse(args); result = await client.sendCommand({ action: "run_fds", params: validated, }); break; } case "bulc_get_fds_status": { result = await client.sendCommand({ action: "get_fds_status", params: {}, }); break; } case "bulc_stop_fds": { const validated = StopFdsSchema.parse(args); result = await client.sendCommand({ action: "stop_fds", params: validated, }); break; } default: throw new Error(`Unknown FDS run tool: ${name}`); } if (result.success) { return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }], }; } else { return { content: [{ type: "text", text: result.error || "Operation failed" }], isError: true, }; } } catch (error) { const message = error instanceof Error ? error.message : String(error); return { content: [{ type: "text", text: `Error: ${message}` }], isError: true, }; } }
- src/tools/fds-run.ts:97-110 (schema)Tool schema definition for bulc_get_fds_status, specifying name, description, empty input schema (no parameters), and read-only annotations.{ name: "bulc_get_fds_status", description: "Get current FDS simulation status. " + "Returns running state, progress, current simulation time, and estimated completion.", inputSchema: { type: "object" as const, properties: {}, }, annotations: { readOnlyHint: true, destructiveHint: false, }, },
- src/index.ts:111-121 (registration)Registration and routing in the main MCP server CallToolRequestHandler: checks if the tool name is bulc_get_fds_status and routes to handleFdsRunTool.// FDS Run tools (preview, validate, export, run, status, stop) if ( name === "bulc_preview_fds" || name === "bulc_validate_fds" || name === "bulc_export_fds" || name === "bulc_run_fds" || name === "bulc_get_fds_status" || name === "bulc_stop_fds" ) { return await handleFdsRunTool(name, safeArgs); }
- src/index.ts:40-58 (registration)The fdsRunTools array (containing bulc_get_fds_status schema) is included in the allTools list, which is returned by ListToolsRequestHandler for tool discovery.const allTools = [ ...contextTools, // 8 tools: spatial context, home info, levels, undo/redo, save ...roomTools, // 5 tools: create, create_polygon, list, modify, delete ...wallTools, // 5 tools: create, create_rectangle, list, modify, delete ...furnitureTools, // 5 tools: catalog, place, list, modify, delete ...fdsDataTools, // 7 tools: get, fire_source, detector, sprinkler, hvac, thermocouple, clear ...meshTools, // 5 tools: list, create, auto, modify, delete ...simulationTools, // 4 tools: get_settings, time, output, ambient ...fdsRunTools, // 6 tools: preview, validate, export, run, status, stop ...resultTools, // 5 tools: open_viewer, list_datasets, point_data, aset, report ...evacTools, // 25 tools: setup, stairs, agents, run, results, advanced features ]; // List available tools server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: allTools, }; });