send2orca-mcp
# Send2Orca
**Send a [SolidCraft](https://github.com/bherbruck/solidcraft) design to [OrcaSlicer](https://github.com/SoftFever/OrcaSlicer) in one command.**
Model in SolidCraft, run `send2orca`, and the part is open in Orca, ready to slice.
```console
$ send2orca
exported ~/.local/share/send2orca/out/Banana_box.step (323850 bytes) from live:7878
opened with /usr/bin/orca-slicer
```
- Works with the design **open in a running SolidCraft window**, or with a **saved design file**.
- Exports **STEP** (default), **3MF** or **STL**; a multi-body design arrives in Orca as separate objects.
- Finds your slicer by itself: `orca-slicer` / `orcaslicer` / `orca-belt*` forks on `PATH`, the OS install, an AppImage, or the Flatpak.
- Ships an **MCP tool** (`send2orca-mcp`) so an AI agent that is already driving SolidCraft over MCP can say "send it to Orca".
- Pure Python standard library. No dependencies.
> **Why a companion tool and not a plugin?** SolidCraft has no in-app plugin API today. Send2Orca uses only
> the interfaces SolidCraft documents: `solidcraft-cli run` for files and the MCP bridge
> (`solidcraft-cli mcp --connect`) for a running window.
## Install
You need SolidCraft (for `solidcraft-cli`) and OrcaSlicer, plus Python 3.9 or newer.
```console
pipx install git+https://github.com/tommasobbianchi/Send2Orca
# or: pip install git+https://github.com/tommasobbianchi/Send2Orca
```
Check what it detects:
```console
$ send2orca --doctor
send2orca: 0.1.1
solidcraft_cli: /usr/bin/solidcraft-cli
solidcraft_version: solidcraft-cli 0.14.0
live_windows: [7878]
orca: ['/usr/bin/orca-slicer']
```
## Use
**The design that is open right now.** Start SolidCraft with its control channel once:
```console
solidcraft --control 7878
```
then, from any terminal on the same computer:
```console
send2orca # STEP, opened in Orca
send2orca -f 3mf # another format
send2orca -b Body2 # only one body
send2orca --no-launch # export only
send2orca --list # which windows are running
```
**A saved design, no window needed.**
```console
send2orca part.solidcraft
send2orca part.solidcraft -f stl -o /tmp/part.stl
```
Files are written to `~/.local/share/send2orca/out/` (Linux), named after the design.
### Options
| option | meaning |
|---|---|
| `-f, --format step\|3mf\|stl` | export format (default `step`) |
| `-b, --body NAME` | export only that body; repeat for several (live window only) |
| `-o, --out FILE` | write here instead of the default folder |
| `-p, --port N` | control port of the window (default: auto-detect) |
| `--orca CMD` | slicer command; also `SEND2ORCA_ORCA` |
| `--no-launch` | export only |
| `--json` | machine-readable output |
| `--doctor`, `--list` | diagnostics |
### Choosing the slicer
Order of precedence: `--orca`, `$SEND2ORCA_ORCA`, `"command"` in the config file, then auto-detection.
Config file: `~/.config/send2orca/config.json` (Linux/macOS), `%APPDATA%\send2orca\config.json` (Windows):
```json
{ "command": "/home/me/bin/orca-belt-2026-08", "format": "step" }
```
This is also how you point Send2Orca at a **fork** (for example a belt-printer build).
If you start it from SSH on Linux, it borrows the desktop session's display variables so the window opens on the screen.
## MCP tool for AI agents
```console
claude mcp add --scope user send2orca -- send2orca-mcp
```
Tools: `send_to_orca` (`file?`, `format?`, `bodies?`, `port?`, `launch?`) and `send2orca_doctor`.
Register it next to SolidCraft's own server (`solidcraft-cli mcp --allow-path ~/designs`).
A ready-to-copy Claude Code skill is in [`skills/send2orca`](skills/send2orca/SKILL.md).
## Status and honesty
- Developed and tested on **Linux** with SolidCraft 0.14 (real `solidcraft-cli`, file export and the MCP export with body filter).
The test suite (`pytest`) runs against stand-ins for SolidCraft and Orca, and CI runs it on Linux and macOS.
- **Windows and macOS** install locations for SolidCraft and the location of the control-channel token folder are
best-effort guesses. If detection fails, set `SOLIDCRAFT_CLI` and pass `--port`, and please open an issue.
- STEP is the default because Orca imports it faithfully; Orca triangulates it on import. Use 3MF if you prefer.
- The window path needs `solidcraft --control PORT`. Without it SolidCraft exposes no control channel and only saved files can be sent.
## Development
```console
pip install -e '.[test]'
pytest
```
## Licence
MIT OR Apache-2.0, at your option (the same as SolidCraft). Not affiliated with SolidCraft or OrcaSlicer.
TDQS
Scored across 2 tools
send_to_orca performs the export/handoff action, while send2orca_doctor is a diagnostic that reports detection of environment components. Their purposes are distinct, though an agent might initially wonder if 'doctor' also triggers an export.
The two names use different conventions and structures: 'send_to_orca' is a verb-preposition-noun function name, while 'send2orca_doctor' is a product-style noun phrase that omits the underscore before the verb-like component. There is no predictable pattern across the set.
Two tools are borderline thin for a dedicated server, but the scope is narrowly focused on exporting from SolidCraft to OrcaSlicer. It is plausible that no more tools are needed, but it feels minimal.
The surface covers the core export action and a diagnostic check, but there is no tool to configure export options, list recent exports, or handle errors beyond the doctor report. For a simple bridge, coverage is adequate but not complete.