whmcs_get_clientsLABSCO SUMMARY
Full read and write against a live billing system, destructive calls included.
Deleting a client, terminating a service and marking an order fraudulent are each one call, so the permissions on the API credential are the real boundary. WHMCS lets you enable only the API functions you need and restrict access by IP — set both before you point an assistant at a production install.
What it is
A TypeScript server over the WHMCS API that covers the whole admin surface: clients, products, billing, support tickets, domains, orders, service provisioning and system data.
What you get
- Client records end to end —
whmcs_get_clients,whmcs_get_client_details,whmcs_add_client,whmcs_update_client,whmcs_delete_client - Billing —
whmcs_get_invoices,whmcs_create_invoice,whmcs_add_payment,whmcs_apply_credit,whmcs_get_transactions - The support desk —
whmcs_get_tickets,whmcs_open_ticket,whmcs_add_ticket_reply,whmcs_update_ticket - Domains —
whmcs_register_domain,whmcs_transfer_domain,whmcs_renew_domain,whmcs_update_domain_nameservers,whmcs_get_tld_pricing - Service lifecycle on the server modules —
whmcs_module_create,whmcs_module_suspend,whmcs_module_terminate,whmcs_module_change_password - Read-only live resources such as
whmcs://stats,whmcs://productsandwhmcs://tld-pricing, plus prompt templates for client onboarding, revenue reporting and fraud investigation
Requirements
Three environment variables — WHMCS_API_URL, WHMCS_API_IDENTIFIER and WHMCS_API_SECRET — from credentials created under Setup → Staff Management → API Credentials. WHMCS_ACCESS_KEY is optional and adds a second factor. Run the ghcr.io/scarecr0w12/whmcs-mcp-tool:latest image, or build from source with npm.
Setup effort
One command plus a key — docker run -it --rm -e WHMCS_API_URL="<YOUR_BILLING_URL>/" -e WHMCS_API_IDENTIFIER="<YOUR_WHMCS_API_IDENTIFIER>" -e WHMCS_API_SECRET="<YOUR_WHMCS_API_SECRET>" ghcr.io/scarecr0w12/whmcs-mcp-tool:latest
USE CASES
Answering a billing question without opening the admin
Pull the client, their services and their invoices in one conversation, then apply a credit or record a payment against the right invoice.
Working the ticket queue
List open tickets, read the thread, and post a reply or change the ticket's status from the same place you drafted the answer.
Auditing domains before renewals hit
Read expiry and lock status across a client's domains and check TLD pricing before you commit to a renewal.
Suspending a service for non-payment
Find the service on its server module and suspend it, then unsuspend it once the invoice clears.
62 tools
Listed in project docs. Your client may show a different list.
whmcs_get_client_detailswhmcs_add_clientwhmcs_update_clientwhmcs_delete_clientwhmcs_get_client_productswhmcs_get_client_domainswhmcs_get_productswhmcs_get_product_groupswhmcs_get_invoiceswhmcs_get_invoicewhmcs_create_invoicewhmcs_update_invoicewhmcs_add_paymentwhmcs_apply_creditwhmcs_get_transactionswhmcs_get_ticketswhmcs_get_ticketwhmcs_open_ticketwhmcs_add_ticket_replywhmcs_add_ticket_notewhmcs_update_ticketwhmcs_delete_ticketwhmcs_get_support_departmentswhmcs_get_support_statuseswhmcs_register_domainwhmcs_transfer_domainwhmcs_renew_domainwhmcs_get_domain_whoiswhmcs_get_domain_nameserverswhmcs_update_domain_nameserverswhmcs_get_domain_lock_statuswhmcs_update_domain_lock_statuswhmcs_get_tld_pricingwhmcs_get_orderswhmcs_accept_orderwhmcs_cancel_orderwhmcs_delete_orderwhmcs_fraud_orderwhmcs_pending_orderwhmcs_get_serverswhmcs_module_createwhmcs_module_suspendwhmcs_module_unsuspendwhmcs_module_terminatewhmcs_module_change_passwordwhmcs_get_statswhmcs_get_admin_userswhmcs_get_payment_methodswhmcs_get_currencieswhmcs_get_activity_logwhmcs_log_activitywhmcs_get_email_templateswhmcs_send_emailwhmcs_get_todo_itemswhmcs_get_affiliateswhmcs_activate_affiliatewhmcs_get_promotionswhmcs_get_quoteswhmcs_create_quotewhmcs_accept_quotewhmcs_delete_quoteBEFORE YOU INSTALL
What to know first
Tools you get
62 tools named in the project's documentation.
Requires
- WHMCS_API_SECRET in your environment
- WHMCS_API_IDENTIFIER in your environment
Where it runs
All 3 documented setups run the server on your machine.
INSTALLATION
Connect your client
Server setup
docker run -it --rm -e WHMCS_API_URL="<YOUR_BILLING_URL>/" -e WHMCS_API_IDENTIFIER="<YOUR_WHMCS_API_IDENTIFIER>" -e WHMCS_API_SECRET="<YOUR_WHMCS_API_SECRET>" ghcr.io/scarecr0w12/whmcs-mcp-tool:latestMCP Clients
Claude Desktop — Docker
{
"mcpServers": {
"whmcs": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"WHMCS_API_URL=<YOUR_BILLING_URL>/",
"-e",
"WHMCS_API_IDENTIFIER=<YOUR_WHMCS_API_IDENTIFIER>",
"-e",
"WHMCS_API_SECRET=<YOUR_WHMCS_API_SECRET>",
"ghcr.io/scarecr0w12/whmcs-mcp-tool:latest"
]
}
}
}VS Code — local build
Clone and build it: git clone https://github.com/scarecr0w12/whmcs-mcp-tool.git && cd whmcs-mcp-tool && npm install && npm run build
Set WHMCS_API_URL, WHMCS_API_IDENTIFIER and WHMCS_API_SECRET (WHMCS_ACCESS_KEY is optional) in your environment, then open the whmcs-mcp-tool folder in VS Code — the repository ships this configuration as .vscode/mcp.json, so dist/index.js resolves inside the clone:
{
"servers": {
"whmcs-mcp-server": {
"type": "stdio",
"command": "node",
"args": [
"dist/index.js"
],
"env": {
"WHMCS_API_URL": "${env:WHMCS_API_URL}",
"WHMCS_API_IDENTIFIER": "${env:WHMCS_API_IDENTIFIER}",
"WHMCS_API_SECRET": "${env:WHMCS_API_SECRET}",
"WHMCS_ACCESS_KEY": "${env:WHMCS_ACCESS_KEY}"
}
}
}
}VS Code — Docker
Clone the repository and build the image: git clone https://github.com/scarecr0w12/whmcs-mcp-tool.git && cd whmcs-mcp-tool && docker build -t whmcs-mcp-server .
Set WHMCS_API_URL, WHMCS_API_IDENTIFIER and WHMCS_API_SECRET in your environment and put this in .vscode/mcp.json:
{
"servers": {
"whmcs-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"WHMCS_API_URL",
"-e",
"WHMCS_API_IDENTIFIER",
"-e",
"WHMCS_API_SECRET",
"-e",
"WHMCS_ACCESS_KEY",
"whmcs-mcp-server"
],
"env": {
"WHMCS_API_URL": "${env:WHMCS_API_URL}",
"WHMCS_API_IDENTIFIER": "${env:WHMCS_API_IDENTIFIER}",
"WHMCS_API_SECRET": "${env:WHMCS_API_SECRET}",
"WHMCS_ACCESS_KEY": "${env:WHMCS_ACCESS_KEY}"
}
}
}
}