mcp-3d-printer-server 1.2.14 → 1.2.16

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/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.2.16 — 2026-10-26
4
+
5
+ ### Documentation
6
+ - Show the documentation site's social card directly below the README title and link it to the site.
7
+
8
+ ## 1.2.15 — 2026-10-26
9
+
10
+ ### Documentation
11
+ - Link the upstream reports for FULU's Linux host: the missing `printer.cer` ([FULU #52](https://github.com/FULU-Foundation/OrcaSlicer-bambulab/issues/52)), the segfault on printer-connection calls before a certificate folder is set ([FULU #53](https://github.com/FULU-Foundation/OrcaSlicer-bambulab/issues/53)), the abort on a missing `create_agent` log folder ([FULU #54](https://github.com/FULU-Foundation/OrcaSlicer-bambulab/issues/54)), and the abort when its input closes after an agent exists ([FULU #55](https://github.com/FULU-Foundation/OrcaSlicer-bambulab/issues/55)). This server refuses the methods behind #52 and #53. `fulu_bambu_network_rpc` can reach #54 with a missing `log_dir`, and #55 after `net.create_agent` once every request is answered; that abort is the one 1.2.14's validation saw.
12
+ - Link the proposed fixes for FULU's CLI crash, [FULU #56](https://github.com/FULU-Foundation/OrcaSlicer-bambulab/pull/56) and [FULU #57](https://github.com/FULU-Foundation/OrcaSlicer-bambulab/pull/57). With both, a patched macOS arm64 build answers `--help` and slices a P1S cube; FULU v1.0.0 crashes on both.
13
+ - Credit OrcaSlicer's fix for the 2.4.2 `PartPlate::check_outside` CLI crash: [OrcaSlicer #14415](https://github.com/OrcaSlicer/OrcaSlicer/pull/14415) by packerlschupfer, released in 2.5.0-alpha. The STL transform workaround stays while 2.4.2 is the latest stable release; FULU's CLI has the same crash until it takes that fix.
14
+
15
+ ### Tests
16
+ - Write the STL manipulator smoke test's outputs to a scratch folder that it removes. Every `npm test` run used to leave six output folders in the repository's `test/` directory.
17
+
3
18
  ## 1.2.14 — 2026-10-25
4
19
 
