cPanel/WHM MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WHM_HOST | Yes | The WHM server hostname. HTTPS only; http:// is refused. | |
| WHM_PORT | No | WHM's HTTPS port. | 2087 |
| WHM_USERNAME | No | The user that owns the token (root or a reseller). | root |
| WHM_API_TOKEN | Yes | The WHM API token. | |
| WHM_AUDIT_LOG | No | Where write actions are logged. | ~/.whm-mcp/audit.log |
| WHM_TIMEOUT_MS | No | Timeout for each API request. | 30000 |
| WHM_TLS_INSECURE | No | Skips certificate checks. Anyone able to intercept the connection could capture your token, so use this only on a network you trust, and prefer giving the server a valid certificate. | false |
| WHM_WRITE_CATEGORIES | No | Write tools to enable: any of accounts, dns, email, or all. Empty means read-only. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| whm_list_accountsB | List cPanel accounts with their main domain, plan, owner, disk usage and suspension status. Sorted by username. |
| whm_get_accountB | Get the full summary of one cPanel account, including its limits and suspension details. |
| whm_disk_usageA | List disk and inode usage per account. Use min_percent to find accounts near their quota, or the default sort with a small limit to find the biggest consumers. Accounts with an unlimited quota have a null percent_used and are left out when min_percent is set. |
| whm_bandwidth_usageA | List bandwidth usage per account for one month, highest first. Defaults to the current month. Use a small limit to find the biggest consumers. |
| whm_list_domainsA | List domains and subdomains with their owning account, type, document root and PHP version. Use the domain filter to find which account owns a domain. |
| whm_list_dns_zonesB | List the DNS zones on this server. |
| whm_get_dns_zoneA | Get a zone's records and current serial. To change the zone, pass this serial and these line_index values to whm_edit_dns_zone. |
| whm_ssl_certificatesA | List the SSL certificate installed on each virtual host, soonest expiry first. Use expiring_within_days to find certificates that need attention. A negative days_remaining means the certificate has already expired. |
| whm_autossl_problemsA | List the latest AutoSSL domain validation (DCV) problems for one account, which usually explain why a certificate isn't renewing. |
| whm_list_email_accountsA | List an account's mailboxes with their disk usage, quota and suspension status. |
| whm_list_email_forwardersC | List the email forwarders on one domain. |
| whm_email_delivery_searchA | Search the server's mail delivery records, newest first, to work out why a message did not arrive. By default it returns failed and deferred deliveries from the last 24 hours. |
| whm_list_databasesB | List an account's MySQL databases with their size and assigned users. |
| whm_list_database_usersA | List an account's MySQL users and the databases each one can access. |
| whm_php_versionsA | List the PHP version of every virtual host. Use exact_version or older_than to find sites on an outdated version. unresolved_count is the number of sites whose version couldn't be worked out. Those sites are left out when you filter, so check them separately before calling a server clean. |
| whm_get_error_logA | Get recent error log lines for a domain. php reads the error_log file in the domain's document root. apache_error and apache_suexec read the Apache logs for that domain. If php returns nothing, the site may log PHP errors elsewhere, so try apache_error. |
| whm_account_resource_usageA | Get one account's usage against its limits, including disk, bandwidth, databases, email accounts and domains. A null maximum means unlimited. |
| whm_server_statusA | Get the server's load averages and this MCP server's safety settings, including which categories of write tools are enabled. If a write tool seems to be missing, check here first. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
Most tools target a clearly distinct resource (accounts, DNS, SSL, email, databases, PHP, logs), and descriptions add useful cross-references (e.g. get_dns_zone pointing to edit_dns_zone, error-log source hints). Minor overlap: whm_list_accounts vs whm_get_account, and whm_disk_usage/whm_bandwidth_usage/whm_account_resource_usage all report usage from different angles, so an agent must read descriptions to pick correctly.
All names share a consistent whm_ prefix, but the conventions below that are mixed: verb_noun (whm_get_account, whm_list_accounts, whm_get_error_log) versus plain noun phrases (whm_disk_usage, whm_ssl_certificates, whm_php_versions, whm_server_status) and one noun_verb oddity (whm_email_delivery_search). It stays readable, but the pattern is not predictable from name alone.
18 tools is on the high side, but each maps to a distinct facet of server administration (accounts, DNS, SSL/AutoSSL, mail, databases, PHP, logs, server health), so none feel redundant. Slightly heavy but reasonable for a WHM-wide inspection surface.
The read/diagnostic surface is broad and coherent, but it is almost entirely read-only: no write/edit/delete operations appear, and whm_get_dns_zone explicitly instructs passing the serial to whm_edit_dns_zone, a tool that does not exist in this set. whm_server_status hints write tools may be gated, but from the agent's view these are dead ends.