Skip to main content
Glama
Mnehmos

OODA Computer Control

mnehmos.ooda.mcp (v1.0.0)

npm version License: MIT

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.

Related MCP server: MCP PC Control Server

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

npm install -g mnehmos.ooda.mcp

From Source

git clone https://github.com/Mnehmos/mnehmos.ooda.mcp.git
cd mnehmos.ooda.mcp
npm install
npm run build

Claude 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 information

  • wait_for_screen_change - Detect when screen content changes

  • list_windows - See all open applications

  • get_active_window - Know current focus

  • clipboard_read - Check clipboard contents

Orient

  • Use CRUD tools to store/retrieve context and state

  • file_info, search_files - Understand filesystem state

  • list_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 hotkeys

  • mouse_click, mouse_move, mouse_drag - Mouse control

  • focus_window, launch_application - Window control

  • clipboard_write - Set clipboard content

  • notify - 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

parallel

All operations run concurrently (default)

sequential

Operations run one after another, supports stopOnError

Safety Limits

Configurable via ~/.mcp/config.json or per-request:

Limit

Default

Description

maxOperations

50

Max operations per batch

maxAggregateChars

200000

Total output size limit

maxLinesPerFile

500

Per-file line truncation

timeout

30000

Per-operation timeout (ms)

See ADR-003 for full documentation.

API Reference

CLI & File Operations

Tool

Description

exec_cli

Execute shell command

read_file

Read file contents

write_file

Write content to file

list_directory

List directory contents

read_file_lines

Read specific line range (token-efficient)

search_in_file

Search patterns within a file

str_replace

Replace unique string in file

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

Diff-Based Editing

Tool

Description

edit_block

Search/replace with fuzzy matching fallback

apply_diff

Multiple search/replace in atomic operation

get_diff_preview

Preview changes without applying

batch_edit_blocks

Sequential edits with partial success

write_from_line

Replace content from line N to EOF

CRUD Operations

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

Screen Operations

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)

Input Operations

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

Window Operations

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

wait_for_window

Wait for window to appear

Clipboard Operations

Tool

Description

clipboard_read

Read text/HTML/image

clipboard_write

Write text/HTML

clipboard_clear

Clear clipboard

clipboard_has_format

Check format availability

System Operations

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

Browser Automation

Tool

Description

launch_browser

Start Puppeteer/Playwright browser

close_browser

Close browser instance

navigate_page

Navigate to URL

get_page_content

Get page HTML/text/markdown

click_element

Click element by selector

type_text

Type into input field

evaluate_js

Execute JavaScript

screenshot_page

Capture page screenshot

get_console_logs

Get browser console logs

Interactive Sessions

Tool

Description

start_process

Start interactive process (REPL, SSH)

interact_with_process

Send input to process

read_process_output

Read process stdout

list_sessions

List active sessions

terminate_process

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 server

Known Limitations

  • find_on_screen requires 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.

A
license - permissive license
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
6Releases (12mo)
Commit activity
Issues opened vs closed

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mnehmos/mnehmos.ooda.mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server