5
20
  Ported from [bambu-printer-mcp](https://github.com/DMontgomery40/bambu-printer-mcp) 1.1.34. Its evidence came from real P1S runs and an x86-64 Linux FULU container; this repository's validation is noted in each entry.
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # MCP 3D Printer Server
2
2
 
3
+ [![MCP 3D Printer Server — Print from a conversation. Browse the documentation site.](https://dmontgomery40.github.io/mcp-3D-printer-server/social-card.png)](https://dmontgomery40.github.io/mcp-3D-printer-server/)
4
+
3
5
  > **Thank you, [FULU Foundation](https://www.fulu.org/), [Louis Rossmann](https://www.youtube.com/@rossmanngroup), and the [OrcaSlicer-bambulab contributors](https://github.com/FULU-Foundation/OrcaSlicer-bambulab).** Thank you for standing up for consumer ownership, open-source developers, repair rights, and owners whose working hardware should not be made worse by locked-down software.
4
6
  >
5
7
  > This server treats the FULU OrcaSlicer-bambulab fork as a first-class slicer for Bambu Lab projects. See the [FULU guide](https://github.com/DMontgomery40/mcp-3D-printer-server/blob/main/docs/FULU.md) for setup and current status.
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { STLManipulator } from '../stl/stl-manipulator.js';
3
3
  import fs from 'fs';
4
+ import os from 'os';
4
5
  import path from 'path';
5
6
  import * as THREE from 'three';
6
7
  // Create a test directory
@@ -8,6 +9,8 @@ const TEST_DIR = path.join(process.cwd(), 'test');
8
9
  if (!fs.existsSync(TEST_DIR)) {
9
10
  fs.mkdirSync(TEST_DIR, { recursive: true });
10
11
  }
12
+ // Operation outputs go to a scratch folder removed after the run
13
+ const outputDir = fs.mkdtempSync(path.join(os.tmpdir(), 'stl-manipulator-test-'));
11
14
  // Path for a sample STL file
12
15
  const sampleStlPath = path.join(TEST_DIR, 'sample_cube.stl');
13
16
  // Create a simple cube STL for testing if it doesn't exist
@@ -36,8 +39,8 @@ async function testSTLManipulator() {
36
39
  try {
37
40
  // Create a sample STL for testing
38
41
  const stlPath = await createSampleCube();
39
- // Create an instance of the STL manipulator with the test directory
40
- const manipulator = new STLManipulator(TEST_DIR);
42
+ // Write operation outputs to a scratch folder, not the tracked test directory
43
+ const manipulator = new STLManipulator(outputDir);
41
44
  // Listen for events from the manipulator
42
45
  manipulator.on('operationComplete', (data) => {
43
46
  console.log('Operation complete:', data);
@@ -84,7 +87,10 @@ async function testSTLManipulator() {
84
87
  }
85
88
  catch (error) {
86
89
  console.error('An error occurred during testing:', error);
87
- process.exit(1);
90
+ process.exitCode = 1;
91
+ }
92
+ finally {
93
+ fs.rmSync(outputDir, { recursive: true, force: true });
88
94
  }
89
95
  }
90
96
  // Run the tests
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mcp-3d-printer-server",
3
3
  "mcpName": "io.github.DMontgomery40/mcp-3d-printer-server",
4
- "version": "1.2.14",
4
+ "version": "1.2.16",
5
5
  "description": "MCP server for connecting Claude with 3D printer management systems",
6
6
  "main": "dist/index.js",
7
7
  "repository": "https://github.com/DMontgomery40/mcp-3D-printer-server",
package/server.json CHANGED
@@ -7,12 +7,12 @@
7
7
  "url": "https://github.com/DMontgomery40/mcp-3D-printer-server",
8
8
  "source": "github"
9
9
  },
10
- "version": "1.2.14",
10
+ "version": "1.2.16",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "identifier": "mcp-3d-printer-server",
15
- "version": "1.2.14",
15
+ "version": "1.2.16",
16
16
  "runtimeHint": "npx",
17
17
  "transport": {
18
18
  "type": "stdio"
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { STLManipulator, ProgressCallback } from '../stl/stl-manipulator.js';
4
4
  import fs from 'fs';
5
+ import os from 'os';
5
6
  import path from 'path';
6
7
  import * as THREE from 'three';
7
8
 
@@ -11,6 +12,9 @@ if (!fs.existsSync(TEST_DIR)) {
11
12
  fs.mkdirSync(TEST_DIR, { recursive: true });
12
13
  }
13
14
 
15
+ // Operation outputs go to a scratch folder removed after the run
16
+ const outputDir = fs.mkdtempSync(path.join(os.tmpdir(), 'stl-manipulator-test-'));
17
+
14
18
  // Path for a sample STL file
15
19
  const sampleStlPath = path.join(TEST_DIR, 'sample_cube.stl');
16
20
 
@@ -48,8 +52,8 @@ async function testSTLManipulator() {
48
52
  // Create a sample STL for testing
49
53
  const stlPath = await createSampleCube();
50
54
 
51
- // Create an instance of the STL manipulator with the test directory
52
- const manipulator = new STLManipulator(TEST_DIR);
55
+ // Write operation outputs to a scratch folder, not the tracked test directory
56
+ const manipulator = new STLManipulator(outputDir);
53
57
 
54
58
  // Listen for events from the manipulator
55
59
  manipulator.on('operationComplete', (data) => {
@@ -116,7 +120,9 @@ async function testSTLManipulator() {
116
120
  console.log('\nAll tests completed successfully!');
117
121
  } catch (error) {
118
122
  console.error('An error occurred during testing:', error);
119
- process.exit(1);
123
+ process.exitCode = 1;
124
+ } finally {
125
+ fs.rmSync(outputDir, { recursive: true, force: true });
120
126
  }
121
127
  }
122
128