Macos Sys Assist — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Macos Sys Assist (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A focused macOS automation MCP server for reliable input simulation, window management, and window-specific screenshots — the three things AppleScript and bash do poorly.
macos-sys-assist is a Python-based MCP server that fills the gaps where bash + Chrome DevTools fall short. It uses pyobjc (native macOS APIs) and Core Graphics for low-level input simulation — more reliable than AppleScript's keystroke.
| Capability | Why Not bash/CDP |
|---|---|
| Core Graphics click/type/key | AppleScript keystroke misses keys or fails silently. This uses CGEventPost — the same API macOS uses internally. |
| Window-specific screenshots | bash screencapture captures the full screen; cropping is tedious. This captures just the window you want. |
| Precise window geometry | osascript returns position inconsistently. This uses the Accessibility API for accurate pixel-level data. |
| Multi-app window layouts | Arrange 3+ apps at specific positions in one command. bash needs multiple chained osascript calls. |
| Tool | Why Use bash |
|---|---|
| Finding files | find / mdfind are simpler |
| Reading files | cat / python3 -c |
| Opening files | open command |
| App queries | osascript -e 'tell app "System Events"...' |
| Clipboard | pbpaste / pbcopy |
| Screen resolution | system_profiler SPDisplaysDataType |
git clone https://github.com/YOUR_USERNAME/macos-sys-assist.git
cd macos-sys-assist
./setup.shEdit allowed_apps.json to control which apps can be automated.
./run.shAdd to opencode.jsonc:
"mcp": {
"macos-sys-assist": {
"type": "local",
"command": ["/path/to/macos-sys-assist/run.sh"],
"enabled": true
}
}.venv/bin/python3 -c "
import sys
sys.path.insert(0, '.')
from macos.input import InputSimulator
InputSimulator().click_at(100, 200, 'left')
"| Tool | Description | Security |
|---|---|---|
click_at(x, y, button, double) | Click at screen coordinates | ⚠️ Confirmation |
type_string(text) | Type text character by character | ⚠️ Confirmation, max 500 chars |
press_key(combination) | Press key combo (e.g., cmd+tab) | ⚠️ Blocked combos enforced |
More reliable than AppleScript — uses CGEventPost instead of keystroke.
| Tool | Description | Security |
|---|---|---|
move_window(x, y) | Move active window to coords | ⚠️ Confirmation |
resize_window(width, height) | Resize active window | ⚠️ Confirmation |
get_window_geometry(pid) | Get window position/size (Accurate) | Read-only |
Uses Accessibility API for pixel-level accuracy. More reliable than osascript.
| Tool | Description |
|---|---|
screenshot(filepath, display_id) | Capture full screen |
screenshot_window(pid, filepath) | Capture specific window only — no cropping needed |
screenshot_region(x, y, w, h, filepath) | Capture a screen region |
get_displays() | Get all connected displays and resolutions |
keystroke or click fails silentlyfind, mdfind, ls)cat, python3 -c)open)pbpaste, pbcopy)osascript)open -a)<input type="file">)allowed_apps.jsonControls which apps can be automated:
{
"allowed_apps": [
{
"bundle_id": "com.brave.Browser",
"name": "Brave Browser",
"allow_actions": true
}
],
"global_settings": {
"require_confirmation_for_click": true,
"require_confirmation_for_type": true,
"max_string_length": 500,
"blocked_key_combinations": [
"cmd+q",
"cmd+delete",
"ctrl+alt+delete"
]
}
}macos-sys-assist/
├── server.py # Main MCP server entry point
├── config.py # Configuration management
├── security.py # Security validation layer
├── allowed_apps.json # Application allow-list
├── requirements.txt # Python dependencies
├── setup.sh # Installation script
├── run.sh # Wrapper script
├── macos/ # Native macOS API wrappers
│ ├── accessibility.py # App queries, PID lookup
│ ├── window.py # Window move/resize/geometry
│ ├── input.py # Core Graphics click/type/key
│ ├── screenshot.py # Screen capture (full/window/region)
│ └── task_engine.py # Multi-step task execution
└── tools/ # MCP tool definitions
├── information.py # get_window_geometry
├── actions.py # click_at, type_string, press_key, move/resize
└── screenshot.py # screenshot, screenshot_window, screenshot_region, get_displays| Threat | Mitigation |
|---|---|
| Unauthorized app control | Application allow-list |
| Destructive key combos | Blocked combinations list |
| Excessive text input | Maximum string length (500) |
| Unconfirmed actions | Confirmation prompts |
.venv/bin/python3.venv/bin/python3osascript -e 'id of app "AppName"'allowed_apps.jsonMIT License — see LICENSE
Built for the OpenCode AI assistant framework. Uses the Model Context Protocol for tool integration. Powered by pyobjc for native macOS API access.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.