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. Supportsformatandquality.get_screen_size: Get the dimensions (width and height) of the screen.
Mouse Control
move_mouse: Move the mouse cursor to a specificx,yposition.get_mouse_position: Get the currentx,yposition 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,yposition. Optionalbutton.double_click: Double-click the mouse at the current position.double_click_at: Double-click the mouse at a specificx,yposition.scroll_mouse: Scroll the mouse wheel. Requiresdirection(up/down). Optionalamount.drag_mouse: Drag the mouse from the current position to a targetx,yposition.drag_mouse_from_to: Drag the mouse from astartX,startYposition to anendX,endYposition.
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). Requireskeysarray.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, orclassNameto 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) ifactionisSetValue.
- 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.
