mcp-3d-printer-server 1.2.5 → 1.2.11

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.
Files changed (87) hide show
  1. package/CHANGELOG.md +228 -0
  2. package/CONTRIBUTORS.md +49 -0
  3. package/README.md +529 -739
  4. package/dist/3mf_parser.js +8 -8
  5. package/dist/blender-mcp-bridge.d.ts +11 -0
  6. package/dist/blender-mcp-bridge.js +661 -0
  7. package/dist/fulu-orca.js +29 -5
  8. package/dist/index.js +752 -212
  9. package/dist/printers/bambu-node-guard.d.ts +2 -0
  10. package/dist/printers/bambu-node-guard.js +38 -0
  11. package/dist/printers/bambu.d.ts +53 -7
  12. package/dist/printers/bambu.js +420 -120
  13. package/dist/printers/creality.d.ts +15 -6
  14. package/dist/printers/creality.js +42 -9
  15. package/dist/printers/duet.d.ts +11 -6
  16. package/dist/printers/duet.js +57 -34
  17. package/dist/printers/generic-base.d.ts +69 -0
  18. package/dist/printers/generic-base.js +209 -0
  19. package/dist/printers/klipper.d.ts +17 -6
  20. package/dist/printers/klipper.js +63 -16
  21. package/dist/printers/octoprint.d.ts +18 -6
  22. package/dist/printers/octoprint.js +64 -9
  23. package/dist/printers/printer-factory.d.ts +11 -2
  24. package/dist/printers/printer-factory.js +9 -8
  25. package/dist/printers/prusa.d.ts +14 -6
  26. package/dist/printers/prusa.js +56 -9
  27. package/dist/printers/repetier.d.ts +18 -6
  28. package/dist/printers/repetier.js +48 -6
  29. package/dist/safety/archive.d.ts +11 -0
  30. package/dist/safety/archive.js +214 -0
  31. package/dist/safety/artifact.d.ts +6 -0
  32. package/dist/safety/artifact.js +66 -0
  33. package/dist/safety/confirmation.d.ts +22 -0
  34. package/dist/safety/confirmation.js +43 -0
  35. package/dist/safety/expected-peaks.d.ts +24 -0
  36. package/dist/safety/expected-peaks.js +24 -0
  37. package/dist/safety/gcode-thermal.d.ts +64 -0
  38. package/dist/safety/gcode-thermal.js +382 -0
  39. package/dist/safety/limits.d.ts +31 -0
  40. package/dist/safety/limits.js +105 -0
  41. package/dist/safety/print-file.d.ts +25 -0
  42. package/dist/safety/print-file.js +517 -0
  43. package/dist/safety/printer-state.d.ts +51 -0
  44. package/dist/safety/printer-state.js +365 -0
  45. package/dist/slicer/bambu-cli.d.ts +110 -0
  46. package/dist/slicer/bambu-cli.js +547 -0
  47. package/dist/slicer/profile-flatten.d.ts +104 -0
  48. package/dist/slicer/profile-flatten.js +676 -0
  49. package/dist/slicer/run-slicer.d.ts +18 -0
  50. package/dist/slicer/run-slicer.js +102 -0
  51. package/dist/slicer/slicer-error.d.ts +27 -0
  52. package/dist/slicer/slicer-error.js +53 -0
  53. package/dist/slicer/templates.d.ts +126 -0
  54. package/dist/slicer/templates.js +255 -0
  55. package/dist/stl/stl-manipulator.d.ts +25 -3
  56. package/dist/stl/stl-manipulator.js +214 -232
  57. package/package.json +30 -14
  58. package/server.json +29 -0
  59. package/src/3mf_parser.ts +8 -8
  60. package/src/blender-mcp-bridge.ts +611 -0
  61. package/src/fulu-orca.ts +36 -6
  62. package/src/index.ts +888 -255
  63. package/src/printers/bambu-node-guard.ts +44 -0
  64. package/src/printers/bambu.ts +458 -158
  65. package/src/printers/creality.ts +40 -9
  66. package/src/printers/duet.ts +64 -53
  67. package/src/printers/generic-base.ts +286 -0
  68. package/src/printers/klipper.ts +83 -28
  69. package/src/printers/octoprint.ts +74 -21
  70. package/src/printers/printer-factory.ts +21 -11
  71. package/src/printers/prusa.ts +53 -10
  72. package/src/printers/repetier.ts +55 -17
  73. package/src/safety/archive.ts +181 -0
  74. package/src/safety/artifact.ts +58 -0
  75. package/src/safety/confirmation.ts +56 -0
  76. package/src/safety/expected-peaks.ts +47 -0
  77. package/src/safety/gcode-thermal.ts +404 -0
  78. package/src/safety/limits.ts +98 -0
  79. package/src/safety/print-file.ts +354 -0
  80. package/src/safety/printer-state.ts +339 -0
  81. package/src/slicer/bambu-cli.ts +633 -0
  82. package/src/slicer/profile-flatten.ts +830 -0
  83. package/src/slicer/run-slicer.ts +126 -0
  84. package/src/slicer/slicer-error.ts +72 -0
  85. package/src/slicer/templates.ts +288 -0
  86. package/src/stl/stl-manipulator.ts +247 -275
  87. package/dist/index.js.map +0 -1
