hostinger-api-mcp 3.27.4 → 3.28.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/gemini-extension.json +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/skills/headless/SKILL.md +49 -21
- package/skills/headless/VERSION +3 -3
- package/skills/headless/connect/SKILL.md +51 -3
- package/skills/headless/connect/tools/antigravity.md +21 -19
- package/skills/headless/connect/tools/claude-code.md +24 -14
- package/skills/headless/connect/tools/codex.md +21 -15
- package/skills/headless/connect/tools/cursor.md +20 -14
- package/skills/headless/connect/tools/devin.md +23 -18
- package/skills/headless/connect/tools/vscode.md +24 -14
- package/skills/headless/run-log.mjs +21 -1
- package/skills/headless/steps/01-check-state/SKILL.md +12 -13
- package/skills/headless/steps/03-provision/SKILL.md +11 -10
- package/skills/headless/steps/03-provision/ecommerce/SKILL.md +15 -19
- package/skills/headless/steps/03-provision/webapp/SKILL.md +3 -2
- package/skills/headless/steps/03-provision/wordpress/SKILL.md +6 -7
- package/skills/headless/steps/04-content-model/SKILL.md +39 -21
- package/skills/headless/steps/04-content-model/ecommerce/SKILL.md +3 -3
- package/skills/headless/steps/04-content-model/wordpress/SKILL.md +1 -2
- package/skills/headless/steps/07-validate/SKILL.md +3 -3
- package/skills/headless/steps/08-deploy/SKILL.md +56 -22
- package/skills/headless/steps/09-done/SKILL.md +3 -2
- package/skills/headless/wait.mjs +245 -0
- package/src/core/skills.js +67 -60
- package/src/core/skills.ts +67 -60
- package/src/servers/agency-hosting.js +1 -1
- package/src/servers/agency-hosting.ts +1 -1
- package/src/servers/agent-readiness.js +1 -1
- package/src/servers/agent-readiness.ts +1 -1
- package/src/servers/all.js +1 -1
- package/src/servers/all.ts +1 -1
- package/src/servers/billing.js +1 -1
- package/src/servers/billing.ts +1 -1
- package/src/servers/dns.js +1 -1
- package/src/servers/dns.ts +1 -1
- package/src/servers/domains.js +1 -1
- package/src/servers/domains.ts +1 -1
- package/src/servers/ecommerce.js +1 -1
- package/src/servers/ecommerce.ts +1 -1
- package/src/servers/gpu.js +1 -1
- package/src/servers/gpu.ts +1 -1
- package/src/servers/horizons.js +1 -1
- package/src/servers/horizons.ts +1 -1
- package/src/servers/hosting.js +1 -1
- package/src/servers/hosting.ts +1 -1
- package/src/servers/mail.js +1 -1
- package/src/servers/mail.ts +1 -1
- package/src/servers/reach.js +1 -1
- package/src/servers/reach.ts +1 -1
- package/src/servers/vps.js +1 -1
- package/src/servers/vps.ts +1 -1
- package/src/servers/wordpress.js +1 -1
- package/src/servers/wordpress.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,21 @@ Generated at release time from the diff between the previous and current
|
|
|
4
4
|
build. Tool changes are listed individually; everything else is summarised
|
|
5
5
|
by area.
|
|
6
6
|
|
|
7
|
+
## v3.28.1 — 2026-11-04
|
|
8
|
+
|
|
9
|
+
### Also in this release
|
|
10
|
+
|
|
11
|
+
- Bundled agent skills: 11 files
|
|
12
|
+
- Other files: `src/core/skills.js`, `src/core/skills.ts`
|
|
13
|
+
|
|
14
|
+
## v3.28.0 — 2026-11-04
|
|
15
|
+
|
|
16
|
+
### Also in this release
|
|
17
|
+
|
|
18
|
+
- Dependencies: `package-lock.json`
|
|
19
|
+
- Bundled agent skills: 14 files
|
|
20
|
+
- Other files: `src/core/skills.js`, `src/core/skills.ts`
|
|
21
|
+
|
|
7
22
|
## v3.27.4 — 2026-11-03
|
|
8
23
|
|
|
9
24
|
### Also in this release
|
package/gemini-extension.json
CHANGED
package/package.json
CHANGED
package/server.json
CHANGED
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
"url": "https://github.com/hostinger/api-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "3.
|
|
9
|
+
"version": "3.28.1",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"identifier": "@hostinger/mcp",
|
|
14
|
-
"version": "3.
|
|
14
|
+
"version": "3.28.1",
|
|
15
15
|
"transport": {
|
|
16
16
|
"type": "stdio"
|
|
17
17
|
},
|
package/skills/headless/SKILL.md
CHANGED
|
@@ -58,7 +58,7 @@ The order is sequencial run and check the whole headless flow:
|
|
|
58
58
|
| — | **connect** — connect the Hostinger connector, auth, get active plan | `connect/SKILL.md` → `connect/tools/<tool>.md` | `connect.json` | no |
|
|
59
59
|
| 1 | **check state** — where does this domain stand? resume / switch / start over | `steps/01-check-state/SKILL.md` | `state.json` | no |
|
|
60
60
|
| 2 | **refine** — discover what the user wants, in conversation | `steps/02-refine/SKILL.md` | `brief.md` | no |
|
|
61
|
-
| 3 | **provision** — choose the backend from the brief, then provision it | `steps/03-provision/<backend>/SKILL.md` | `site.json` | **bg** — fire, then
|
|
61
|
+
| 3 | **provision** — choose the backend from the brief, then provision it | `steps/03-provision/<backend>/SKILL.md` | `site.json` | **bg** — fire, then wait at the join |
|
|
62
62
|
| 4 | **content model** — define + create content/images, then push to the backend | `steps/04-content-model/<backend>/SKILL.md` | `content-model.md` | prepare: no · **push: yes** |
|
|
63
63
|
| 5 | **design** — derive design directions from the brief, pick one, write the `design.md` contract + logo | `steps/05-design/SKILL.md` | `design.md`, `brand/` | no |
|
|
64
64
|
| 6 | **frontend** — pick/confirm the framework (default Next.js SSR), implement `design.md` against the backend | `steps/06-frontend/SKILL.md` | source in `<workspace>/src/` | shell: no · **data: yes** |
|
|
@@ -89,7 +89,7 @@ the user rather than improvising the stage from its description.
|
|
|
89
89
|
The **Instance?** column says whether a stage touches the live backend:
|
|
90
90
|
`no` = pure prepare work that can run during the provision wait;
|
|
91
91
|
`push`/`data`/`yes` = a commit phase that joins the instance barrier;
|
|
92
|
-
`bg` = provision itself
|
|
92
|
+
`bg` = provision itself: Hostinger runs the job while you do the prepare work.
|
|
93
93
|
|
|
94
94
|
**Always end with the final report.** Whenever a run ends, give the user the final report defined
|
|
95
95
|
in `steps/09-done/SKILL.md`: an outcome paragraph, a *Steps completed* table (one row per stage that
|
|
@@ -99,8 +99,8 @@ missing step, a failed provision, or a user pause. Every run also saves a **buil
|
|
|
99
99
|
Waiting for the user's answer to a question is not a run ending: end your turn with the question
|
|
100
100
|
alone, with no final report and no build report.
|
|
101
101
|
|
|
102
|
-
**Log the run as you go.** Wrap every stage (and each phase of a split stage) in
|
|
103
|
-
`run-log.mjs stage
|
|
102
|
+
**Log the run as you go.** Wrap every stage (and each phase of a split stage) in the run log —
|
|
103
|
+
`run-log.mjs next <stage>` at each boundary — and log an event the moment something goes wrong, the user
|
|
104
104
|
corrects you, or a skill is missing or wrong — before you continue. See *Run log and build report*.
|
|
105
105
|
|
|
106
106
|
**Why this order.** connect first, so account/plan failures surface before the user spends time
|
|
@@ -178,17 +178,37 @@ which of these cases applies and records it, then provision takes the matching p
|
|
|
178
178
|
3. **User wants a webapp.** Provision is a plain Node.js app host, not headless — `webapp` ignores
|
|
179
179
|
headless shells entirely and is only reached by experimental actions, never the onboarding flow.
|
|
180
180
|
|
|
181
|
-
Either way the create/install is asynchronous and returns `queued` immediately, then it
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
`wordpress_installations_list`
|
|
186
|
-
single rule that makes the overlap safe:
|
|
181
|
+
Either way the create/install is asynchronous and returns `queued` immediately, then it takes a few
|
|
182
|
+
minutes — **what to wait on depends on the path**: a fresh `hosting_websites_create` is `wait.mjs setup`
|
|
183
|
+
(until `hosting_websites_list-setups` says `completed`), while a shell swap
|
|
184
|
+
(`wordpress_installations_install`) creates no new setup, so it's `wait.mjs cms` (until the `/cms` row of
|
|
185
|
+
`wordpress_installations_list` is valid). Run it at the join, not at the fire: by then the prepare work
|
|
186
|
+
has usually outlasted the job, so it returns at once. The single rule that makes the overlap safe:
|
|
187
187
|
|
|
188
|
-
> **Fire provision
|
|
188
|
+
> **Fire provision (Hostinger runs it asynchronously), then do every stage's prepare work while it settles. The
|
|
189
189
|
> moment a step must write to the live instance, it waits for provision to report ready (via the
|
|
190
190
|
> backend step's readiness poll — see above). That wait is the *instance barrier*.**
|
|
191
191
|
|
|
192
|
+
### Waiting on Hostinger: `wait.mjs`
|
|
193
|
+
|
|
194
|
+
`wait.mjs` (next to this file) waits for a slow Hostinger job in one command, so you don't spend a turn
|
|
195
|
+
on every check:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
node <skill>/wait.mjs setup <domain> # a fresh site's setup → completed
|
|
199
|
+
node <skill>/wait.mjs cms <domain> <username> # a shell swap's WordPress install at /cms → valid
|
|
200
|
+
node <skill>/wait.mjs build <domain> <buildUuid> # the deploy build → completed, then the root serves 200
|
|
201
|
+
node <skill>/wait.mjs live <domain> # the root serves 200
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
Run it in the foreground, with a `--timeout` just under your tool's command limit (e.g. `--timeout 9m`
|
|
205
|
+
when commands may run 10 minutes); on `timed_out`, run the same command again: it picks the job up
|
|
206
|
+
where it is. It prints one JSON line and
|
|
207
|
+
exits 0 with `ok: true` and what it waited for; 1 with `ok: false` when the job failed, timed out
|
|
208
|
+
(`timed_out`, `last_status`) or hit an error that waiting won't fix (`error`); 2 when it couldn't start
|
|
209
|
+
the local Hostinger MCP, with `fallback` naming the connector operation to poll yourself, every ~15 s.
|
|
210
|
+
Never write your own `sleep` loops.
|
|
211
|
+
|
|
192
212
|
---
|
|
193
213
|
|
|
194
214
|
## State and artifacts
|
|
@@ -243,14 +263,15 @@ provision runs in the background, its status lives in its own `provision` field
|
|
|
243
263
|
}
|
|
244
264
|
```
|
|
245
265
|
|
|
246
|
-
- `provision` is **absent** until provision fires, `{"status":"in_progress", …}`
|
|
247
|
-
|
|
248
|
-
|
|
266
|
+
- `provision` is **absent** until provision fires, `{"status":"in_progress", …}` from the fire until
|
|
267
|
+
the join's `wait.mjs` returns `ok: true`, then `{"status":"completed", …}`. `domain` is the wait's
|
|
268
|
+
target.
|
|
249
269
|
- Any **instance-barrier** step (content-model push, frontend data, deploy) must read
|
|
250
|
-
`provision.status == "completed"`
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
270
|
+
`provision.status == "completed"` before it runs. The connector is asked twice per run: at
|
|
271
|
+
check-state (or the provision join that sets `completed`), and in deploy's pre-flight, because deploy
|
|
272
|
+
overwrites the site. Steps in between trust `state.json`. A prepare step ignores `provision` entirely.
|
|
273
|
+
- On **resume**, `provision.status` is a hint only: check-state re-polls `hosting_websites_list-setups`
|
|
274
|
+
to learn the truth, then updates the field.
|
|
254
275
|
- Write `state.json` however is easiest, rewriting the whole file included: the run log lives in
|
|
255
276
|
`run-log.json`, which only `run-log.mjs` writes.
|
|
256
277
|
- The **onboarding slug** is how hPanel names the coding tool: `claude` for Claude Code, else
|
|
@@ -269,9 +290,10 @@ in. Write it out in full each time (a shell variable holding the command breaks
|
|
|
269
290
|
```bash
|
|
270
291
|
node <skill>/run-log.mjs <domain> run-start --tool <tool> --model <model> --skill <skill version> # check-state, first thing
|
|
271
292
|
node <skill>/run-log.mjs <domain> run-update --kind resume # check-state, once the route is agreed (or redesign / iterate)
|
|
272
|
-
node <skill>/run-log.mjs <domain>
|
|
273
|
-
node <skill>/run-log.mjs <domain>
|
|
274
|
-
node <skill>/run-log.mjs <domain> stage-
|
|
293
|
+
node <skill>/run-log.mjs <domain> next frontend # at a stage boundary: ends the open stage as ok, starts this one
|
|
294
|
+
node <skill>/run-log.mjs <domain> next frontend --phase shell # split stages log each phase
|
|
295
|
+
node <skill>/run-log.mjs <domain> stage-end frontend ok_after_retries --note "second framework tried" # any other result, or a note
|
|
296
|
+
node <skill>/run-log.mjs <domain> stage-start frontend # start without ending anything
|
|
275
297
|
node <skill>/run-log.mjs <domain> event issue '{"stage":"content_model","symptom":"…","cause":"…","workaround":"…","severity":"medium","resolved":true}'
|
|
276
298
|
node <skill>/run-log.mjs <domain> report --outcome live # done, or wherever the run stops
|
|
277
299
|
node <skill>/run-log.mjs <domain> report-sent <run> # after the report was sent (see below)
|
|
@@ -280,6 +302,12 @@ node <skill>/run-log.mjs <domain> unsent # check-state:
|
|
|
280
302
|
node <skill>/run-log.mjs <domain> run-resume --reason "about/contact layout fix" # follow-up in the same session
|
|
281
303
|
```
|
|
282
304
|
|
|
305
|
+
**Don't spend a turn on the log.** Put each run-log call in the same shell command as the work next
|
|
306
|
+
to it, joined with `&&` (e.g. `node <skill>/run-log.mjs <domain> next deploy && cd … && zip …`), and use
|
|
307
|
+
`next` at a boundary rather than a `stage-end` plus a `stage-start`. When the stage ending wasn't plain
|
|
308
|
+
`ok` or needs a note, put its `stage-end` first in the same command. `next` refuses when two stages are
|
|
309
|
+
open and names them; end them with `stage-end`.
|
|
310
|
+
|
|
283
311
|
**Follow-ups continue the run.** When the user asks for a change after the final report in the
|
|
284
312
|
same session (a layout fix, a copy tweak, a redeploy), that work belongs to the run it follows:
|
|
285
313
|
call `run-resume`, log the feedback and the stages it re-runs as usual, then `report` again. That
|
package/skills/headless/VERSION
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
version=3.
|
|
2
|
-
commit=
|
|
3
|
-
built=2026-11-
|
|
1
|
+
version=3.28.1
|
|
2
|
+
commit=4609383f23a0
|
|
3
|
+
built=2026-11-04
|
|
@@ -72,10 +72,58 @@ npx --yes --package=@hostinger/mcp@latest hostinger-api-mcp --login
|
|
|
72
72
|
npx --yes --package=@hostinger/mcp@latest hostinger-api-mcp --logout
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
Credentials live in `~/.config/hostinger-mcp/credentials.json` (macOS/Linux) or `%APPDATA%\hostinger-mcp\credentials.json` (Windows) and are shared by every Hostinger MCP binary. OAuth works only
|
|
75
|
+
Credentials live in `~/.config/hostinger-mcp/credentials.json` (macOS/Linux) or `%APPDATA%\hostinger-mcp\credentials.json` (Windows) and are shared by every Hostinger MCP binary. OAuth works only when the tool runs the server over its default local (stdio) transport, which is what every registration below uses; `--http` needs `HOSTINGER_API_TOKEN`.
|
|
76
76
|
|
|
77
77
|
## Phase 2 - Route to the specific tool instructions
|
|
78
78
|
|
|
79
|
+
**Use the Hostinger connector only through your tool's native MCP tools** (`mcp__hostinger__*`,
|
|
80
|
+
`mcp__hostinger-*__*`, or however your tool names them). Never spawn the MCP server yourself and
|
|
81
|
+
never write a JSON-RPC client to talk to it: every connector call must be a visible MCP tool call
|
|
82
|
+
the user can follow and approve, not a script.
|
|
83
|
+
|
|
84
|
+
### Check both tool groups, not just "some Hostinger tools"
|
|
85
|
+
|
|
86
|
+
The build needs **two** groups of connector operations, and they come from different servers. Having
|
|
87
|
+
one group says nothing about the other:
|
|
88
|
+
|
|
89
|
+
| Group | Operations | Comes from | Needed by |
|
|
90
|
+
|---|---|---|---|
|
|
91
|
+
| **Hosting** | `hosting_*` (websites, deploy, build report), `wordpress_*` | `hostinger` (`npx -y @hostinger/mcp@latest`), or the scoped servers such as `hostinger-hosting` + `hostinger-wordpress` | every build |
|
|
92
|
+
| **Ecommerce** | `ecommerce_*` (stores, products, shipping, payments) | **only** `hostinger-ecommerce` (`npx --package=@hostinger/mcp@latest hostinger-ecommerce-mcp`), or the Ecommerce MCP in the Hostinger Connector. Neither `hostinger` nor the scoped hosting servers include it | Ecommerce backends (chosen later, in refine) |
|
|
93
|
+
|
|
94
|
+
Check each group on its own, right here at connect, before anything else:
|
|
95
|
+
|
|
96
|
+
- **Hosting:** a Hostinger search tool finds `hosting_websites_list` (e.g. search "list websites").
|
|
97
|
+
- **Ecommerce:** a tool from the `hostinger-ecommerce` server is in the session (Claude Code:
|
|
98
|
+
`mcp__hostinger-ecommerce__*`), and its search finds `ecommerce_stores_list` (e.g. search "list stores").
|
|
99
|
+
|
|
100
|
+
Only when **both** pass are the Hostinger tools "in this session". If either is missing, the tools
|
|
101
|
+
are **not** in this session: follow *register, restart, resume* below for the missing server(s) now,
|
|
102
|
+
even though other Hostinger tools respond. Don't wait for refine to choose a backend: the restart
|
|
103
|
+
costs the least before the user has been asked anything, and finding the gap at provision forces a
|
|
104
|
+
second restart in the middle of the build.
|
|
105
|
+
|
|
106
|
+
### When the Hostinger tools aren't in this session: register, restart, resume
|
|
107
|
+
|
|
108
|
+
Most coding tools load MCP servers only when they start, so a server registered mid-run isn't usable
|
|
109
|
+
until the tool restarts. When either tool group above is missing:
|
|
110
|
+
|
|
111
|
+
1. **Register the missing servers** in the tool's MCP config, as the tool route below shows: `hostinger`
|
|
112
|
+
(`npx -y @hostinger/mcp@latest`) if the hosting group is missing, and `hostinger-ecommerce`
|
|
113
|
+
(`npx --package=@hostinger/mcp@latest hostinger-ecommerce-mcp`) if the ecommerce group is missing.
|
|
114
|
+
Skip a server that is already registered under its name. When neither group is there, register
|
|
115
|
+
both: the backend isn't chosen until refine, and one restart then covers every backend.
|
|
116
|
+
2. **Pull the skills and write `connect.json`** (the route's skills step and Phase 3) before you stop,
|
|
117
|
+
so the next run starts from them.
|
|
118
|
+
3. **Send the first message and end your turn.** It follows *The first message* in
|
|
119
|
+
`headless/SKILL.md`: the sign-in link if one was needed, then one line saying Hostinger is set up
|
|
120
|
+
and asking the user to restart the tool (the route says how) and paste the same prompt again so the
|
|
121
|
+
build continues from there. This is a pause, not a run ending: no final report and no build report.
|
|
122
|
+
4. **On the next run** the tools are loaded, so connect skips registration and check-state resumes the
|
|
123
|
+
domain's workspace.
|
|
124
|
+
|
|
125
|
+
If a tool loads new servers without a restart (VS Code), use them right away and skip steps 3–4.
|
|
126
|
+
|
|
79
127
|
| Tool | Route |
|
|
80
128
|
|-------------|---------------------------------|
|
|
81
129
|
| Claude Code | `connect/tools/claude-code.md` |
|
|
@@ -85,8 +133,8 @@ Credentials live in `~/.config/hostinger-mcp/credentials.json` (macOS/Linux) or
|
|
|
85
133
|
| Antigravity | `connect/tools/antigravity.md` |
|
|
86
134
|
| Devin | `connect/tools/devin.md` |
|
|
87
135
|
|
|
88
|
-
If the user's tool isn't listed yet, connect it the generic way
|
|
89
|
-
|
|
136
|
+
If the user's tool isn't listed yet, connect it the generic way: register both Hostinger MCP servers
|
|
137
|
+
in that tool's MCP config (command `npx`, args as above), then follow *register, restart, resume*.
|
|
90
138
|
|
|
91
139
|
### Always pull the latest skills (never run a stale copy)
|
|
92
140
|
|
|
@@ -8,25 +8,18 @@ description: "Specific Antigravity Hostinger MCP Server connection instructions
|
|
|
8
8
|
- Make Hostinger MCP tools and Skills available in Google Antigravity.
|
|
9
9
|
- Don't provision hosting, create stores, install WordPress, or deploy by hand here — the skill does all of that. This entry stops at signed in and checking that Hostinger MCP and skills are reachable.
|
|
10
10
|
|
|
11
|
-
## Step 1 — Make the
|
|
12
|
-
|
|
13
|
-
The later stages drive the Hostinger connector
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
(`~/.config/hostinger-mcp/credentials.json`, or `HOSTINGER_API_TOKEN`)
|
|
22
|
-
|
|
23
|
-
result is in `reply.result.content[0].text`. Write the little client yourself (~20 lines), keep one
|
|
24
|
-
process alive for the whole run, and use it wherever a stage calls the connector.
|
|
25
|
-
|
|
26
|
-
**To persist it for future Antigravity sessions** (optional), add the server to
|
|
27
|
-
`~/.gemini/antigravity/mcp_config.json` (Windows: `C:\Users\<USERNAME>\.gemini\antigravity\mcp_config.json`) —
|
|
28
|
-
reachable from the Agent panel's "..." → MCP Servers → Manage MCP Servers → View raw config — then fully
|
|
29
|
-
quit and reopen Antigravity once so it loads:
|
|
11
|
+
## Step 1 — Make the MCP tools available
|
|
12
|
+
|
|
13
|
+
The later stages drive the Hostinger connector through Antigravity's native MCP tools. Check **both** tool groups (hosting and ecommerce), as *Check both tool groups* in `connect/SKILL.md`
|
|
14
|
+
says: other Hostinger tools responding doesn't mean the `hostinger-ecommerce` ones are there. Both
|
|
15
|
+
respond → use them and move on.
|
|
16
|
+
|
|
17
|
+
If either is missing, add the missing server(s) to `~/.gemini/antigravity/mcp_config.json` (Windows:
|
|
18
|
+
`C:\Users\<USERNAME>\.gemini\antigravity\mcp_config.json`), which you can reach from the Agent panel's
|
|
19
|
+
"..." → MCP Servers → Manage MCP Servers → View raw config. Merge them into any existing
|
|
20
|
+
`mcpServers` rather than replacing the file. The bootstrap already signed you in, so they reuse the
|
|
21
|
+
cached sign-in (`~/.config/hostinger-mcp/credentials.json`, or `HOSTINGER_API_TOKEN`) and there are
|
|
22
|
+
no tokens to handle:
|
|
30
23
|
|
|
31
24
|
```json
|
|
32
25
|
{
|
|
@@ -34,11 +27,20 @@ quit and reopen Antigravity once so it loads:
|
|
|
34
27
|
"hostinger": {
|
|
35
28
|
"command": "npx",
|
|
36
29
|
"args": ["-y", "@hostinger/mcp@latest"]
|
|
30
|
+
},
|
|
31
|
+
"hostinger-ecommerce": {
|
|
32
|
+
"command": "npx",
|
|
33
|
+
"args": ["--package=@hostinger/mcp@latest", "hostinger-ecommerce-mcp"]
|
|
37
34
|
}
|
|
38
35
|
}
|
|
39
36
|
}
|
|
40
37
|
```
|
|
41
38
|
|
|
39
|
+
Antigravity loads MCP servers only when the editor starts, so follow *register, restart, resume* in
|
|
40
|
+
`connect/SKILL.md`: finish Step 2 and `connect.json`, then ask the user to fully quit and reopen
|
|
41
|
+
Antigravity and paste the same prompt. Never spawn the server yourself or write a JSON-RPC client to
|
|
42
|
+
reach it.
|
|
43
|
+
|
|
42
44
|
## Step 2 — Install the skills and hand off
|
|
43
45
|
|
|
44
46
|
Download the Hostinger skills locally **at the start of every run** so your agent then reads the files
|
|
@@ -9,20 +9,30 @@ description: "Specific Claude Code Hostinger MCP Server connection instructions
|
|
|
9
9
|
- Don't provision hosting, create stores, install WordPress, or deploy by hand here — the skill does all of that. This entry stops at signed in and checking that Hostinger MCP and skills are available.
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
## Step 1 — Make the MCP
|
|
13
|
-
|
|
14
|
-
Stages 2–10 drive the Hostinger connector
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
12
|
+
## Step 1 — Make the MCP tools available
|
|
13
|
+
|
|
14
|
+
Stages 2–10 drive the Hostinger connector through Claude Code's native MCP tools. Check **both** tool
|
|
15
|
+
groups as *Check both tool groups* in `connect/SKILL.md` says:
|
|
16
|
+
|
|
17
|
+
- **Hosting:** `mcp__hostinger__*`, or the scoped `mcp__hostinger-hosting__*`.
|
|
18
|
+
- **Ecommerce:** `mcp__hostinger-ecommerce__*`. The scoped servers (`hostinger-hosting`,
|
|
19
|
+
`hostinger-wordpress`, `hostinger-domains`, …) never include it, so a session full of
|
|
20
|
+
`mcp__hostinger-*__*` tools can still be missing it.
|
|
21
|
+
|
|
22
|
+
Both present → use them and move on. Either missing → register the missing server(s) at user scope
|
|
23
|
+
now (`claude mcp list` shows what's already registered; skip those). The bootstrap already signed you
|
|
24
|
+
in, so they reuse the cached sign-in (`~/.config/hostinger-mcp/credentials.json`, or
|
|
25
|
+
`HOSTINGER_API_TOKEN`) and there are no tokens to handle:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
claude mcp add hostinger --scope user -- npx -y @hostinger/mcp@latest # hosting group missing
|
|
29
|
+
claude mcp add hostinger-ecommerce --scope user -- npx --package=@hostinger/mcp@latest hostinger-ecommerce-mcp # ecommerce group missing
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Claude Code loads MCP servers only at startup, so follow *register, restart, resume* in
|
|
33
|
+
`connect/SKILL.md`: finish Step 2 and `connect.json`, then ask the user to exit Claude Code, start it
|
|
34
|
+
again in the same folder (`claude`, or `claude --continue` to keep this conversation) and paste the
|
|
35
|
+
same prompt. Never spawn the server yourself or write a JSON-RPC client to reach it.
|
|
26
36
|
|
|
27
37
|
## Step 2 — Install the skills and hand off
|
|
28
38
|
|
|
@@ -8,31 +8,37 @@ description: "Specific Codex Hostinger MCP Server connection instructions for th
|
|
|
8
8
|
- Make Hostinger MCP tools and Skills available in Codex.
|
|
9
9
|
- Don't provision hosting, create stores, install WordPress, or deploy by hand here — the skill does all of that. This entry stops at signed in and checking that Hostinger MCP and skills are reachable.
|
|
10
10
|
|
|
11
|
-
## Step 1 — Make the
|
|
11
|
+
## Step 1 — Make the MCP tools available
|
|
12
12
|
|
|
13
|
-
The later stages drive the Hostinger connector
|
|
14
|
-
|
|
13
|
+
The later stages drive the Hostinger connector through Codex's native MCP tools. Check **both** tool groups (hosting and ecommerce), as *Check both tool groups* in `connect/SKILL.md`
|
|
14
|
+
says: other Hostinger tools responding doesn't mean the `hostinger-ecommerce` ones are there. Both
|
|
15
|
+
respond → use them and move on.
|
|
15
16
|
|
|
16
|
-
If
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
and speak newline-delimited JSON-RPC 2.0 over its stdin/stdout (`initialize` →
|
|
20
|
-
`notifications/initialized` → `tools/call`). It reuses your cached sign-in automatically
|
|
21
|
-
(`~/.config/hostinger-mcp/credentials.json`, or `HOSTINGER_API_TOKEN`) — no tokens to handle. It
|
|
22
|
-
exposes `search`, `execute`, `multi-execute`; everything the stages need goes through `execute`, and a
|
|
23
|
-
result is in `reply.result.content[0].text`. Write the little client yourself (~20 lines), keep one
|
|
24
|
-
process alive for the whole run, and use it wherever a stage calls the connector.
|
|
17
|
+
If either is missing, register the missing server(s); skip one already registered. The bootstrap already signed you in, so they reuse the cached
|
|
18
|
+
sign-in (`~/.config/hostinger-mcp/credentials.json`, or `HOSTINGER_API_TOKEN`) and there are no tokens
|
|
19
|
+
to handle:
|
|
25
20
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
21
|
+
```bash
|
|
22
|
+
codex mcp add hostinger -- npx -y @hostinger/mcp@latest
|
|
23
|
+
codex mcp add hostinger-ecommerce -- npx --package=@hostinger/mcp@latest hostinger-ecommerce-mcp
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
or add them to `~/.codex/config.toml`:
|
|
29
27
|
|
|
30
28
|
```toml
|
|
31
29
|
[mcp_servers.hostinger]
|
|
32
30
|
command = "npx"
|
|
33
31
|
args = ["-y", "@hostinger/mcp@latest"]
|
|
32
|
+
|
|
33
|
+
[mcp_servers.hostinger-ecommerce]
|
|
34
|
+
command = "npx"
|
|
35
|
+
args = ["--package=@hostinger/mcp@latest", "hostinger-ecommerce-mcp"]
|
|
34
36
|
```
|
|
35
37
|
|
|
38
|
+
Codex loads MCP servers only when it starts, so follow *register, restart, resume* in
|
|
39
|
+
`connect/SKILL.md`: finish Step 2 and `connect.json`, then ask the user to restart Codex and paste the
|
|
40
|
+
same prompt. Never spawn the server yourself or write a JSON-RPC client to reach it.
|
|
41
|
+
|
|
36
42
|
## Step 2 — Install the skills and hand off
|
|
37
43
|
|
|
38
44
|
Download the Hostinger skills locally **at the start of every run** so your agent then reads the files
|
|
@@ -32,9 +32,17 @@ npm install -g @hostinger/mcp
|
|
|
32
32
|
hostinger-api-mcp --version
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
###
|
|
35
|
+
### Register the servers in Cursor
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
Check **both** tool groups, as *Check both tool groups* in `connect/SKILL.md` says: hosting
|
|
38
|
+
(`mcp__hostinger__*` or `mcp__hostinger-hosting__*`) **and** ecommerce (`mcp__hostinger-ecommerce__*`).
|
|
39
|
+
The scoped `mcp__hostinger-*__*` servers never include ecommerce, so they alone don't count. Both
|
|
40
|
+
present → skip registration: go to Step 2 only if you still need sign-in, otherwise go to Step 3.
|
|
41
|
+
|
|
42
|
+
If either is missing, register the missing server(s) in `~/.cursor/mcp.json` (global, so every project and every
|
|
43
|
+
later run has them). Merge them into any existing `mcpServers` rather than replacing the file.
|
|
44
|
+
**Do not** put `HOSTINGER_API_TOKEN` in this file when you want OAuth: leave the token unset so
|
|
45
|
+
OAuth can run:
|
|
38
46
|
|
|
39
47
|
```json
|
|
40
48
|
{
|
|
@@ -42,12 +50,20 @@ Register the server in `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (glo
|
|
|
42
50
|
"hostinger": {
|
|
43
51
|
"command": "npx",
|
|
44
52
|
"args": ["--yes", "--package=@hostinger/mcp@latest", "hostinger-api-mcp"]
|
|
53
|
+
},
|
|
54
|
+
"hostinger-ecommerce": {
|
|
55
|
+
"command": "npx",
|
|
56
|
+
"args": ["--yes", "--package=@hostinger/mcp@latest", "hostinger-ecommerce-mcp"]
|
|
45
57
|
}
|
|
46
58
|
}
|
|
47
59
|
}
|
|
48
60
|
```
|
|
49
61
|
|
|
50
|
-
|
|
62
|
+
Cursor loads MCP servers only when the editor starts, so after Step 2 and Step 3 follow
|
|
63
|
+
*register, restart, resume* in `connect/SKILL.md`: ask the user to fully quit and reopen Cursor
|
|
64
|
+
(and, if Cursor asks, enable the two Hostinger servers under Settings → MCP), then paste the same
|
|
65
|
+
prompt. Never spawn the server yourself or write a JSON-RPC client to reach it: every connector call
|
|
66
|
+
must be a native MCP tool call.
|
|
51
67
|
|
|
52
68
|
## Step 2 — Authenticate with OAuth (browser opens)
|
|
53
69
|
|
|
@@ -84,17 +100,7 @@ npx --yes --package=@hostinger/mcp@latest hostinger-api-mcp --logout
|
|
|
84
100
|
|
|
85
101
|
**API token (optional, CI / scripts):** set `HOSTINGER_API_TOKEN` in the environment before launching Cursor. When present it always wins and no OAuth code runs. Do not commit the token.
|
|
86
102
|
|
|
87
|
-
## Step 3 —
|
|
88
|
-
|
|
89
|
-
Cursor only loads registered MCP servers when the editor starts, so a mid-run `.cursor/mcp.json` change will not attach tools to **this** session. For the rest of this run, talk to the local stdio server directly: spawn
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
npx --yes --package=@hostinger/mcp@latest hostinger-api-mcp
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
and speak newline-delimited JSON-RPC 2.0 over its stdin/stdout (`initialize` → `notifications/initialized` → `tools/call`). It reuses the cached sign-in from Step 2 (or `HOSTINGER_API_TOKEN`) — no tokens to handle in chat. It exposes `search`, `execute`, and `multi-execute`; everything the stages need goes through `execute`, and a result is in `reply.result.content[0].text`. Keep one process alive for the whole run.
|
|
96
|
-
|
|
97
|
-
## Step 4 — Install the skills and hand off
|
|
103
|
+
## Step 3 — Install the skills and hand off
|
|
98
104
|
|
|
99
105
|
Download the Hostinger skills locally **at the start of every run** so your agent then reads the files
|
|
100
106
|
directly with no further network calls during the run. **Always pull the latest and overwrite any
|
|
@@ -8,32 +8,37 @@ description: "Specific Devin Hostinger MCP Server connection instructions for th
|
|
|
8
8
|
- Make Hostinger MCP tools and Skills available in Devin.
|
|
9
9
|
- Don't provision hosting, create stores, install WordPress, or deploy by hand here — the skill does all of that. This entry stops at signed in and checking that Hostinger MCP and skills are reachable.
|
|
10
10
|
|
|
11
|
-
## Step 1 — Make the
|
|
11
|
+
## Step 1 — Make the MCP tools available
|
|
12
12
|
|
|
13
|
-
The later stages drive the Hostinger connector
|
|
14
|
-
|
|
13
|
+
The later stages drive the Hostinger connector through Devin's native MCP tools. Check **both** tool groups (hosting and ecommerce), as *Check both tool groups* in `connect/SKILL.md`
|
|
14
|
+
says: other Hostinger tools responding doesn't mean the `hostinger-ecommerce` ones are there. Both
|
|
15
|
+
respond → use them and move on.
|
|
15
16
|
|
|
16
|
-
If
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
If either is missing, register the missing server(s) for Devin; skip one already registered. The bootstrap already signed you in, so they reuse the
|
|
18
|
+
cached sign-in (`~/.config/hostinger-mcp/credentials.json`, or `HOSTINGER_API_TOKEN`) and there are no
|
|
19
|
+
tokens to handle.
|
|
19
20
|
|
|
20
|
-
- **Devin CLI:**
|
|
21
|
-
|
|
21
|
+
- **Devin CLI:**
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
devin mcp add hostinger -- npx -y @hostinger/mcp@latest
|
|
25
|
+
devin mcp add hostinger-ecommerce -- npx --package=@hostinger/mcp@latest hostinger-ecommerce-mcp
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
- **Devin app:** Settings → MCP Marketplace → **Add Your Own**, transport **STDIO**, once per server:
|
|
22
29
|
|
|
23
30
|
```json
|
|
24
|
-
{
|
|
25
|
-
"command": "npx",
|
|
26
|
-
"args": ["-y", "@hostinger/mcp@latest"]
|
|
27
|
-
}
|
|
31
|
+
{ "command": "npx", "args": ["-y", "@hostinger/mcp@latest"] }
|
|
28
32
|
```
|
|
29
33
|
|
|
30
|
-
|
|
34
|
+
```json
|
|
35
|
+
{ "command": "npx", "args": ["--package=@hostinger/mcp@latest", "hostinger-ecommerce-mcp"] }
|
|
36
|
+
```
|
|
31
37
|
|
|
32
|
-
If
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
`reply.result.content[0].text`.
|
|
38
|
+
If the tools still aren't in this session, follow *register, restart, resume* in `connect/SKILL.md`:
|
|
39
|
+
finish Step 2 and `connect.json`, then ask the user to restart the Devin session (on Devin Desktop,
|
|
40
|
+
fully quit and reopen the app) and paste the same prompt. Never spawn the server yourself or write a
|
|
41
|
+
JSON-RPC client to reach it.
|
|
37
42
|
|
|
38
43
|
## Step 2 — Install the skills and hand off
|
|
39
44
|
|
|
@@ -8,15 +8,16 @@ description: "Specific VS Code Hostinger MCP Server connection instructions for
|
|
|
8
8
|
- Make Hostinger MCP tools and Skills available in VS Code (GitHub Copilot / agent mode).
|
|
9
9
|
- Don't provision hosting, create stores, install WordPress, or deploy by hand here — the skill does all of that. This entry stops at signed in and checking that Hostinger MCP and skills are reachable.
|
|
10
10
|
|
|
11
|
-
## Step 1 — Make the
|
|
11
|
+
## Step 1 — Make the MCP tools available
|
|
12
12
|
|
|
13
|
-
The later stages drive the Hostinger connector
|
|
14
|
-
|
|
13
|
+
The later stages drive the Hostinger connector through VS Code's native MCP tools. Check **both** tool groups (hosting and ecommerce), as *Check both tool groups* in `connect/SKILL.md`
|
|
14
|
+
says: other Hostinger tools responding doesn't mean the `hostinger-ecommerce` ones are there. Both
|
|
15
|
+
respond → use them and move on.
|
|
15
16
|
|
|
16
|
-
If
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
If either is missing, register the missing server(s) for VS Code; skip one already registered. The bootstrap already signed you in, so they reuse
|
|
18
|
+
the cached sign-in (`~/.config/hostinger-mcp/credentials.json`, or `HOSTINGER_API_TOKEN`) and there are
|
|
19
|
+
no tokens to handle. Add them to `.vscode/mcp.json` (workspace) or your user `settings.json` under
|
|
20
|
+
`mcp`:
|
|
20
21
|
|
|
21
22
|
```json
|
|
22
23
|
// .vscode/mcp.json
|
|
@@ -26,21 +27,30 @@ process and the bootstrap already signed you in, so it reuses your cached sign-i
|
|
|
26
27
|
"type": "stdio",
|
|
27
28
|
"command": "npx",
|
|
28
29
|
"args": ["-y", "@hostinger/mcp@latest"]
|
|
30
|
+
},
|
|
31
|
+
"hostinger-ecommerce": {
|
|
32
|
+
"type": "stdio",
|
|
33
|
+
"command": "npx",
|
|
34
|
+
"args": ["--package=@hostinger/mcp@latest", "hostinger-ecommerce-mcp"]
|
|
29
35
|
}
|
|
30
36
|
}
|
|
31
37
|
}
|
|
32
38
|
```
|
|
33
39
|
|
|
34
|
-
Or add
|
|
35
|
-
|
|
40
|
+
Or add them in two commands:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
code --add-mcp '{"name":"hostinger","command":"npx","args":["-y","@hostinger/mcp@latest"]}'
|
|
44
|
+
code --add-mcp '{"name":"hostinger-ecommerce","command":"npx","args":["--package=@hostinger/mcp@latest","hostinger-ecommerce-mcp"]}'
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
VS Code picks up new servers and their tools become available right away, with no editor restart.
|
|
36
48
|
(Alternatively, the official Hostinger Connector extension installs the same server:
|
|
37
49
|
`code --install-extension hostinger-official.hostinger-connector`.)
|
|
38
50
|
|
|
39
|
-
If
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
`multi-execute`; everything the stages need goes through `execute`, and a result is in
|
|
43
|
-
`reply.result.content[0].text`.
|
|
51
|
+
If the tools still don't show up, follow *register, restart, resume* in `connect/SKILL.md`: finish
|
|
52
|
+
Step 2 and `connect.json`, then ask the user to run **Developer: Reload Window** and paste the same
|
|
53
|
+
prompt. Never spawn the server yourself or write a JSON-RPC client to reach it.
|
|
44
54
|
|
|
45
55
|
## Step 2 — Install the skills and hand off
|
|
46
56
|
|