Labsco
MCP SERVER

nUR MCP Server

by nonead

Read and drive Universal Robots arms over the network — state, joint and TCP moves, URScript, and multi-robot tasks.

IoT, Smart Home & Embedded HardwareVerified
Summary
The read side is the safe half — pose, mode, currents and joint temperatures on demand.

State, electrical readings and per-joint temperatures make this useful for watching an arm without touching it, and the register reads let an agent follow a running program's progress. The motion tools move a real machine: `movej`, `movel` and `send_program_script` execute on the arm, and the vendor requires it stay within sight with the work area cleared first.

What it is

An MCP server for Universal Robots collaborative arms, from Nonead. Every tool takes the robot's IP address, so one server can address several arms: it reads state, sends motion commands and URScript, and records and analyses run data.

What you get
  • Connection and identity: `connect_ur`, `disconnect_ur`, `get_serial_number`, `get_robot_model`, `get_ur_software_version`
  • Live state — `get_robot_mode`, `get_safety_mode`, `get_program_state`, `get_actual_tcp_pose`, `get_actual_joint_pose`
  • Electrical and thermal readings for condition monitoring: `get_actual_robot_voltage`, `get_actual_robot_current`, `get_actual_joint_voltage`, `get_actual_joint_current`, `get_joint_temperatures`
  • Registers read back by index: `get_output_int_register`, `get_output_double_register`, `get_output_bit_register`
  • Motion: `movej` in joint space and `movel` in a straight line, each taking acceleration, speed, duration and blend radius, plus `movel_x`, `movel_y` and `movel_z` for relative moves
  • Shape primitives that write the path for you — `draw_circle`, `draw_square`, `draw_rectangle`, in the plane you choose
  • Programs on the controller: `get_programs` lists the `.urp` files over SSH, `send_program_script` sends URScript to run
  • Several arms at once — `setup_multi_robot_coordination`, `create_collaborative_task`, `execute_collaborative_task`
  • Paths and data: `generate_bezier_path` from control points, `optimize_trajectory` for time, energy or smoothness, `start_data_recording`, `analyze_robot_data`, `generate_robot_report`, `compare_robots_performance`
Requirements

A Universal Robots arm reachable on the network, and its IP address — every tool takes one, and most need `connect_ur` first. Python 3.11 or newer, pip 25.1 or newer, uv 0.6.14 or newer and bun 1.2.8 or newer; the package is `nonead-universal-robots-mcp`, launched over stdio through `uvx`. `get_programs` additionally needs the controller's SSH username and password. The trajectory, recording, analysis and multi-robot tools depend on extension modules that must initialise before they answer. The vendor's safety terms are binding: the arm stays in view while it runs, and the work area is cleared before it does.

Setup effort

One command — uvx nonead-universal-robots-mcp