LabscoMCP early access ↗
noneadMCP SERVER

nUR MCP Server

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

by nonead ↗IoT, Smart Home & Embedded HardwareCommunity

LABSCO 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.12 (the PyPI package accepts >=3.12,<3.13), 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