Windows operations MCP server: file I/O, persistent sessions, build/deploy, breadcrumb tracking, reminders, and dead-drop coordination. The powershell and session_run tools enforce a 4-tier safety blocklist for destructive commands.
Version 0.3.0 · Apache 2.0 · GitHub
Part of CPC (Copy Paste Compute) - a multi-agent AI orchestration platform. Related repos: local · manager · hands · workflow · cpc-paths · cpc-breadcrumbs
| Feature | Detail |
|---|---|
bash tool |
Execute commands via Git Bash — mirrors powershell with allow_destructive and confirm flags |
| Extended blocklist | Unix-shaped T4/T3/T2 patterns: dd-to-device, fork bombs, rm -rf root, curl|sh, chmod 777, mkfs/shred, systemctl, iptables, apt |
| Path resolution | OPS_BASH_PATH env override → standard Git Bash locations → PATH fallback |
| 69 tools total | +1 from v0.2.1 |
Two binary artifacts ship with each release (installer is manually attached by maintainer after CI):
| File | Platform | Use |
|---|---|---|
ops-x64.exe |
Windows x64 | Main server binary |
ops-aarch64.exe |
Windows ARM64 | Main server binary |
install-ops-x64.exe |
Windows x64 | Companion installer (recommended for x64) |
- Download
ops-x64.exeandinstall-ops-x64.exefrom the latest release. - Place both files in the same directory.
- Run from a terminal:
install-ops-x64.exe --binary ops-x64.exe - Follow the prompts - choose
Program Files(admin) orLocalAppData(no admin). - Restart Claude Desktop.
The installer:
- Backs up your
claude_desktop_config.jsonwith a timestamp before touching it - Copies
ops.exeto the chosen location - Adds (or updates) only the
opsentry inmcpServers- touches nothing else - Prints the backup path to stdout so you can revert if needed
-
Download
ops-aarch64.exe(orops-x64.exe) and rename it toops.exe. -
Place it somewhere permanent, e.g.
%LOCALAPPDATA%\Ops\ops.exe. -
Edit
%APPDATA%\Claude\claude_desktop_config.jsonand add:{ "mcpServers": { "ops": { "command": "C:\\Users\\YourName\\AppData\\Local\\Ops\\ops.exe" } } } -
Restart Claude Desktop.
ARM64 installer not yet available; it will ship in a v0.2.x patch release.
- Windows 10/11 (x64 or ARM64)
- Claude Desktop or any MCP-compatible client
git clone https://github.com/AIWander/ops.git
cd ops
cargo build --releaseBinary appears at target/release/ops.exe. Requires Rust stable toolchain - nightly is not required.
| Environment Variable | Default | Purpose |
|---|---|---|
OPS_BREADCRUMB_PATH |
%LOCALAPPDATA%\Ops\breadcrumbs\ |
Breadcrumb storage directory |
OPS_SCRIPTS_DIR |
%LOCALAPPDATA%\Ops\scripts\ |
Scripts directory |
OPS_STATE_FILE |
%LOCALAPPDATA%\Ops\state.json |
State file path |
RUST_MCP_DIR |
(none) | Override workspace root for git/build tools |
All env vars are optional. Defaults work without any configuration. See claude_desktop_config.example.json for a ready-to-paste config block.
| Tool | Description |
|---|---|
read_file |
Read file with smart options: search for pattern, get specific lines, or auto-truncate large files |
write_file |
Write file, return confirmation only |
append_file |
Append to file, return confirmation only |
list_dir |
List directory contents as tree |
tail_file |
Return last N lines of a file plus current byte offset |
search_file |
Search files by name or content |
| Tool | Description |
|---|---|
transform_grep |
Search files for pattern, return matching lines with context |
transform_extract_lines |
Extract specific line range from file |
transform_diff_file |
Compare two files, return diff |
transform_find_replace |
Find/replace in file |
transform_json_format |
Pretty-print JSON with proper indentation |
transform_hash_file |
Compute file checksum (SHA256 via PowerShell) |
transform_file_stats |
Get file/directory stats without reading content |
| Tool | Description |
|---|---|
session_create |
Create a persistent shell session |
session_run |
Run command in persistent session |
session_cd |
Change directory in session |
session_set_env |
Set environment variable in session |
session_get_env |
Get environment variable(s) from session |
session_list |
List all active sessions with their state |
session_destroy |
Destroy a session and kill its PowerShell process |
| Tool | Description |
|---|---|
breadcrumb_start |
Start tracked operation with planned steps |
breadcrumb_step |
Log step completion, auto-advances to next |
breadcrumb_complete |
Mark operation complete, trigger extraction review |
breadcrumb_abort |
Abort current operation with reason |
breadcrumb_status |
Get current operation status and progress |
breadcrumb_backup |
Snapshot breadcrumb state before irreversible ops |
| Tool | Description |
|---|---|
reminder_add |
Create reminder with natural language time parsing |
reminder_list |
List reminders with optional filter |
reminder_complete |
Mark reminder completed |
reminder_delete |
Permanently remove a reminder |
reminder_check_due |
Return all reminders that are due now or overdue |
reminder_add_recurring |
Add recurring reminder (daily/weekly/monthly) |
reminder_add_scheduled |
Create Windows Task Scheduler reminder |
reminder_list_scheduled |
List Windows Task Scheduler CPC reminders |
reminder_delete_scheduled |
Delete Windows Task Scheduler reminder by name |
system_time_check |
Check elapsed time and re-surface reminders if 3+ hours passed |
| Tool | Description |
|---|---|
system_health_check |
Check server health and update dashboard |
system_health_report |
Get current health dashboard |
server_health |
Check which MCP servers are alive |
| Tool | Description |
|---|---|
config_backup |
Backup claude_desktop_config.json with a timestamp before editing |
config_validate |
Validate claude_desktop_config.json: parse JSON and check structure |
mcp_rebuild |
Rebuild an MCP server with backup |
| Tool | Description |
|---|---|
deploy_preflight |
Pre-kill safety checks before deploying/rebuilding an MCP server |
deploy_smoke_test |
Validate MCP server binaries before packaging |
git_rollback |
Rollback rust-mcp repo to a previous commit |
| Tool | Description |
|---|---|
archive_create |
Create zip/tar/tar.gz archive |
archive_extract |
Extract zip/tar/tar.gz archive |
md2docx |
Convert Markdown to DOCX via pandoc |
| Tool | Description |
|---|---|
powershell |
Execute PowerShell (4-tier blocklist enforced) |
| Tool | Description |
|---|---|
dead_drop_leave |
Leave message in dead drop for other AI agents to find at boot |
dead_drop_check |
Check dead drop for unread messages |
dead_drop_clear |
Mark dead drop messages as read |
bag_tag |
Tag items into the in-memory bag for later retrieval |
bag_read |
Read current bag contents |
bag_clear |
Clear the bag |
| Tool | Description |
|---|---|
checkpoint_save |
Save working memory state (survives context compaction) |
checkpoint_load |
Load last checkpoint |
checkpoint_clear |
Clear checkpoint after task completion |
| Tool | Description |
|---|---|
clipboard_read |
Read from Windows clipboard |
clipboard_write |
Write to Windows clipboard |
notify |
Show a Windows toast notification |
kill_process |
Kill process by PID |
list_process |
List processes, optionally filtered by name |
port_check |
Test TCP connectivity to a host:port |
sqlite_query |
Execute a read-only SQL query against a SQLite database |
system_info |
Get OS, CPU, RAM, disk info |
| Tool | Description |
|---|---|
status |
Check system or topic status |
tool_fallback |
Look up fallback tool when primary is unavailable |
68 tools across 14 categories.
ops enforces a 4-tier safety system on powershell and session_run. All other tools (file I/O, breadcrumbs, reminders, archives, etc.) are unrestricted.
Tier numbering: 4 is strictest (always blocked), 1 is loosest (allowed by default).
| Tier | Trigger | Required flag |
|---|---|---|
| 4 - Catastrophic | Remove-Item C:\, shadow copy deletion, boot config destruction, LOLBin execution, etc. |
Always blocked |
| 3 - Destructive | Drive format, account deletion, bulk system-path deletion | allow_destructive: true |
| 2 - System config | Firewall rules, service management, registry writes outside HKCU | confirm: true |
| 1 - Everything else | All other commands | Unrestricted |
Full pattern list: src/security/blocklist.rs. See SECURITY.md for tier descriptions.
ops is a thin layer over real OS operations, so failures map directly to what the OS would tell you:
- Blocked command -
powershellandsession_runreturn an explicit blocklist-tier error with the matched pattern. Adjust the call or pass the appropriate flag. - Command not found / non-zero exit - tools surface the real exit code and captured stderr. Read the error rather than retrying blindly.
- State directory not writable - occurs if
%LOCALAPPDATA%\Ops\is missing or permissions are wrong. Rundoctor.ps1to diagnose. - Long-running process hangs - use
session_*for commands that need interactive state;powershellis best for short one-shots with a hard timeout.
ops is designed to work standalone - one binary, pointed at by one MCP client, and you have shell + filesystem + breadcrumbs + reminders. Pair it with other CPC servers for broader capabilities:
- local - if you need a public, stable server that ships with hooks and a dashboard
- manager - multi-backend orchestration on top of ops's execution tools
- hands - when a script needs to reach into a browser or Windows UI layer
- workflow - when scripts call APIs you've graduated from browser discovery to stored HTTP patterns
Host clients: Claude Desktop (claude_desktop_config.json), Claude Code (~/.claude/mcp.json), OpenAI Codex CLI, or Gemini CLI.
Issues welcome; PRs considered but this is primarily maintained as part of the CPC stack. See CONTRIBUTING.md.
Apache License 2.0 - see LICENSE.
Copyright 2026 Joseph Wander.
- GitHub: github.com/AIWander
- Email: josephwander@gmail.com
- Issues: github.com/AIWander/ops/issues