command proxy.com
command proxy.com logo

Command Proxy

Proxy server for CLI commands that captures terminal output in a circular buffer, enabling remote execution, log retriev...

Created byApr 23, 2025

MCP Command Proxy

An MCP (Model Context Protocol) server that acts as a proxy for CLI commands, specifically designed for Expo development but adaptable for any command-line application.

How to use in Cursor (Expo example)

  1. Go to the directory of your Expo project
  1. Run `npx mcp-command-proxy --prefix "ExpoServer" --command "expo start" --port 8383`
  1. Go to Cursor settings -> MCP -> +Add new MCP server, like this: ![add_mcp_server](guide/add_mcp.png)
  1. Set the name to "ExpoServer", Type to "SSE", URL to `http://localhost:8383/sse`
  1. Click "Save" and you should now be able to use the MCP server in Cursor. Like this: ![mcp_server_in_cursor](guide/result.png)
Recommended to use the `--port 8383` flag to avoid conflicts with other servers. Also, you can add following instruction to .cursorrules file:

Features

  • **Command Proxying**: Run any CLI command through the MCP server
  • **Log Collection**: Capture and store logs from running processes (configurable buffer size)
  • **Key Press Forwarding**: Forward key presses from client to the running process
  • **Transparent Experience**: The end user sees the command output exactly as if they ran it directly
  • **Interactive Commands**: Works with interactive CLI tools like Expo
  • **MCP Integration**: Built using the MCP SDK for easy integration with Claude and other MCP-enabled AI assistants

How It Works

  1. The server starts a specified command in a pseudo-terminal (PTY)
  1. All stdout/stderr output is: - Streamed to the client in real-time - Stored in a circular buffer (configurable size, default 300 lines)
  1. Key presses from the client are forwarded to the running process
  1. The server provides tools to: - View collected logs - Send key presses to the process - Get the current state of the process

Use Cases

  • **Expo Development**: Run `expo start` and interact with it while collecting logs
  • **Build Processes**: Monitor build processes and analyze logs
  • **Long-running Services**: Monitor services and keep recent log history
  • **Remote Command Execution**: Execute and monitor commands from remote clients

Requirements

  • Node.js 18+
  • TypeScript
  • pnpm (recommended) or npm

Installation

Usage

Basic Usage

Options

  • `--prefix, -p`: Name/prefix for the server (default: "CommandProxy")
  • `--command, -c`: Command to run (required)
  • `--buffer-size, -b`: Number of log lines to keep in memory (default: 300)
  • `--port`: Port for HTTP server (default: 8080)
  • `--help, -h`: Show help

MCP Integration

This server implements the following MCP tools:
  1. `getRecentLogs`: Returns the most recent logs from the buffer - Parameters: - `limit` (optional): Number of logs to return (default: 100) - `types` (optional): Types of logs to include (stdout, stderr, system) (default: all)
  1. `sendKeyPress`: Sends a key press to the running process - Parameters: - `key`: Key to send (e.g. "enter", "a", "1", "space")
  1. `getProcessStatus`: Returns the current status of the process - Parameters: None

Examples

Running Expo Start

Using with Claude

  1. Configure Claude to connect to this MCP server (SSE endpoint: http://localhost:8080/sse)
  1. Ask Claude to run Expo or other commands
  1. Claude can analyze logs and help troubleshoot issues

Development

License

MIT