PrusaMCP
# PrusaMCP
**Intelligent MCP Server for PrusaSlicer** — 17 tools to analyze, configure and launch your 3D prints from Claude or any MCP client.
PrusaMCP is not a simple CLI wrapper. It's a **3D printing assistant** that analyzes your mesh, recommends optimal settings with justification, diagnoses defects, and can drive PrusaSlicer automatically.
> Built with [Claude Code](https://claude.ai/claude-code).
## Features
- **Native mesh analysis** — Binary/ASCII STL and 3MF parser, zero external dependencies for parsing
- **Recommendation engine** — Bible FDM + official Prusa knowledge base, justification for every setting
- **MVS-based speed capping** — Automatic speed calculation based on material Max Volumetric Speed
- **17 MCP tools** covering the full print workflow
- **Post-print diagnostics** — Bible FDM diagnostic tree for 9 common defects
- **Filament database** — 30+ filaments with temperatures, MVS, recommended surface
## Tools
### Analysis & Recommendation (no PrusaSlicer needed)
| Tool | Description |
|------|-------------|
| `analyze_mesh` | Geometric analysis of STL/3MF (dimensions, volume, overhangs, manifold) |
| `check_printability` | Issue detection: thin walls, bridges, overhangs, stability |
| `suggest_orientation` | Test 6 orientations with scoring (overhangs, height, adhesion) |
| `recommend_profile` | Full profile recommendation with per-setting justification |
| `generate_prusaslicer_config` | Generate PrusaSlicer-compatible .ini file |
| `estimate_cost` | Cost estimate (filament + electricity) and print time |
| `search_filament` | Search filament database (30+ entries) |
| `print_wizard` | All-in-one: analysis + printability + orientation + profile + questions |
| `diagnose_print` | Post-print diagnosis (warping, stringing, under-extrusion...) |
### PrusaSlicer Integration
| Tool | Description |
|------|-------------|
| `slice_prusaslicer` | Run slicing via CLI with G-code stats |
| `get_current_model` | Get the model currently open in PrusaSlicer |
| `screenshot_prusaslicer` | Capture PrusaSlicer window (even in background) |
| `postprocess_gcode` | G-code post-processing (pause, filament change, etc.) |
| `upload_print` | Upload to OctoPrint / Prusa Connect |
### Feedback & Community
| Tool | Description |
|------|-------------|
| `submit_feedback` | Submit print feedback after printing |
| `feedback_stats` | Feedback statistics by material/goal |
| `export_feedback` | Anonymized community data export |
## Installation
```bash
git clone https://github.com/Noosbai/PrusaMCP.git
cd PrusaMCP
npm install
npm run build
```
## Configuration
### Claude Desktop / Claude Code
Add to your MCP configuration:
```json
{
"mcpServers": {
"prusa-mcp": {
"command": "node",
"args": ["/path/to/PrusaMCP/build/index.js"],
"env": {
"PRUSASLICER_PATH": "C:/Program Files/Prusa3D/PrusaSlicer/prusa-slicer-console.exe"
}
}
}
}
```
### Environment Variables
| Variable | Description | Default |
|----------|-------------|---------|
| `PRUSASLICER_PATH` | Path to `prusa-slicer-console.exe` | Auto-detected |
| `PRUSASLICER_PROFILES_DIR` | PrusaSlicer profiles folder | `%APPDATA%/PrusaSlicer` |
| `OCTOPRINT_URL` | Your OctoPrint instance URL | — |
| `OCTOPRINT_API_KEY` | OctoPrint API key | — |
## Usage
### Typical Workflow
1. **Analyze a model**: `analyze_mesh` to get dimensions, overhangs, etc.
2. **Check printability**: `check_printability` to detect potential issues
3. **Get a recommendation**: `recommend_profile` with your goal (draft, standard, quality, strong, speed)
4. **Generate config**: `generate_prusaslicer_config` for a ready-to-use .ini
5. **Slice**: `slice_prusaslicer` to generate G-code
### Or in one command
`print_wizard` does everything at once: analysis + printability + orientation + profile + cost estimate + follow-up questions to refine.
### Available Goals
| Goal | Description |
|------|-------------|
| `draft` / `prototype` | Fast, quality secondary |
| `standard` | Good quality/time balance |
| `quality` / `fine` | Smooth surface, fine details |
| `strong` / `structural` | Maximum mechanical strength |
| `vase` | Spiral vase mode |
| `speed` | Everything maxed out |
### Supported Materials
PLA, PETG, ABS, ASA, TPU, Nylon, PC — with official Prusa temperatures, Bible FDM MVS values, drying/enclosure warnings.
## Knowledge Base
The recommendation engine is built on:
- **Bible de l'impression 3D FDM** — Comprehensive FDM settings guide for PrusaSlicer
- **Official Prusa documentation** — Temperatures, MVS, reference profiles
- **9-step calibration workflow** (mechanical → PID → Z → EM → MVS → retraction → cooling → PA → accel)
- **Diagnostic tree** for 9 common defects with causes and fixes
### MVS (Max Volumetric Speed) — The Central Parameter
| Material | MVS (mm³/s) |
|----------|-------------|
| PLA | ~15 |
| ABS/ASA | ~11 |
| PETG | ~8 |
| Nylon/PC | ~8 |
| PVA/BVOH | ~4 |
| TPU | ~1-2.5 |
## Architecture
```
src/
├── index.ts # MCP entry point + STDIO transport
├── types.ts # TypeScript interfaces
├── config.ts # PrusaSlicer detection
├── stl-parser.ts # Native binary/ASCII STL parser
├── threemf-parser.ts # 3MF parser (ZIP + XML)
├── mesh-analyzer.ts # Geometric analysis
├── profile-engine.ts # Recommendation engine (Bible FDM)
├── ini-writer.ts # PrusaSlicer .ini generation
├── print-issues.ts # Issue detection + Bible FDM diagnostics
├── orientation.ts # Optimal orientation suggestion
├── cost-estimator.ts # Cost/time estimation
├── filament-db.ts # Filament database
├── prusa-cli.ts # PrusaSlicer CLI wrapper
├── community-data.json # Community data (MVS, diagnostics, best practices)
└── tools/ # 17 MCP tools
├── analyze-mesh.ts
├── check-printability.ts
├── suggest-orientation.ts
├── recommend-profile.ts
├── generate-config.ts
├── estimate-cost.ts
├── search-filament.ts
├── print-wizard.ts
├── diagnose-print.ts
├── slice.ts
├── get-current-model.ts
├── screenshot-prusaslicer.ts
├── postprocess-gcode.ts
├── upload-print.ts
└── feedback.ts
```
## Requirements
- **Node.js** >= 18
- **PrusaSlicer** (optional — only needed for slice, screenshot, get_current_model)
- **Windows** for screenshot feature (uses PrintWindow API)
## License
MIT
TDQS
Scored across 17 tools
Most tools have distinct purposes, but there is some overlap between analyze_mesh and check_printability, which both analyze 3D models for issues, potentially causing confusion. However, their descriptions differentiate them slightly: analyze_mesh focuses on geometric properties, while check_printability assesses printability problems. Other tools like diagnose_print and print_wizard are clearly distinct in their post-print and comprehensive analysis roles, respectively.
Tool names follow a consistent snake_case pattern throughout, which is good. However, there is minor inconsistency in verb usage: some tools use action-oriented verbs like analyze, check, diagnose, while others use more descriptive terms like suggest_orientation or generate_prusaslicer_config. This deviation is slight and does not significantly hinder readability, but it prevents a perfect score.
With 17 tools, the count is on the higher side but reasonable for a comprehensive 3D printing assistant server covering mesh analysis, slicing, printing, and feedback. It feels slightly heavy but not excessive, as each tool appears to serve a specific function in the workflow, from pre-print analysis to post-print diagnostics and community sharing.
The tool set provides complete coverage of the 3D printing domain, including pre-print analysis (e.g., analyze_mesh, check_printability), slicing (slice_prusaslicer), configuration (generate_prusaslicer_config), printing (upload_print), post-print feedback (submit_feedback, diagnose_print), and community features (export_feedback, feedback_stats). There are no obvious gaps; agents can handle the full lifecycle from model preparation to print completion and review.