ispconfig-mcp
Allows management of MySQL databases through ISPConfig, including listing, creating, and deleting databases.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ispconfig-mcp list all DNS zones"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ispconfig-mcp
MCP (Model Context Protocol) server for ISPConfig 3 — manage DNS zones, mail domains, websites, databases, FTP users, cron jobs, and more through AI assistants like Claude.
Features
DNS Management — zones, A/AAAA/CNAME/MX/NS/TXT/SRV/PTR records
Mail Management — domains, mailboxes, aliases, forwards, catchall, spamfilter
Site Management — web domains, subdomains, alias domains
Database Management — create/delete MySQL databases
FTP & Shell Users — create and manage access accounts
Cron Jobs — schedule and manage cron tasks
Client Management — create/update/delete ISPConfig clients
Server Info — query server details by ID or IP
Generic API Call — escape hatch for any of the ~246 ISPConfig API methods
Server Migration — export/import DNS zones, mail domains, websites, databases between ISPConfig instances
Related MCP server: cPanel MCP Server
Prerequisites
Node.js 18+
An ISPConfig 3 installation with the Remote API enabled
API user credentials (ISPConfig → System → Remote Users)
Installation
# Via npx (no install needed)
npx ispconfig-mcp
# Or install globally
npm install -g ispconfig-mcpConfiguration
Claude Code
claude mcp add ispconfig -- npx ispconfig-mcpThen set environment variables in your shell or .env:
export ISPCONFIG_URL="https://your-server:8080"
export ISPCONFIG_USER="api_user"
export ISPCONFIG_PASSWORD="your_password"
# Optional: run without any create/update/delete/import tools
export ISPCONFIG_READONLY="true"
# Optional (NOT recommended): skip TLS verification for self-signed certs.
# Only affects this server's own connection, but you should use a valid
# certificate instead — credentials are sent over this connection.
# export ISPCONFIG_INSECURE="true"Claude Desktop / Cursor / Windsurf
Add to your MCP config file:
{
"mcpServers": {
"ispconfig": {
"command": "npx",
"args": ["-y", "ispconfig-mcp"],
"env": {
"ISPCONFIG_URL": "https://your-server:8080",
"ISPCONFIG_USER": "api_user",
"ISPCONFIG_PASSWORD": "your_password"
}
}
}
}ISPConfig Setup
Log into ISPConfig panel → System → Remote Users
Create a new remote user with API access
Grant only the functions this integration needs — do not grant all. The
api_callescape hatch and the write tools can only reach methods this remote user is permitted to use, so a narrow permission set is your main guardrail. Combine withISPCONFIG_READONLY=truefor read-only use.Use these credentials as
ISPCONFIG_USER/ISPCONFIG_PASSWORD
Available Tools
DNS
Tool | Description |
| List all DNS zones |
| Get zone details by ID |
| Create a new zone |
| Update zone settings |
| Delete a zone |
| Get a record by type and ID |
| Add a DNS record (A, AAAA, CNAME, MX, TXT, etc.) |
| Update a DNS record |
| Delete a DNS record |
Tool | Description |
| List all mail domains |
| Get mail domain details |
| Create a mail domain |
| Delete a mail domain |
| Get mailbox details |
| Create a mailbox |
| Update mailbox settings |
| Delete a mailbox |
| Create a mail alias |
| Delete a mail alias |
| Create a mail forward |
| Delete a mail forward |
| Create a catchall |
| Add to spamfilter whitelist |
| Add to spamfilter blacklist |
Sites & Hosting
Tool | Description |
| List all websites |
| Get website details |
| Create a website |
| Update website settings |
| Delete a website |
| Create a subdomain |
| Delete a subdomain |
| Create an alias domain |
| List FTP users |
| Create an FTP user |
| Update FTP user |
| Delete an FTP user |
| Create a shell user |
| Delete a shell user |
| List databases |
| Create a database |
| Delete a database |
| List cron jobs |
| Create a cron job |
| Update a cron job |
| Delete a cron job |
Admin
Tool | Description |
| Get client details |
| Create a client |
| Update a client |
| Delete a client |
| Get server info |
| Find server by IP |
| Call any ISPConfig API method directly |
Migration
Tool | Description |
| Inventory all DNS/mail/sites on source — dry run, no changes |
| Export a DNS zone + all records as JSON bundle |
| Export a mail domain + mailboxes/aliases/forwards as JSON |
| Export a website + FTP/shell users/databases/cron as JSON |
| Export a client account + associated domains as JSON |
| Import a DNS zone bundle into destination instance |
| Import a mail domain bundle (config only — rsync maildir separately) |
| Import a website bundle (config only — rsync files separately) |
| Generate rsync/mysqldump commands for actual data transfer |
Migration Between Servers
The MCP supports migrating accounts between ISPConfig instances. The workflow:
Plan —
migrate_planinventories everything on the sourceExport —
migrate_export_*dumps config as portable JSON bundlesImport —
migrate_import_*recreates config on the destinationData —
migrate_data_commandsgenerates rsync/mysqldump commands for actual files/mail/databases
Migration Config
For direct source→destination migration, configure both instances:
{
"mcpServers": {
"ispconfig": {
"command": "npx",
"args": ["-y", "ispconfig-mcp"],
"env": {
"ISPCONFIG_URL": "https://old-server:8080",
"ISPCONFIG_USER": "api_user",
"ISPCONFIG_PASSWORD": "password",
"ISPCONFIG_DEST_URL": "https://new-server:8080",
"ISPCONFIG_DEST_USER": "api_user",
"ISPCONFIG_DEST_PASSWORD": "password"
}
}
}
}Without ISPCONFIG_DEST_URL, export tools still work — you can save the JSON and import later.
What gets migrated (config)
DNS zones + all record types
Mail domains + mailboxes + aliases + forwards + catchall
Web domains + subdomains + alias domains
FTP and shell users
Database definitions
Cron jobs
Client accounts
What needs manual transfer (data)
The ISPConfig API manages configuration, not file data. These must be transferred separately:
Mail spools —
rsync /var/vmail/domain/Website files —
rsync /var/www/domain/Database content —
mysqldump/pg_dump
The migrate_data_commands tool generates the exact commands needed.
Example Prompts
Once connected, you can ask your AI assistant things like:
"List all DNS zones on my server"
"Add an A record for app.example.com pointing to 1.2.3.4"
"Create a mailbox info@example.com with 1GB quota"
"Add a mail forward from sales@example.com to team@example.com"
"Show me all websites and their domains"
"Create a cron job that runs /usr/local/bin/backup.sh every night at 2am"
"Find all zones missing SPF records"
"Export everything from the old server and show me a migration plan"
"Migrate the DNS zone for example.com to the new server"
"What rsync commands do I need to transfer mail data for example.com?"
Development
git clone https://github.com/DayZAnder/ispconfig-mcp.git
cd ispconfig-mcp
npm install
npm run buildLicense
BSD 3-Clause — same license as ISPConfig 3.
Available Tools
62 toolsapi_callA
Call any ISPConfig API method directly (escape hatch for methods not covered by other tools). NOTE: can invoke destructive operations; disabled when ISPCONFIG_READONLY=true.
Inputs: method (required), params.
client_addB
Create a new client
Inputs: params (required), reseller_id (required).
client_deleteC
Delete a client
Inputs: client_id (required).
client_getA
Get client details by ID
Inputs: client_id (required).
client_updateC
Update a client
Inputs: params (required), client_id (required), reseller_id (required).
cron_addC
Create a cron job
Inputs: params (required), client_id (required).
cron_deleteC
Delete a cron job
Inputs: cron_id (required).
cron_listA
List all cron jobs
Inputs: no named parameters.
cron_updateC
Update a cron job
Inputs: params (required), cron_id (required), client_id (required).
database_addB
Create a new database
Inputs: params (required), client_id (required).
database_deleteC
Delete a database
Inputs: database_id (required).
database_listB
List all databases
Inputs: no named parameters.
dns_record_addC
Add a DNS record to a zone
Inputs: type (required), params (required), client_id (required).
dns_record_deleteC
Delete a DNS record
Inputs: type (required), record_id (required).
dns_record_getB
Get a DNS record by type and ID
Inputs: type (required), record_id (required).
dns_record_updateC
Update a DNS record
Inputs: type (required), params (required), client_id (required), record_id (required).
dns_zone_addC
Create a new DNS zone
Inputs: ns (required), mbox (required), origin (required), client_id (required), +7 more.
dns_zone_deleteC
Delete a DNS zone
Inputs: zone_id (required).
dns_zone_getA
Get a DNS zone by ID
Inputs: zone_id (required).
dns_zone_listA
List all DNS zones
Inputs: no named parameters.
dns_zone_updateC
Update an existing DNS zone
Inputs: params (required), zone_id (required), client_id (required).
ftp_user_addC
Create an FTP user
Inputs: params (required), client_id (required).
ftp_user_deleteB
Delete an FTP user
Inputs: user_id (required).
ftp_user_listA
List FTP users
Inputs: no named parameters.
ftp_user_updateD
Update an FTP user
Inputs: params (required), user_id (required), client_id (required).
mail_alias_addC
Create a mail alias
Inputs: params (required), client_id (required).
mail_alias_deleteB
Delete a mail alias
Inputs: alias_id (required).
mail_catchall_addC
Create a catchall for a mail domain
Inputs: params (required), client_id (required).
mail_domain_addC
Create a new mail domain
Inputs: params (required), client_id (required).
mail_domain_deleteC
Delete a mail domain
Inputs: domain_id (required).
mail_domain_getB
Get a mail domain by ID
Inputs: domain_id (required).
mail_domain_listA
List all mail domains
Inputs: no named parameters.
mail_forward_addC
Create a mail forward
Inputs: params (required), client_id (required).
mail_forward_deleteB
Delete a mail forward
Inputs: forward_id (required).
mail_spamfilter_blacklist_addC
Add email/domain to spamfilter blacklist
Inputs: params (required), client_id (required).
mail_spamfilter_whitelist_addB
Add email/domain to spamfilter whitelist
Inputs: params (required), client_id (required).
mail_user_addC
Create a new mailbox
Inputs: params (required), client_id (required).
mail_user_deleteC
Delete a mailbox
Inputs: user_id (required).
mail_user_getA
Get a mail user/mailbox by ID
Inputs: user_id (required).
mail_user_updateC
Update a mailbox
Inputs: params (required), user_id (required), client_id (required).
migrate_data_commandsA
Generate rsync/mysqldump commands needed to transfer actual data (files, mail, databases) between servers. These commands must be run manually — the MCP handles config only.
Inputs: type (required), domain (required), dest_host (required), source_host (required), +1 more.
migrate_export_clientB
Export a client account with all associated domains as a migration bundle
Inputs: client_id (required), include_secrets.
migrate_export_dns_zoneA
Export a DNS zone with all its records as a migration bundle (JSON).
Inputs: zone_id (required), include_secrets.
migrate_export_mail_domainA
Export a mail domain with all mailboxes, aliases, forwards, and catchall as a migration bundle
Inputs: domain_id (required), include_secrets.
migrate_export_web_domainA
Export a web domain with FTP users, shell users, databases, cron jobs, and subdomains as a migration bundle
Inputs: domain_id (required), include_secrets.
migrate_import_dns_zoneB
Import a DNS zone migration bundle into the destination ISPConfig instance. Requires ISPCONFIG_DEST_URL to be configured.
Inputs: bundle_json (required), dest_server_id (required), dest_client_id.
migrate_import_mail_domainA
Import a mail domain migration bundle into the destination ISPConfig instance. Creates domain, mailboxes, aliases, and forwards. NOTE: maildir data must be rsynced separately; redacted passwords must be reset.
Inputs: bundle_json (required), dest_server_id (required), dest_client_id.
migrate_import_web_domainA
Import a web domain migration bundle into the destination ISPConfig instance. Creates site, FTP/shell users, databases, cron jobs. NOTE: Website files and DB dumps must be transferred separately.
Inputs: bundle_json (required), dest_server_id (required), dest_client_id.
migrate_planA
Generate a migration plan: inventory what exists on the source. Does NOT make any changes.
Inputs: scope (required).
migrate_verifyA
Compare source and destination ISPConfig instances after migration. Requires ISPCONFIG_DEST_URL.
Inputs: scope (required).
server_getC
Get server information
Inputs: server_id (required), section.
server_get_by_ipB
Find server by IP address
Inputs: ip (required).
shell_user_addC
Create a shell user
Inputs: params (required), client_id (required).
shell_user_deleteC
Delete a shell user
Inputs: user_id (required).
web_aliasdomain_addC
Create a web alias domain
Inputs: params (required), client_id (required).
web_domain_addC
Create a new website/web domain
Inputs: params (required), client_id (required).
web_domain_deleteB
Delete a web domain
Inputs: domain_id (required).
web_domain_getA
Get a web domain by ID
Inputs: domain_id (required).
web_domain_listA
List all web domains/sites
Inputs: no named parameters.
web_domain_updateD
Update a web domain
Inputs: params (required), client_id (required), domain_id (required).
web_subdomain_addC
Create a subdomain
Inputs: params (required), client_id (required).
web_subdomain_deleteB
Delete a subdomain
Inputs: subdomain_id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 62 tools
Most tools follow a clear resource-action pattern (web_domain_*, dns_zone_*, mail_user_*, ftp_user_*, etc.), so an agent can usually identify the right target. A few boundaries are less crisp: dns_record_get uses 'type and ID', api_call overlaps every method, and migrate_import_* can resemble normal create tools.
The vast majority use consistent snake_case category_entity_action names, making the set highly navigable. Deviations like server_get_by_ip, api_call, and the migrate_export_* / migrate_import_* prefix pattern prevent a perfect score.
62 tools is a very large surface for an MCP server, even though ISPConfig covers many subsystems; it will burden selection and context. The migration suite is cohesive, but the overall set could be trimmed or grouped.
Many areas lack full lifecycle coverage: alias domains only add, mail domains no update, mail users no list, DNS records no listing, shell users only add/delete, and clients no list. The api_call escape hatch masks gaps but delegates the work to raw API knowledge, so common agent workflows will still hit dead ends.
Maintenance
Related MCP Connectors
Web hosting your AI runs itself over MCP: deploy sites, Next.js, Postgres, domains. EU servers.
Agent-first web hosting: deploy sites, apps, databases and domains over MCP.
MCP-ready hosting provider for Minecraft, BungeeCord, TeamSpeak, VPS and many other game servers.
Manage your Servera hosting over MCP: VPS/VDS, DNS, firewall, backups, SSL, billing, tickets.
Related MCP Servers
- AlicenseBqualityDmaintenanceA local MCP server for managing WHM and cPanel servers through AI clients, supporting server health, account, DNS, email, database, SSL, bandwidth, disk, cron, and service-management tools across multiple WHM accounts.31MIT
- AlicenseAqualityDmaintenanceA complete MCP server enabling AI assistants to manage cPanel hosting through natural language, including file, database, email, subdomain, and system operations.161MIT
- AlicenseBqualityCmaintenanceA comprehensive MCP server for managing cPanel hosting accounts through AI assistants. It supports DNS, email (DKIM/SPF), databases, domains, SSL, PHP, cron jobs, security, Git deployment, and more.10026ISC
- AlicenseNot gradedqualityDmaintenanceMCP server for CyberPanel that enables AI-driven management of web hosting servers, including websites, databases, email, and more via 200+ tools.11 npm9MIT