An MCP tool server that provides stateful, TUI-compatible terminal sessions.
An MCP tool server that provides stateful, TUI-compatible terminal sessions.
This is a proof-of-concept using mcp-go.
Works quite well with Claude Desktop.
Clone the repo and run make
to generate bin/mcpterm
.
git clone https://github.com/dwrtz/mcpterm.git
cd mcpterm
make
Move the mcpterm
binary to a directory in your PATH.
sudo mv bin/mcpterm /usr/local/bin/mcpterm
Edit your claude_desktop_config.json
(on Mac it’s in ~/Library/Application Support/Claude/claude_desktop_config.json
):
{
"mcpServers": {
"mcpterm": {
"command": "mcpterm",
"args": []
}
}
}
Restart Claude Desktop. Now Claude should see the 2 tools provided by mcpterm
.
run
: Runs a command in a stateful terminal session. E.g. if you cd into a directory, subsequent commands will run in that directory.
runScreen
: Runs a command or series of keystrokes and returns the screen output. Intended for TUI apps such as vim or a python REPL.
You may want to tell Claude to use following control sequences with the runScreen
tool:
"^X": "\x18", // Ctrl+X
"^O": "\x0F", // Ctrl+O
"^J": "\x0A", // Enter
"^C": "\x03", // Ctrl+C
"^D": "\x04", // Ctrl+D
"^Z": "\x1A", // Ctrl+Z
"^[": "\x1B", // Escape
"^H": "\x08", // Backspace
"^M": "\x0D", // Carriage return
"^L": "\x0C", // Form feed
"^G": "\x07", // Bell
"^U": "\x15", // Clear line
"^W": "\x17", // Delete word
"^Y": "\x19", // Paste from kill buffer
"^V": "\x16", // Literal input
"^K": "\x0B", // Kill line
"^E": "\x05", // End of line
"^A": "\x01", // Beginning of line
"^I": "\x09", // Tab
While not perfect, it works pretty well. Claude is able to use vim to write a Dockerfile, then run the container in an interactive session, then run commands in the container such as a python REPL.
An MCP server for deep git repository investigation and analysis. Provides detailed insights into repository history, branch relationships, and development patterns, focusing solely on git repository analysis rather than general GitHub or git operation.