Repository avatar
Other Tools
v1.0.0
active

shell-use

io.github.kyuheon-kr/shell-use

Let agents use the shell like a human.

Documentation

shell-use

Let agents use the shell like a human.


Features

  • Interact with any CLI application (vim, htop, gdb, etc.)
  • Send special keys (Ctrl+C, Enter, arrow keys, etc.)
  • Dockerized for easy deployment

Available Tools

ToolDescription
list_sessions()Returns allowed session names
capture(session, scroll_back?)Captures terminal screen text
send_keys(session, keys)Sends key input (e.g., Enter, C-c)
send_text(session, text, enter?)Sends literal text (enter=True to press Enter)
scroll(session, direction, amount?)Scrolls through history
exit_scroll_mode(session)Exits copy-mode

Setup

1. Build the Docker image

docker build -t shell-use:latest .

2. Create a tmux session

tmux new-session -s dev

3. Configure your MCP client

Claude Code:

claude mcp add shell-use \
  -e SHELL_USE_SESSIONS=dev \
  -- docker run -i --rm \
  -v /tmp/tmux-$(id -u)/default:/tmux/tmux.sock \
  -e SHELL_USE_SESSIONS \
  shell-use:latest

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "shell-use": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "/tmp/tmux-1000/default:/tmux/tmux.sock",
        "-e", "SHELL_USE_SESSIONS",
        "shell-use:latest"
      ],
      "env": {
        "SHELL_USE_SESSIONS": "dev"
      }
    }
  }
}

Replace 1000 with your user ID (id -u).


Environment Variables

VariableDescriptionRequired
SHELL_USE_SESSIONSComma-separated list of allowed session namesYes
SHELL_USE_SOCKETPath to tmux socket (default: /tmux/tmux.sock in Docker)No

Acknowledgments

Inspired by browser-use.