Ugs MCP logo

Ugs MCP

by zackpeters93

Controls GRBL CNC machines through UGS Pendant, with G-code inspection and token-confirmed motion commands.

Install Ugs MCP

Pick your client, then add it in one click or paste the config.

STDIOPython
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "zackpeters93-ugs-mcp": {
      "command": "uvx",
      "args": [
        "ugs-mcp"
      ],
      "env": {
        "UGS_HOST": "YOUR_VALUE_HERE",
        "UGS_PORT": "YOUR_VALUE_HERE",
        "MACROS_DIR": "YOUR_VALUE_HERE",
        "RAPID_SPEED_MM_MIN": "YOUR_VALUE_HERE"
      }
    }
  }
}

Settings → Developer → Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

Values are written into the snippet above so you can paste it as is. They never leave your browser.

We couldn’t confirm it starts correctly

The install command didn't complete successfully in our automated test.

uvx ugs-mcp

Downloading pydantic-core (2.0MiB) Downloading cryptography (4.5MiB) Downloaded pydantic-core Downloaded cryptography Installed 33 packages in 17ms Traceback (most recent call last): File "/home/user/.cache/uv/archive-v0/Auup8TDDhPiY2FDs/bin/ugs-mcp", line 6, in <module> from ugs_mcp.server import main File "/home/user/.cache/uv/archive-v0/Auup8TDDhPiY2FDs/lib/python3.11/site-packages/ugs_mcp/server.py", line 2, in <module> from mcp.server.fastmcp import FastMCP File "/home/user/

This is an experimental automated check and can have false negatives — missing environment variables, a slow cold install, etc. It doesn’t necessarily mean something’s wrong. Last checked 29d ago.

Overview

The zackpeters93/ugs-mcp MCP server connects an MCP-compatible assistant to Universal GCode Sender’s Pendant REST API for GRBL CNC control. It exposes connection, machine-status, job, motion, and G-code inspection tools, including jogging, homing, file execution, safety checks, translation, and time estimates. Motion operations require a server-generated, single-use confirmation token that the operator must read back before movement occurs. Use zackpeters93/ugs-mcp when a CNC setup runs UGS 2.x with its Pendant plugin and needs supervised AI-assisted control.

Use cases

  • Inspect CNC machine status and job progress
  • Review G-code safety and estimate cycle time
  • Jog and home a supervised GRBL machine
  • Run G-code files or saved macros through UGS
  • Troubleshoot UGS serial connections

Key features

  • UGS Pendant REST API connection
  • GRBL machine status and job controls
  • Token-confirmed motion commands
  • G-code translation and safety checks
  • Cycle-time estimation and tool listing
  • Saved macro management

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked 3d ago

Recent health check succeeded.

17/18 checks healthy over the last 79d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 9d ago via OSV.dev · ugs-mcp (PyPI)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

GitHub stars6Stargazers on the source repository.
Last commit4mo agoMost recent push to the default branch.
Install checkInconclusiveInstall command did not finish in our automated test.
Directory activity3 viewsConfig copies, upvotes, and views on AllMCPs.

How Ugs MCP works

What zackpeters93/ugs-mcp does

The zackpeters93/ugs-mcp MCP server links an MCP-compatible assistant with a CNC machine managed by Universal GCode Sender (UGS). It communicates through the UGS Pendant REST API rather than directly controlling the machine’s serial connection. The documented target is GRBL-based CNC equipment, with testing reported on a SainSmart Genmitsu 3018 Pro.

The server covers both machine operation and offline G-code inspection. An assistant can connect to or disconnect from UGS, inspect machine and job status, and troubleshoot serial connection issues. It can also request axis jogs, homing, return-to-work-zero, work-zero setting, job execution, pausing, cancellation, and macro execution. Inspection tools translate G-code into plain language, check it for safety issues, estimate cycle time, and list tools.

Because these capabilities can move physical equipment, operation is intended to remain under human supervision. The project documentation warns that incorrect use can damage equipment, ruin parts, or cause injury.

How it works

UGS Pendant is expected to be running locally, normally at http://localhost:8080. The MCP process sends requests to that endpoint, while the MCP client presents the resulting tools to the assistant.

Motion tools use a two-step confirmation flow. The first call does not move the machine; instead, the server returns a preview containing details such as the requested axis or distance, resulting position, warnings, and a confirmation token. The operator must provide that token in a second call. Tokens are generated by the server, expire after two minutes, and can be used only once. This design means the assistant cannot complete a motion request without the operator reading back the displayed token.

Setup and configuration

Install Python 3.11 or newer, Universal GCode Sender 2.x, and the UGS Pendant plugin. Start Pendant and verify its host and port before launching the MCP process. The package can be installed with pip, after which the ugs-mcp executable can be registered with an MCP client.

The zackpeters93/ugs-mcp configuration uses optional environment variables. UGS_HOST selects the Pendant host and defaults to localhost; UGS_PORT defaults to 8080. MACROS_DIR identifies the directory used for saved G-code macros, while RAPID_SPEED_MM_MIN controls the rapid speed used by return-to-zero and defaults to 5000. The repository provides a .env.example file as a configuration reference.

Claude Desktop can launch the installed ugs-mcp command from its MCP server configuration. Read the project’s safety documentation and confirm the physical emergency stop location before using motion functions.

Tools and capabilities

The available tools are grouped as follows:

  • Connection: ugs_connect, ugs_disconnect, and ugs_troubleshoot_connection
  • Status: ugs_get_status and ugs_get_job_status
  • Jobs: ugs_run_file, ugs_pause_job, and ugs_cancel_job
  • Motion: ugs_jog, ugs_home, ugs_return_to_zero, and ugs_set_work_zero
  • G-code: gcode_safety_check, gcode_estimate_time, gcode_translate, gcode_list_tools, gcode_save_macro, gcode_list_macros, and gcode_run_macro

The project was tested with UGS 2.x, the Pendant plugin, macOS, and Python 3.11. GRBL compatibility is the documented target. TinyG, FluidNC, and Smoothieware are listed as untested, so support for those controllers should not be assumed.

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about Ugs MCP

Install Python 3.11 or newer and run `pip install ugs-mcp`. Then register the `ugs-mcp` executable with your MCP client.

Yes. The README provides Claude Desktop configuration using the `ugs-mcp` command, and the server is intended for Claude or other MCP-compatible assistants.

Every motion request uses a two-step token protocol. The first call returns a preview and a server-generated token; movement occurs only after the operator supplies that token in a second call.

It requires UGS 2.x, the UGS Pendant plugin, a running Pendant endpoint, Python 3.11 or newer, and a GRBL-based CNC setup as the documented target.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewUgs MCP AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/zackpeters93-ugs-mcp?style=directory)](https://allmcps.com/mcp/zackpeters93-ugs-mcp)
HTML Embed
<a href="https://allmcps.com/mcp/zackpeters93-ugs-mcp"><img src="https://allmcps.com/api/badge/zackpeters93-ugs-mcp?style=directory" alt="Ugs MCP on AllMCPs" /></a>