mcpField
S
Shell Proxy

Shell Proxy

Local
github.com/aliforeverDeveloper Tools0Updated 34w ago

About Shell Proxy

Shell Proxy is a command execution proxy for AI agents that runs commands between an agent and a terminal, returning structured output while reducing interference from ANSI codes, shell startup noise, and encoding issues. It supports multiple shells and buffered or line-by-line streaming output.

Key features

  1. 01Strip ANSI control sequences
  2. 02Bypass shell initialization files
  3. 03Detect or select a shell
  4. 04Structured JSON command results
  5. 05Stream output line by line
  6. 06Truncate output or write it to a file

Use cases

  1. 01Provide agents with readable terminal output
  2. 02Monitor long-running commands as they stream
  3. 03Run commands in different shells
  4. 04Save command results to a file

MCP support

Its stdio MCP server exposes run_command and run_command_stream tools for executing commands and returning either complete JSON results or line-by-line output.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

shellproxy

shellproxy is a clean command execution proxy for AI agents, solving the "terminal blindness" problem — garbage characters, ANSI escape codes, shell init noise, and encoding issues that make AI agents unable to read terminal output.

It sits between AI agents and terminals, executing commands in a clean, controlled environment and returning structured JSON output.


Features

  • ANSI stripping — removes all color codes, cursor movements, and control sequences
  • Shell init bypass — runs bash --norc --noprofile, PowerShell with -NoProfile, etc.
  • Auto shell detection — prefers WSL bash on Windows, falls back to cmd; bash/sh on Unix
  • Structured JSON output — exit_code, stdout, stderr, duration_ms, shell, truncated
  • Streaming mode — line-by-line output for long-running commands
  • File output — write results to a file in addition to stdout
  • MCP server — exposes run_command and run_command_stream as MCP tools
  • Configurable — env vars, config file ~/.shellproxy.json, or CLI flags

Installation

Unix (Linux, macOS, WSL)
curl -sSL https://raw.githubusercontent.com/aliforever/shellproxy/main/install.sh | sh
Windows (PowerShell)
irm https://raw.githubusercontent.com/aliforever/shellproxy/main/install.ps1 | iex
From source
git clone https://github.com/aliforever/shellproxy
cd shellproxy
go build -o shellproxy .

Usage

Run a command (buffered)
shellproxy run "echo hello world"

Output:

{
  "exit_code": 0,
  "stdout": "hello world\n",
  "stderr": "",
  "duration_ms": 12,
  "shell": "wsl",
  "truncated": false
}
Run with plain text output
shellproxy run --output text "ls -la"
Stream output line by line
shellproxy run --stream "npm install"

Output:

[stdout] added 342 packages in 4.2s
[stdout] found 0 vulnerabilities
--- exit_code: 0 | duration: 4213ms | shell: wsl ---
Write result to file
shellproxy run --file /tmp/result.json "go build ./..."
Specify a shell explicitly
shellproxy run --shell cmd "dir"
shellproxy run --shell bash "cat /etc/os-release"
shellproxy run --shell pwsh "Get-Date"
Inject environment variables
shellproxy run --env "NODE_ENV=production" --env "PORT=8080" "node server.js"
Set a timeout
shellproxy run --timeout 30 "long-running-command"
Truncate large output
shellproxy run --truncate 4096 "cat large-file.log"

MCP Server Mode

Start shellproxy as an MCP server over stdio:

shellproxy serve
AI Client Configuration

Add shellproxy to your AI client's MCP config:

{
  "mcpServers": {
    "shellproxy": {
      "command": "shellproxy",
      "args": ["serve"],
      "env": {
        "SHELLPROXY_SHELL": "auto",
        "SHELLPROXY_TIMEOUT": "60"
      }
    }
  }
}
Available MCP Tools
ToolDescription
run_commandExecute a command and return complete JSON result
run_command_streamExecute a command and return output line-by-line

run_command parameters:

ParameterTypeRequiredDescription
commandstring✓Shell command to execute
shellstringauto, cmd, bash, wsl, pwsh, sh
cwdstringWorking directory
timeout_secondsnumberTimeout (0 = no limit)
envobjectExtra env vars as {"KEY": "VALUE"}
truncate_bytesnumberMax output size in bytes

Configuration

shellproxy can be configured via environment variables or a JSON config file.

Config file: ~/.shellproxy.json
{
  "shell": "auto",
  "timeout_seconds": 60,
  "strip_ansi": true,
  "output_mode": "buffered",
  "output_file": "",
  "truncate_bytes": 0
}
Environment variables
VariableDefaultDescription
SHELLPROXY_SHELLautoShell to use
SHELLPROXY_TIMEOUT60Timeout in seconds
SHELLPROXY_STRIP_ANSItrueStrip ANSI codes (0/false to disable)
SHELLPROXY_OUTPUT_MODEbufferedbuffered, stream, or file
SHELLPROXY_OUTPUT_FILEFile path for file output mode
SHELLPROXY_TRUNCATE_BYTES0Truncate output at N bytes
SHELLPROXY_CONFIG~/.shellproxy.jsonOverride config file path

Global Flags

Flags:
  --shell string    Shell to use: auto, cmd, bash, wsl, pwsh, sh (default "auto")
  --timeout int     Command timeout in seconds 0 = no timeout (default 60)
  --strip-ansi      Strip ANSI escape codes from output (default true)
  -h, --help        help for shellproxy

Building from Source

# Build for current platform
make build

# Build for all platforms
make build-all

# Run tests
make test

# Run specific test suites
make test-strip      # ANSI stripping tests
make test-detect     # Shell detection tests
make test-exec       # Integration exec tests

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.