WHMCS MCP Server
WHMCS MCP Server
Production-grade AI integration for WHMCS. Connect ChatGPT, Claude, and Cursor directly to your WHMCS installation — manage clients, invoices, tickets, and services through natural language.
You: "Send a payment reminder to all clients with overdue invoices over $50"
AI: Fetching overdue invoices... Found 12. Sending reminder emails... Done.
Prerequisites — WHMCS API Setup
Before running the installer you need a WHMCS API credential with the right permissions.
1. Create an API Role
In WHMCS Admin: Setup → Staff Management → API Roles → Add Role
Choose a permission preset based on how much you trust the AI:
Minimum permissions (read-only — AI can look but not touch):
GetClients GetClientsDetails GetClientsProducts GetClientsDomains GetClientsAddons GetClientGroups GetContacts GetEmails GetInvoice GetInvoices GetOrders GetOrderStatuses GetProducts GetTicket GetTickets GetSupportDepartments GetQuotes GetCredits GetTransactions GetStats GetActivityLog GetCancelledPackages GetEmailTemplates GetCurrencies GetPaymentMethods GetHealthStatus GetProductGroups GetRegistrars GetServers GetAffiliates GetAnnouncements GetSupportStatuses GetTicketCounts GetTicketPredefinedCats GetAdminUsers GetToDoItems GetToDoItemStatuses GetStaffOnline DomainWhois DomainGetNameservers DomainGetLockingStatus GetTLDPricing GetPromotions GetProjects GetProject
Maximum permissions (full access — AI can take any action):
Everything above, plus:
AddClient UpdateClient AddClientNote AddContact UpdateContact CreateInvoice AddInvoicePayment AddOrder AcceptOrder CancelOrder OpenTicket AddTicketReply UpdateTicket CreateQuote UpdateQuote SendQuote AcceptQuote DeleteQuote AddCredit ApplyCredit AddBillableItem SendEmail UpdateClientProduct ModuleSuspend ModuleUnsuspend ModuleTerminate ModuleCreate UpgradeProduct DomainRegister DomainTransfer DomainRenew DomainUpdateNameservers DomainUpdateLockingStatus DomainToggleIdProtect FraudOrder PendingOrder UpdateInvoice ModuleChangePw LogActivity AddTicketNote AffiliateActivate CreateProject UpdateProject AddProjectTask UpdateProjectTask DeleteProjectTask AddProjectMessage StartTaskTimer EndTaskTimer
Project Management tools:
list_projectsthroughend_task_timeradditionally require the WHMCS Project Management addon to be active (Setup → Addon Modules), regardless of API role permissions.
Domain write permissions:
register_domain,transfer_domain, andrenew_domainrequireDomainRegister,DomainTransfer, andDomainRenewrespectively. Note theDomainprefix comes first —RegisterDomain/TransferDomain/RenewDomainare not valid WHMCS permission keys and are silently ignored if granted. If a domain tool returns HTTP 403, the matching permission is missing from your role. Upgrading from 2.3.1 or earlier? See the 2.3.2 changelog entry — you need to re-grant these three under their correct names.
Tip: Start with minimum permissions and add write permissions only as needed. This limits blast radius if an AI client goes rogue or gets a bad prompt.
2. Set an API Access Key (recommended)
An Access Key bypasses IP restrictions entirely — the recommended approach since the MCP server's outbound IP can change (Docker restarts, server moves, etc.).
Add this line to your configuration.php in the WHMCS root:
$api_access_key = 'your-secret-passphrase';Allowed characters: letters, numbers, and
! @ # $ % . ( ) * [ ] - _
Then set WHMCS_ACCESS_KEY to the same value in your .env or Portainer stack.
3. Create an API Credential
Setup → Staff Management → API Credentials → Generate New Credential
Role: select the role you just created
Allowed IPs: leave blank if using an Access Key (recommended), or enter the server IP if you prefer IP-based restrictions
Copy the Identifier and Secret — you'll need these during install
Related MCP server: Corben MCP Server
Quick Start — running in under 5 minutes
Binary (no Docker required):
curl -fsSL https://daddar.io/whmcs-mcp/install.sh | sudo bashPrompts for your WHMCS credentials and license key, installs the binary to /usr/local/bin, and registers a systemd service.
Docker (recommended for servers already running Docker):
curl -fsSL https://daddar.io/whmcs-mcp/install-docker.sh | bashPrompts for credentials, writes .env, and starts the stack via Docker Compose.
Get a License
Purchase a license at daddar.io/store/ai-tools/whmcs-mcp — after checkout, your license key appears in the client portal. Paste it into setup.sh when prompted.
No license? A 14-day free trial starts automatically on first run.
What You Can Do
96 WHMCS Tools
Category | Tools |
Clients |
|
Invoices |
|
Orders |
|
Services |
|
Tickets |
|
Quotes |
|
Contacts |
|
Credits |
|
Billing |
|
| |
Products |
|
Domains |
|
Admin |
|
Affiliates |
|
Promotions |
|
Servers |
|
System |
|
Reports |
|
Projects |
|
All tools support dryRun mode — preview what would happen before making changes.
24 Real-Time Resources
Resources are read-only data endpoints that AI clients can subscribe to via whmcs:// URIs. Data is served from a 60-second TTL cache.
URI | Description |
| Live system statistics (revenue, client counts, invoice totals) |
| Server health status |
| WHMCS installation details (version, PHP, database) |
| Full product and service catalog |
| Product groups with product counts |
| Domain TLD registration/transfer/renewal pricing |
| Active promotions and coupon codes |
| Available order status values |
| Configured currencies with exchange rates |
| Active payment gateway modules |
| Configured domain registrar modules |
| Provisioning servers |
| Client group definitions |
| Registered affiliate accounts |
| Email template library |
| Published announcements |
| Support departments |
| Available ticket status values |
| Ticket counts by department and status |
| Predefined ticket reply categories |
| Admin user accounts |
| Admin to-do items |
| Available to-do item status values |
| Staff currently logged into the admin area |
18 Workflow Prompts
Prompts are pre-built workflow templates that MCP clients surface as one-click guided interactions.
Prompt | Description |
| Guided new client account creation |
| Place and accept a product order for a client |
| Create a custom invoice with optional send |
| Draft a sales quote with send/accept lifecycle |
| Load a ticket, draft a professional staff reply |
| Full account onboarding review checklist |
| Security audit for a suspicious order |
| Find overdue invoices and send payment reminders |
| MRR + outstanding + paid financial breakdown |
| Deep account scorecard (services, billing, support) |
| Flag at-risk domains, draft renewal reminders |
| Step-by-step product configuration guide |
| Ranked churn-risk table with recommended actions |
| Priority-ordered ticket queue with quick-win suggestions |
| Top performers, commissions, activation gaps |
| N-month renewal revenue projection |
| Missing add-on detection + upsell quote generation |
| Promo code usage, revenue impact, and expiry analysis |
vs other WHMCS MCP servers
Feature | WHMCS MCP Server (us) | scarecr0w12/whmcs-mcp-tool | MX Modules |
Tools | 86 | ~50 | ~20 |
HTTP transport (ChatGPT, Claude remote) | Yes | No — stdio only | Yes |
Authentication | OAuth 2.0 PKCE + bearer tokens | None | Static tokens only |
One-click install | Yes ( | Manual (clone + npm) | Manual |
Real-time webhook push | Yes | No | No |
Audit log | Yes | No | No |
Prometheus metrics | Yes | No | No |
Rate limiting | Yes | No | No |
| Yes | No | No |
Trial period | 14 days free | Free forever (MIT) | None |
Commercial support | Yes | None | Limited |
License | Commercial | MIT | Commercial |
Supported AI Clients
Client | Transport | Auth |
ChatGPT (via GPT Actions) | HTTP | Bearer token or OAuth 2.0 |
Claude Desktop | HTTP | Bearer token or OAuth 2.0 |
Cursor IDE | stdio or HTTP | Bearer token or OAuth 2.0 |
Any MCP-compatible client | HTTP | Bearer token or OAuth 2.0 |
Security
OAuth 2.0 PKCE — industry-standard authorization with short-lived tokens and refresh
Bearer token mode — simple API key setup for single-tenant deployments
Rate limiting — per-IP and per-token controls (configurable)
Audit log — every authenticated request logged with client ID, method, and timestamp
Helmet.js — security headers (CSP, HSTS, X-Frame-Options, etc.)
Input sanitization — defense-in-depth against injection
HTTPS enforcement — rejects plain HTTP in production
Docker secrets — credentials read from
/run/secrets/if present
Configuration
Environment Variables
Copy .env.example to .env and fill in your values.
Required:
Variable | Description |
| Your WHMCS URL, e.g. |
| WHMCS API identifier |
| WHMCS API secret |
License:
Variable | Description | Default |
| Your license key from daddar.io | (14-day free trial starts automatically) |
Authentication:
Variable | Description | Default |
| Enables the | (unset — consent UI disabled) |
| Secret used to sign OAuth CSRF session cookies. Generate with | (auto-generated ephemeral — set this in production) |
| Path to bearer token store |
|
Note (v2.1.0):
MCP_AUTH_MODEandMCP_REQUIRE_AUTHhave been removed. The server always runs the full auth stack — bearer tokens and OAuth are both available in every configuration. Auth is always enforced in HTTP mode.
Network / proxy:
Variable | Description | Default |
| Set to |
|
Observability (optional):
Variable | Description | Default |
| Enable Prometheus metrics endpoint |
|
| Port for |
|
| Prometheus Pushgateway URL for metric push | (unset) |
| HTTP Basic Auth username for Pushgateway | (unset) |
| HTTP Basic Auth password for Pushgateway | (unset) |
Webhooks (optional):
Variable | Description |
| HMAC secret shared with your WHMCS PHP hook |
See .env.example for all options.
Connecting AI Clients
Cursor IDE
Bearer token (simple): Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"whmcs": {
"url": "https://your-server:3100/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
}
}
}
}OAuth (New App UI): When adding via Cursor's "New App" with OAuth, the server must have MCP_CLIENT_REGISTRATION_SECRET set (in Portainer or .env). Generate with openssl rand -hex 24, set it on the server, then enter the same value in Cursor's Advanced OAuth settings under "Client registration secret" (or equivalent). This enables Dynamic Client Registration so Cursor can self-register.
Or for local stdio mode:
{
"mcpServers": {
"whmcs": {
"command": "node",
"args": ["/path/to/whmcs-mcp/dist/index.js"],
"env": {
"WHMCS_API_URL": "https://your-whmcs.example.com",
"WHMCS_IDENTIFIER": "your-identifier",
"WHMCS_SECRET": "your-secret"
}
}
}
}Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"whmcs": {
"url": "https://your-server:3100/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
}
}
}
}ChatGPT (GPT Actions)
Point your GPT Action schema at https://your-server:3100/mcp. Use OAuth 2.0 mode for multi-user setups.
Real-Time Webhook Push
Receive WHMCS events pushed to your AI in real time — new tickets, invoices, overdue payments.
See docs/WEBHOOKS.md for setup instructions.
Deployment
Docker Compose (recommended)
docker compose -f docker-compose.marketplace.yml up -dGenerates tokens:
docker exec -it whmcs-mcp node dist/scripts/auth-cli.js generate \
--name "My AI" --scopes "mcp:read,mcp:write"Kubernetes
See k8s-deployment.yaml and DEPLOYMENT.md.
Behind a Reverse Proxy (nginx / Caddy / Traefik)
Remove the ports block from docker-compose.marketplace.yml and proxy to whmcs-mcp:3100. See comments in that file.
Observability
Health check:
GET /healthReadiness:
GET /readyPrometheus metrics: port 9090 (configurable via
MCP_METRICS_PORT)
Key metrics: whmcs_mcp_requests_total, whmcs_mcp_request_duration_seconds, whmcs_mcp_active_sessions, whmcs_mcp_auth_total
Support & Licensing
Purchase / manage license: daddar.io/store/ai-tools/whmcs-mcp
Documentation: this repo + DEPLOYMENT.md + docs/WEBHOOKS.md
Support: support@daddar.io
Security issues: SECURITY.md
Copyright © 2026 Daddario Tech Solutions. All rights reserved. See LICENSE.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Related MCP Connectors
Security-first WordPress MCP server. 129 tools for Claude, ChatGPT, Gemini. Free on wp.org.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
QuickBooks Online in Claude and ChatGPT: 211 tools, full ledger, multi-company, Canada + US, FR/EN.
1- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceUniversal AI API Orchestrator. 850 tools across 53 services under a single MCP interface. Connect Claude, GPT, or Gemini to Stripe, Slack, GitHub, LinkedIn, Cloudflare, Shopify, Twilio, and 46 more via natural language. $0.10/execution, no subscription. Patent Pending.2935-
- FlicenseNot gradedqualityCmaintenanceProvides AI agents with 220+ tools for building websites, sending email, managing contacts, invoicing, databases, automation, and more through a single secure connection. Features hardware-bound authentication and works with Claude Desktop, Claude Code, Cursor, and other MCP-compatible clients.-
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage WHM hosting accounts and server administration tasks including account management, server stats, updates, SSL, backups, and email through a secure API.10-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to administrate WHMCS installations through the External API, providing ~50 tools for clients, billing, orders, services, domains, support, and aggregators with safety features and governance.422ISC
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/daddariotech/whmcs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server