nutjs-windows-control
- OS Automation
A Windows control server built using nut.js and Model Context Protocol (MCP), providing programmatic control over Windows system operations including mouse, keyboard, window management, and screen capture functionality.
Prompts
Interactive templates invoked by user choice
Name | Description |
---|---|
No prompts |
Resources
Contextual data attached and managed by the client
Name | Description |
---|---|
No resources |
Tools
Functions exposed to the LLM to take actions
Name | Description |
---|---|
No tools |
Server Configuration
Describes the environment variables required to run the server.
Name | Required | Description | Default |
---|---|---|---|
No arguments |
NutJS Windows Control
A Windows control server built using nut.js and Model Context Protocol (MCP), providing programmatic control over Windows system operations including mouse, keyboard, window management, and screen capture functionality.
Note: While this project may work on Linux and macOS, it has only been tested on Windows. Community feedback on cross-platform compatibility is welcome.
ā ļø IMPORTANT DISCLAIMER
THIS SOFTWARE IS EXPERIMENTAL AND POTENTIALLY DANGEROUS
By using this software, you acknowledge and accept that:
- Giving AI models direct control over your computer through this tool is inherently risky
- This software can control your mouse, keyboard, and other system functions which could potentially cause unintended consequences
- 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
- This tool should only be used in controlled environments with appropriate safety measures in place
USE AT YOUR OWN RISK
Features
- Window Management
- List all windows
- Get active window information
- Get window titles
- Get window size and position
- Focus windows
- Resize windows
- Reposition windows
- Mouse Control
- Mouse movement with configurable speed
- Click operations
- Scroll functionality
- Drag operations
- Cursor position tracking
- Keyboard Control
- Text input
- Key combinations
- Key press/release operations
- Hold key functionality
- Screen Operations
- Screen capture
- Screen size retrieval
- Active window detection
- Clipboard Integration
- Get clipboard content
- Set clipboard content
- Clear clipboard
- Check clipboard state
Installation
- Clone the repository:
- Build libnut-core from source (required if you don't have a paid NutJS license):
- Install dependencies:
- Build the project:
Usage
Starting the Server
For development with auto-recompilation:
Running Tests
Run all tests:
Watch mode for development:
Generate coverage report:
MCP Server Configuration
To use this project with Claude, add the following configuration to your MCP servers:
After configuring your MCP server, restart Claude to see the windows-control service in the menu.
Project Structure
/src
/handlers
- Request handlers and tool management/tools
- Core functionality implementations/types
- TypeScript type definitionsindex.ts
- Main application entry point
Dependencies
- @modelcontextprotocol/sdk - MCP SDK for protocol implementation
- @nut-tree/libnut - Core native UI automation library
- clipboardy - Cross-platform clipboard handling
- express - Web server framework
- jimp & sharp - Image processing
Testing
The project currently includes unit tests for core functionality. The following test areas are planned for future development:
- Integration tests for cross-module functionality
- Performance testing
- Error handling validation
Known Limitations
- Window minimize/restore operations are currently unsupported in libnut-core
- Advanced screen information (multiple monitors, DPI settings) is limited to main display
- Some operations may require elevated permissions depending on the target application
- Cross-platform support (Linux/macOS) is untested
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
References
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues with dependencies of the server.
- Extract server characteristics such as tools, resources, prompts, and required parameters.
Our directory badge helps users to quickly asses that the MCP server is safe, server capabilities, and instructions for installing the server.
Copy the following code to your README.md file: