The division is between run, which blocks until the command exits or the timeout fires, and run_background, which returns immediately and leaves the process under a name. That name is the handle for everything afterwards — list_background to see what is still alive, kill_background to stop it. The 4 signatures carry command, cwd, timeout and name and nothing that narrows what may be run, so the boundary is wherever the server is placed.
A shell execution server: one blocking command runner, and a named background process manager
- A blocking run that takes a working directory and a timeout and returns the command's output.
- A background run that starts a command under a name and returns straight away.
- A listing of the background processes still alive, and a kill by the name a process was started under.
A shell on the machine running the server. Both run tools take a cwd, so the working directory is chosen per call rather than fixed at startup.
One command — npx bash-mcp
