A comprehensive MCP (Model Context Protocol) server that provides full computer control capabilities to Claude. Implements the OODA loop (Observe-Orient-Decide-Act) pattern for autonomous computer interaction.
| Category | Tools | Description |
|---|---|---|
| CLI & Files | 17 | Shell commands, file read/write/copy/move/delete, search |
| CRUD Database | 9 | Persistent SQLite key-value store with collections |
| Screen (Observe) | 4 | Screenshot, display info, screen change detection |
| Input (Act) | 10 | Keyboard typing/shortcuts, mouse move/click/drag/scroll |
| Window Management | 10 | List/focus/minimize/maximize/close windows, launch apps |
| Clipboard | 4 | Read/write text, HTML, images |
| System | 8 | System info, processes, network, notifications |
Total: 62 tools with batch/parallel execution support for most operations.
This server provides unrestricted system access. Claude will be able to:
- Execute arbitrary shell commands
- Control keyboard and mouse
- Take screenshots
- Read/write files anywhere
- Manage windows and processes
Use at your own risk in trusted environments only.
git clone https://github.com/Mnehmos/mnehmos.ooda.mcp.git
cd mnehmos.ooda.mcp
npm install
npm run buildAdd to your Claude Desktop config file:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"ooda-computer": {
"command": "node",
"args": ["/absolute/path/to/mcp-ooda-computer/dist/index.js"]
}
}
}The tools are designed around the OODA (Observe-Orient-Decide-Act) loop:
screenshot- Capture screen or region (returns base64 or saves to file)get_screen_info- Get display/monitor informationwait_for_screen_change- Detect when screen content changeslist_windows- See all open applicationsget_active_window- Know current focusclipboard_read- Check clipboard contents
- Use CRUD tools to store/retrieve context and state
file_info,search_files- Understand filesystem statelist_processes,get_system_info- Understand system state
- Built into Claude's reasoning between observations
- CRUD database for persistent decision context
keyboard_type,keyboard_shortcut- Type and use hotkeysmouse_click,mouse_move,mouse_drag- Mouse controlfocus_window,launch_application- Window controlclipboard_write- Set clipboard contentnotify- System notifications
| Tool | Description |
|---|---|
exec_cli |
Execute shell command |
read_file |
Read file contents |
write_file |
Write content to file |
list_directory |
List directory contents |
copy_file |
Copy file/directory |
move_file |
Move/rename file |
delete_file |
Delete file/directory |
file_info |
Get file metadata |
search_files |
Search files by pattern |
batch_* |
Parallel versions of above |
| Tool | Description |
|---|---|
crud_create |
Create record in collection |
crud_read |
Read record by ID |
crud_update |
Update existing record |
crud_delete |
Delete record |
crud_query |
Query with filters |
crud_batch_* |
Parallel versions |
| Tool | Description |
|---|---|
screenshot |
Capture screen (region optional) |
get_screen_info |
Display/monitor info |
wait_for_screen_change |
Wait for UI changes |
find_on_screen |
Find text/image (requires OCR) |
| Tool | Description |
|---|---|
keyboard_type |
Type text |
keyboard_press |
Press key with modifiers |
keyboard_shortcut |
Execute shortcut (e.g., "ctrl+c") |
mouse_move |
Move cursor |
mouse_click |
Click at position |
mouse_drag |
Drag between points |
mouse_scroll |
Scroll wheel |
get_mouse_position |
Current cursor position |
batch_keyboard_actions |
Sequence of keyboard actions |
batch_mouse_actions |
Sequence of mouse actions |
| Tool | Description |
|---|---|
list_windows |
All open windows |
get_active_window |
Currently focused window |
focus_window |
Bring window to front |
minimize_window |
Minimize window(s) |
maximize_window |
Maximize window |
restore_window |
Restore from min/max |
close_window |
Close window |
resize_window |
Resize window |
move_window |
Move window position |
launch_application |
Start application |
| Tool | Description |
|---|---|
clipboard_read |
Read text/HTML/image |
clipboard_write |
Write text/HTML |
clipboard_clear |
Clear clipboard |
clipboard_has_format |
Check format availability |
| Tool | Description |
|---|---|
get_system_info |
OS, CPU, memory, uptime |
list_processes |
Running processes |
kill_process |
Kill by PID or name |
get_environment |
Environment variables |
set_environment |
Set environment variable |
get_network_info |
Network interfaces |
wait |
Sleep for milliseconds |
notify |
System notification |
Most tools have batch versions for parallel execution:
batch_exec_cli - Multiple commands in parallel
batch_read_files - Multiple files in parallel
batch_write_files - Multiple files in parallel
batch_copy_files - Multiple copies in parallel
crud_batch_create - Multiple records in parallel
...
Batch operations return structured results:
{
"summary": { "total": 5, "successful": 4, "failed": 1, "elapsed_ms": 23 },
"results": [
{ "index": 0, "success": true, "result": {...} },
{ "index": 1, "success": false, "error": "..." }
]
}| Feature | Windows | macOS | Linux |
|---|---|---|---|
| CLI/Files | ✅ | ✅ | ✅ |
| CRUD | ✅ | ✅ | ✅ |
| Screenshot | ✅ PowerShell | ✅ screencapture | ✅ scrot |
| Keyboard | ✅ SendKeys | ✅ osascript | ✅ xdotool |
| Mouse | ✅ user32.dll | ✅ xdotool | |
| Windows | ✅ user32.dll | ✅ osascript | ✅ wmctrl |
| Clipboard | ✅ PowerShell | ✅ pbcopy/paste | ✅ xclip |
Optional config file at ~/.mcp/config.json:
{
"storage": {
"type": "sqlite",
"path": "~/.mcp/workspace.db"
},
"cliPolicy": {
"mode": "allow-all",
"extraBlockedPatterns": [],
"timeoutMs": 30000
},
"crud": {
"defaultLimit": 1000
}
}npm install # Install dependencies
npm run build # Build TypeScript
npm run dev # Watch mode
npm start # Run serverfind_on_screenrequires additional OCR dependencies (not included)- macOS mouse position reading returns 0,0 (system limitation)
- Some mouse drag operations may require platform-specific tuning
MIT License - see LICENSE file.
See CHANGELOG.md for version history.