ABB RobotStudio MCP Server
Control/inspect ABB RobotStudio stations and ABB controllers through MCP using SDK (rs_*) and RWS (rws_*) tools.
Check connectivity and controller/simulation/execution status.
Inspect/save stations, list objects, capture screenshots, and run collision checks.
Read/write RAPID modules and variables; read/write controller config; inspect event/error logs.
Control simulation: start/stop/pause/reset, set speed, get robot position.
Work with paths/targets: list paths/targets, create paths/targets.
Handle I/O: list signals; read/write signals via RWS (SDK lists signals).
Control controller execution: motors on/off, start/stop programs, reset PP, speed override.
Manage controller files and mastership: list/read/write files, request/release mastership.
Safety features per README: pre-run error checks block simulation/program start; RWS file paths reject traversal/$SYSTEM access.
Provides tools for interacting with ABB RobotStudio and ABB robot controllers, enabling management of stations, targets, paths, RAPID modules, variables, IO signals, simulation control, and robot web services.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ABB RobotStudio MCP Server check the robot controller status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ABB RobotStudio MCP Server — LiskinLabs Edition
v3.1.0 (Safety-First & Hardened Edition) — Advanced MCP server for ABB RobotStudio and ABB robot controllers with TcpListener transport, 63 MCP tools, AutoLoad, RAPID syntax validator, pre-simulation safety guards, and path-traversal protection.
Model Context Protocol (MCP) server for ABB RobotStudio (desktop application) and ABB robot controllers (OmniCore / IRC5 / Virtual Controllers).
Exposes 63 tools across two transports:
rs_*(33 tools) — RobotStudio SDK via TcpListener in-process Add-In. Inspect/edit stations, targets, paths, modules, variables, I/O signals, configs. Drive simulation with safety guards. Capture screenshots.rws_*(30 tools) — Robot Web Services REST API direct to controller. Motors, program execution, I/O signals, filesystem, mastership, event log, runtime target controller switching.
Tested with: ABB RobotStudio 2025 + Virtual Controller (IRC5 / OmniCore) on Windows 11 x64.
✨ Features & Architecture Highlights
Feature | Original | LiskinLabs v3.1.0 |
HTTP Transport |
|
|
Tool Count | 50 | 63 (+13 new tools) |
Add-In Installation | Manual per-session "Load Add-In" | AutoLoad (user-level |
RAPID Validation | None (silent syntax failures) | ✅ |
Safety Guard | None (sim starts blindly) | ✅ |
Path Traversal Defense | None | ✅ |
RWS Target Switching | Static env var | ✅ |
3D Screenshot | ❌ | ✅ |
Controller Event Log | ❌ | ✅ |
Variable Inspection | ❌ | ✅ |
Individual I/O Control | Stubs | ✅ |
Automated Testing | None | ✅ |
Related MCP server: nrs_llm
🚀 Quick Start
1. Build
git clone https://github.com/LiskinLabs/abb-robotstudio-mcp.git
cd abb-robotstudio-mcp
# 1. Build TypeScript MCP Server
npm install
npm run build
npm test
# 2. Build C# Add-In
dotnet build addin/ClaudeBridge.csproj -c Release2. Install Add-In to RobotStudio
# Standard installation (installs to Documents\RobotStudio\Addins — NO ADMIN RIGHTS NEEDED):
powershell -ExecutionPolicy Bypass -File install-addin.ps1
# Optional system-wide install (requires Administrator elevation):
powershell -ExecutionPolicy Bypass -File install-addin.ps1 -System3. Configure MCP Client
Add to your MCP client config (.mcp.json or claude_desktop_config.json):
{
"mcpServers": {
"abb-robotstudio": {
"command": "node",
"args": ["C:/Projects/01_Robotics/abb-robotstudio-mcp/dist/index.js"],
"env": {
"ABB_BRIDGE_URL": "http://localhost:58080",
"ABB_RWS_URL": "http://localhost:80",
"ABB_RWS_USER": "Default User",
"ABB_RWS_PASS": "robotics"
}
}
}
}4. Launch & Verify
Start RobotStudio and open your station with a Virtual Controller.
The Add-In loads automatically on startup (
AutoLoad: true).Verify connection:
curl http://localhost:58080/ping🛠️ Complete Tool Index (63 Tools)
SDK Tools (rs_*) — 33 tools
Connection & Status:
rs_ping,rs_controller_status,rs_check_safetyStation Management:
rs_get_station,rs_get_station_objects,rs_save_station,rs_get_screenshotRAPID Management:
rs_get_tasks,rs_get_modules,rs_read_module,rs_write_module,rs_validate_rapidVariables & Data:
rs_read_variable,rs_write_variable,rs_list_variablesI/O Signals:
rs_get_io_signals,rs_read_io_signal,rs_write_io_signalSimulation Control:
rs_start_simulation,rs_stop_simulation,rs_pause_simulation,rs_reset_simulation,rs_simulation_status,rs_set_sim_speed,rs_check_collisionsMotion & Targets:
rs_get_position,rs_get_paths,rs_get_path_targets,rs_create_path,rs_create_targetDiagnostics & Config:
rs_get_execution_errors,rs_read_config,rs_write_config
RWS Tools (rws_*) — 30 tools
Controller & Target:
rws_set_controller_url,rws_controller_status,rws_restart_controllerExecution & Safety:
rws_set_motors,rws_start_program,rws_stop_program,rws_reset_pp,rws_execution_state,rws_get_speed_override,rws_set_speed_overrideRAPID & Modules:
rws_get_tasks,rws_get_modules,rws_read_module,rws_write_module,rws_load_module_from_file,rws_unload_module,rws_save_program,rws_load_programVariables & I/O:
rws_read_variable,rws_write_variable,rws_get_position,rws_get_io_signals,rws_read_io,rws_write_ioFilesystem & Logs:
rws_list_files,rws_read_file,rws_write_file,rws_event_logMastership:
rws_request_mastership,rws_release_mastership
🔒 Safety Guardrails
Zero-Accident Policy:
rs_start_simulationandrws_start_programautomatically scan the controller event log for active RAPID and syntax errors before allowing execution.Path Sanitization: File operations via RWS enforce
validateControllerPath, rejecting any..directory traversal and forbidding access to$SYSTEMcritical controller partitions.BOM-Free UTF-8: Code writes enforce CRLF line-endings and strip UTF-8 Byte Order Marks to guarantee error-free RAPID compiler parsing.
📜 License & Credits
Original Foundation: Elias Bitsch — abb-robotstudio-mcp (MIT License).
Architecture & Hardening: LiskinLabs — Silvestr Liskin.
License: ISC
Available Tools
53 toolsrs_check_collisionsB
Run collision check on station objects
Inputs: no named parameters.
rs_controller_statusA
Get controller state via SDK (systemState, runMode, simulation)
Inputs: no named parameters.
rs_create_pathC
Create a new robot path
Inputs: name (required).
rs_create_targetC
Create a new robot target at coordinates
Inputs: name (required), x (required), y (required), z (required).
rs_get_execution_errorsA
Read controller event log for errors and warnings (SDK)
Inputs: count.
rs_get_io_signalsB
List I/O signals via SDK
Inputs: no named parameters.
rs_get_modulesA
List RAPID modules in a task (SDK)
Inputs: task (required).
rs_get_pathsA
List all robot paths in the station
Inputs: no named parameters.
rs_get_path_targetsC
Get targets/waypoints in a path
Inputs: path (required).
rs_get_positionB
Get robot position via SDK
Inputs: no named parameters.
rs_get_screenshotB
Capture 3D view screenshot as base64 PNG (SDK)
Inputs: width, height.
rs_get_stationB
Get active RobotStudio station info (name, controllers)
Inputs: no named parameters.
rs_get_station_objectsA
List all objects in the station (robots, tools, smart components). Set bbox=true for bounding box and position data.
Inputs: bbox.
rs_get_tasksA
List RAPID tasks with module counts (SDK)
Inputs: no named parameters.
rs_list_variablesB
List RAPID variables with optional type/module filter (SDK)
Inputs: task, typeFilter, module.
rs_pause_simulationB
Pause RobotStudio simulation
Inputs: no named parameters.
rs_pingA
Check if RobotStudio ClaudeBridge Add-In is running and connected
Inputs: no named parameters.
rs_read_configA
Read controller config file (SYS.cfg, EIO.cfg, SIO.cfg, MOC.cfg)
Inputs: name (required).
rs_read_moduleC
Read full RAPID source code of a module (SDK)
Inputs: task (required), module (required).
rs_read_variableC
Read a RAPID variable initial value (SDK)
Inputs: task (required), name (required).
rs_reset_simulationA
Reset simulation to start position (stops simulation and resets PP)
Inputs: no named parameters.
rs_save_stationB
Save the active station to disk
Inputs: no named parameters.
rs_set_sim_speedB
Set simulation speed multiplier
Inputs: speed (required).
rs_simulation_statusB
Get simulation state and time
Inputs: no named parameters.
rs_start_simulationA
Start RobotStudio simulation (Play)
Inputs: no named parameters.
rs_stop_simulationA
Stop RobotStudio simulation
Inputs: no named parameters.
rs_write_configD
Write controller config file
Inputs: name (required), content (required).
rs_write_moduleC
Write RAPID module source code into running controller (SDK)
Inputs: task (required), module (required), code (required), replace.
rs_write_variableC
Set a RAPID variable initial value (SDK)
Inputs: task (required), name (required), value (required).
rws_controller_statusB
Get controller state via RWS (opmode, motors, RAPID execution)
Inputs: no named parameters.
rws_event_logC
Get controller event log via RWS
Inputs: count.
rws_execution_stateB
Get RAPID execution state via RWS
Inputs: no named parameters.
rws_get_io_signalsB
List all I/O signals via RWS
Inputs: no named parameters.
rws_get_modulesC
List RAPID modules in a task via RWS
Inputs: task (required).
rws_get_positionC
Get live robot TCP position via RWS
Inputs: mechUnit.
rws_get_speed_overrideA
Get speed override percentage via RWS
Inputs: no named parameters.
rws_get_tasksB
List RAPID tasks via RWS
Inputs: no named parameters.
rws_list_filesB
List files on controller filesystem via RWS
Inputs: path.
rws_read_fileC
Read a file from controller filesystem via RWS
Inputs: path (required).
rws_read_ioC
Read a single I/O signal via RWS
Inputs: signal (required).
rws_read_moduleC
Read RAPID module text via RWS
Inputs: task (required), module (required).
rws_read_variableC
Read a RAPID variable's live runtime value via RWS
Inputs: task (required), module (required), variable (required).
rws_release_mastershipD
Release mastership
Inputs: domain.
rws_request_mastershipA
Request mastership (needed for writes)
Inputs: domain.
rws_reset_ppA
Reset RAPID program pointer via RWS
Inputs: no named parameters.
rws_set_motorsB
Turn motors on/off via RWS (real controller command)
Inputs: state (required).
rws_set_speed_overrideC
Set speed override (0-100%) via RWS
Inputs: speed (required).
rws_start_programC
Start RAPID execution on the controller via RWS
Inputs: mode.
rws_stop_programC
Stop RAPID execution via RWS
Inputs: no named parameters.
rws_write_fileC
Write a file to controller filesystem via RWS
Inputs: path (required), content (required).
rws_write_ioC
Set an I/O signal value via RWS
Inputs: signal (required), value (required).
rws_write_moduleC
Write RAPID module text via RWS (auto-mastership)
Inputs: task (required), module (required), code (required).
rws_write_variableC
Write a RAPID variable's live value via RWS
Inputs: task (required), module (required), variable (required), value (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 53 tools
Tools are clearly grouped by prefix (rs_ for RobotStudio SDK, rws_ for Robot Web Services), which helps an agent differentiate between simulation and real controller operations. However, some functions like rs_controller_status and rws_controller_status overlap in purpose, though descriptions clarify the different access methods.
All tools consistently use snake_case with the rs_ or rws_ prefix. Verbs such as get, set, read, write, start, stop are uniformly applied, making the naming predictable and easy to follow.
53 tools is a high count, but it is justified by the dual nature of the server covering both RobotStudio simulation and RWS real controller operations. Each sub-domain has a reasonable number of tools for its complexity, though the total might be slightly overwhelming for an agent.
The tool set covers a broad range of operations: station management, simulation control, path/target manipulation, I/O, file system, program execution, and variable reading/writing via both SDK and RWS. Minor gaps like deployment or user management are acceptable given the focus on programming and control.
Maintenance
Related MCP Connectors
MCP server for progressive tool usage at any scale (see https://klavis.ai)
One MCP server for all your MCP servers: code mode, per-tool permissions, approvals and audit.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
MCP server exposing the Backtest360 engine API as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for controlling Universal Robots arms and Robotiq grippers via RTDE protocol, enabling motion, force, I/O, and gripper operations.1MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server for ROS 2 environments that connects via rosbridge WebSocket, enabling topic/service introspection, publish/subscribe, service calls, robot connectivity checks, and polishing pipeline operations.Apache 2.0
- FlicenseNot gradedqualityCmaintenanceMCP server for controlling a simulated robot arm with vision-based pick-and-place, driven by LLM or manual control.1-
- FlicenseNot gradedqualityDmaintenanceMCP server for Autodesk Robot Structural Analysis Professional that enables AI assistants to read model data, loads, and analysis results from an open Robot session, with optional write and calculation tools.1-