CNCjs MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CNCJS_URL | No | CNCjs server URL | http://localhost:8000 |
| CNCJS_TOKEN | No | Optional JWT token for CNCjs authentication |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_serial_portsB | List available serial ports |
| get_connection_statusB | Get current CNCjs connection status |
| get_machine_stateA | Get full GRBL machine state (positions, feed, spindle, overrides, buffer) |
| get_machine_positionB | Get current machine and work positions (X, Y, Z) |
| get_work_coordinate_offsetC | Get work coordinate offset (WCO) values |
| get_machine_settingsB | Get all GRBL $$ machine settings with labels |
| get_parser_stateB | Get active G-code parser state (WCS, units, distance mode, etc.) |
| get_loaded_gcodeB | Get currently loaded G-code file name and content |
| get_job_progressB | Get current job progress (lines sent, elapsed time, % complete) |
| get_workflow_stateB | Get workflow state (idle, running, paused) |
| get_feeder_statusB | Get feeder queue depth, hold state, and reason |
| list_macrosB | List all CNCjs macros (name, id, content) |
| list_machinesB | List machine profiles with travel limits |
| get_alarm_infoB | Get current alarm code and human-readable meaning |
| connect_to_portC | Open a serial connection to a CNC controller |
| disconnect_portA | Close the current serial connection |
| emergency_stopA | EMERGENCY STOP — immediately halts all motion via GRBL soft reset (0x18). Use in any dangerous situation. |
| feed_holdA | Feed hold — controlled deceleration to stop. Safer than emergency stop for non-critical situations. |
| send_gcodeA | Send one or more G-code lines to the machine. HIGH RISK — causes physical motion. |
| load_gcodeC | Load G-code content into CNCjs for execution |
| start_jobB | Start executing the loaded G-code program |
| pause_jobA | Pause the current job (feed hold + pause sender) |
| resume_jobB | Resume a paused job |
| stop_jobC | Stop the current job |
| home_machineA | Run GRBL homing cycle ($H). Machine must have homing switches enabled. |
| unlock_machineA | Clear GRBL alarm state ($X). Use after resolving the cause of the alarm. |
| jogA | Jog the machine incrementally. HIGH RISK — causes physical motion. |
| set_feed_overrideC | Adjust feed rate override (10-200%) |
| set_spindle_overrideC | Adjust spindle speed override (10-200%) |
| run_macroA | Execute a CNCjs macro by name or ID. HIGH RISK — macro content may cause motion. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/brs077/CNC-design-control-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server