DirectAdmin MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port for the HTTP/SSE server. | 8888 |
| DA_URL | Yes | Base URL of the DirectAdmin panel, e.g. https://panel.example.com:2222. | |
| MCP_HOST | No | Host/interface for the HTTP/SSE server. | 127.0.0.1 |
| AUDIT_LOG | No | Path to the JSONL audit log. | logs/audit.jsonl |
| ENABLE_CSF | No | Enable CSF/firewall plugin calls. | true |
| DA_USERNAME | Yes | DirectAdmin username with API access, usually admin. | |
| DA_LOGIN_KEY | Yes | DirectAdmin login key (not the main password). | |
| DA_SSL_VERIFY | No | Verify the panel SSL certificate. | true |
| TOOL_DENYLIST | No | Optional comma-separated list of tool names to deny. | da_execute |
| DA_IMPERSONATE | No | Default user to impersonate when performing actions; prefer per-tool impersonate parameter. | |
| ENABLE_EXECUTE | No | Enable /api/execute passthrough. | false |
| MCP_AUTH_TOKEN | No | Bearer token required for HTTP/SSE access in production. | |
| TOOL_ALLOWLIST | No | Optional comma-separated list of tool names to allow. | |
| REQUIRE_CONFIRM | No | Whether destructive tools require confirm=true. | true |
| ENABLE_CLOUDLINUX | No | Enable CloudLinux tools (opt-in). | false |
| MCP_ALLOWED_CIDRS | No | Optional comma-separated list of client CIDRs allowed to connect. | |
| ENABLE_CSF_DISABLE | No | Allow csf_disable tool. Denied by default. | false |
| RATE_LIMIT_PER_MINUTE | No | Rate limit per client identity. | 60 |
| ENABLE_SERVICE_CONTROL | No | Enable service control tools like services_restart. | false |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| policy_statusA | Show which optional capabilities are on. A denied tool means the matching ENABLE_* flag is false. Do not try to bypass it. Ask the operator to flip the flag on the host if they want that class of action. |
| audit_searchA | Search the structured MCP audit log. Answers: which agent restarted which service, who triggered an update, whether a call was denied by policy or outside the maintenance window. Args: tool: Tool name or prefix (services_restart, ssl_). actor: Agent id (X-Agent-Id / MCP_ACTOR). event: tool_call, tool_ok, tool_denied, tool_window_denied, … query: Substring match on the redacted JSON line. since: ISO timestamp (inclusive). until: ISO timestamp (inclusive). limit: Max rows (1–200). |
| audit_recentA | Last N audit events (newest first). Same log as audit_search. |
| window_nowA | Is the maintenance window open right now? Reads still work when it is closed. |
| inventory_listB | Fleet catalog on the hops host (no secrets). Who has CloudLinux, which profile. |
| inventory_thisC | The DirectAdmin box this MCP process is wired to. |
| inventory_getA | Look up one server in the hops inventory. Args: server_id: id from inventory_list. |
| ssl_list_domain_certsA | List TLS certificates installed on a user domain. Args: domain: Fully-qualified domain (example.com). impersonate: Optional user to act as (admin login-as). |
| ssl_get_domain_acme_configA | Read ACME (Let's Encrypt / ZeroSSL) configuration for a domain. Args: domain: Fully-qualified domain. impersonate: Optional user to act as. |
| ssl_set_domain_acme_configA | Update ACME settings for a domain before issuing or reissuing a cert. Args: domain: Fully-qualified domain. enabled: Whether ACME auto-management is on. provider: '' | letsencrypt | letsencrypt-staging | zerossl key_type: rsa2048 | rsa4096 | ec256 | ec384 prefer_wildcard: Request *.domain when DNS challenge is available. dns_provider: Optional DNS plugin name (cloudflare, …) for DNS-01. skip_dns_names: Names that ACME should ignore. dns_environment: Provider env vars (tokens are redacted in logs). impersonate: Optional user to act as. confirm: Must be true — writes ACME secrets. |
| ssl_reissue_domainA | Reissue / provision the Let's Encrypt (or configured ACME) certificate for a domain. This is the primary 'renew/reissue SSL' action. It calls POST /api/domain-tls/{domain}/provision-certs (or the dry-run sibling). DirectAdmin must have ACME enabled for the domain — use ssl_get_domain_acme_config first if you are unsure. For hostname/server certs use ssl_reissue_server. Args: domain: Fully-qualified domain to reissue. impersonate: User that owns the domain (recommended for admin). dry_run: If true, validate only — do not hit the CA. confirm: Required unless dry_run is true. |
| ssl_reissue_domain_legacyA | Fallback Let's Encrypt request via legacy CMD_API_SSL (older DirectAdmin). Use ssl_reissue_domain first. This exists for panels that predate /api/domain-tls. Args: domain: Domain to issue. wildcard: Include *.domain (needs DNS challenge). entries: Extra hostnames (www, mail, …). Defaults to domain + www.domain. keysize: secp384r1 | ecdsa | 4096 | 2048 encryption: sha256 impersonate: Owning user. confirm: Required. |
| ssl_delete_domain_certA | Delete one certificate from a domain. Args: domain: Domain. cert_id: Certificate id from ssl_list_domain_certs. update_acme_skiplist: Let ACME manage this name again after delete. impersonate: Owning user. confirm: Required. |
| ssl_get_cert_filesA | Download certificate + chain + key files for a domain cert id. The private key is returned by DirectAdmin — treat the response as secret. Args: domain: Domain. cert_id: Certificate id. impersonate: Owning user. |
| ssl_upload_cert_filesA | Replace a domain certificate with uploaded PEM files. Args: domain: Domain. cert_id: Certificate id. certificate: PEM certificate body. key: PEM private key. chain: Optional intermediate PEM list. force: Allow a certificate that fails validation. dry_run: Validate only. impersonate: Owning user. confirm: Required unless dry_run. |
| ssl_create_csrC | Create a CSR for a domain certificate slot (commercial CA flow). Args: domain: Domain. cert_id: Certificate id. common_name: CN, defaults to the domain. impersonate: Owning user. |
| ssl_install_self_signedA | Install a self-signed certificate on a domain (lab / placeholder only). Args: domain: Domain. cert_id: Certificate id. dns_names: SANs. Defaults to [domain]. key_type: rsa2048 | rsa4096 | ec256 | ec384 overwrite: Replace existing material. impersonate: Owning user. confirm: Required. |
| ssl_server_statusA | Hostname / DirectAdmin service TLS status (not a user domain). |
| ssl_server_certificateA | Read the current hostname certificate metadata. |
| ssl_server_acme_configA | Read ACME configuration used for the server hostname certificate. |
| ssl_set_server_acme_configA | Update ACME settings for the DirectAdmin hostname certificate. Args: account: ACME account email. enabled: Enable ACME for the hostname. provider: '' | letsencrypt | letsencrypt-staging | zerossl key_type: rsa2048 | rsa4096 | ec256 | ec384 additional_domains: Extra names on the hostname cert. dns_provider: Optional DNS-01 provider. dns_environment: Provider secrets. confirm: Required. |
| ssl_reissue_serverB | Force-obtain / reissue the DirectAdmin hostname TLS certificate. Calls POST /api/server-tls/obtain. Use this when the panel hostname cert is expired or the hostname changed. Args: confirm: Required. |
| ssl_server_enableA | Enable TLS on the DirectAdmin service itself. Args: force: Force the switch even if a cert looks incomplete. confirm: Required. |
| ssl_server_filesA | Download the hostname certificate and key (secret). |
| ssl_server_upload_filesB | Replace the hostname certificate with uploaded PEM files. Args: certificate: PEM cert (+ optional chain). key: PEM private key. force: Allow an invalid cert. confirm: Required. |
| ssl_acme_dns_providersA | List ACME DNS-01 providers the panel knows about (Cloudflare, …). |
| ssl_admin_listA | List every user/domain certificate the Admin SSL page shows. This is the Admin Level → Admin SSL overview (CMD_ADMIN_SSL?json=yes). It is not in the New JSON API. Requires Pro Pack and a login key that is allowed to run CMD_ADMIN_SSL. Use this to see which customer domains are missing, expired, or valid before calling ssl_admin_reissue. |
| ssl_admin_reissueA | Request Let's Encrypt certificates for selected customer domains. This is the Admin SSL icon action: POST CMD_ADMIN_SSL action=multiple. The panel queues ACME in the background (dataskq) — no impersonation. Prefer this when an operator says “reissue SSL for these clients” from the Admin SSL page. For a single domain on a modern panel, ssl_reissue_domain (New API, impersonate the owner) is more precise. Args: domains: Customer domain names as listed by ssl_admin_list (max 50). wildcard: Request *.domain (dns-01). Default is http-01 / per-host. confirm: Required. |
| ssl_admin_flagsA | Read admin_ssl_* and letsencrypt_* flags from directadmin.conf. These control the automatic Admin SSL poller (install-to-missing, replace-expired, cert-on-create). Change them with da_config_local_patch. |
| csf_search_ipA | Search CSF/iptables/LFD for an IP (csf -g). Shows why it is blocked. Args: ip: IPv4 or IPv6 address. |
| csf_ip_reasonA | Why CSF/LFD listed this IP (list + LFD comment). Safe to show an operator. Parses Args: ip: IPv4 or IPv6. |
| csf_unblock_ipA | Unblock an IP in CSF/LFD (permanent deny + temporary ban). This is the primary 'unlock from firewall' action. It:
Pair with bfm_unblock_ip if DirectAdmin Brute Force Monitor also listed the IP. Args: ip: IPv4 or IPv6 to unblock. also_allow: After unblock, temporarily whitelist the IP. allow_ttl_seconds: TTL for the optional temporary allow (default 1h). comment: Note stored next to the allow rule. confirm: Required. |
| csf_allow_ipA | Whitelist an IP in CSF (csf -a / temporary allow). Allowed IPs bypass closed ports but LFD can still block them unless ignored. Args: ip: IPv4, IPv6, or CIDR. comment: Note stored with the rule. temporary: Use a TTL instead of a permanent allow. ttl_seconds: Lifetime when temporary=true. confirm: Required. |
| csf_deny_ipA | Block an IP in CSF (csf -d / temporary deny). Args: ip: IPv4, IPv6, or CIDR. comment: Note stored with the rule. temporary: Use a TTL instead of a permanent deny. ttl_seconds: Lifetime when temporary=true. confirm: Required. |
| csf_ignore_ipB | Add an IP to csf.ignore so LFD never blocks it. Args: ip: IPv4, IPv6, or CIDR. comment: Note. confirm: Required. |
| csf_remove_allowC | Remove an IP from the CSF allow list (csf -ar). Args: ip: Address to remove. confirm: Required. |
| csf_flush_tempC | Flush all CSF temporary allow/deny rules (csf -tf). Args: confirm: Required. |
| csf_restartC | Restart CSF, and optionally LFD. Args: also_lfd: Restart both csf and lfd (csf -ra). confirm: Required. |
| csf_enableC | Enable CSF (csf -e). Args: confirm: Required. |
| csf_disableA | Disable CSF (csf -x). Dangerous — the host is unprotected until re-enabled. Blocked unless ENABLE_CSF_DISABLE=true. Prefer csf_unblock_ip instead. Args: confirm: Required. |
| csf_statusA | Best-effort CSF plugin landing / status page (HTML or structured). |
| bfm_listA | List Brute Force Monitor state (blocked IPs, failed logins). For one IP use bfm_ip_reason — that is the 'why was this blocked' view. Args: blocked_only: Hint for the client; the panel still returns the full JSON. |
| bfm_ip_reasonA | Why Brute Force Monitor listed this IP (service, user, attempts, log line). Returns operator Args: ip: IPv4 or IPv6 to explain. |
| ip_block_reasonA | Why this IP is blocked — CSF/LFD and Brute Force Monitor together. This is the tool to call when the operator (or the customer) asks "защо е блокиран". Read-only. Returns:
If there is no recorded reason, says so instead of inventing one. Args: ip: IPv4 or IPv6. |
| bfm_unblock_ipA | Remove an IP from DirectAdmin Brute Force Monitor blocks. Use together with csf_unblock_ip — an IP is often listed in BOTH places. Args: ip: IPv4 or IPv6 to unblock. confirm: Required. |
| bfm_skip_ipC | Add an IP to the BFM skip / never-block list. Args: ip: Address to skip. confirm: Required. |
| firewall_unblock_everywhereA | Unblock an IP in CSF and DirectAdmin Brute Force Monitor. This is the 'customer is locked out' button. It does not disable the firewall. Args: ip: IPv4 or IPv6. also_allow: Also add a temporary CSF allow (1 hour). confirm: Required. |
| users_list_allA | List every user on the server (admin). |
| users_listA | List users owned by the current reseller, or by Args: reseller: Optional reseller username. |
| resellers_listA | List all reseller accounts. |
| admins_listA | List all admin accounts. |
| users_searchC | Search users via the New API. Args: q: Query string (username / domain / email fragment). extended: Use /api/search/users-extended. |
| users_get_configB | Get user.conf style configuration (limits, domains, suspended flag). Args: username: Account name. |
| users_get_usageC | Get live usage + limits for a user. Args: username: Account name. |
| users_login_historyB | Login history for a specific user. Args: username: Account name. |
| resellers_get_configC | Reseller configuration. Args: username: Reseller name. |
| resellers_get_usageB | Combined reseller + owned-users usage. Args: username: Reseller name. |
| users_createA | Create a user from a package (legacy CMD_API_ACCOUNT_USER). Args: username: New username (usually 3–16 alphanumeric). email: Contact email. password: Initial password (prefer sending a login-key later). domain: Primary domain. package: Existing user package name. ip: shared | sharedreseller | a free IP. notify: Email the welcome message. confirm: Required. |
| resellers_createB | Create a reseller from a reseller package. Args: username: New reseller. email: Contact email. password: Initial password. domain: Primary domain. package: Reseller package name. ip: shared | sharedreseller | assign. notify: Send welcome email. confirm: Required. |
| users_deleteB | Permanently delete a user/reseller/admin account. Args: username: Account to delete. confirm: Required. |
| users_suspendC | Toggle suspend/unsuspend for an account (DirectAdmin toggle). Args: username: Account. confirm: Required. |
| users_change_passwordA | Change another account's password (admin). Args: username: Target account. Empty / current user uses /api/change-password. new_password: New password. confirm: Required. |
| users_change_creatorC | Move a user to a different reseller/creator. Args: username: User to move. new_creator: Destination reseller/admin. confirm: Required. |
| users_convert_to_resellerB | Promote a user account to reseller. Args: username: User to promote. confirm: Required. |
| resellers_convert_to_userC | Demote a reseller to a regular user. Args: username: Reseller to demote. confirm: Required. |
| admin_usageB | Current admin's resource usage. |
| users_existsB | Check whether an account name already exists (admin). Args: username: Candidate username. |
| users_unsuspendC | Unsuspend an account (same toggle endpoint as users_suspend). Args: username: Account. confirm: Required. |
| users_modifyA | Customize limits on an existing user (CMD_API_MODIFY_USER). Empty strings leave that field unchanged. Use 'unlimited' or a number. Args: username: Account. bandwidth: Bandwidth MB or unlimited. quota: Disk MB or unlimited. vdomains: Domain limit or unlimited. nemails: Mailbox limit or unlimited. mysql: Database limit or unlimited. php: ON | OFF ssl: ON | OFF ssh: ON | OFF confirm: Required. |
| admins_createB | Create another admin account. Args: username: New admin. email: Contact email. password: Initial password. notify: Send welcome email. confirm: Required. |
| packages_user_listA | List user packages, or show one package. Args: package: Optional package name. |
| packages_reseller_listB | List reseller packages (legacy), or one package. Args: package: Optional package name. |
| packages_reseller_new_apiC | Reseller packages via the New API. Args: package: Optional package name for /api/reseller-packages/{package}. |
| packages_user_deleteC | Delete a user package. Args: package: Package name. confirm: Required. |
| packages_user_saveA | Create or overwrite a user package. Args: name: Package name. bandwidth: MB or unlimited. quota: MB or unlimited. vdomains: Domain limit or unlimited. nemails: Mailbox limit or unlimited. mysql: Database limit or unlimited. php: ON | OFF ssl: ON | OFF cgi: ON | OFF confirm: Required. |
| ips_listA | List IPs visible to this reseller/admin. |
| ips_getB | Details for one IP. Args: ip: Address. |
| ips_admin_listB | Admin-level IP list (CMD_API_IP_MANAGER). |
| ips_addC | Add an IP to the admin IP manager. Args: ip: Address to add. netmask: Netmask (IPv4) or prefix hint. confirm: Required. |
| ips_removeC | Remove an IP from the admin IP manager. Args: ip: Address to remove. confirm: Required. |
| ips_assignC | Assign an IP to a reseller/user. Args: ip: Address. username: Destination account. confirm: Required. |
| dns_admin_listA | List DNS zones (admin). |
| dns_zone_getB | Get records for a zone. Args: domain: Zone name. |
| dns_record_addA | Add a DNS record. Args: domain: Zone. record_type: A | AAAA | CNAME | MX | TXT | NS | SRV | CAA … name: Record name (use @ or the domain for the apex). value: Record value. ttl: TTL seconds. confirm: Required. |
| dns_record_deleteC | Delete a DNS record. Args: domain: Zone. record_type: Type. name: Name. value: Value (required by most DA versions). confirm: Required. |
| domains_list_userA | List domains owned by a user (admin) or the current account. Args: username: Optional account. Empty = current session (CMD_API_SHOW_DOMAINS). |
| domains_createA | Create an additional domain on the current (or impersonated) user. Args: domain: FQDN to add. bandwidth: MB or 'unlimited'. quota: MB or 'unlimited'. ssl: Enable SSL for the domain. cgi: Enable CGI. php: Enable PHP. impersonate: Owning user (admin should set this). confirm: Required. |
| domains_deleteC | Delete a domain from an account. Args: domain: Domain to remove. impersonate: Owning user. confirm: Required. |
| subdomains_listA | List subdomains of a domain. Args: domain: Parent domain. impersonate: Owning user. |
| subdomains_createA | Create a subdomain. Args: domain: Parent domain. subdomain: Left-most label only (e.g. 'shop', not shop.example.com). impersonate: Owning user. confirm: Required. |
| subdomains_deleteA | Delete a subdomain. Args: domain: Parent domain. subdomain: Label to remove. contents: Also delete files under the subdomain document root. impersonate: Owning user. confirm: Required. |
| domain_pointers_listA | List domain pointers (aliases) for a domain. Args: domain: Parent domain. impersonate: Owning user. |
| domain_pointers_createC | Add a domain pointer / alias. Args: domain: Existing parent domain. from_domain: New hostname that should point at the parent. alias: True = alias (same site), False = pointer (redirect). impersonate: Owning user. confirm: Required. |
| domain_pointers_deleteB | Remove a domain pointer. Args: domain: Parent domain. pointer: Pointer hostname. impersonate: Owning user. confirm: Required. |
| redirects_listA | List site redirects for a domain. Args: domain: Domain. impersonate: Owning user. |
| redirects_createA | Create a site redirect. Args: domain: Domain. path: Source path (e.g. /old). destination: Target URL. redirect_type: 301 | 302 | 303. impersonate: Owning user. confirm: Required. |
| email_pop_listA | List POP/IMAP accounts on a domain. Args: domain: Domain. full: Use action=full_list (quota + usage) when true. impersonate: Owning user. |
| email_pop_createA | Create a mailbox (user@domain). Args: domain: Domain. user: Local part only (before @). password: Mailbox password. quota_mb: 0 = unlimited. impersonate: Owning user. confirm: Required. |
| email_pop_deleteC | Delete a mailbox. Args: domain: Domain. user: Local part. impersonate: Owning user. confirm: Required. |
| email_pop_modifyA | Change mailbox password and/or quota. Args: domain: Domain. user: Local part. password: New password (empty = leave unchanged). quota_mb: New quota; -1 = leave unchanged, 0 = unlimited. impersonate: Owning user. confirm: Required. |
| email_forwarders_listB | List forwarders on a domain. Args: domain: Domain. impersonate: Owning user. |
| email_forwarder_createC | Create an email forwarder. Args: domain: Domain. user: Local part (source). destination: Destination address or comma-separated list. impersonate: Owning user. confirm: Required. |
| email_forwarder_deleteC | Delete a forwarder. Args: domain: Domain. user: Local part. impersonate: Owning user. confirm: Required. |
| email_autoresponders_listB | List autoresponders on a domain. Args: domain: Domain. impersonate: Owning user. |
| email_logsA | Global email logs (admin). |
| email_logs_summaryC | Email log summary. |
| email_logs_userB | Current/impersonated user email logs. |
| email_vacation_listC | Vacation / autoresponder list for a domain. Args: domain: Domain. |
| email_vacation_getC | One vacation message. Args: domain: Domain. user: Local part. |
| email_vacation_setB | Create/update a vacation message. Args: domain: Domain. user: Local part. values: Vacation body. confirm: Required. |
| email_vacation_deleteC | Delete a vacation message. Args: domain: Domain. user: Local part. confirm: Required. |
| email_mobileconfigB | Apple mobileconfig for the current email account. |
| imapsync_migrationsC | IMAP migration tasks. |
| imapsync_importB | Import mail from a remote IMAP server into this box. Args: payload: Panel imapsync import body (host, user, password, dest). confirm: Required. Passwords in the payload are redacted in logs. |
| imapsync_exportC | Export mail from this box to a remote IMAP server. Args: payload: Panel imapsync export body. confirm: Required. |
| imapsync_cancelB | Cancel a running IMAP migration. Args: migration_id: Id from imapsync_migrations. confirm: Required. |
| ftp_listA | List FTP accounts for a domain. Args: domain: Domain. impersonate: Owning user. |
| ftp_createB | Create an FTP account. Args: domain: Domain. user: FTP username (local part). password: FTP password. path_type: domain | ftp | user | custom custom_path: Required when path_type=custom. impersonate: Owning user. confirm: Required. |
| ftp_deleteC | Delete an FTP account. Args: domain: Domain. user: FTP username. impersonate: Owning user. confirm: Required. |
| cron_listA | List cron jobs for the current (or impersonated) user. Args: impersonate: Owning user. |
| cron_createC | Create a cron job. Args: minute: Cron minute (0-59 or *). hour: Cron hour. day_of_month: Day of month. month: Month. day_of_week: Day of week. command: Command to run (no shell metachar redirection from untrusted input). impersonate: Owning user. confirm: Required. |
| cron_deleteA | Delete a cron job by its panel id / select key. Args: job_id: Id from cron_list (select0 value). impersonate: Owning user. confirm: Required. |
| domains_set_phpB | Set the PHP version selector for a domain. Args: domain: Domain. php1_select: Selector index from the panel (often '1', '2', … mapping to php versions). impersonate: Owning user. confirm: Required. |
| backups_admin_listA | List admin-level backups / backup settings. |
| backups_createA | Create a backup for one user. Args: username: Account to back up. where: Backup destination the panel understands (local / ftp / …). confirm: Required. |
| backups_restoreB | Restore a user from a local backup file. Args: username: Account to restore into. file: Backup filename as listed by the panel. confirm: Required. |
| backups_admin_nowC | Kick an admin-level backup now. Args: who: all | or a username. where: Destination the panel understands. confirm: Required. |
| system_infoB | High-level panel info (/api/info). |
| system_versionB | DirectAdmin version and update channel. |
| system_set_update_channelA | Change the DirectAdmin update channel. Args: channel: current | stable | beta | alpha (panel-dependent). confirm: Required. |
| system_update_directadminB | Update DirectAdmin itself to the latest build on the current channel. Args: confirm: Required. |
| system_restart_directadminC | Restart the DirectAdmin service. Args: confirm: Required. |
| system_cpuC | CPU information. |
| system_memoryC | Memory information. |
| system_loadB | 1/5/10 minute load averages. |
| system_diskC | Filesystem usage. |
| system_uptimeB | Host uptime. |
| system_services_overviewC | Services occupancy snapshot (not the systemd list). |
| system_resource_usage_latestA | Latest per-user resource usage snapshot. |
| system_resource_usage_historyC | Historical resource usage. |
| system_global_usage_latestB | Latest global resource usage. |
| system_global_usage_historyC | Global resource usage history for one user. Args: user: Username. |
| system_packages_updatesB | Available OS package upgrades. |
| system_packages_update_testA | Dry-run OS package upgrade. Args: packages: Optional package name list. Empty = all pending. |
| system_packages_update_runB | Apply OS package upgrades. Args: packages: Optional package name list. Empty = all pending. confirm: Required. |
| system_packages_historyB | History of OS package upgrade tasks. |
| license_getC | DirectAdmin license details. |
| license_proofC | License proof document. |
| license_update_keyC | Install a new license key. Args: key: License key. confirm: Required. |
| maintenance_listC | Maintenance tasks / health checks the panel exposes. |
| maintenance_checkB | Run a maintenance check. Args: task: Task id from maintenance_list. |
| maintenance_fixC | Apply a maintenance fix. Args: task: Task id. confirm: Required. |
| services_listA | List managed services (httpd, exim, dovecot, named, …). |
| services_getA | Details for one service. Args: service: Service name (e.g. httpd, exim, dovecot, named, proftpd). |
| services_logsB | Read a service log. Args: service: Service name. cursor: Pagination cursor from a previous response. limit: Max lines. level: Optional log level filter. |
| services_startC | Start a service. Args: service: Service name. confirm: Required. |
| services_stopC | Stop a service. Args: service: Service name. confirm: Required. |
| services_restartC | Restart a service. Args: service: Service name. confirm: Required. |
| services_reloadC | Reload a service configuration. Args: service: Service name. confirm: Required. |
| services_watchdogC | Toggle the service watchdog. Args: service: Service name. enabled: True to watch, False to stop watching. confirm: Required. |
| hostname_changeB | Change the server hostname. Args: hostname: New FQDN. confirm: Required. Reissue the hostname SSL afterwards with ssl_reissue_server. |
| da_config_activeA | Currently applied directadmin.conf (merged). |
| da_config_defaultC | Default directadmin.conf values. |
| da_config_localC | Local overrides in directadmin.conf. |
| da_config_local_updateB | Replace local directadmin.conf overrides (PUT). Args: values: Full local config object as the panel expects. confirm: Required. |
| da_config_local_patchC | Patch selected directadmin.conf keys. Args: values: Partial local config. confirm: Required. |
| timezone_currentA | Current server timezone. |
| timezone_listB | Available timezones. |
| timezone_setC | Set server timezone. Args: timezone: IANA name, e.g. Europe/Sofia. confirm: Required. |
| email_server_configC | Global email / exim configuration. |
| email_server_config_updateC | Update global email configuration. Args: values: Config object. confirm: Required. |
| email_outbound_filterC | Outbound email filter settings. |
| email_outbound_filter_updateC | Update outbound email filter. Args: values: Filter object. confirm: Required. |
| db_server_configB | SQL server connection settings used by the panel. |
| db_server_config_updateC | Update SQL server settings. Args: values: Config object. confirm: Required. |
| db_server_config_testA | Test the configured SQL connection. |
| login_keys_listA | List login keys on the current account. |
| login_keys_commandsC | Commands a login key can be restricted to. |
| login_keys_getC | Get one login key. Args: key_id: Key id. |
| login_keys_historyC | Usage history for a login key. Args: key_id: Key id. |
| login_keys_createB | Create a login key. Prefer IP-restricted, command-restricted keys. Args: payload: Create body as documented by /api/login-keys/keys (name, expires, ips, commands, …). confirm: Required. |
| login_keys_updateC | Update a login key. Args: key_id: Key id. payload: Patch body. confirm: Required. |
| login_keys_deleteC | Delete a login key. Args: key_id: Key id. confirm: Required. |
| login_urls_listA | List one-time / login-as URLs. |
| login_urls_createC | Create a login URL. Args: payload: Create body. confirm: Required. |
| login_urls_deleteC | Delete a login URL. Args: url_id: URL id. confirm: Required. |
| login_url_one_shotC | Create a one-shot panel login URL (POST /api/login/url). Args: payload: Optional body the panel expects. |
| session_getA | Current session (who am I, level, selected domain). |
| session_stateC | Session UI state. |
| session_user_configC | Current account user.conf. |
| session_user_usageC | Current account usage. |
| session_reseller_configA | Current reseller config (when logged in as reseller/admin). |
| session_switch_domainB | Switch the active domain in the session. Args: domain: Domain to select. |
| session_login_asA | Switch the session into another account (login-as). Prefer the impersonate= argument on individual tools — it does not mutate the long-lived session. Args: username: Account to impersonate. confirm: Required. |
| session_login_as_returnA | Leave a login-as session and return to the admin. |
| session_login_as_usersB | Search users available for login-as. Args: q: Query. limit: Max rows. |
| sessions_listB | List active sessions for this account. |
| sessions_destroyC | Destroy one other session. Args: public_id: Session public id. confirm: Required. |
| sessions_destroy_all_otherB | Destroy every other session (force logout everywhere else). Args: confirm: Required. |
| login_historyA | Current account login history. |
| profile_settingsB | Current profile settings. |
| profile_settings_updateC | Patch profile settings. Args: values: Partial settings object. |
| messages_listC | Message center list. |
| messages_getC | Read one message. Args: message_id: Message id. |
| tickets_listD | Support tickets. |
| ticket_requestsC | Ticket requests queue. |
| mfa_enableC | Enable multi-factor authentication on the current account. Args: payload: Panel-specific body (otp, password, …). confirm: Required. |
| mfa_disableC | Disable MFA. Args: payload: Usually includes the current password / OTP. confirm: Required. |
| mfa_generate_secretA | Generate a new TOTP secret (enrolment). |
| mfa_recovery_codesB | List MFA recovery codes. |
| security_txt_statusC | security.txt status. |
| modsecurity_globalC | Global ModSecurity configuration. |
| modsecurity_global_updateC | Update global ModSecurity configuration. Args: values: Config object. confirm: Required. |
| modsecurity_all_configsB | All ModSecurity per-host configs. |
| modsecurity_user_configsB | Current user's ModSecurity configs. |
| modsecurity_host_configC | ModSecurity config for one hostname. Args: hostname: vhost name. |
| modsecurity_audit_summaryC | ModSecurity audit log summary. |
| modsecurity_audit_entryD | One ModSecurity audit entry. Args: entry_id: Optional entry identifier (query). |
| clamav_statusD | ClamAV status / start a scan (GET). |
| clamav_scanB | Start a ClamAV scan. Args: payload: Scan options as the panel expects. confirm: Required. |
| clamav_killA | Kill a running ClamAV scan. Args: pid: Process id from clamav_status. confirm: Required. |
| redis_statusA | Per-user Redis status. |
| redis_enableB | Enable Redis for the current/impersonated user. Args: confirm: Required. |
| redis_disableC | Disable Redis. Args: confirm: Required. |
| web_protect_listB | Directory password-protection list. |
| db_infoC | Database server info. |
| db_listA | List databases visible to the current/impersonated account. |
| db_getC | Details for one database. Args: database: Database name. |
| db_usersA | List database users. |
| db_user_getD | One database user. Args: dbuser: DB username. |
| db_createC | Create a database. Args: payload: Create body (name, charset, …). confirm: Required. |
| db_create_with_userB | Create a database and a user in one call. Args: payload: Combined create body. confirm: Required. |
| db_create_userC | Create a database user. Args: payload: User body. confirm: Required. |
| db_deleteC | Drop a database. Args: database: Name. confirm: Required. |
| db_delete_userC | Drop a database user. Args: dbuser: Name. confirm: Required. |
| db_change_user_passwordC | Change a database user password. Args: dbuser: Name. password: New password. confirm: Required. |
| db_repairC | Repair a database. Args: database: Name. confirm: Required. |
| db_optimizeC | Optimize a database. Args: database: Name. confirm: Required. |
| db_checkD | Check a database. Args: database: Name. |
| db_processesB | Show process list (admin). |
| db_kill_processC | Kill a database process. Args: process_id: Process id. confirm: Required. |
| fm_listB | List a directory. Args: path: Absolute path inside the account home. |
| fm_treeB | Directory tree. Args: path: Starting path. |
| fm_disk_usageC | Disk usage for a path. Args: path: Path. |
| fm_search_filesB | Search file names. Args: query: Filename fragment. path: Root to search. |
| fm_search_textC | Search file contents. Args: query: Text. path: Root to search. |
| fm_mkdirC | Create a directory. Args: path: New directory path. confirm: Required. |
| fm_removeC | Move paths to trash (or delete, depending on panel settings). Args: paths: List of paths. confirm: Required. |
| fm_moveC | Move files. Args: payload: Source/destination body. confirm: Required. |
| fm_copyC | Copy files. Args: payload: Source/destination body. confirm: Required. |
| fm_chmodC | Change permissions. Args: payload: Paths + mode. confirm: Required. |
| fm_trashA | List trash. |
| cb_stateC | CustomBuild current state. |
| cb_softwareC | Installed / available software. |
| cb_versionsC | Component versions. |
| cb_updatesC | Available CustomBuild updates. |
| cb_optionsC | CustomBuild options (options.conf). |
| cb_options_updateC | Patch CustomBuild options. Args: values: Options object. confirm: Required. |
| cb_runC | Start a CustomBuild run (build / update / rewrite). Args: payload: Run arguments (action, software, …). confirm: Required. |
| cb_killB | Kill a running CustomBuild job. Args: confirm: Required. |
| cb_logsC | CustomBuild log names. |
| cb_actionsB | Available CustomBuild actions. |
| cb_removalsD | Software CustomBuild can remove. |
| plugins_listA | Installed plugins (user-facing list). |
| plugins_manager_listB | Plugin manager inventory (admin). |
| plugins_install_urlB | Install a plugin from a URL. Args: url: https URL to a .tar.gz plugin. confirm: Required. |
| plugins_activateC | Activate a plugin. Args: plugin_id: Plugin id. confirm: Required. |
| plugins_deactivateC | Deactivate a plugin. Args: plugin_id: Plugin id. confirm: Required. |
| plugins_updateC | Update a plugin from its update_url. Args: plugin_id: Plugin id. confirm: Required. |
| plugins_deleteC | Uninstall a plugin. Args: plugin_id: Plugin id. confirm: Required. |
| wp_locationsB | List WordPress installations. |
| wp_installC | Install WordPress. Args: payload: Install body (domain, path, title, admin user, …). confirm: Required. |
| wp_install_quickC | Quick WordPress install. Args: payload: Quick-install body. confirm: Required. |
| wp_getC | WordPress instance details. Args: location_id: Location id. |
| wp_deleteC | Remove a WordPress location from the manager. Args: location_id: Location id. confirm: Required. |
| git_listB | List git applications on a domain. Args: domain: Domain. |
| git_getC | One git application. Args: uuid: Application uuid. |
| git_deployC | Trigger a git deploy. Args: uuid: Application uuid. confirm: Required. |
| git_fetchC | Fetch remotes for a git application. Args: uuid: Application uuid. |
| git_webhookA | Create or rotate the deploy webhook for a git application. Args: username: Owning user. uuid: Application uuid. confirm: Required — webhook URLs are secrets. |
| propack_inventoryA | Map every Pro Pack feature to the curated tool that covers it. Modern licenses include Pro Pack. Web Terminal is intentionally not wrapped. |
| unit_listA | List Nginx Unit applications and routes for a domain (CMD_UNIT). Args: domain: Domain that owns the Unit apps. impersonate: Owning user. |
| unit_createB | Create an empty Nginx Unit application stub (then edit JSON in the panel). Args: domain: Domain. name: Application name (saved as domain_name). impersonate: Owning user. confirm: Required. |
| unit_deleteC | Delete one or more Nginx Unit applications. Args: domain: Domain. names: Application names. impersonate: Owning user. confirm: Required. |
| nginx_set_templateB | Apply a Pro Pack Nginx CMS template (WordPress, Drupal, FastCGI cache, …). Args: domain: Domain. template: wordpress | wordpress_cache | drupal | joomla | magento | laravel | default | none impersonate: Owning user. confirm: Required. |
| cl_statusA | Detect CloudLinux / LVE Manager on this box. Reads the plugin list and pings LVE Manager. Does not change anything. |
| cl_lve_usersB | List LVE users / current limits (LVE Manager |
| cl_lve_getB | LVE limits for one user. Args: username: DirectAdmin account. |
| cl_lve_setA | Set LVE limits for one user (CPU/RAM/IO/processes). Only numeric values, percents, or 'unlimited'. This is the CloudLinux equivalent of Pro Pack cgroups throttle. Args: username: Account. speed: CPU (e.g. 100% or 200). pmem: Physical memory (e.g. 1024 or 1G-style numbers the plugin accepts as digits). io: Disk IO. nproc: Max processes. ep: Entry processes. iops: IOPS. confirm: Required. |
| cl_cagefs_enableC | Enable CageFS for one user. Args: username: Account. confirm: Required. |
| cl_cagefs_disableC | Disable CageFS for one user. The account leaves the cage. Args: username: Account. confirm: Required. |
| cl_php_selector_getA | Read CloudLinux PHP Selector for a user (plugin). On non-CL boxes use domains_set_php (DirectAdmin PHP selector) instead. Args: username: Account. |
| cl_php_selector_setB | Set CloudLinux PHP Selector version for a user. Args: username: Account. version: alt-php version the plugin understands (e.g. 8.2, 8.3, native). confirm: Required. |
| search_resourcesC | Search panel resources (domains, dbs, emails, …). Args: q: Query. |
| widgets_listC | Dashboard widgets. |
| cpanel_import_tasksD | cPanel import tasks. |
| cpanel_import_check_remoteC | Check a remote cPanel server before import. Args: payload: Host / credentials body. |
| phpmyadmin_ssoB | Create a phpMyAdmin SSO session. Args: database: Optional database name for database-scoped SSO. |
| da_list_endpointsA | List New API operations bundled with this server (from official swagger). Args: prefix: Path prefix filter, e.g. /api/domain-tls or /api/users. method: Optional HTTP method filter (GET/POST/…). |
| da_describe_endpointA | Show parameters for one New API operation. Args: method: HTTP method. path: Path template, e.g. /api/domain-tls/{domain}/provision-certs |
| da_apiA | Call any documented DirectAdmin New API endpoint. Use this for operations that do not yet have a dedicated curated tool. The path must exist in the bundled swagger. /api/execute is blocked unless ENABLE_EXECUTE=true. Args: method: GET POST PUT PATCH DELETE path: Template from da_list_endpoints (keep {placeholders}). path_params: Values for {placeholders}. query: Query string parameters. body: JSON body for non-GET requests. impersonate: Optional user to act as. confirm: Required for destructive methods / paths. |
| da_legacyA | Call a legacy CMD_API_* / CMD_* endpoint. Only commands that start with CMD_API_ or CMD_ are accepted. Args: command: e.g. CMD_API_SHOW_ALL_USERS or /CMD_API_SSL method: GET or POST data: Form fields. json=yes is added automatically. impersonate: Optional user. confirm: Required for POST. |
| da_pingA | Connectivity check — hits /api/version. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/OpenIaaS/directadmin-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server