MCP server for CVE's suckless FreeBSD setup
Find a file
2026-03-16 12:30:06 +00:00
.gitignore initial commit 2026-03-16 12:29:40 +00:00
config.example.js initial commit 2026-03-16 12:29:43 +00:00
package.json initial commit 2026-03-16 12:29:48 +00:00
README initial commit 2026-03-16 12:30:06 +00:00

cveutils
MCP server for a suckless FreeBSD desktop

an MCP (Model Context Protocol) server that gives Claude Code
system-level tools for managing a suckless/FreeBSD setup.
runs as a local stdio MCP server.

tools
-----
suckless
  suckless_build          build and install a suckless tool (dwm, st, dmenu, etc)
  suckless_config_read    read config.h for a suckless tool
  suckless_config_write   write config.h and optionally rebuild

server (debian box via ssh)
  server_logs             docker compose logs for a service
  server_restart          restart a docker compose service
  server_shell            run arbitrary commands via ssh
  caddy_config_read       read the Caddyfile
  caddy_config_write      write Caddyfile and reload caddy

packages
  pkg_search              search FreeBSD pkg
  pkg_install             install a FreeBSD package with doas

forgejo
  forgejo_repo_list       list repos for a user/org
  forgejo_create_repo     create a new repo
  forgejo_push_file       create or update a file in a repo
  forgejo_list_issues     list issues
  forgejo_create_issue    create an issue
  forgejo_close_issue     close an issue
  forgejo_delete_file     delete a file

system
  battery                 battery status (apm)
  wifi_status             wifi interface info
  disk_usage              df -h
  sysctl_get              read a sysctl value
  dmesg_tail              last N lines of dmesg
  proc_list               ps aux

desktop / X
  dwm_status              set the dwm status bar text
  dwm_status_read         read the current dwm status bar text
  clipboard_read          read X clipboard
  clipboard_write         write X clipboard
  xwindow_list            list open X windows
  xwindow_focus           focus a window by name
  xprop_focused           get X properties of focused window
  xdotool_key             send key combo to focused window
  xdotool_type            type text into focused window
  xdotool_click           click mouse button
  surf_open               open URL in running surf instance
  screenshot              take a screenshot (returns base64 PNG)

cmus
  cmus_status             playback status and track info
  cmus_control            control cmus in natural language (play, next, volume up, etc)

irc (ii)
  irc_read                read messages from an ii channel log
  irc_send                send a message to an ii channel

util
  wait                    wait N seconds (useful for dwm bar chat loops)

setup
-----
  cp config.example.js config.js
  # edit config.js with your values
  npm install
  # add to ~/.config/claude/claude_desktop_config.json or equivalent MCP config:
  # {
  #   "mcpServers": {
  #     "cveutils": {
  #       "command": "/usr/local/bin/node",
  #       "args": ["/path/to/cveutils/server.js"]
  #     }
  #   }
  # }

license
-------
ISC