enhanced_terminalLABSCO SUMMARY
The job that outlives its timeout is the whole idea.
Most terminal tools give you a timeout and a truncated log. Here the command keeps running, you get a handle to it, and you can read its output in byte ranges, cancel it, or type into its stdin when it asks a question. That last one matters more than it sounds — an installer that prompts halfway through is otherwise a dead end.
What it is
A Rust terminal server with real PTY support. Commands run synchronously with output streamed as it arrives, and any command still going after the async threshold moves to the background with a job id rather than failing.
What you get
- enhanced_terminal — run a command with a configurable working directory, shell, timeout and output preview limit
- enhanced_terminal_job_status to check a background job's progress, output, exit code and duration
- enhanced_terminal_job_list for recent jobs, filterable by status, tag or working directory
- enhanced_terminal_job_cancel to send SIGTERM to a running job on Unix
- enhanced_terminal_job_stdin to write exact text into a running job's PTY — the answer to a prompt that appeared after it went to the background
- detect_binaries, which scans PATH for developer tools across many categories in parallel and can be filtered to one category
- Output pagination by byte range, so a very long log can be read in pieces
- A denylist that refuses destructive commands, extendable with your own entries
- Every shell execution appended to a call log on disk
Requirements
Rust 1.85 or newer to build it — there is no prebuilt package, so expect a cargo build. Shell information is detected at startup and included in the server instructions, so no discovery call is needed. Commands run with sudo authenticate once through an askpass dialog and then reuse the cached timestamp, refreshed in the background, which is what stops every later sudo command from stalling on a password prompt.
Setup effort
Build from source — git clone https://github.com/tsoernes/enhanced-terminal-mcp.git
USE CASES
Running a build that takes longer than a tool call should
Start it, let it move to the background, then check on it and read the output when it lands.
Answering a prompt from a command already running
Write the exact text into the job's stdin rather than killing it and starting over.
Stopping something that is going wrong
Find it in the job list and terminate it.
Reading a log too long to return in one piece
Page through it by byte range instead of truncating the interesting part.
Finding out what is installed on an unfamiliar machine
Scan PATH for developer tools with versions, narrowed to the category you care about.
Keeping track of what has been run
List recent jobs by status or tag rather than scrolling back through the conversation.
6 tools
Listed in project docs. Your client may show a different list.
enhanced_terminal_job_statusenhanced_terminal_job_listenhanced_terminal_job_cancelenhanced_terminal_job_stdindetect_binariesBEFORE YOU INSTALL
What to know first
Tools you get
6 tools named in the project's documentation.
Requires
- Rust 1.85+ with 2024 edition support
- Cargo
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
You clone and build this one yourself.
Server setup
git clone https://github.com/tsoernes/enhanced-terminal-mcp.git
cd enhanced-terminal-mcp
cargo build --releaseAdd the mcpServers block to your MCP client config, pointing command at target/release/enhanced-terminal-mcp
MCP Clients
Any MCP client
{
"mcpServers": {
"enhanced-terminal": {
"command": "<YOUR_PATH_TO_ENHANCED_TERMINAL_MCP>",
"args": []
}
}
}