rustdesk-mcp
RustDesk MCP Server
MCP (Model Context Protocol) server that lets AI agents control remote machines via RustDesk.
Architecture
┌────────────┐ MCP stdio ┌──────────────┐ REST API ┌─────────────────┐
│ AI Agent │ ◄─────────────► │ rustdesk-mcp │ ────────────────► │ rustdesk-api │
│ (Claude/ │ │ Server │ │ (lejianwen) │
│ Cursor) │ └──────────────┘ └─────────────────┘
└────────────┘ │
▼
┌──────────┐
│ RustDesk │
│ Devices │
└──────────┘Components and Where They Run
Component | Where | Description |
rustdesk-mcp (this project) | NAS/server | MCP server that translates AI requests to rustdesk-api calls |
rustdesk-api-server | NAS/server | Third-party RustDesk API server (by lejianwen, Go) — device management, shell, file ops |
RustDesk client | Each target machine | Normal RustDesk client, registers with api-server |
MCP client | Control machine | Cursor/Claude/etc. — where the AI agent runs |
Features
Device Management
Tool | Description |
| List all registered devices |
| Get device details (OS, version, status) |
| Check if device is currently online |
Remote Commands
Tool | Description |
| Execute shell command on remote device |
| Take screenshot (returns base64 image) |
File Operations
Tool | Description |
| List files on remote device |
| Upload local file to remote device |
| Download file from remote device |
| Delete file on remote device |
Power Operations
Tool | Description |
| Restart remote device |
| Shutdown remote device |
| Lock remote device screen |
Screen Control (via xdotool on target)
Tool | Description |
| Send keystrokes |
| Move mouse to coordinates |
| Click mouse at coordinates |
Prerequisites
RustDesk client installed on target devices
rustdesk-api-server running (default:
http://127.0.0.1:21114)
Installation
cd /vol3/1000/app/rustdesk-mcp
pip install -r requirements.txt
# or: pip install -e .Configuration
Edit .env with your rustdesk-api credentials:
Variable | Default | Description |
|
| rustdesk-api server URL |
|
| API login username |
|
| API login password |
|
| Request timeout (seconds) |
Usage
python -m rustdesk_mcpOr add to MCP client config:
{
"mcpServers": {
"rustdesk": {
"command": "python",
"args": ["-m", "rustdesk_mcp"],
"env": {
"RUSTDESK_API_BASE_URL": "http://127.0.0.1:21114",
"RUSTDESK_API_USERNAME": "default",
"RUSTDESK_API_PASSWORD": "default"
}
}
}
}Project Structure
rustdesk-mcp/
├── README.md
├── LICENSE
├── .gitignore
├── pyproject.toml
├── requirements.txt
└── rustdesk_mcp/
├── __init__.py
├── __main__.py
└── server.pyRoadmap
Native RustDesk protocol screen control (not via shell)
Session management
Multi-user device filtering
File search on remote devices
Docker deployment
License
MIT