Hostinger have a native MCP server and Cursor is one of the supported IDEs. Connect it once through Cursor’s settings, then use Composer to provision a PageMotor VPS, set DNS, and deploy — without a browser or a separate terminal.
▶ The whole route in 4 minutes 3 seconds, narrated, with captions — the two things that differ from the Claude Code route, and the template whose name makes it look right while quietly breaking everything after it.
The shape of it. Hostinger have a native MCP server, and Cursor is a supported editor. Connect it once through Cursor's settings, then use Composer to provision a VPS, set DNS and deploy — without a browser or a separate terminal.
If you know the Claude Code version. There are only two differences. Same Hostinger MCP, same prompt templates, same on-box setup script. What changes is where the config goes — Cursor's own settings rather than a Claude Code config file — and that you run the prompts in Composer.
First time on a VPS? Three things do three different jobs. Cursor can run server commands through Composer once the MCP is connected, which is what this sets up; a chat window on its own does not touch your server. CloudPanel is your control panel — sites, databases and SSL, point and click. A terminal is a text window connected to the server itself, where any command actually runs.
Two ways in. In hPanel, click API in the left sidebar under Dev tools; the page opens with the Cursor tab highlighted. The Hostinger Connector extension handles the connection through a UI with no JSON editing. Or configure manually, for more control over exactly which tools load into Composer — the route this guide walks.
Tick two tools, untick the rest. Domains and DNS sets the A record pointing your domain at the new server; VPS hosting creates and manages the servers. Hostinger's own page puts it well: enable only the products you use, for faster and more focused responses. Fewer tools means a cleaner Composer context window.
Name it, then copy it immediately. Generating opens a modal with a name field and an expiry dropdown; Never expires is the practical choice for a dev-tool token on your own machine. The token then shows once — refreshing or leaving hides it permanently, and Regenerate invalidates the old one immediately.
Save it, then restart Cursor. The generated JSON is tailored to the tools you ticked. Add your token as an environment variable in each server entry, save to ~/.cursor/mcp.json, and restart. The restart is what actually loads it, and it is easy to skip.
Open Composer and ask. One brief covers the whole job: the plan, the CloudPanel template, the region, a hostname and your SSH public key. Then read the IP back and create the DNS A record pointing your domain at it. Regions work by name or by ID.
The same trap as the Claude Code route. Hostinger ships a separate image whose name mentions Claude Code, and it sounds like the obvious pick. It has no control panel on it, so site creation, the database and the certificate all break afterwards. Take the CloudPanel template — and because template IDs change, have Composer list the templates and choose by name first.
Then prove it. Install EP Host Check and read its report. It inspects the finished box and tells you what it can and cannot do, each with a plain fix, rather than you assuming the provisioning worked.
Use this guide with any AI assistant
Download it as a prompt file, paste it into Claude, ChatGPT, Gemini or any LLM, and it will walk you through every step interactively.
A VPS is a real computer that you control, and a few steps below ask you to run a command "on the server". Here is what that means, because it trips up nearly everyone the first time.
Three things, three different jobs:
So when you see a line like chown -R ..., it runs in a terminal on the VPS. Not in Cursor, not in CloudPanel.
Two ways to open a terminal on your VPS:
ssh root@YOUR-VPS-IP. Your IP is on the Hostinger VPS page. Enter the root password when prompted. Note: as you type the password nothing appears on screen, no dots or stars. That is normal, just type it and press Enter.The details you swap into commands:
/home/SITEUSER/htdocs/yourdomain.com.When you are finished, type exit to leave. That is the whole mystery solved. The rest of this guide is the easy part.
Log into hPanel and click API in the left sidebar under Dev tools. The page opens with the Cursor tab already highlighted.
Click Config manually. The page reveals a numbered setup flow, starting with tool selection. For PageMotor you need two:
Tick only those two and untick the rest. The file path below the grid confirms where the config goes: ~/.cursor/mcp.json.
Scroll up to the Generate an API token section and click the button.
A modal opens with a name field and an expiration dropdown. Give it a name you will recognise (e.g. cursor-token) and set expiration to Never expires.
After generating, the token appears once with a copy warning. Copy it now — refreshing or leaving the page hides it permanently.
Scroll back down to the Manual Configuration section. Step 3 on the page shows the JSON Hostinger generated for the tools you selected. Use the Copy button on the right of the code block.
Add your token as an env variable in each server entry. The complete, paste-ready version for DNS + VPS:
{
"mcpServers": {
"hostinger-dns": {
"command": "npx",
"args": ["--package=hostinger-api-mcp@latest", "hostinger-dns-mcp"],
"env": { "HOSTINGER_API_TOKEN": "YOUR-TOKEN-HERE" }
},
"hostinger-vps": {
"command": "npx",
"args": ["--package=hostinger-api-mcp@latest", "hostinger-vps-mcp"],
"env": { "HOSTINGER_API_TOKEN": "YOUR-TOKEN-HERE" }
}
}
}
Replace YOUR-TOKEN-HERE with the token from Step 4. It must appear in each server entry separately.
Save the JSON to ~/.cursor/mcp.json (the path the Hostinger page showed in Step 2). Create the file if it does not exist; if it does, add the Hostinger entries inside the existing mcpServers object.
Restart Cursor. The MCP servers load automatically.
node --version) so npx can fetch the package on first run.Press Cmd I to open Composer. Paste this prompt, editing your domain and details:
Specify by name or ID — the MCP understands both. IDs confirmed from the live API:
| ID | Location | Good for |
|---|---|---|
18 | Manchester, UK | Ireland, UK, Northern Europe |
15 | Paris, France | Western Europe |
19 | Frankfurt, Germany | Central Europe |
11 | Vilnius, Lithuania | Eastern Europe / Baltic |
24 | Boston 2, USA | US East Coast |
For the technically curious. The MCP translates your plain-English request into a call like this:
POST /api/vps/v1/virtual-machines
{
"item_id": "hostingercom-vps-kvm2-usd-1m", // KVM 2, billed monthly
"setup": {
"template_id": 1096, // Ubuntu 24.04 with CloudPanel
"data_center_id": 18, // Manchester, UK
"hostname": "pagemotor-mysite",
"public_key": "ssh-ed25519 ..." // from ~/.ssh/id_ed25519.pub
}
}
The item_id is the billing price ID. Monthly and annual differ by suffix:
| Plan | RAM | Monthly price ID | Intro price |
|---|---|---|---|
| KVM 1 | 4 GB | hostingercom-vps-kvm1-usd-1m | $9.99/mo |
| KVM 2 | 8 GB | hostingercom-vps-kvm2-usd-1m | $13.99/mo |
| KVM 4 | 16 GB | hostingercom-vps-kvm4-usd-1m | $25.99/mo |
| KVM 8 | 32 GB | hostingercom-vps-kvm8-usd-1m | $50.99/mo |
Swap -1m for -1y or -2y for annual billing, which is cheaper per month.
1189 — "Ubuntu 24.04 with Claude Code" — which pre-installs the CC CLI on your server. If you want to run Claude Code directly on the VPS itself, swap template_id: 1096 for 1189 and mention it in your Composer prompt.Cursor Composer calls the hostinger-vps and hostinger-dns MCP tools directly. You can watch which tools it calls in the Composer panel. Provisioning takes three to six minutes — Composer will poll and update you.
@provision-pagemotor.sh to attach the on-box script so Cursor can read it while working. Cursor also reads your project’s open files automatically, so if you have your Cloudflare credentials file open, Cursor can reference it too.
Once the VPS is running and DNS is set, give Composer the second brief. Download the on-box script first so Cursor can reference it with @:
⇓ Download provision-pagemotor.shThen paste this into Composer (use @provision-pagemotor.sh at the top to attach the file):
Cursor reads the script, adapts the commands to your site name, and runs them over SSH using its built-in terminal. It will output each step as it runs.
.htaccess directory protection, so the deny rules in the prompt's step 7 are load-bearing, not optional. PageMotor probes for them itself and raises an admin warning if they are missing. Details, and why this bites hardest on migrations: Migrating an existing site onto this VPS? below.Visit https://mysite.com/admin/ and register your PageMotor admin account. Then install EP Host Check from the EP Suite updates channel and run it.
All 12 checks should be green. The key one is PHP can save PageMotor’s files. That is the check that goes red on a locked-down shared host and green on a properly-owned VPS. When it is green, your designs will save, your theme will compile, and the “9 out of 10 bugs are the host” category is closed.
A fresh install can skip this section. If you are moving an existing PageMotor site here from another host, two things break silently on the way in. Both come from a real migration reported on the PageMotor developers forum, so this is field experience, not theory.
1. Apache protection does not follow you to nginx. PageMotor guards its sensitive directories (error logs, Skill state, and protected uploads including Brain files) with per-directory .htaccess files, which is automatic on Apache and LiteSpeed. CloudPanel serves your site with nginx, and nginx ignores .htaccess entirely. So the moment nginx starts serving a migrated site those directories are publicly readable over the web, and nothing looks broken. Current PageMotor releases probe for this themselves and raise an admin warning with the exact paths for your install. The fix is three rules. In CloudPanel open Sites → your site → Vhost, add these inside the server { } block, and save:
location ^~ /user-content/logs/ { deny all; }
location ^~ /user-content/skills/ { deny all; }
location ^~ /user-content/uploads/protected/ { deny all; }
Always edit the vhost through the CloudPanel page, not the file on disk: the panel regenerates that file, and panel edits are what survive. To confirm the rules are live, request https://yourdomain.com/user-content/logs/ in a browser. You want a 403, not a log file.
2. Zip extraction can strip the write bits. If you carry the site over as a zip and extract it on the server, directories can come out as 555 (read and execute, no write) depending on what built the zip. Ownership then looks perfect, every file belongs to the site user, but PHP cannot write anywhere, and the first symptom is usually a plugin install failing with “staging directory could not be created”. The scripted provision this guide references sets the permission bits explicitly, so a from-scratch build never hits this; a hand-carried zip is the case it cannot see. The fix is one pass in a server terminal:
cd /home/SITEUSER/htdocs/yourdomain.com
chown -R SITEUSER:www-data .
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
You do. Hostinger sell a self-managed VPS, and say so plainly on their own VPS page: “As our VPS solutions are self-managed, you will get full freedom to configure and manage the virtual server.”
Hostinger looks after the hardware, the network, DDoS filtering at the edge, and whatever backups your plan includes. Everything from Ubuntu upwards is yours: security patches, your control panel, PHP, the database, your TLS certificate, and PageMotor itself.
That is not a catch. It is the same freedom that makes a VPS fix the problems shared hosting gives PageMotor. But nobody emails you when a patch is published, and a server left alone for a year is running a year of known, catalogued, publicly indexed vulnerabilities. Budget about fifteen minutes a month.