No path to hardware
The MCP server and the twin host start and drive simulated machines only. They have no serial or network connection to a real MC-1; in shadow mode the AI can only read.
Language models write G-code that looks right. Studio tells you whether it is. Its built-in MCP server lets an AI assistant set up a blank, have Studio's CAM write the program, run it on a twin and read back what happened — alarms, collisions, forces, chatter, the shape of the part — and then make it faster.
Your AI client starts TwinwrightStudio.exe --mcp, which connects to a twin host on your computer. The host keeps its twins between conversations: a practice twin (sandbox) by default, and the machine in your window only when you switch its AI access on. Every simulation runs on a hidden copy of the setup — from the workpiece as it is now, or from a fresh blank if asked — faster than real time.
Use the AI client you already have, or talk to a model inside Studio. Both use the same tools on the same twins.
Studio writes the entry into your client's configuration, after showing you the change, or opens the client's own install link. Any other MCP client gets the command or the local address to paste.

The AI panel talks to Anthropic, OpenAI, DeepSeek, Qwen (Bailian), Kimi, Zhipu GLM or any OpenAI-compatible service, or to a model on your own computer in LM Studio or Ollama. It can attach the window's program, setup and check results, and it shows the twin's pictures in the conversation.

Forty-seven tools. Each returns a short summary the model can reason with and structured data with a schema, and every result names the machine it came from.
| Machine | |
|---|---|
machine_status | state, alarm and its meaning, homing, positions, tool, blank; the other machines |
machine_control | home, unlock, reset, hold, resume, stop, move, power, E-stop |
machine_mdi | MDI lines one at a time, an answer per line, stopping at the first refusal |
licence_status | the edition, until when it holds and which features it includes |
machine_library | the window's machine library |
| Setup | |
setup_workpiece | place or remove a blank in a vise, under clamps, on tape — or your own STL |
setup_tool | the tool in the spindle and the tool table for M6 |
setup_work_zero | G54 on a corner or the centre of the blank |
setup_part | the design part (STL) to compare with |
setup_copy · setup_example | copy a setup to another twin, cut material included; set up one of the examples |
| CAM | |
geometry_import | keep a shape — SVG, DXF, text, a formula, simple shapes or points — with a name, a version, a summary and a preview |
program_generate | the CAM: a program from shapes and operations, 2.5 or 3 axes, with the reason for every cutting value, proven in a trial run |
geometry_nest | lay parts out on a plate, small ones inside the holes of large ones, with tabs (Pro) |
job_get · job_edit | read a program's CAM job and change it — values, operations added, removed or moved — as the program's next version |
| Probe and inspection | |
probe_cycle | edge, corner, bore, boss, top face or ring-gauge calibration, tried in the twin first; the work zero set only with your OK |
inspect_part | measure the finished part against the design: pockets, contours, holes, bosses, chamfers, V grooves, by ISO 2768 or ISO 286 (Pro) |
inspect_report | the inspection record as CSV and PDF, regenerated byte for byte and chained in the audit log (Pro) |
setup_sheet | a printable setup sheet: blank, fixture, tools, zero, room above the blank, operations and times (Pro) |
| Program | |
program_check | the controller's check mode, the path preview against the setup and the 15 static rules |
program_simulate | run to the end on a hidden copy, from the part as it is or a fresh blank: time, alarms, collisions, rapids into material, loads, chatter, part deviation |
program_run · program_load | run or load on the machine itself (your window's machine asks you first) |
program_debug · program_restart | run to a line, inspect, step; the start block for a restart |
program_edit · program_optimize | change a program by intent (feeds, speeds, Z shift, safe height) as a new version; the optimizer |
program_versions | list, get, save and compare versions |
| Runs and results | |
run_status · run_profile | wait for or stop a long run; the per-line profile |
result_compare | deviation from the design part, in numbers |
result_image | pictures: workpiece, toolpath, deviation map, slowest lines, curves over time, A/B comparison |
log_query | search the audit log: who did what, when, to which machine |
result_export | the machined part as an STL file or a height map |
| Part library | |
part_save · part_list · part_get | keep a cut part with its program version, work zero, blank, set-up and measurements; list the records, read one |
part_load · part_export | set the machine up to make the part again; export a record's part |
part_update · part_delete | name, tags and notes; delete or restore a record |
| The window and help | |
window_show | show you a workspace, a side of the 3D view, the program's path or a step of the Setup panel as it explains |
settings | read the window's settings; change the language, region, units, currency or machine-hour rate only after you click Allow |
manual_search | search Studio's manual and answer from it |
report_draft · report_list | draft a problem report for you to read and send; the state of your reports and our replies |
Real calls to Studio 1.0 over MCP on 9 October 2026. A script plays the AI client; the tool results are the twin's, shortened.
result_image draws the twin's results as pictures, with the key numbers in words beside them. These three came from the session above.



In Studio: switch AI on, then AI ▾ → Connect an AI client, and pick yours. To configure a client by hand, point it at TwinwrightStudio.exe (installed in %LOCALAPPDATA%\Programs\Twinwright Studio) with the argument --mcp:
{
"mcpServers": {
"twinwright": {
"command": "C:\\Users\\<you>\\AppData\\Local\\Programs\\Twinwright Studio\\TwinwrightStudio.exe",
"args": ["--mcp"]
}
}
}[mcp_servers.twinwright]
command = 'C:\Users\<you>\AppData\Local\Programs\Twinwright Studio\TwinwrightStudio.exe'
args = ["--mcp"]{
"servers": {
"twinwright": {
"type": "stdio",
"command": "C:\\Users\\<you>\\AppData\\Local\\Programs\\Twinwright Studio\\TwinwrightStudio.exe",
"args": ["--mcp"]
}
}
}# Claude Code
claude mcp add twinwright -- "C:\Users\<you>\AppData\Local\Programs\Twinwright Studio\TwinwrightStudio.exe" --mcp
# any client over HTTP, on this computer only
"C:\Users\<you>\AppData\Local\Programs\Twinwright Studio\TwinwrightStudio.exe" --mcp-http 8766 --mcp-token <your token>
# endpoint http://127.0.0.1:8766/mcp, header Authorization: Bearer <your token>Studio keeps an audit log on your computer: the operator's actions in the window, every AI tool call with the client's name, alarms, collisions, programs started and ended. Each record carries a SHA-256 hash of the one before it, across days, so a changed or missing record shows.

The MCP server and the twin host start and drive simulated machines only. They have no serial or network connection to a real MC-1; in shadow mode the AI can only read.
The window's AI switch is off by default. While it is off, AI clients work on a practice twin (sandbox) you do not see, and its results say so, so the AI does not mistake it for your machine.
When an AI wants to change the machine in your window, the header asks Allow or Decline; no answer within 60 s counts as declined. You decide whether it asks.
program_simulate runs on a hidden copy of the setup — from the part as it is now, or from a fresh blank if asked — so trying a program never changes the machine it was asked about.
A program the AI verified is a file. A person loads it on the real machine, sets the zero and presses cycle start.
Every run ends with a replay hash: the same program on the same setup gives the same hash on any computer, so a claim the AI makes can be checked.
A hosted MCP endpoint for clients that can only reach the internet — claude.ai, ChatGPT on the web, Gemini, Microsoft Copilot — with sign-in and twins per user.
Pictures you can turn and click inside the chat, in clients that support MCP Apps.
Machining tasks scored automatically by the twin, to compare how well models write and fix G-code.
Any MCP client that can start a local program: Claude Desktop, Claude Code, ChatGPT desktop (Codex and Work modes), Cursor, VS Code, LM Studio, Cherry Studio, Trae and others. Web versions such as claude.ai or ChatGPT on the web only reach servers on the internet; the planned Twinwright Cloud will provide one. Every release is tested with automated MCP clients over stdio and HTTP; the one-click entries follow each client's documented configuration.
Only what you give it or what the tools return. The server runs on your computer and Twinwright receives nothing. With a cloud model, your prompts and the tool results go to that provider under its terms.
The MCP server and the assistant are part of Studio and free. A cloud model is billed by its provider to your key; a local model costs nothing.
A call answers within 40 s; a longer run answers with a run id and run_status collects the result, because some clients give a tool call only 60 s. Simulations with material removal usually run several times faster than real time (the 1.0 examples: 8–28× on a current desktop PC); dense stretches such as helical entries into a deep pocket can briefly run slower than real time (example 14: 0.6× over its slowest five seconds).
No. It is a way for any AI — or any program — to have Studio's CAM write G-code from a shape, to test G-code against a physics model of the machine, and to improve it with evidence. Use it with your CAM, your own code or an assistant.
AI is bold in the twin and careful on the machine. In Studio, assistants work on twins — that is where they may try anything. Connected to a real MC-1 (shadow mode, a preview in 1.0), AI only reads: what the machine measures and records, and its analysis; it never starts a program or changes a setting. Its calls go into the audit log, which is on by default.