Production-Ready Model Context Protocol (MCP) server that enables AI assistants to fully interact with console applications, monitor output, detect errors, and automate terminal workflows - similar to how Playwright works for web browsers.
This server is fully production-ready with:
- ✅ No native compilation required (removed node-pty dependency)
- ✅ Full cross-platform support (Windows, macOS, Linux)
- ✅ Streaming support for long-running processes
- ✅ Multiple console type support (cmd, PowerShell, bash, zsh, sh)
- ✅ Resource management and automatic cleanup
- ✅ Comprehensive error handling and recovery
- ✅ Easy installation scripts for all major MCP clients
- ✅ All tests passing (see test-functionality.js)
- Full Terminal Control: Create and manage up to 50 concurrent console sessions
- Multi-Protocol Support: Local shells (cmd, PowerShell, pwsh, bash, zsh, sh) and remote SSH connections
- Interactive Input: Send text input and special key sequences (Enter, Tab, Ctrl+C, etc.)
- Real-time Output Monitoring: Capture, filter, and analyze console output with advanced search
- Streaming Support: Efficient streaming for long-running processes with pattern matching
- Automatic Error Detection: Built-in patterns to detect errors, exceptions, and stack traces across languages
- Cross-platform: Works on Windows, macOS, and Linux without native dependencies
- Full SSH Support: Password and key-based authentication with passphrase support
- SSH Options: Custom ports, connection timeouts, keep-alive settings
- Connection Profiles: Save and reuse SSH configurations for quick access
- Cloud Platform Support: Azure, AWS, GCP, Kubernetes connections via saved profiles
- Container Support: Docker and WSL integration for containerized workflows
- Automated Test Cases: Built-in assertion tools for console output validation
- Output Assertions: Verify output contains, matches regex, or equals expected values
- Exit Code Validation: Assert command exit codes for success/failure detection
- Error-Free Validation: Automatically check for errors in command output
- State Snapshots: Save and compare session states before/after operations
- Test Workflows: Chain assertions for comprehensive testing scenarios
- Async Command Execution: Run long-running commands in background with full output capture
- Priority Queue System: Prioritize jobs (1-10 scale) for optimal resource utilization
- Job Monitoring: Track status, progress, and completion of background jobs
- Job Control: Cancel, pause, or resume background operations
- Result Retrieval: Get complete output and exit codes from completed jobs
- Resource Management: Automatic cleanup of completed jobs with configurable retention
- System-Wide Metrics: CPU, memory, disk, and network usage tracking
- Session Metrics: Per-session performance monitoring and resource consumption
- Real-time Dashboards: Live monitoring data with customizable views
- Alert System: Performance, error, security, and anomaly alerts with severity levels
- Custom Monitoring: Configure monitoring intervals, metrics, and thresholds per session
- Diagnostics: Built-in error analysis and session health validation
- Connection Profiles: Save SSH, Docker, WSL, and cloud platform connections
- Application Profiles: Store common command configurations (Node.js, Python, .NET, Java, Go, Rust)
- Quick Connect: Instantly connect using saved profiles with override support
- Environment Variables: Store environment configurations per profile
- Working Directory Management: Set default directories for each profile
- Regex Filtering: Search output with regular expressions (case-sensitive/insensitive)
- Multi-Pattern Search: Combine multiple patterns with AND/OR logic
- Pagination: Get specific line ranges, head, or tail of output
- Time-based Filtering: Filter output by timestamp (absolute or relative: '5m', '1h', '2d')
- Output Streaming: Real-time output capture for long-running processes
- Buffer Management: Clear output buffers to reduce memory usage
git clone https://github.com/ooples/mcp-console-automation.git
cd mcp-console-automation
.\install.ps1 -Target claude # or google, openai, custom, all
git clone https://github.com/ooples/mcp-console-automation.git
cd mcp-console-automation
chmod +x install.sh
./install.sh --target claude # or google, openai, custom, all
git clone https://github.com/ooples/mcp-console-automation.git
cd mcp-console-automation
npm install --production
npm run build
Add to your Claude Desktop configuration file:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"console-automation": {
"command": "npx",
"args": ["@mcp/console-automation"],
"env": {
"LOG_LEVEL": "info"
}
}
}
}
# Start the server
mcp-console --log-level info
# Or with npx
npx @mcp/console-automation --log-level info
This MCP server provides 40 comprehensive tools organized into 6 categories:
- Complete Tools Reference - Detailed documentation for all 40 tools
- Practical Examples - Real-world usage examples and patterns
- Publishing Guide - How to list this server in registries
console_create_session
- Create local or SSH console sessionsconsole_send_input
- Send text input to sessionsconsole_send_key
- Send special keys (Enter, Ctrl+C, etc.)console_get_output
- Get filtered/paginated output with advanced searchconsole_get_stream
- Stream output from long-running processesconsole_wait_for_output
- Wait for specific patternsconsole_stop_session
- Stop sessionsconsole_list_sessions
- List all active sessionsconsole_cleanup_sessions
- Clean up inactive sessions
console_execute_command
- Execute commands with output captureconsole_detect_errors
- Analyze output for errorsconsole_get_resource_usage
- Get system resource statsconsole_clear_output
- Clear output buffersconsole_get_session_state
- Get session execution stateconsole_get_command_history
- View command history
console_get_system_metrics
- Comprehensive system metricsconsole_get_session_metrics
- Session-specific metricsconsole_get_alerts
- Active monitoring alertsconsole_get_monitoring_dashboard
- Real-time dashboard dataconsole_start_monitoring
- Start custom monitoringconsole_stop_monitoring
- Stop monitoring
console_save_profile
- Save SSH/app connection profilesconsole_list_profiles
- List saved profilesconsole_remove_profile
- Remove profilesconsole_use_profile
- Quick connect with saved profiles
console_execute_async
- Execute commands asynchronouslyconsole_get_job_status
- Check job statusconsole_get_job_output
- Get job outputconsole_cancel_job
- Cancel running jobsconsole_list_jobs
- List all background jobsconsole_get_job_progress
- Monitor job progressconsole_get_job_result
- Get complete job resultsconsole_get_job_metrics
- Job execution statisticsconsole_cleanup_jobs
- Clean up completed jobs
console_assert_output
- Assert output matches criteriaconsole_assert_exit_code
- Assert exit codesconsole_assert_no_errors
- Verify no errors occurredconsole_save_snapshot
- Save session state snapshotsconsole_compare_snapshots
- Compare state differencesconsole_assert_state
- Assert session state
const session = await console_create_session({
command: "npm",
args: ["run", "dev"],
detectErrors: true
});
const session = await console_create_session({
command: "bash",
consoleType: "ssh",
sshOptions: {
host: "example.com",
username: "user",
privateKeyPath: "~/.ssh/id_rsa"
}
});
const session = await console_create_session({
command: "npm",
args: ["test"]
});
await console_assert_output({
sessionId: session.sessionId,
assertionType: "contains",
expected: "All tests passed"
});
const job = await console_execute_async({
sessionId: session.sessionId,
command: "npm run build",
priority: 8
});
const status = await console_get_job_status({
jobId: job.jobId
});
For more examples, see docs/EXAMPLES.md
// Create a session for the dev server
const session = await console_create_session({
command: "npm",
args: ["run", "dev"],
detectErrors: true
});
// Wait for server to start
await console_wait_for_output({
sessionId: session.sessionId,
pattern: "Server running on",
timeout: 10000
});
// Monitor for errors
const errors = await console_detect_errors({
sessionId: session.sessionId
});
// Start a Python debugging session
const session = await console_create_session({
command: "python",
args: ["-m", "pdb", "script.py"]
});
// Set a breakpoint
await console_send_input({
sessionId: session.sessionId,
input: "b main\n"
});
// Continue execution
await console_send_input({
sessionId: session.sessionId,
input: "c\n"
});
// Step through code
await console_send_key({
sessionId: session.sessionId,
key: "n"
});
// Run tests
const result = await console_execute_command({
command: "pytest",
args: ["tests/"],
timeout: 30000
});
// Check for test failures
const errors = await console_detect_errors({
text: result.output
});
if (errors.hasErrors) {
console.log("Test failures detected:", errors);
}
// Start an interactive CLI tool
const session = await console_create_session({
command: "mysql",
args: ["-u", "root", "-p"]
});
// Enter password
await console_wait_for_output({
sessionId: session.sessionId,
pattern: "Enter password:"
});
await console_send_input({
sessionId: session.sessionId,
input: "mypassword\n"
});
// Run SQL commands
await console_send_input({
sessionId: session.sessionId,
input: "SHOW DATABASES;\n"
});
The server includes built-in patterns for detecting common error types:
- Generic errors (error:, ERROR:, Error:)
- Exceptions (Exception:, exception)
- Warnings (Warning:, WARNING:)
- Fatal errors
- Failed operations
- Permission/access denied
- Timeouts
- Stack traces (Python, Java, Node.js)
- Compilation errors
- Syntax errors
- Memory errors
- Connection errors
npm install
npm run build
npm run dev
npm test
npm run typecheck
npm run lint
The server is built with:
- node-pty: For creating and managing pseudo-terminals
- @modelcontextprotocol/sdk: MCP protocol implementation
- TypeScript: For type safety and better developer experience
- Winston: For structured logging
- ConsoleManager: Manages terminal sessions, input/output, and lifecycle
- ErrorDetector: Analyzes output for errors and exceptions
- MCP Server: Exposes console functionality through MCP tools
- Session Management: Handles multiple concurrent console sessions
- Node.js >= 18.0.0
- Windows, macOS, or Linux operating system
- No additional build tools required!
Run the included test suite to verify functionality:
node test-functionality.js
- Permission denied errors: Ensure the server has permission to spawn processes
- node-pty compilation errors: Install build tools for your platform
- Session not responding: Check if the command requires TTY interaction
- Output not captured: Some applications may write directly to terminal, bypassing stdout
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
MIT License - see LICENSE file for details
For issues, questions, or suggestions, please open an issue on GitHub: https://github.com/ooples/mcp-console-automation/issues
- Add support for terminal recording and playback
- Implement session persistence and recovery
- Add more error detection patterns for specific languages
- Support for terminal multiplexing (tmux/screen integration)
- Web-based terminal viewer
- Session sharing and collaboration features
- Performance profiling tools
- Integration with popular CI/CD systems