Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"name": "hostinger-connector",
"displayName": "Hostinger Connector",
"version": "0.3.2",
"description": "MCP plugin to deploy and manage Hostinger websites, WordPress, domains, DNS, VPS, and subscriptions from inside Cursor.",
"version": "0.3.3",
"description": "MCP plugin to deploy and manage Hostinger websites, WordPress, domains, DNS, VPS, email, and subscriptions from inside Cursor.",
"author": "Hostinger",
"license": "MIT",
"homepage": "https://hostinger.com/",
Expand Down
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
# Changelog

## [0.3.3] - 2026-11-12

### Fixed

- **Email could not be managed.** `mcp.json` now registers `hostinger-mail-mcp`, so the agent can create mailboxes, aliases and forwarders and issue Mail API tokens. Without it the agent reported that Hostinger has no email tools.

### Changed

- `rules/prefer-mcp-tools.mdc` lists the `mail_` prefix and says how to reach the inside of a mailbox: a scoped token from `mail_api-tokens_create`, used with the Hostinger Mail API, never the mailbox password.
- `rules/confirm-destructive-actions.mdc` covers deleting a mailbox, changing its password and creating a Mail API token.

## [0.3.2] - 2026-11-05

### Changed
Expand Down
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ The plugin wires the official [`@hostinger/mcp`](https://www.npmjs.com/package/@
- Keep WordPress updated and secure across one site or all of them.
- Audit the whole hosting account and get a prioritised to-do list.
- Migrate a site from another host, testing it before DNS moves.
- Manage domains, DNS, VPS, subscriptions, ecommerce and email marketing.
- Manage domains, DNS, VPS, subscriptions, ecommerce, email and email marketing.

---

Expand Down Expand Up @@ -88,8 +88,11 @@ Each product area runs as its own MCP server, so you can disable areas you don't
| `hostinger-reach` | `hostinger-reach-mcp` | 52 | Contacts, segments, email marketing profiles |
| `hostinger-ecommerce` | `hostinger-ecommerce-mcp` | 29 | Stores, products, sales channels, shipping |
| `hostinger-vps` | `hostinger-vps-mcp` | 64 | Virtual machines, firewalls, snapshots, backups, SSH keys, metrics |
| `hostinger-mail` | `hostinger-mail-mcp` | 38 | Email orders, mailboxes, aliases, forwarders, catch-alls, autoreplies, mail logs, webhooks, Mail API tokens |

`@hostinger/mcp` also publishes `hostinger-mail-mcp` and `hostinger-horizons-mcp`, which the plugin doesn't wire up.
The mail server sets up email. To read or send messages, create a token with `mail_api-tokens_create` and use it with the [Hostinger Mail API](https://api.mail.hostinger.com/).

`@hostinger/mcp` also publishes `hostinger-horizons-mcp`, which the plugin doesn't wire up.

Operation names follow the API — `hosting_websites_list`, `dns_records_list`, `billing_subscriptions_list` — and the prefix tells you which server owns the operation. For the full catalog, see [`scripts/mcp-tools.json`](scripts/mcp-tools.json) or [hostinger/api-mcp-server](https://github.com/hostinger/api-mcp-server).

Expand Down
23 changes: 14 additions & 9 deletions mcp.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,47 +3,52 @@
"hostinger-hosting": {
"command": "npx",
"args": ["--yes", "--package=@hostinger/mcp@latest", "hostinger-hosting-mcp"],
"env": { "USER_AGENT": "plugin;cursor;0.3.2" }
"env": { "USER_AGENT": "plugin;cursor;0.3.3" }
},
"hostinger-wordpress": {
"command": "npx",
"args": ["--yes", "--package=@hostinger/mcp@latest", "hostinger-wordpress-mcp"],
"env": { "USER_AGENT": "plugin;cursor;0.3.2" }
"env": { "USER_AGENT": "plugin;cursor;0.3.3" }
},
"hostinger-agency-hosting": {
"command": "npx",
"args": ["--yes", "--package=@hostinger/mcp@latest", "hostinger-agency-hosting-mcp"],
"env": { "USER_AGENT": "plugin;cursor;0.3.2" }
"env": { "USER_AGENT": "plugin;cursor;0.3.3" }
},
"hostinger-domains": {
"command": "npx",
"args": ["--yes", "--package=@hostinger/mcp@latest", "hostinger-domains-mcp"],
"env": { "USER_AGENT": "plugin;cursor;0.3.2" }
"env": { "USER_AGENT": "plugin;cursor;0.3.3" }
},
"hostinger-dns": {
"command": "npx",
"args": ["--yes", "--package=@hostinger/mcp@latest", "hostinger-dns-mcp"],
"env": { "USER_AGENT": "plugin;cursor;0.3.2" }
"env": { "USER_AGENT": "plugin;cursor;0.3.3" }
},
"hostinger-billing": {
"command": "npx",
"args": ["--yes", "--package=@hostinger/mcp@latest", "hostinger-billing-mcp"],
"env": { "USER_AGENT": "plugin;cursor;0.3.2" }
"env": { "USER_AGENT": "plugin;cursor;0.3.3" }
},
"hostinger-reach": {
"command": "npx",
"args": ["--yes", "--package=@hostinger/mcp@latest", "hostinger-reach-mcp"],
"env": { "USER_AGENT": "plugin;cursor;0.3.2" }
"env": { "USER_AGENT": "plugin;cursor;0.3.3" }
},
"hostinger-ecommerce": {
"command": "npx",
"args": ["--yes", "--package=@hostinger/mcp@latest", "hostinger-ecommerce-mcp"],
"env": { "USER_AGENT": "plugin;cursor;0.3.2" }
"env": { "USER_AGENT": "plugin;cursor;0.3.3" }
},
"hostinger-vps": {
"command": "npx",
"args": ["--yes", "--package=@hostinger/mcp@latest", "hostinger-vps-mcp"],
"env": { "USER_AGENT": "plugin;cursor;0.3.2" }
"env": { "USER_AGENT": "plugin;cursor;0.3.3" }
},
"hostinger-mail": {
"command": "npx",
"args": ["--yes", "--package=@hostinger/mcp@latest", "hostinger-mail-mcp"],
"env": { "USER_AGENT": "plugin;cursor;0.3.3" }
}
}
}
3 changes: 2 additions & 1 deletion rules/confirm-destructive-actions.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ The ones that do the most damage when wrong — confirm these even inside a flow
- **Deletes data for good:** `hosting_websites_delete`, `agency-hosting_websites_delete`, `hosting_databases_delete`, `agency-hosting_databases_delete-website`, `wordpress_installations_delete`, `vps_virtual-machines_recreate`.
- **Overwrites what is live:** `hosting_deploy-static-website`, `hosting_deploy-js-application`, `hosting_websites_deploy-static-site-archive`, `hosting_nodejs_start-build`, `hosting_import-wordpress-website`, `wordpress_installations_import-website`, `agency-hosting_deploy-php-application`, `agency-hosting_deploy-node-static-website`, `vps_snapshots_restore`, `vps_backups_restore`.
- **Replaces a whole set:** `hosting_nodejs_replace-environment-variables` (every variable not sent is deleted), `agency-hosting_php_replace-website-options`, `agency-hosting_php_replace-website-extensions`.
- **Breaks traffic or mail:** `dns_records_update` (its `overwrite` defaults to `true`), `dns_records_delete`, `dns_records_reset`, `dns_snapshots_restore`, `domains_portfolio_update-nameservers`, `agency-hosting_domains_change-website`, and any change to apex `A`/`AAAA`, `NS` or `MX` records.
- **Breaks traffic or mail:** `dns_records_update` (its `overwrite` defaults to `true`), `dns_records_delete`, `dns_records_reset`, `dns_snapshots_restore`, `domains_portfolio_update-nameservers`, `agency-hosting_domains_change-website`, and any change to apex `A`/`AAAA`, `NS` or `MX` records; `mail_mailboxes_delete-mailbox` and `mail_mailboxes_change-mailbox-password`, which signs every mail client out.
- **Hands out access:** `mail_api-tokens_create` returns a token that can read and send email in the mailboxes it is scoped to.

## Confirmation format

Expand Down
9 changes: 8 additions & 1 deletion rules/prefer-mcp-tools.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ alwaysApply: true

# Use the Hostinger MCP servers, not shell hacks

When the user asks about anything on Hostinger — websites, WordPress, Agency Plan sites, domains, DNS, VPS, subscriptions, email marketing, ecommerce — use one of this plugin's Hostinger MCP servers instead of:
When the user asks about anything on Hostinger — websites, WordPress, Agency Plan sites, domains, DNS, VPS, subscriptions, email, email marketing, ecommerce — use one of this plugin's Hostinger MCP servers instead of:

- `curl` / `wget` against `https://developers.hostinger.com`
- `ssh` into a host to read files or run commands
Expand Down Expand Up @@ -36,6 +36,7 @@ The plugin registers one server per product area. The operation prefix tells you
| `hostinger-reach` | `reach_` | Contacts, segments, email marketing profiles |
| `hostinger-ecommerce` | `ecommerce_` | Stores, products, sales channels, shipping |
| `hostinger-vps` | `vps_` | Virtual machines, firewalls, snapshots, backups, SSH keys, metrics |
| `hostinger-mail` | `mail_` | Email orders, mailboxes, aliases, forwarders, catch-alls, autoreplies, mail logs, webhooks, Mail API tokens |

## Operation selection

Expand All @@ -44,6 +45,12 @@ The plugin registers one server per product area. The operation prefix tells you
- Read before you write: pair a read with every change so you can report the before and after state.
- For multi-step web hosting work — troubleshooting a site, connecting a domain, deploying, WordPress maintenance, an account audit, a migration — follow the matching skill in this plugin.

## Email

- The `mail_` operations set up email: they create and delete mailboxes, aliases and forwarders, and read mail logs. They cannot read or send a message.
- To read, search, send or organise email in a mailbox, create a token with `mail_api-tokens_create`, scoped to the mailboxes you need, and use it with the Hostinger Mail API at `https://api.mail.hostinger.com/`. Revoke it with `mail_api-tokens_revoke` when the work is done.
- Never ask the user for a mailbox password, and never change one with `mail_mailboxes_change-mailbox-password` to get in.

## Not covered by the API

Say so plainly instead of substituting a plausible-sounding call:
Expand Down
Loading