Bash MCP (Master Control Program)

by yannbam
Verified
# Bash MCP (Master Control Program) A TypeScript application that allows Claude to safely execute bash commands with security safeguards. ## Features - Execute bash commands in a controlled environment - Support for both stateless and stateful (interactive) command execution - Security safeguards: - Whitelisted commands - Whitelisted directories - Command validation - Output sanitization - Session management for interactive commands - Comprehensive logging ## Installation ```bash npm install npm run build ``` ## Configuration The configuration is stored in `config/default.json`. You can customize: - Allowed commands - Allowed directories - Session settings - Security settings - Logging settings Example configuration: ```json { "allowedCommands": ["ls", "cat", "echo", "pwd"], "allowedDirectories": ["/tmp", "/home"], "session": { "timeout": 300, "maxActiveSessions": 5, "defaultMode": "stateless" }, "security": { "validateCommandsStrictly": true, "sanitizeOutput": true, "maxOutputSize": 1048576, "commandTimeout": 30 }, "logging": { "level": "info", "file": "logs/bash-mcp.log", "maxSize": 10485760, "maxFiles": 5 } } ``` ## Usage ### Simple Command Execution ```typescript import { executeCommand } from 'bash-mcp'; const result = await executeCommand('ls -la', { cwd: '/home/user' }); console.log(result.output); ``` ### Interactive Sessions ```typescript import { initBashMCP } from 'bash-mcp'; const mcp = await initBashMCP(); // Create a session const session = mcp.createSession('/home/user'); const sessionId = session.sessionId; // Execute a command in the session const result1 = await mcp.executeCommand('ls -la', { sessionId }); console.log(result1.output); // Send input to the session const result2 = await mcp.sendInput({ sessionId, input: 'echo "Hello, world!"' }); console.log(result2.output); // Close the session when done mcp.closeSession(sessionId); ``` ## Security Considerations This MCP is designed with security in mind, but it's important to: - Keep the allowed commands and directories list as restrictive as possible - Regularly review and update the configuration - Monitor the logs for suspicious activity - Keep the MCP and its dependencies up to date ## Development ### Building ```bash npm run build ``` ### Linting and Formatting To check for linting issues: ```bash npm run lint ``` To automatically fix linting and formatting issues: ```bash ./fix-lint.sh ``` Or manually: ```bash npm run lint:fix # Fix linting issues npm run format # Format code ``` ### Testing ```bash npm test ```