{"name":"io.github.zackpeters93/ugs-mcp","slug":"zackpeters93-ugs-mcp","title":null,"description":"CNC machine control via Universal G-code Sender. Jog, home, run files with hardware safety tokens.","url":"https://mcp.market/server/zackpeters93-ugs-mcp","rating":null,"grade":"B","score":82,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":21,"stars":5,"forks":1,"downloads_week":32,"last_push_at":"2026-06-12T17:36:29.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/zackpeters93/ugs-mcp","website":null,"version":"0.1.1","remotes":[],"packages":[{"registryType":"pypi","identifier":"ugs-mcp","version":"0.1.1","transport":{"type":"stdio"},"environmentVariables":[{"description":"UGS Pendant host address","format":"string","name":"UGS_HOST"},{"description":"UGS Pendant port (default: 8080)","format":"number","name":"UGS_PORT"},{"description":"Directory for saved G-code macros","format":"string","name":"MACROS_DIR"},{"description":"Rapid speed in mm/min used for return-to-zero (default: 5000)","format":"number","name":"RAPID_SPEED_MM_MIN"}]}],"tools":[{"name":"gcode_estimate_time","description":"Estimate machining cycle time from G-code feedrates and distances. Returns HH:MM:SS.","write_action":false,"price_micros":0,"input_schema":null},{"name":"gcode_list_macros","description":"List all saved macros with their names and descriptions.","write_action":false,"price_micros":0,"input_schema":null},{"name":"gcode_list_tools","description":"List all tools referenced in a G-code file, with first use line and usage count.","write_action":false,"price_micros":0,"input_schema":null},{"name":"gcode_run_macro","description":"Run a saved macro by name. Call with no token first to get the G-code preview, safety check, and confirmation token. The user must provide the token back before the macro runs. Claude CANNOT self-confirm - the token enforces this at the server level.","write_action":true,"price_micros":0,"input_schema":null},{"name":"gcode_safety_check","description":"Check G-code for safety issues: spindle off during cuts, missing unit declaration, zero feedrate on cut moves, and other DANGER/WARNING/CAUTION issues. Run this before ugs_run_file for any G-code you did not write yourself.","write_action":false,"price_micros":0,"input_schema":null},{"name":"gcode_save_macro","description":"Save a G-code macro to the macros directory after running a safety check. Claude writes the G-code content; this tool handles validation and persistence. Use gcode_list_macros to see saved macros, gcode_run_macro to execute one.","write_action":false,"price_micros":0,"input_schema":null},{"name":"gcode_translate","description":"Translate G-code to plain English, line by line. Accepts either a file path or raw G-code string. Shows each command, its meaning, and the current machine state context.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ugs_cancel_job","description":"Cancel the running job. Stopping mid-cut will leave a mark on the part. Uses simple confirmed=True/False (not a token) because stopping is always safer than continuing - token friction on an emergency stop would be dangerous. Call with confirmed=False first to preview, then confirmed=True to cancel.","write_action":true,"price_micros":0,"input_schema":null},{"name":"ugs_connect","description":"Connect UGS to the CNC machine via serial port.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ugs_disconnect","description":"Disconnect UGS from the CNC machine.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ugs_get_job_status","description":"Get current job progress and machine state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ugs_get_status","description":"Get current machine state: position, status (Idle/Run/Alarm), feed rate, spindle speed.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ugs_home","description":"Run the GRBL homing cycle ($H). All axes move toward limit switches at full speed. Call with no token first to get a preview and confirmation token. The user must provide the token back before homing executes. Claude CANNOT self-confirm movement - the token enforces this at the server level.","write_action":true,"price_micros":0,"input_schema":null},{"name":"ugs_jog","description":"Jog a single axis (X, Y, or Z) by distance_mm at feedrate mm/min. Call with no token first to get a preview and confirmation token. The user must provide the token back before movement executes. Claude CANNOT self-confirm movement - the token enforces this at the server level.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ugs_pause_job","description":"Pause the currently running G-code job (sends feed hold).","write_action":false,"price_micros":0,"input_schema":null},{"name":"ugs_return_to_zero","description":"Rapid (G0) to G54 work zero (X0 Y0 Z0). Call with no token first to get a preview and confirmation token. The user must provide the token back before movement executes. Claude CANNOT self-confirm movement - the token enforces this at the server level.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ugs_run_file","description":"Stream a G-code file to the machine. Runs safety check in preview mode. Call with no token first to get the safety report and confirmation token. The user must provide the token back before the job starts. Claude CANNOT self-confirm - the token enforces this at the server level.","write_action":true,"price_micros":0,"input_schema":null},{"name":"ugs_set_work_zero","description":"Set G54 work zero at the current machine position for the specified axes. This does NOT move the machine - only sets coordinate offsets. Call with confirmed=False first to preview, then confirmed=True to apply.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ugs_troubleshoot_connection","description":"Diagnose connection issues: lists serial ports, checks pendant reachability, suggests fixes.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":82,"grade":"B","scanned_at":"2026-09-27T12:15:05.228Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T12:15:05.274Z","components":{"code":{"score":25,"max":25,"notes":["22 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":8,"max":15,"notes":["last push 107 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"ugs-mcp","version":"0.1.1","found":true,"weeklyDownloads":32,"dependencyCount":5,"publishedAt":"2026-06-05T21:06:08.889554Z","repositoryUrl":"https://github.com/zackpeters93/ugs-mcp"}],"repo":{"found":true,"owner":"zackpeters93","repo":"ugs-mcp","archived":false,"pushedAt":"2026-06-12T17:36:29Z","stars":5,"forks":1,"openIssues":1,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/10272580?v=4","ownerCreatedAt":"2014-12-22T18:10:50Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/10272580?v=4&s=128","source":"github"},"presence":{"stars":5,"forks":1,"downloadsWeek":32,"license":"MIT","lastPushAt":"2026-06-12T17:36:29.000Z","score":21}}}},"grade_history":[],"reviews":[]}