mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-22 00:12:34 +00:00
Predispose the Design tab to run under an external MCP agent. New
McpControl.{cpp,hpp} embeds a line-delimited JSON-RPC 2.0 server over a
Unix domain socket, off unless env SNAPORCA_MCP is set. Requests are
marshalled onto the wx main thread and run through the SAME CadDocument
kernel the GUI uses, via two thin DesignPanel hooks (mcp_doc /
mcp_after_change) — no parallel engine.
Slice-1 methods: describe_tools (introspection -> the bridge builds tool
schemas), describe_scene (feature tree + per-body bounding boxes), and
extrude (centred rectangle sketch -> new solid). Every op returns its
full post-state. POSIX-only; Windows compiles to a no-op.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BVzKmX6Y1aEteit1HTXG4Q
25 lines
1.0 KiB
C++
25 lines
1.0 KiB
C++
#ifndef slic3r_GUI_McpControl_hpp_
|
|
#define slic3r_GUI_McpControl_hpp_
|
|
|
|
// MCP control surface (slice 1): a local JSON-RPC 2.0 server, line-delimited over a
|
|
// Unix domain socket, that lets an external MCP bridge drive and perceive the Design
|
|
// tab. Off unless the env var SNAPORCA_MCP is set:
|
|
// SNAPORCA_MCP=1 -> socket at /tmp/snaporca-mcp.sock
|
|
// SNAPORCA_MCP=/path/to.sock -> socket at that path
|
|
// All CAD work is marshalled onto the wx main thread and runs through the SAME
|
|
// CadDocument kernel the GUI uses (no parallel engine). Slice-1 methods:
|
|
// describe_tools, describe_scene, extrude.
|
|
//
|
|
// ponytail: Unix-socket only (POSIX). Windows compiles this to a no-op; add a named
|
|
// pipe transport when a Windows agent actually needs it.
|
|
|
|
namespace Slic3r { namespace GUI {
|
|
|
|
// Start the server thread iff SNAPORCA_MCP is set. Safe to call once after the
|
|
// MainFrame + DesignPanel exist. No-op when the env var is unset or on Windows.
|
|
void start_mcp_control_if_enabled();
|
|
|
|
}} // namespace Slic3r::GUI
|
|
|
|
#endif // slic3r_GUI_McpControl_hpp_
|