mcp-3d-printer-server 1.2.14 → 1.2.15
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 +10 -0
- package/dist/test/stl-manipulator-test.js +9 -3
- package/package.json +1 -1
- package/server.json +2 -2
- package/src/test/stl-manipulator-test.ts +9 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.2.15 — 2026-10-26
|
|
4
|
+
|
|
5
|
+
### Documentation
|
|
6
|
+
- 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.
|
|
7
|
+
- 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.
|
|
8
|
+
- 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.
|
|
9
|
+
|
|
10
|
+
### Tests
|
|
11
|
+
- 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.
|
|
12
|
+
|
|
3
13
|
## 1.2.14 — 2026-10-25
|
|
4
14
|
|
|
5
15
|
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.
|
|
@@ -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
|
-
//
|
|
40
|
-
const manipulator = new STLManipulator(
|
|
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.
|
|
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.
|
|
4
|
+
"version": "1.2.15",
|
|
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.
|
|
10
|
+
"version": "1.2.15",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "npm",
|
|
14
14
|
"identifier": "mcp-3d-printer-server",
|
|
15
|
-
"version": "1.2.
|
|
15
|
+
"version": "1.2.15",
|
|
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
|
-
//
|
|
52
|
-
const manipulator = new STLManipulator(
|
|
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.
|
|
123
|
+
process.exitCode = 1;
|
|
124
|
+
} finally {
|
|
125
|
+
fs.rmSync(outputDir, { recursive: true, force: true });
|
|
120
126
|
}
|
|
121
127
|
}
|
|
122
128
|
|