Atelier MCP
by giasonpooni
README.md
# Atelier MCP
Observe-first Model Context Protocol server for **small-format atelier mills**. Token-gated rough and finish passes. Works with Claude, Grok, and Codex.
This is not a factory. It is the control plane a sculptor or maker can put in front of a machine they already own — foam, plaster, wood, soapstone, limestone — so an assistant can **see** the job and **cannot** fire the spindle unless a human returns a server-minted token bound to that exact pass.
```
Claude / Grok / Codex
| MCP stdio
v
atelier-mcp
| GuardLattice
| plane AND job AND units AND extract AND envelope
| AND magnitude AND live AND token_binding AND forbid
v
sim cell (GRBL live path is opt-in, later)
```
There is no `send_gcode`. There is no `request_jog`. A finish pass ends in **hand-off**. The human finishes the work.
## Status (0.1.0)
| Plane | Tools |
|---|---|
| Observe | `capabilities`, `cell_status` |
| Prepare | `bind_job`, `inspect_program`, `mark_handoff` |
| Command | `request_rough`, `request_finish_pass` |
| Recover | `feed_hold`, `emergency_stop` |
Default backend is an in-process simulator. Command is off until `ATELIER_MCP_ALLOW_COMMAND=1`.
## Install
```bash
pip install git+https://github.com/giasonpooni/Atelier-MCP.git
atelier-mcp
```
From a clone:
```bash
pip install -e ".[dev]"
python -m pytest
```
## Clients
Same binary. Configs in [`examples/`](examples/).
Leave command and live off until you have read [SAFETY.md](SAFETY.md).
**Claude Desktop** — `examples/claude_desktop_config.json`
**Grok Build**
```bash
grok mcp add atelier atelier-mcp
```
**Codex** — `examples/codex_config.toml`
## A pass
```
1. bind_job(stock, bit, material=foam, extract_on=false)
2. inspect_program(gcode) # static, not a proof
3. request_rough(...) # preview + token
4. human reads the preview
5. request_rough(..., token=...) # commit
6. request_finish_pass(...) # same two-step
7. mark_handoff() # chisel is yours
```
Swap the target between step 3 and step 5 → `token_payload_mismatch`.
Soapstone without `extract_on=true` → `extract` gate stays open.
Finish stepdown 1.5 mm → `magnitude` stays open.
## Environment
| Variable | Default |
|---|---|
| `ATELIER_MCP_ALLOW_COMMAND` | `0` |
| `ATELIER_MCP_LIVE` | `0` |
| `ATELIER_MCP_ALLOW_RECOVER` | `1` |
| `ATELIER_MCP_MAX_STEPDOWN_MM` | `2.0` |
| `ATELIER_MCP_MAX_FINISH_MM` | `0.4` |
## What this is not
Not Monumental Labs. Not a 7-axis stone cell. Not pour-cell telemetry. Not a digital twin. Not a finished sculpture.
Optional CSE fields (`element_id`, `world_digest`) may be stored on a job; v0.1 does not yet refuse on disposition. See [docs/ROADMAP.md](docs/ROADMAP.md).
## License
Apache-2.0. No warranty. [SAFETY.md](SAFETY.md).
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues