Skip to main content
Glama

obambu-cpanel-mcp

A Model Context Protocol (MCP) server that lets an AI assistant (Claude, etc.) manage a cPanel hosting account through the cPanel UAPI.

It exposes tools for domains, DNS zones, email accounts, MySQL databases, and file listing, plus a generic escape hatch to call any other UAPI module/function.

Requirements

  • Node.js 18+

  • A cPanel account with API token access (Security → Manage API Tokens in cPanel)

Related MCP server: cPanel MCP Server

Getting your cPanel credentials (Obambu example)

The four env vars below can come from any cPanel host, but here's how to find them on Obambu:

  • CPANEL_HOST — your server hostname, e.g. cp4.obambu.com (or your own domain if cPanel is reachable at https://yourdomain.com:2083). Find it in your Obambu welcome email, or in your domain's DNS zone: look for an A record named cpanel (e.g. cpanel.yourdomain.com) — that same server also answers at its cpX.obambu.com hostname.

  • CPANEL_PORT — 00000 (cPanel's default HTTPS port). Leave it unless your host says otherwise.

  • CPANEL_USERNAME — your cPanel account username, shown top-right when logged into cPanel, or in the welcome email Obambu sent when the hosting account was created.

  • CPANEL_API_TOKEN — generate one yourself, it is not your cPanel password:

    1. Log into cPanel at https://<CPANEL_HOST>:00000

    2. Go to Security → Manage API Tokens

    3. Click Create, give it a name (e.g. mcp-server), optionally restrict it to specific ACLs, then Create

    4. Copy the token immediately — cPanel only shows it once

Published on npm as obambu-cpanel-mcp — no clone or build needed. Add it to your MCP client config (e.g. Claude Desktop / Claude Code):

{
  "mcpServers": {
    "obambu-cpanel": {
      "command": "npx",
      "args": ["-y", "obambu-cpanel-mcp"],
      "env": {
        "CPANEL_HOST": "your-server-hostname-or-ip",
        "CPANEL_PORT": "00000",
        "CPANEL_USERNAME": "your-cpanel-username",
        "CPANEL_API_TOKEN": "your-api-token"
      }
    }
  }
}

Running from source

git clone https://github.com/RodrigueDev13/obambu-cpanel-mcp.git
cd obambu-cpanel-mcp
npm install
cp .env.example .env

Edit .env with your cPanel details, then:

npm run build
npm start

For local development without building first:

npm run dev

When running from source, point your MCP client at the built entrypoint instead of npx:

{
  "mcpServers": {
    "obambu-cpanel": {
      "command": "node",
      "args": ["/absolute/path/to/obambu-cpanel-mcp/dist/index.js"],
      "env": {
        "CPANEL_HOST": "your-server-hostname-or-ip",
        "CPANEL_PORT": "00000",
        "CPANEL_USERNAME": "your-cpanel-username",
        "CPANEL_API_TOKEN": "your-api-token"
      }
    }
  }
}

Available tools

Tool

Description

get_account_summary

Disk/bandwidth quota usage and general stats

list_domains

Domains, subdomains, addon domains and parked domains

list_dns_records

Read a domain's DNS zone

add_dns_record

Add a DNS record

edit_dns_record

Edit an existing DNS record

remove_dns_record

Remove a DNS record

list_emails

List email accounts

create_email

Create an email account

delete_email

Delete an email account

list_files

List files/directories under the account home directory

list_databases

List MySQL databases

list_database_users

List MySQL database users

create_database

Create a MySQL database

create_database_user

Create a MySQL database user

grant_database_privileges

Grant a user privileges on a database

cpanel_uapi_call

Call any UAPI module/function directly for anything not covered above

Usage examples

Once connected, just talk to your assistant in plain language — it picks the right tool:

  • "Test the connection to my cPanel account" → get_account_summary

  • "What domains and subdomains are on this hosting account?" → list_domains

  • "Show me the DNS records for example.com" → list_dns_records

  • "Add an A record for shop.example.com pointing to 1.2.3.4" → add_dns_record

  • "Create a mailbox contact@example.com" → create_email

  • "Create a MySQL database and user for my new app, then grant privileges" → create_database + create_database_user + grant_database_privileges

  • "List the files in public_html" → list_files

  • "Read config/filesystems.php and fix this path" → cpanel_uapi_call with module: "Fileman", function: "get_file_content" / save_file_content

Because tool calls map directly to UAPI modules, this is also useful for real migration/deployment workflows — e.g. moving a site to a new cPanel account, provisioning a database for a fresh app, or auditing DNS before a domain cutover.

Notes on Fileman

Only list_files (backed by Fileman::list_files) and, through the cpanel_uapi_call escape hatch, get_file_content / save_file_content are known to work reliably for reading and writing individual files. Bulk filesystem operations (extract_files, rename, mkdir, fileop, delete_files, ...) are not guaranteed to be available depending on your cPanel version/provider — test before relying on them, and prefer cPanel's File Manager UI for bulk moves, extraction, and deletion.

Security

  • Never commit your .env file (it's git-ignored by default).

  • Scope your cPanel API token as narrowly as your provider allows.

  • The cpanel_uapi_call tool can call any UAPI function available to your account — treat it with the same care as direct API/token access.

License

MIT

Available Tools

16 tools
add_dns_recordA

Add a DNS record to a zone. Provide type-specific fields in fields (e.g. A record: {address: '1.2.3.4'}; CNAME: {cname: 'target.example.com'}; TXT: {txtdata: 'value'}; MX: {exchange: 'mail.example.com', preference: '10'}).

Inputs: name (required), type (required), zone (required), ttl, +1 more.

cpanel_uapi_callA

Call any cPanel UAPI module/function directly. Use this for functionality not covered by the other tools. Refer to cPanel UAPI documentation for module/function names and parameters.

Inputs: module (required), function (required), params.

create_databaseB

Create a new MySQL database.

Inputs: name (required).

create_database_userB

Create a new MySQL database user.

Inputs: name (required), password (required).

create_emailB

Create a new email account.

Inputs: email (required), domain (required), password (required), quotaMb.

delete_emailB

Delete an email account.

Inputs: email (required), domain (required).

edit_dns_recordB

Edit an existing DNS record. line is the record's line number as returned by list_dns_records.

Inputs: line (required), type (required), zone (required), ttl, +1 more.

get_account_summaryA

Get an overview of the cPanel account: disk/bandwidth quota usage and general stats.

Inputs: no named parameters.

grant_database_privilegesB

Grant a database user privileges on a database.

Inputs: user (required), database (required), privileges.

list_databasesA

List MySQL databases on the account.

Inputs: no named parameters.

list_database_usersA

List MySQL database users on the account.

Inputs: no named parameters.

list_dns_recordsA

List DNS zone records for a domain.

Inputs: zone (required).

list_domainsA

List all domains, subdomains, addon domains and parked domains on the account.

Inputs: no named parameters.

list_emailsA

List email accounts, optionally filtered by domain.

Inputs: domain.

list_filesA

List files and directories at a path within the account's home directory.

Inputs: dir.

remove_dns_recordA

Remove a DNS record from a zone. line is the record's line number as returned by list_dns_records.

Inputs: line (required), zone (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 16 tools

    Disambiguation5/5

    Each named tool maps to a distinct cPanel resource/action, such as databases, DNS, email, files, or account details. Even closely related tools like create_database and create_database_user are clearly separated. The generic cpanel_uapi_call is explicitly framed as a fallback, so it does not create meaningful ambiguity.

    Naming Consistency4/5

    Most tools follow a consistent verb_noun snake_case pattern, such as create_database, list_dns_records, and add_dns_record. Minor deviations include cpanel_uapi_call placing the verb last and the inconsistent use of delete vs remove across email and DNS tools.

    Tool Count4/5

    16 tools is slightly above the typical well-scoped range, but each tool covers a meaningful cPanel operation. The count reflects the broad scope of database, DNS, email, file, and account management without feeling padded.

    Completeness4/5

    Core workflows are well covered: database creation and privilege management, DNS CRUD, email create/list/delete, file listing, and account summary. There are some lifecycle gaps, such as no direct delete for databases or database users, but cpanel_uapi_call provides a documented escape hatch for those operations.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers