@ifc-lite/mcp 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -91,13 +91,13 @@ The same `npx` command works as a stdio server in any MCP-aware client.
91
91
  | --- | --- |
92
92
  | Discovery | `model_info`, `model_list`, `model_load`, `model_unload`, `schema_describe` |
93
93
  | Query | `query_entities`, `count_entities`, `get_entity`, `get_entities_bulk`, `spatial_hierarchy`, `containment_chain`, `relationships`, `properties_unique`, `materials_list`, `classifications_list`, `georeferencing`, `units` |
94
- | Geometry | `geometry_bbox`, `geometry_volume`, `geometry_area` (mesh/raycast/clash require WASM, planned v0.2) |
94
+ | Geometry | `geometry_bbox`, `geometry_volume`, `geometry_area`, `clash_check`, `clash_matrix` (mesh/raycast require WASM, planned v0.2) |
95
95
  | Validation | `ids_validate`, `ids_explain`, `model_audit`, `gherkin_check` (v0.2) |
96
96
  | Mutation | `entity_set_property`, `entity_delete_property`, `entity_set_attribute`, `entity_create`, `entity_delete`, `mutation_batch`, `mutation_undo`, `mutation_diff`, `model_save` |
97
97
  | BCF | `bcf_topic_list`, `bcf_topic_create`, `bcf_topic_update`, `bcf_topic_close`, `bcf_viewpoint_create`, `bcf_export` |
98
98
  | bSDD | `bsdd_search`, `bsdd_class`, `bsdd_property_sets`, `bsdd_match` |
99
99
  | Diff | `model_diff`, `quantity_diff` |
100
- | Export | `export_ifc`, `export_csv`, `export_json`, `export_glb` (v0.2), `export_ifcx` (v0.2), `export_pdf_report` (v0.5) |
100
+ | Export | `export_ifc`, `export_csv`, `export_json`, `export_glb`, `export_ifcx`, `export_pdf_report` (v0.5) |
101
101
  | Viewer | `viewer_ask`, `viewer_open`, `viewer_close`, `viewer_status`, `viewer_colorize`, `viewer_isolate`, `viewer_hide`, `viewer_show`, `viewer_reset`, `viewer_fly_to`, `viewer_set_section`, `viewer_clear_section`, `viewer_color_by_storey`, `viewer_color_by_property`, `viewer_get_selection`, `viewer_wait_for_selection` |
102
102
 
103
103
  Resources expose live model state under the `ifc-lite://` URI scheme:
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,cAAc;IAC7B,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAqDpG"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,cAAc;IAC7B,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAyDpG"}
package/dist/loader.js CHANGED
@@ -14,7 +14,7 @@
14
14
  */
15
15
  import { readFile } from 'node:fs/promises';
16
16
  import { basename, resolve } from 'node:path';
17
- import { IfcParser } from '@ifc-lite/parser';
17
+ import { IfcParser, unwrapIfcZipView } from '@ifc-lite/parser';
18
18
  import { createBimContext } from '@ifc-lite/sdk';
19
19
  import { HeadlessLikeBackend } from './headless-backend.js';
20
20
  export async function loadIfcModel(filePath, opts = {}) {
@@ -25,10 +25,13 @@ export async function loadIfcModel(filePath, opts = {}) {
25
25
  throw new Error(`Path '${absolute}' is outside the allowed roots`);
26
26
  }
27
27
  }
28
- const buffer = await readFile(absolute);
28
+ let buffer = await readFile(absolute);
29
29
  if (buffer.byteLength === 0) {
30
30
  throw new Error(`'${absolute}' is empty (0 bytes)`);
31
31
  }
32
+ // Transparent .ifcZIP unwrap (issue #1494) — cheap magic-byte no-op for an
33
+ // ordinary .ifc file.
34
+ buffer = Buffer.from(await unwrapIfcZipView(buffer));
32
35
  // Cheap signature check; full parser also bails on malformed STEP.
33
36
  const headerSnippet = buffer.subarray(0, Math.min(buffer.byteLength, 256)).toString('ascii');
34
37
  if (!headerSnippet.includes('ISO-10303-21')) {
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/mcp",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Model Context Protocol server for ifc-lite — agent-native BIM via MCP (stdio + Streamable HTTP)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -28,15 +28,15 @@
28
28
  }
29
29
  },
30
30
  "dependencies": {
31
- "@ifc-lite/bcf": "^1.15.6",
32
- "@ifc-lite/clash": "^1.4.1",
31
+ "@ifc-lite/bcf": "^1.15.7",
32
+ "@ifc-lite/clash": "^1.5.0",
33
33
  "@ifc-lite/create": "^1.16.2",
34
34
  "@ifc-lite/data": "^2.3.0",
35
- "@ifc-lite/export": "^2.4.0",
36
- "@ifc-lite/geometry": "^3.0.0",
37
- "@ifc-lite/ids": "^1.15.22",
38
- "@ifc-lite/mutations": "^1.17.0",
39
- "@ifc-lite/parser": "^3.5.2",
35
+ "@ifc-lite/export": "^2.5.0",
36
+ "@ifc-lite/geometry": "^3.1.0",
37
+ "@ifc-lite/ids": "^1.15.23",
38
+ "@ifc-lite/mutations": "^1.17.1",
39
+ "@ifc-lite/parser": "^3.6.0",
40
40
  "@ifc-lite/query": "^1.14.11",
41
41
  "@ifc-lite/sdk": "^1.20.1",
42
42
  "@ifc-lite/viewer-core": "^0.2.7"