Total PC Control
by jasondsmith72
Total PC Control is an MCP server that allows programmatic control over your screen, mouse, and keyboard using nut.js. It enables AI models to interact with your computer, but should be used with caution due to potential unintended consequences.
Last updated: N/A
Total PC Control
An MCP (Model Context Protocol) server that provides control over your screen, mouse, and keyboard using nut.js.
⚠️ Warning: Use with Caution
This software enables programmatic control of your mouse, keyboard, and other system operations. By using this software, you acknowledge and accept that:
- Giving AI models direct control over your computer through this tool can lead to unintended consequences
- The software can control your mouse, keyboard, and other system functions
- You are using this software entirely at your own risk
- The creators and contributors of this project accept NO responsibility for any damage, data loss, or other consequences that may arise from using this software
Features
- 📷 Screen Capture: Capture screenshots of your entire screen or specific regions
- 🖱️ Mouse Control: Move the mouse cursor, click, double-click, and scroll
- ⌨️ Keyboard Input: Type text and press keyboard shortcuts
- 🪟 Window Management: Find, focus, and manipulate application windows
- 📋 Clipboard Access: Copy and paste text
Prerequisites
- Node.js 16 or higher
- npm or yarn
- cmake-js (for building native dependencies)
Installation
- Clone the repository:
git clone https://github.com/jasondsmith72/total-pc-control.git
cd total-pc-control
- Install cmake-js globally (required for building native dependencies):
npm install -g cmake-js
- Install the libnut core library (required for nut.js):
git clone https://github.com/nut-tree/libnut.git libnut-core
cd libnut-core
npm install
cmake-js rebuild
cd ..
- Install dependencies and build the project:
npm install
npm run build
Using with Claude for Desktop
- Edit your Claude for Desktop configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- Add the following to your configuration:
{
"mcpServers": {
"total-pc-control": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/total-pc-control/build/index.js"
]
}
}
}
Replace /ABSOLUTE/PATH/TO/
with the actual path to where you cloned the repository.
-
Restart Claude for Desktop
-
Look for the hammer icon in the Claude interface to indicate available tools.
Available Tools
Screen Capture
capture_screen
: Capture the entire screen as an image. Supportsformat
(png/jpeg) andquality
(jpeg only) parameters.capture_region
: Capture a specific region of the screen. Requiresleft
,top
,width
,height
. Supportsformat
andquality
.get_screen_size
: Get the dimensions (width and height) of the screen.
Mouse Control
move_mouse
: Move the mouse cursor to a specificx
,y
position.get_mouse_position
: Get the currentx
,y
position of the mouse cursor.click_mouse
: Click the mouse at the current position. Optionalbutton
(left, middle, right).click_at
: Click the mouse at a specificx
,y
position. Optionalbutton
.double_click
: Double-click the mouse at the current position.double_click_at
: Double-click the mouse at a specificx
,y
position.scroll_mouse
: Scroll the mouse wheel. Requiresdirection
(up/down). Optionalamount
.drag_mouse
: Drag the mouse from the current position to a targetx
,y
position.drag_mouse_from_to
: Drag the mouse from astartX
,startY
position to anendX
,endY
position.
Keyboard Input
type_text
: Type text at the current cursor position. Requirestext
.type_text_with_delay
: Type text with a delay between keystrokes. Requirestext
. OptionaldelayMs
.press_key
: Press a specific keyboard key. Requireskey
.press_key_shortcut
: Press a keyboard shortcut (combination of keys). Requireskeys
array.hold_key
: Hold down a keyboard key. Requireskey
.release_key
: Release a held keyboard key. Requireskey
.
Clipboard Operations
get_clipboard_text
: Get text from the clipboard.set_clipboard_text
: Set text to the clipboard. Requirestext
.copy_selected_text
: Copy selected text to clipboard and return it (uses Ctrl+C/Cmd+C).paste_text
: Paste text at current cursor position (uses Ctrl+V/Cmd+V). Requirestext
.get_clipboard_image
: Get image from the clipboard (if available) as base64 data.
UI Automation Tools (Windows Only)
These tools use Windows UI Automation via PowerShell to interact with UI elements.
get_ui_element_info
: Finds a UI element within a specified window and returns its properties (Name, AutomationId, ClassName, ControlType, BoundingRectangle, IsEnabled, IsOffscreen, Value, Children).- Requires
windowTitle
(can be partial match). - Requires at least one of
elementName
,automationId
, orclassName
to find a specific element. - If no element identifier is provided, it lists the direct children of the window.
- Requires
invoke_ui_element_action
: Performs an action on a specified UI element.- Requires
windowTitle
. - Requires
action
(Click
,SetValue
, orFocus
). - Requires at least one of
elementName
,automationId
, orclassName
. - Requires
valueToSet
(string) ifaction
isSetValue
.
- Requires
Development
To run the server in development mode:
npm run dev
To run tests:
npm test
License
This project is licensed under the MIT License - see the LICENSE file for details.