UNPKG

bash-mcp

Version:

Simple bash command execution MCP server for Claude

174 lines (129 loc) 3.82 kB
# bash-mcp A simple MCP (Model Context Protocol) server that enables Claude to execute shell commands without permission prompts. ⚠️ **Security Warning**: This server executes arbitrary shell commands. Use with caution and only in trusted environments. ## Installation ```bash # Install globally npm install -g bash-mcp # Or use with npx npx bash-mcp ``` ## Quick Start ### For Claude Desktop Add to your `claude_desktop_config.json`: ```json { "mcpServers": { "bash": { "command": "npx", "args": ["bash-mcp"] } } } ``` ### For Claude Code (Cursor, VS Code) 1. Open command palette (Cmd/Ctrl + Shift + P) 2. Run "MCP: Add Server" 3. Select "NPM" as the server type 4. Enter: `bash-mcp` ## Available Tools ### `run` - Execute a command ```javascript // Simple command run("ls -la") // With working directory run("npm test", { cwd: "/path/to/project" }) // With timeout (milliseconds) run("long-running-command", { timeout: 60000 }) ``` ### `run_background` - Start a background process ```javascript // Start a dev server run_background("npm run dev", "frontend") // Start backend service with working directory run_background("./gradlew bootRun", "backend", { cwd: "./backend" }) ``` ### `kill_background` - Stop a background process ```javascript kill_background("frontend") ``` ### `list_background` - List all background processes ```javascript list_background() ``` ## Example Usage ``` User: Start the development servers Assistant: I'll start both frontend and backend servers for you. [Uses run_background tool] Started frontend server (PID: 12345) Started backend server (PID: 12346) User: Check if they're running Assistant: [Uses list_background tool] Both servers are running successfully! ``` ## Response Format All tools return JSON formatted responses: ```json { "success": true, "stdout": "command output", "stderr": "error output if any", "command": "executed command" } ``` For background processes: ```json { "success": true, "name": "frontend", "pid": 12345, "command": "npm run dev", "message": "Started background process 'frontend' (PID: 12345)" } ``` ## Features - Execute any shell command without permission prompts - Run long-running processes in the background - Manage background processes (list, kill) - Capture stdout and stderr - Set working directory for commands - Configure timeout for commands - Automatic cleanup on server shutdown - **NEW**: Automatic output truncation with full output saved to temp files - **NEW**: Configurable output size limits and temp directory via environment variables ## Environment Variables - `BASH_MCP_MAX_OUTPUT_SIZE`: Maximum output size in bytes before truncation (default: 51200/50KB) - `BASH_MCP_TEMP_DIR`: Directory for storing full output when truncated (default: system temp directory) ### Example Configuration ```json { "mcpServers": { "bash": { "command": "npx", "args": ["bash-mcp"], "env": { "BASH_MCP_MAX_OUTPUT_SIZE": "102400", "BASH_MCP_TEMP_DIR": "/tmp/bash-mcp-outputs" } } } } ``` ## Output Overflow Handling When command output exceeds `BASH_MCP_MAX_OUTPUT_SIZE`: 1. Output is truncated to the specified limit 2. Full output is saved to a temporary file 3. The response includes the file path where full output can be found 4. If custom temp directory fails, falls back to system temp directory ## Security Considerations This MCP server executes arbitrary shell commands with the same privileges as the Node.js process. Only use in development environments or trusted contexts. ## Requirements - Node.js >= 16.0.0 - npm or npx ## License MIT ## Author tinywind <tinywind0@gmail.com> ## Contributing Issues and pull requests are welcome at [GitHub](https://github.com/tinywind/bash-mcp).