@@ -85,7 +85,7 @@ async function parseBambuConfig(zip) {
85
85
  if (file) {
86
86
  configFile = file;
87
87
  configContent = await file.async('string');
88
- console.log(`Found Bambu config file: ${configFile.name}`);
88
+ console.error(`Found Bambu config file: ${configFile.name}`);
89
89
  break; // Use the first one found (project usually has the most)
90
90
  }
91
91
  }
@@ -94,7 +94,7 @@ async function parseBambuConfig(zip) {
94
94
  // Attempt to parse as JSON
95
95
  const jsonData = JSON.parse(configContent);
96
96
  const parsedConfig = parseBambuJSONConfig(jsonData);
97
- console.log('Bambu config parsed successfully as JSON.');
97
+ console.error('Bambu config parsed successfully as JSON.');
98
98
  return parsedConfig;
99
99
  }
100
100
  catch (jsonError) {
@@ -102,7 +102,7 @@ async function parseBambuConfig(zip) {
102
102
  // Fallback: Try parsing as INI if JSON fails (though unlikely based on sample)
103
103
  try {
104
104
  const parsedConfig = parseFallbackINIConfig(configContent); // Keep a simple INI parser as fallback
105
- console.log('Bambu config parsed successfully as INI (fallback).');
105
+ console.error('Bambu config parsed successfully as INI (fallback).');
106
106
  return parsedConfig;
107
107
  }
108
108
  catch (iniError) {
@@ -112,7 +112,7 @@ async function parseBambuConfig(zip) {
112
112
  }
113
113
  }
114
114
  else {
115
- console.log('No Bambu-specific config file found in Metadata directory.');
115
+ console.error('No Bambu-specific config file found in Metadata directory.');
116
116
  return {};
117
117
  }
118
118
  }
@@ -181,7 +181,7 @@ async function parse3DModelConfig(zip) {
181
181
  });
182
182
  });
183
183
  }
184
- console.log('3dmodel.model parsed successfully.');
184
+ console.error('3dmodel.model parsed successfully.');
185
185
  return { metadata, objects, build: { items: buildItems } };
186
186
  }
187
187
  catch (error) {
@@ -190,13 +190,13 @@ async function parse3DModelConfig(zip) {
190
190
  }
191
191
  }
192
192
  export async function parse3MF(filePath) {
193
- console.log(`Parsing 3MF file: ${filePath}`);
193
+ console.error(`Parsing 3MF file: ${filePath}`);
194
194
  try {
195
195
  const data = await fs.readFile(filePath);
196
196
  const zip = await JSZip.loadAsync(data);
197
197
  // List files for debugging
198
198
  // const fileList = Object.keys(zip.files);
199
- // console.log('Files in 3MF:', fileList);
199
+ // console.error('Files in 3MF:', fileList);
200
200
  const { metadata, objects, build } = await parse3DModelConfig(zip);
201
201
  const bambuConfig = await parseBambuConfig(zip);
202
202
  // Combine data into the final structure
@@ -206,7 +206,7 @@ export async function parse3MF(filePath) {
206
206
  build,
207
207
  slicerConfig: bambuConfig
208
208
  };
209
- console.log('3MF parsing completed.');
209
+ console.error('3MF parsing completed.');
210
210
  return combinedData;
211
211
  }
212
212
  catch (error) {
@@ -0,0 +1,11 @@
1
+ import { type CallToolResult } from "@modelcontextprotocol/sdk/types.js";
2
+ type Arguments = Record<string, unknown>;
3
+ export declare class BlenderMcpBridge {
4
+ private session;
5
+ private invoke;
6
+ status(args: Arguments, signal?: AbortSignal): Promise<unknown>;
7
+ exportStl(args: Arguments, signal?: AbortSignal): Promise<unknown>;
8
+ call(args: Arguments, signal?: AbortSignal): Promise<CallToolResult>;
9
+ edit(args: Arguments, legacyCommand?: string, signal?: AbortSignal): Promise<unknown>;
10
+ }
11
+ export {};