Universal Robots Control Interface MCP server

Provides a bridge to Universal Robots industrial robots through TCP/IP interfaces, enabling control and monitoring of robot operations including force mode, remote servoj, and kinematic transformations for automation and research applications.
Back to servers
Setup instructions
Provider
nonead
Release date
May 14, 2025
Language
Go
Stats
3 stars

The nUR MCP Server is a specialized server that enables large language models to interact with and control Universal Robots through the Model Context Protocol (MCP). This middleware system allows for natural language commands to be translated into robot control actions.

Installation

System Requirements

Supported Operating Systems:

  • macOS: Monterey 12.6 or later
  • Linux: CentOS 7 / Ubuntu 20.04 or later
  • Windows: Windows 10 LTSC 2021 or later

Software Dependencies:

  • Python 3.11 or later
  • pip 25.1 or later
  • UV Package Manager 0.6.14 or later
  • bun 1.2.8 or later

Server Installation Steps

  1. Clone the repository:

    git clone https://gitee.com/nonead/Nonead-Universal-Robots-MCP.git
    
  2. Navigate to the server directory:

    cd nUR_MCP_SERVER
    
  3. Install required dependencies:

    pip install -r requirements.txt
    

MCP Client Configuration

Claude Desktop Configuration

For macOS: Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "nUR_MCP_SERVER": {
      "command": "uvx",
      "args": ["/home/nonead/MCP_Server/Nonead-Universal-Robots-MCP"]
    }
  }
}

For Windows: Edit %APPDATA%/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "nUR_MCP_SERVER": {
      "command": "uvx",
      "args": ["D:\\MyProgram\\MCP_SERVER\\Nonead-Universal-Robots-MCP"]
    }
  }
}

Cherry Studio Configuration

For macOS & Linux:

{
  "mcpServers": {
    "nUR_MCP_SERVER": {
      "name": "nUR_MCP_Server",
      "type": "stdio",
      "description": "NONEAD Universal-Robots MCP Server",
      "isActive": true,
      "provider": "NONEAD Corporation",
      "providerUrl": "https://www.nonead.com",
      "logoUrl": "https://www.nonead.com/assets/img/vi/5.png",
      "tags": [
        "NONEAD",
        "nUR_MCP_Server",
        "Universal-Robots"
      ],
      "command": "uvx",
      "args": [
        "/home/nonead/MCP_Server/Nonead-Universal-Robots-MCP"
      ]
    }
  }
}

For Windows:

{
  "mcpServers": {
    "nUR_MCP_SERVER": {
      "name": "nUR_MCP_Server",
      "type": "stdio",
      "description": "NONEAD Universal-Robots MCP Server",
      "isActive": true,
      "provider": "NONEAD Corporation",
      "providerUrl": "https://www.nonead.com",
      "logoUrl": "https://www.nonead.com/assets/img/vi/5.png",
      "tags": [
        "NONEAD",
        "nUR_MCP_Server",
        "Universal-Robots"
      ],
      "command": "uvx",
      "args": [
        "D:\\MyProgram\\MCP_SERVER\\Nonead-Universal-Robots-MCP"
      ]
    }
  }
}

Cline Configuration

For macOS & Linux:

{
  "mcpServers": {
    "nUR_MCP_SERVER": {
      "command": "uvx",
      "args": ["/home/nonead/MCP_Server/Nonead-Universal-Robots-MCP"]
    }
  }
}

For Windows:

{
  "mcpServers": {
    "nUR_MCP_SERVER": {
      "command": "uvx",
      "args": ["D:\\MyProgram\\MCP_SERVER\\Nonead-Universal-Robots-MCP"]
    }
  }
}

Usage Examples

Basic Robot Control

Here are some example tasks you can instruct the LLM to execute:

  • Connect to UR robot at IP: 192.168.1.199
  • Get the current TCP end-effector pose coordinates of the UR robot
  • List all commands of the nUR_MCP_SERVER tool
  • Retrieve all hardware data of the UR robot
  • Execute a script program on the UR robot
  • Run the UR robot's built-in program XXXX.urp

Advanced Control Examples

For more complex operations:

  • Assign the UR robot at 172.22.109.141 as "Robot A" and the one at 172.22.98.41 as "Robot B". Connect both robots, record their current TCP poses and key positions, and analyze their spatial relationship.

  • Execute step-by-step instructions for UR robot at 192.168.1.199:

    1. Record current TCP pose
    2. Move TCP +20mm in Z
    3. Move TCP -50mm in Y
    4. Move TCP +30mm in X
    5. Repeat for 5 cycles
  • Program and execute a UR script to draw a 50mm-radius circle in the base plane centered at the current pose.

Available Functions

The nUR MCP Server provides numerous functions categorized by their capabilities:

Connection Management

  • Connect to UR robot
  • Disconnect UR robot

Status Monitoring

  • Get power-on duration (seconds)
  • Get current voltage
  • Get current current
  • Get joint voltage
  • Get joint current
  • Get joint temperature
  • Get operation status
  • Get program execution status

Register Operations

  • Get Int register output (0-23)
  • Get Double register output (0-23)
  • Get Double register output (0-31)

Device Information

  • Get serial number
  • Get model
  • Get software version
  • Get safety mode

Motion Control

  • Get real-time TCP coordinates
  • Get real-time joint angles
  • Send joint pose command
  • Send TCP linear movement command
  • X-axis linear movement
  • Y-axis linear movement
  • Z-axis linear movement
  • Circular motion
  • Draw square
  • Draw rectangle

Program Control

  • Load UR program
  • Load and execute UR program
  • Stop current program
  • Pause current program
  • Get program list
  • Send program script

Safety Considerations

Before using the nUR MCP Server:

  • Ensure operators have completed UR robot safety training and are familiar with emergency stop procedures
  • Keep Universal Robots within direct line of sight for real-time monitoring
  • Clear obstacles and ensure no personnel/objects enter the hazard zone before robot activation
  • Consider installing physical barriers or safety light curtains if necessary

How to install this MCP server

For Claude Code

To add this MCP server to Claude Code, run this command in your terminal:

claude mcp add-json "nUR_MCP_SERVER" '{"command":"uvx","args":["/path/to/Nonead-Universal-Robots-MCP"]}'

See the official Claude Code MCP documentation for more details.

For Cursor

There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json file so that it is available in all of your projects.

If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json file.

Adding an MCP server to Cursor globally

To add a global MCP server go to Cursor Settings > Tools & Integrations and click "New MCP Server".

When you click that button the ~/.cursor/mcp.json file will be opened and you can add your server like this:

{
    "mcpServers": {
        "nUR_MCP_SERVER": {
            "command": "uvx",
            "args": [
                "/path/to/Nonead-Universal-Robots-MCP"
            ]
        }
    }
}

Adding an MCP server to a project

To add an MCP server to a project you can create a new .cursor/mcp.json file or add it to the existing one. This will look exactly the same as the global MCP server example above.

How to use the MCP server

Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.

The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.

You can also explicitly ask the agent to use the tool by mentioning the tool name and describing what the function does.

For Claude Desktop

To add this MCP server to Claude Desktop:

1. Find your configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

2. Add this to your configuration file:

{
    "mcpServers": {
        "nUR_MCP_SERVER": {
            "command": "uvx",
            "args": [
                "/path/to/Nonead-Universal-Robots-MCP"
            ]
        }
    }
}

3. Restart Claude Desktop for the changes to take effect

Want to 10x your AI skills?

Get a free account and learn to code + market your apps using AI (with or without vibes!).

Nah, maybe later