cloudpanel-mcp
npm
v2.1.1
Published by heyjishh — no publish provenance, so origin is unverified, but the source is public: the repository link below is self-declared yet readable, so you can inspect the code before adopting it.
MCP server for CloudPanel — manage sites, databases, SSL, Docker, and deploy apps via AI. Works with Claude, Cursor, OpenCode, Gemini CLI, Kiro, and any MCP client.
The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.
1. Threat score — 100 − 10.6 = 89. What the published surface and source actually contain:
| Points | What was found | Category |
|---|---|---|
| −9.5 | Untrusted input concatenated into a command sink ×2 MTC-SRC-009 | injection |
| −1.2 | Package runs install-time scripts MTC-SUP-010 | supply-chain |
2. Client adoption risk — 89 − 7 = 82. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:
| Points | Adoption-risk factor |
|---|---|
| −6 | capability blast radius (high) — client exposure if the model is manipulated |
| −1 | publisher verification (public source) — no provenance, but the source is public and inspectable |
Capability observations and info notes are shown under Findings but never scored.
Open any row's finding below for the file, line and evidence behind a deduction.
Tools that read sensitive data ([cloudpanel_export_database, cloudpanel_import_database]) and tools that can send data out ([docker_exec]) are exposed together. An agent can move private data to the sink.
Evidence: sources [cloudpanel_export_database, cloudpanel_import_database] → sinks [docker_exec]
Fix: Keep secret-reading and egress capabilities on separate, separately-approved servers.
Location: flow cloudpanel_export_database → docker_exec
In the server's implementation (`build/cli.js:16`): Reading private keys / cloud credentials, or serializing the whole environment, is a sensitive-data source that becomes exfiltration when combined with any egress. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: (os.homedir(), ".ssh", "id_ed25519"), CP_HOST: HOST, }, }; } const PLATFORMS = [ { n
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server build/cli.js
Tool "docker_exec" appears to run shell commands or evaluate code (keyword "exec" in tool name). Arbitrary execution driven by model input is one of the most dangerous MCP capabilities; combined with any untrusted input it becomes RCE.
Fix: Sandbox execution, allowlist commands/arguments, and never pass model output to a shell unescaped.
Location: tool docker_exec
In the server's implementation (`build/cli.js:2`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: import { spawn } from "child_process"; import fs from "fs"; import path from "path"; import os from "os"; const PROJECT
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server build/cli.js
In the server's implementation (`build/ssh.js:126`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: }); } async exec(command) { try { await this.connect(); return await this.ex
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server build/ssh.js
In the server's implementation (`build/index.js:186`): A shell/process command assembled from concatenated or interpolated values is command injection when any part is attacker-influenced — the OWASP canonical RCE flow. Verify what reaches the interpolated value. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: onst result = await ssh.exec(`clpctl lets-encrypt:list --domainName=${domainName} 2>/dev/null || openssl x509 -in /etc/l
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server build/index.js
In the server's implementation (`build/ssh.js:141`): A shell/process command assembled from concatenated or interpolated values is command injection when any part is attacker-influenced — the OWASP canonical RCE flow. Verify what reaches the interpolated value. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: ) { return this.exec(`clpctl ${args} 2>&1`); } async checkClpctl() { try { const res
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server build/ssh.js
Tool "docker_exec" can mutate/egress but declares no destructiveHint. Clients that don't default to spec-safe behavior may not prompt before running it.
Fix: Declare accurate annotations, and gate destructive tools on user confirmation regardless.
Location: tool docker_exec
"cloudpanel-mcp" executes install script(s) at install time. An install hook runs at install time; most are routine build/setup, but review what it does before trusting it.
Evidence: node build/cli.js install
Fix: Review the scripts; install with --ignore-scripts where possible and vet what they do.
Location: package cloudpanel-mcp
Each tool and what it can reach — statically extracted from the published source.
cloudpanel_export_databasereads sensitive datacloudpanel_import_databasereads sensitive datadocker_execruns code / shellcloudpanel_create_backupno sensitive capabilitycloudpanel_create_mysql_databaseno sensitive capabilitycloudpanel_create_mysql_userno sensitive capabilitycloudpanel_create_nodejs_siteno sensitive capabilitycloudpanel_create_php_siteno sensitive capabilitycloudpanel_create_postgresql_databaseno sensitive capabilitycloudpanel_create_python_siteno sensitive capabilitycloudpanel_create_reverse_proxy_siteno sensitive capabilitycloudpanel_create_static_siteno sensitive capabilitycloudpanel_create_userno sensitive capabilitycloudpanel_delete_backupno sensitive capabilitycloudpanel_delete_mysql_databaseno sensitive capabilitycloudpanel_delete_mysql_userno sensitive capabilitycloudpanel_delete_siteno sensitive capabilitycloudpanel_delete_userno sensitive capabilitycloudpanel_disable_2fano sensitive capabilitycloudpanel_enable_2fano sensitive capabilitycloudpanel_install_sslno sensitive capabilitycloudpanel_list_backupsno sensitive capabilitycloudpanel_list_sitesno sensitive capabilitycloudpanel_list_ssl_certificatesno sensitive capabilitycloudpanel_list_usersno sensitive capabilitycloudpanel_raw_commandno sensitive capabilitycloudpanel_system_infono sensitive capabilitycloudpanel_system_updateno sensitive capabilitydeploy_projectno sensitive capabilitydocker_container_logsno sensitive capabilitydocker_deploy_composeno sensitive capabilitydocker_list_containersno sensitive capabilitydocker_list_imagesno sensitive capabilitydocker_load_imageno sensitive capabilitydocker_loginno sensitive capabilitydocker_pruneno sensitive capabilitydocker_restart_containerno sensitive capabilitydocker_stop_containerno sensitive capabilityserver_dns_checkno sensitive capabilityserver_firewall_allow_portno sensitive capabilityserver_firewall_statusno sensitive capabilityserver_install_certbotno sensitive capabilityserver_install_dockerno sensitive capabilityserver_install_mysqlno sensitive capabilityserver_install_nginxno sensitive capabilityserver_install_nodejsno sensitive capabilityserver_install_postgresqlno sensitive capabilityserver_install_redisno sensitive capabilityserver_software_statusno sensitive capabilityCross-tool combinations that form a data-exfiltration primitive (untrusted input → sensitive source → external sink).
Scan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.
| Version | Score | Findings | Engine | Scanned |
|---|---|---|---|---|
v2.1.1 latest |
B 82/100 | 9 | 1.13.0 | 2026-09-08 |
Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.
The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.
npx mcptrustchecker scan cloudpanel-mcp --online
Security scan results for the A5sql MCP server.
Expose AgentsKit tools as an MCP server — use them from Claude Desktop, Cursor, Windsurf, or any MCP host.
MCP server for Aiven cloud data platform - manage PostgreSQL, Kafka, and other services
MCP Server for All-Inkl.com hosting via KAS API
Structured aquarium, marine, terrarium and paludarium data for AI agents.
MCP server that gives your AI agent real vehicle data — specs, representative images, federal recalls, owner complaints, service bulletins, defect investigations, and OBD-II DTC reference — from the CarVector API.