Atlas / MCP servers / ooples / Console Automation

Console AutomationBLOCK

mcp/ooples/console-automation

MCP server for AI-driven console application automation and monitoring

Verdict
BLOCK
Grade
F
Trust score
44 /100
Exposed tools
54 38r · 12w · 4d
Transport
stdio
License
MIT
Stars
51
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Model Context Protocol (MCP) server for controlled interaction with local console applications and remote SSH sessions, including output monitoring, error detection, and long-running workflows.

[](https://github.com/ooples/mcp-console-automation) [](LICENSE) [](https://nodejs.org)

Security status

This server can execute arbitrary commands and open remote SSH sessions. Treat it like a privileged terminal, not a low-risk documentation connector:

  • keep MCP tool approvals enabled for command/session mutations;
  • prefer SSH keys or environment-variable credential references over inline secrets;
  • use a restricted deployment account and a separate production approval step;
  • leave MCP_DEBUG_LOG and MCP_LOG_DIR unset unless diagnostics are explicitly required;
  • leave session persistence disabled unless recovery metadata is explicitly required;
  • install cloud, container, and serial integrations only when needed.

Features

🚀 Core Capabilities

  • 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

🔐 SSH & Remote Connections

  • Full SSH Support: Password and key-based authentication with passphrase support
Read from source at commit a3b00c36df3eOBSERVED · 2026-10-08
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add console-automation-mcp --env AUDIT_ENCRYPTION_KEY=${AUDIT_ENCRYPTION_KEY} --env AZURE_CLIENT_SECRET=${AZURE_CLIENT_SECRET} --env AZURE_KEY_VAULT_URL=${AZURE_KEY_VAULT_URL} --env AZURE_SECRET_NAME=${AZURE_SECRET_NAME} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "console-automation-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "AUDIT_ENCRYPTION_KEY": "${AUDIT_ENCRYPTION_KEY}",
        "AZURE_CLIENT_SECRET": "${AZURE_CLIENT_SECRET}",
        "AZURE_KEY_VAULT_URL": "${AZURE_KEY_VAULT_URL}",
        "AZURE_SECRET_NAME": "${AZURE_SECRET_NAME}"
      }
    }
  }
}
03

Exposed tools (54)

38 read · 12 write · 4 destructive. Blast radius: 4 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
check_ssh_connectivityreadVerify SSH service availability and network connectivity
cleanup_resourcesreadClean up unused resources
console_assert_exit_codereadAssert that session exit code matches expected value
console_assert_no_errorsreadAssert that session output contains no error messages
console_assert_outputreadAssert that session output matches expected criteria
console_assert_statereadAssert that session state matches expected values
console_cancel_jobreadCancel a running background job
console_cleanup_jobsreadClean up completed background jobs
console_cleanup_sessionsreadClean up inactive or stuck sessions
console_clear_outputdestructiveClear the output buffer for a session
console_compare_snapshotsreadCompare two session snapshots and show differences
console_create_sessionwriteCreate a new console session for running a command
console_detect_errorsreadAnalyze console output for errors and exceptions
console_execute_asyncwriteExecute a command in background (async mode)
console_execute_commandwriteExecute a command in an existing session or create a new one-off session
console_get_alertsreadGet current monitoring alerts including performance, error, security, and anomaly alerts
console_get_command_historyreadGet the command execution history for a session
console_get_job_metricsreadGet metrics and statistics about background job execution
console_get_job_outputreadGet output from a background job
console_get_job_progressreadGet progress information for a background job
console_get_job_resultreadGet the complete result of a background job
console_get_job_statusreadGet the status of a background job
console_get_monitoring_dashboardreadGet real-time monitoring dashboard data with metrics, alerts, and system status
console_get_outputreadGet output from a console session with server-side filtering, pagination, and search capabilities
console_get_resource_usagereadGet resource usage statistics for all sessions
console_get_session_metricsreadGet detailed metrics for a specific console session
console_get_session_statereadGet the execution state of a console session
console_get_streamreadGet streaming output from a long-running console session
console_get_system_metricsreadGet comprehensive system monitoring metrics including CPU, memory, disk, and network usage
console_list_jobsreadList background jobs for a session or all sessions
console_list_profilesreadList all saved connection and application profiles
console_list_sessionsreadList all active console sessions
console_remove_profiledestructiveRemove a saved profile
console_save_profilewriteSave a connection or application profile for reuse
console_save_snapshotwriteSave a snapshot of current session state
console_send_inputwriteSend text input to a console session
console_send_keywriteSend special key sequences to a console session
console_start_monitoringwriteStart monitoring for a specific session with custom monitoring options
console_stop_monitoringwriteStop monitoring for a specific session
console_stop_sessionwriteStop a console session
console_use_profilewriteCreate a session using a saved profile
console_wait_for_outputreadWait for specific output pattern in console
flush_dnsdestructiveClear DNS cache
minimal_modereadSwitch to minimal resource mode
network_degradationreadSwitch to degraded network mode
ping_hostreadTest network connectivity to target host
prompt_reauthreadPrompt for re-authentication
recreate_ssh_connectionwriteCreate new SSH connection with fresh authentication
reduce_memory_usagereadReduce memory consumption
refresh_credentialsreadAttempt credential refresh
reset_network_stackdestructiveReset network connection
retry_ssh_connectionreadRetry SSH connection with same credentials
ssh_degraded_modereadSwitch to SSH degraded mode with increased timeouts
us-central1-areadus-central1-a
04

Trust audit

BLOCKgrade F · trust 44/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (10 observation(s))
Network
declared (8 observation(s))
Shell
declared (9 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
src/protocols/AnsibleProtocol.ts:491
yaml.load(content);
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
src/protocols/AnsibleProtocol.ts:677
inventory = { ...inventory, ...(yaml.load(content) as any) };
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
src/protocols/KubernetesProtocol.ts:271
const config = yaml.load(this.connectionOptions.kubeconfig) as any;
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
src/testing/TestDataLoader.ts:180
return yaml.load(content);
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/core/DataPipelineManager.ts:475
const func = new Function('value', rule.value as string);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/core/DataPipelineManager.ts:725
const func = new Function('item', 'index', `return ${mappingFunction}`);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/core/DataPipelineManager.ts:739
const func = new Function('item', 'index', `return ${filterFunction}`);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/core/DataPipelineManager.ts:753
const func = new Function(
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/core/HealthMonitor.ts:2543
exec(command, (error, stdout) => {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHNetwork egress · net.tls_off · CWE-200, CWE-319
src/protocols/XenProtocol.ts:665
rejectUnauthorized: false, // Allow self-signed certificates
Why it matters. certificate verification is disabled
Fix. leave verification on
HIGHNetwork egress · net.tls_off · CWE-200, CWE-319
src/protocols/XenProtocol.ts:988
rejectUnauthorized: false,
Why it matters. certificate verification is disabled
Fix. leave verification on
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
src/core/ConsoleManager.ts:11388
this.logger.debug(`Azure token refreshed for session: ${sessionId}`);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
src/core/SSHAdapter.ts:420
this.logger.debug(`[SSH-ATTEMPT] Has password: ${!!options.password}`);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
src/protocols/AnsibleProtocol.ts:566
this.logger.warn(`Failed to clean up temp password file: ${error}`);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
src/protocols/AzureProtocol.ts:1215
this.logger.info(`Token refreshed for session: ${sessionId}`);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
src/protocols/X11VNCProtocol.ts:897
this.logger.debug(`Failed to remove password file: ${error}`);
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
docs/protocols/aws-ssm.md:630
password: 'super-secure-password'
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
docs/protocols/gcp.md:695
apiKey: 'projects/my-project/secrets/api-key/versions/latest'
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
scripts/logger-smoke-test.mjs:23
password: 'password-must-not-appear',
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
scripts/mcp-smoke-test.mjs:52
password: 'persisted-password-must-not-appear',
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
docs/protocols/gcp.md:386
private_key: '-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n',
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
examples/azure-config.example.ts:72
targetVmPrivateKey: `-----BEGIN OPENSSH PRIVATE KEY-----
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
console_clear_output, console_remove_profile, flush_dns, reset_network_stack
Why it matters. 4 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.commitlintrc.json
.commitlintrc.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.release-please-manifest.json
.release-please-manifest.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose

Gates applied: no_behavioural_pass.

Audited 2026-10-08 · audit v0.4.1 · source sha a3b00c36df3efull audit observations/trust-audit/mcp-server/ooples__console-automation.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-08a3b00c36df3eBLOCKF44first audit
06

Questions

What is the Console Automation MCP server?

MCP server for AI-driven console application automation and monitoring

What tools does Console Automation expose?

54 in total: 38 read-only, 12 that write, and 4 that can delete or overwrite (console_clear_output, console_remove_profile, flush_dns, reset_network_stack). Every one is listed on this page with its risk.

Is Console Automation safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (44/100) and found 11 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 4 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does Console Automation need?

It reads AUDIT_ENCRYPTION_KEY, AZURE_CLIENT_SECRET, AZURE_KEY_VAULT_URL, AZURE_SECRET_NAME, PGPASSWORD, SSH_AUTH_SOCK, SSH_PASSWORD, SSH_TEST_KEY and SSH_TEST_PASS from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does Console Automation run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as console-automation-mcp at 1.1.5.

How current is this page?

The grade is for one exact copy of the source (a3b00c36df3e), read on 2026-10-08. The repository is watched and re-audited when it changes.

Advertisement