Enables computer control on Linux systems including shell command execution, file operations, keyboard/mouse input via xdotool, window management via wmctrl, clipboard operations via xclip, and screenshot capture via scrot.
Enables computer control on macOS systems including shell command execution, file operations, keyboard/mouse input via osascript, window management, clipboard operations via pbcopy/pbpaste, and screenshot capture via screencapture.
Provides a persistent key-value store with collections using SQLite database for CRUD operations including create, read, update, delete, and query with filters.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OODA Computer Controltake a screenshot and save it to my desktop"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mnehmos.ooda.mcp (v1.0.0)
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.
Features
Category | Tools | Description |
CLI & Files | 23 | Shell commands, file read/write/copy/move/delete, search, diff editing |
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 | 11 | List/focus/minimize/maximize/close windows, launch apps |
Clipboard | 4 | Read/write text, HTML, images |
System | 8 | System info, processes, network, notifications |
Browser | 9 | Puppeteer/Playwright automation |
Sessions | 5 | Interactive process sessions (REPLs, SSH) |
Config & Analytics | 7 | Configuration management, usage stats |
Search | 4 | Paginated file search |
Generic Batch | 1 | Universal batch dispatcher for any tool |
Total: 100 tools with batch/parallel execution support for most operations.
Security Warning
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.
Installation
From npm (Recommended)
npm install -g mnehmos.ooda.mcpFrom Source
git clone https://github.com/Mnehmos/mnehmos.ooda.mcp.git
cd mnehmos.ooda.mcp
npm install
npm run buildClaude Desktop Configuration
Add to your Claude Desktop config file:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
If installed via npm:
{
"mcpServers": {
"ooda-computer": {
"command": "npx",
"args": ["mnehmos.ooda.mcp"]
}
}
}If installed from source:
{
"mcpServers": {
"ooda-computer": {
"command": "node",
"args": ["/absolute/path/to/mnehmos.ooda.mcp/dist/index.js"]
}
}
}OODA Loop Pattern
The tools are designed around the OODA (Observe-Orient-Decide-Act) loop:
Observe
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
Orient
Use CRUD tools to store/retrieve context and state
file_info,search_files- Understand filesystem statelist_processes,get_system_info- Understand system state
Decide
Built into Claude's reasoning between observations
CRUD database for persistent decision context
Act
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
Generic Batch Dispatcher
The batch_tools dispatcher can execute ANY tool in batch mode with unified safety limits:
{
"tool": "batch_tools",
"args": {
"operations": [
{ "tool": "read_file", "args": { "path": "src/index.ts" }, "label": "main" },
{ "tool": "file_info", "args": { "path": "package.json" }, "label": "pkg" },
{ "tool": "exec_cli", "args": { "command": "git status --short" }, "label": "git" }
],
"executionMode": "parallel"
}
}Execution Modes
Mode | Description |
| All operations run concurrently (default) |
| Operations run one after another, supports |
Safety Limits
Configurable via ~/.mcp/config.json or per-request:
Limit | Default | Description |
| 50 | Max operations per batch |
| 200000 | Total output size limit |
| 500 | Per-file line truncation |
| 30000 | Per-operation timeout (ms) |
See ADR-003 for full documentation.
API Reference
CLI & File Operations
Tool | Description |
| Execute shell command |
| Read file contents |
| Write content to file |
| List directory contents |
| Read specific line range (token-efficient) |
| Search patterns within a file |
| Replace unique string in file |
| Copy file/directory |
| Move/rename file |
| Delete file/directory |
| Get file metadata |
| Search files by pattern |
| Parallel versions of above |
Diff-Based Editing
Tool | Description |
| Search/replace with fuzzy matching fallback |
| Multiple search/replace in atomic operation |
| Preview changes without applying |
| Sequential edits with partial success |
| Replace content from line N to EOF |
CRUD Operations
Tool | Description |
| Create record in collection |
| Read record by ID |
| Update existing record |
| Delete record |
| Query with filters |
| Parallel versions |
Screen Operations
Tool | Description |
| Capture screen (region optional) |
| Display/monitor info |
| Wait for UI changes |
| Find text/image (requires OCR) |
Input Operations
Tool | Description |
| Type text |
| Press key with modifiers |
| Execute shortcut (e.g., "ctrl+c") |
| Move cursor |
| Click at position |
| Drag between points |
| Scroll wheel |
| Current cursor position |
| Sequence of keyboard actions |
| Sequence of mouse actions |
Window Operations
Tool | Description |
| All open windows |
| Currently focused window |
| Bring window to front |
| Minimize window(s) |
| Maximize window |
| Restore from min/max |
| Close window |
| Resize window |
| Move window position |
| Start application |
| Wait for window to appear |
Clipboard Operations
Tool | Description |
| Read text/HTML/image |
| Write text/HTML |
| Clear clipboard |
| Check format availability |
System Operations
Tool | Description |
| OS, CPU, memory, uptime |
| Running processes |
| Kill by PID or name |
| Environment variables |
| Set environment variable |
| Network interfaces |
| Sleep for milliseconds |
| System notification |
Browser Automation
Tool | Description |
| Start Puppeteer/Playwright browser |
| Close browser instance |
| Navigate to URL |
| Get page HTML/text/markdown |
| Click element by selector |
| Type into input field |
| Execute JavaScript |
| Capture page screenshot |
| Get browser console logs |
Interactive Sessions
Tool | Description |
| Start interactive process (REPL, SSH) |
| Send input to process |
| Read process stdout |
| List active sessions |
| End process session |
Batch Operations
Most tools have dedicated 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
...Or use the generic batch_tools dispatcher to batch ANY tool.
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": "..." }
]
}Platform Support
Feature | Windows | macOS | Linux |
CLI/Files | ✅ | ✅ | ✅ |
CRUD | ✅ | ✅ | ✅ |
Screenshot | ✅ PowerShell | ✅ screencapture | ✅ scrot |
Keyboard | ✅ SendKeys | ✅ osascript | ✅ xdotool |
Mouse | ✅ user32.dll | ⚠️ Limited | ✅ xdotool |
Windows | ✅ user32.dll | ✅ osascript | ✅ wmctrl |
Clipboard | ✅ PowerShell | ✅ pbcopy/paste | ✅ xclip |
Configuration
Optional config file at ~/.mcp/config.json:
{
"storage": {
"type": "sqlite",
"path": "~/.mcp/workspace.db"
},
"cliPolicy": {
"mode": "allow-all",
"extraBlockedPatterns": [],
"timeoutMs": 30000
},
"crud": {
"defaultLimit": 1000
},
"fileReading": {
"maxLines": 500,
"warnAtLines": 100
},
"batchOperations": {
"maxOperations": 50,
"maxAggregateChars": 200000,
"maxLinesPerFile": 500,
"defaultTimeout": 30000,
"toolLimits": {
"exec_cli": { "maxOperations": 20, "timeout": 60000 }
}
}
}Development
npm install # Install dependencies
npm run build # Build TypeScript
npm run dev # Watch mode
npm test # Run tests
npm start # Run serverKnown Limitations
find_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
License
MIT License - see LICENSE file.
Changelog
See CHANGELOG.md for version history.