Skip to main content
Glama
tommasobbianchi

send2orca-mcp

README.md
# 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

B3/5.0

Scored across 2 tools

Disambiguation4/5

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.

Naming Consistency2/5

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.

Tool Count3/5

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.

Completeness3/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues