hostinger-api-mcp 1.51.0 → 1.52.0

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.
@@ -64,6 +64,22 @@ jobs:
64
64
  - name: Publish package
65
65
  run: npm publish --provenance --access public
66
66
 
67
+ # The package was published unscoped before moving to @hostinger. Republish
68
+ # each release under the old name so existing installs keep updating.
69
+ # Both names point their npm trusted publisher at this workflow file, which
70
+ # is what the config keys on — the job/step it runs in is not part of it.
71
+ # The name below is substituted by the generator, and is left empty for an
72
+ # API that never had an unscoped package.
73
+ - name: Publish legacy unscoped alias
74
+ run: |
75
+ LEGACY='hostinger-api-mcp'
76
+ if [ -z "$LEGACY" ]; then
77
+ echo "No legacy npm name configured — nothing to alias."
78
+ exit 0
79
+ fi
80
+ jq --arg n "$LEGACY" '.name = $n' package.json > pkg.tmp && mv pkg.tmp package.json
81
+ npm publish --provenance --access public
82
+
67
83
  release-github:
68
84
  runs-on: ubuntu-latest
69
85
  needs: [release]
package/README.md CHANGED
@@ -41,13 +41,13 @@ To install the MCP server, run one of the following command, depending on your p
41
41
 
42
42
  ```bash
43
43
  # Install globally from npm
44
- npm install -g hostinger-api-mcp
44
+ npm install -g @hostinger/mcp
45
45
 
46
46
  # Or with yarn
47
- yarn global add hostinger-api-mcp
47
+ yarn global add @hostinger/mcp
48
48
 
49
49
  # Or with pnpm
50
- pnpm add -g hostinger-api-mcp
50
+ pnpm add -g @hostinger/mcp
51
51
  ```
52
52
 
53
53
  ## Update
@@ -56,13 +56,13 @@ To update the MCP server to the latest version, use one of the following command
56
56
 
57
57
  ```bash
58
58
  # Update globally from npm
59
- npm update -g hostinger-api-mcp
59
+ npm update -g @hostinger/mcp
60
60
 
61
61
  # Or with yarn
62
- yarn global upgrade hostinger-api-mcp
62
+ yarn global upgrade @hostinger/mcp
63
63
 
64
64
  # Or with pnpm
65
- pnpm update -g hostinger-api-mcp
65
+ pnpm update -g @hostinger/mcp
66
66
  ```
67
67
 
68
68
  ## Binaries
@@ -3380,7 +3380,7 @@ Replaces all firewall rules within a specified firewall group with the provided
3380
3380
  in a single atomic operation, instead of creating or deleting rules one by one.
3381
3381
 
3382
3382
  Any virtual machine using this firewall group will need to be synchronized after replacing rules;
3383
- pass the "sync" query parameter to trigger synchronization immediately.
3383
+ pass the "sync" parameter to trigger synchronization immediately.
3384
3384
 
3385
3385
  - **Method**: `PUT`
3386
3386
  - **Path**: `/api/vps/v1/firewall/{firewallId}/rules`
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "1.51.0",
3
+ "version": "1.52.0",
4
4
  "description": "Hostinger API — manage domains, DNS, hosting, VPS, billing and more from Gemini CLI.",
5
5
  "mcpServers": {
6
6
  "hostinger": {
7
7
  "command": "npx",
8
8
  "args": [
9
9
  "-y",
10
- "hostinger-api-mcp"
10
+ "@hostinger/mcp"
11
11
  ],
12
12
  "env": {
13
13
  "HOSTINGER_API_TOKEN": "${HOSTINGER_API_TOKEN}"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "1.51.0",
3
+ "version": "1.52.0",
4
4
  "mcpName": "io.github.hostinger/hostinger-api-mcp",
5
5
  "description": "MCP server for Hostinger API",
6
6
  "repository": {
@@ -29,7 +29,8 @@
29
29
  "hostinger-mail-mcp": "./src/servers/mail.js",
30
30
  "hostinger-reach-mcp": "./src/servers/reach.js",
31
31
  "hostinger-vps-mcp": "./src/servers/vps.js",
32
- "hostinger-wordpress-mcp": "./src/servers/wordpress.js"
32
+ "hostinger-wordpress-mcp": "./src/servers/wordpress.js",
33
+ "mcp": "./src/servers/all.js"
33
34
  },
34
35
  "scripts": {
35
36
  "start": "node src/servers/all.js",
@@ -55,4 +56,4 @@
55
56
  "engines": {
56
57
  "node": ">=20.0.0"
57
58
  }
58
- }
59
+ }
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": "1.51.0",
9
+ "version": "1.52.0",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
- "identifier": "hostinger-api-mcp",
14
- "version": "1.51.0",
13
+ "identifier": "@hostinger/mcp",
14
+ "version": "1.52.0",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },
@@ -21,7 +21,7 @@ const fail = (event, extra = {}) => {
21
21
  const isWin = process.platform === 'win32';
22
22
  const bin = (name) => (isWin ? `${name}.cmd` : name);
23
23
  // Run the MCP via npx — no global install, always the latest published version.
24
- const MCP = [bin('npx'), '-y', 'hostinger-api-mcp@latest'];
24
+ const MCP = [bin('npx'), '-y', '@hostinger/mcp@latest'];
25
25
 
26
26
  function capture(cmd, args) {
27
27
  const r = spawnSync(cmd, args, { encoding: 'utf8', shell: false });
@@ -29,7 +29,7 @@ const SECURITY_SCHEMES = {
29
29
 
30
30
  /**
31
31
  * MCP Server for Hostinger API
32
- * Generated from OpenAPI spec version 1.46.0
32
+ * Generated from OpenAPI spec version 1.46.1
33
33
  */
34
34
  class MCPServer {
35
35
  constructor({ name, version, tools }) {
@@ -52,7 +52,7 @@ const SECURITY_SCHEMES: Record<string, SecurityScheme> = {
52
52
 
53
53
  /**
54
54
  * MCP Server for Hostinger API
55
- * Generated from OpenAPI spec version 1.46.0
55
+ * Generated from OpenAPI spec version 1.46.1
56
56
  */
57
57
  class MCPServer {
58
58
  private readonly name: string;
@@ -12233,7 +12233,7 @@ export default [
12233
12233
  "destructiveHint": true,
12234
12234
  "idempotentHint": true
12235
12235
  },
12236
- "description": "Replaces all firewall rules within a specified firewall group with the provided set of rules\nin a single atomic operation, instead of creating or deleting rules one by one.\n\nAny virtual machine using this firewall group will need to be synchronized after replacing rules;\npass the \"sync\" query parameter to trigger synchronization immediately.",
12236
+ "description": "Replaces all firewall rules within a specified firewall group with the provided set of rules\nin a single atomic operation, instead of creating or deleting rules one by one.\n\nAny virtual machine using this firewall group will need to be synchronized after replacing rules;\npass the \"sync\" parameter to trigger synchronization immediately.",
12237
12237
  "method": "PUT",
12238
12238
  "path": "/api/vps/v1/firewall/{firewallId}/rules",
12239
12239
  "inputSchema": {
@@ -12243,10 +12243,6 @@ export default [
12243
12243
  "type": "integer",
12244
12244
  "description": "Firewall ID"
12245
12245
  },
12246
- "sync": {
12247
- "type": "boolean",
12248
- "description": "Synchronize the firewall group to all its virtual machines after replacing the rules"
12249
- },
12250
12246
  "rules": {
12251
12247
  "type": "array",
12252
12248
  "description": "The complete set of firewall rules that atomically replaces all existing rules in the group",
@@ -12254,6 +12250,10 @@ export default [
12254
12250
  "type": "string",
12255
12251
  "description": "rules parameter"
12256
12252
  }
12253
+ },
12254
+ "sync": {
12255
+ "type": "boolean",
12256
+ "description": "Synchronize the firewall group to all its virtual machines after replacing the rules"
12257
12257
  }
12258
12258
  },
12259
12259
  "required": [
@@ -12247,7 +12247,7 @@ const tools: OpenApiTool[] = [
12247
12247
  "destructiveHint": true,
12248
12248
  "idempotentHint": true
12249
12249
  },
12250
- "description": "Replaces all firewall rules within a specified firewall group with the provided set of rules\nin a single atomic operation, instead of creating or deleting rules one by one.\n\nAny virtual machine using this firewall group will need to be synchronized after replacing rules;\npass the \"sync\" query parameter to trigger synchronization immediately.",
12250
+ "description": "Replaces all firewall rules within a specified firewall group with the provided set of rules\nin a single atomic operation, instead of creating or deleting rules one by one.\n\nAny virtual machine using this firewall group will need to be synchronized after replacing rules;\npass the \"sync\" parameter to trigger synchronization immediately.",
12251
12251
  "method": "PUT",
12252
12252
  "path": "/api/vps/v1/firewall/{firewallId}/rules",
12253
12253
  "inputSchema": {
@@ -12257,10 +12257,6 @@ const tools: OpenApiTool[] = [
12257
12257
  "type": "integer",
12258
12258
  "description": "Firewall ID"
12259
12259
  },
12260
- "sync": {
12261
- "type": "boolean",
12262
- "description": "Synchronize the firewall group to all its virtual machines after replacing the rules"
12263
- },
12264
12260
  "rules": {
12265
12261
  "type": "array",
12266
12262
  "description": "The complete set of firewall rules that atomically replaces all existing rules in the group",
@@ -12268,6 +12264,10 @@ const tools: OpenApiTool[] = [
12268
12264
  "type": "string",
12269
12265
  "description": "rules parameter"
12270
12266
  }
12267
+ },
12268
+ "sync": {
12269
+ "type": "boolean",
12270
+ "description": "Synchronize the firewall group to all its virtual machines after replacing the rules"
12271
12271
  }
12272
12272
  },
12273
12273
  "required": [
@@ -687,7 +687,7 @@ export default [
687
687
  "destructiveHint": true,
688
688
  "idempotentHint": true
689
689
  },
690
- "description": "Replaces all firewall rules within a specified firewall group with the provided set of rules\nin a single atomic operation, instead of creating or deleting rules one by one.\n\nAny virtual machine using this firewall group will need to be synchronized after replacing rules;\npass the \"sync\" query parameter to trigger synchronization immediately.",
690
+ "description": "Replaces all firewall rules within a specified firewall group with the provided set of rules\nin a single atomic operation, instead of creating or deleting rules one by one.\n\nAny virtual machine using this firewall group will need to be synchronized after replacing rules;\npass the \"sync\" parameter to trigger synchronization immediately.",
691
691
  "method": "PUT",
692
692
  "path": "/api/vps/v1/firewall/{firewallId}/rules",
693
693
  "inputSchema": {
@@ -697,10 +697,6 @@ export default [
697
697
  "type": "integer",
698
698
  "description": "Firewall ID"
699
699
  },
700
- "sync": {
701
- "type": "boolean",
702
- "description": "Synchronize the firewall group to all its virtual machines after replacing the rules"
703
- },
704
700
  "rules": {
705
701
  "type": "array",
706
702
  "description": "The complete set of firewall rules that atomically replaces all existing rules in the group",
@@ -708,6 +704,10 @@ export default [
708
704
  "type": "string",
709
705
  "description": "rules parameter"
710
706
  }
707
+ },
708
+ "sync": {
709
+ "type": "boolean",
710
+ "description": "Synchronize the firewall group to all its virtual machines after replacing the rules"
711
711
  }
712
712
  },
713
713
  "required": [
@@ -701,7 +701,7 @@ const tools: OpenApiTool[] = [
701
701
  "destructiveHint": true,
702
702
  "idempotentHint": true
703
703
  },
704
- "description": "Replaces all firewall rules within a specified firewall group with the provided set of rules\nin a single atomic operation, instead of creating or deleting rules one by one.\n\nAny virtual machine using this firewall group will need to be synchronized after replacing rules;\npass the \"sync\" query parameter to trigger synchronization immediately.",
704
+ "description": "Replaces all firewall rules within a specified firewall group with the provided set of rules\nin a single atomic operation, instead of creating or deleting rules one by one.\n\nAny virtual machine using this firewall group will need to be synchronized after replacing rules;\npass the \"sync\" parameter to trigger synchronization immediately.",
705
705
  "method": "PUT",
706
706
  "path": "/api/vps/v1/firewall/{firewallId}/rules",
707
707
  "inputSchema": {
@@ -711,10 +711,6 @@ const tools: OpenApiTool[] = [
711
711
  "type": "integer",
712
712
  "description": "Firewall ID"
713
713
  },
714
- "sync": {
715
- "type": "boolean",
716
- "description": "Synchronize the firewall group to all its virtual machines after replacing the rules"
717
- },
718
714
  "rules": {
719
715
  "type": "array",
720
716
  "description": "The complete set of firewall rules that atomically replaces all existing rules in the group",
@@ -722,6 +718,10 @@ const tools: OpenApiTool[] = [
722
718
  "type": "string",
723
719
  "description": "rules parameter"
724
720
  }
721
+ },
722
+ "sync": {
723
+ "type": "boolean",
724
+ "description": "Synchronize the firewall group to all its virtual machines after replacing the rules"
725
725
  }
726
726
  },
727
727
  "required": [
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/agency-hosting.js';
5
5
 
6
- startServer({ name: 'hostinger-agency-hosting-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/agency-hosting.js';
5
5
 
6
- startServer({ name: 'hostinger-agency-hosting-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/all.js';
5
5
 
6
- startServer({ name: 'hostinger-api-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-api-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/all.js';
5
5
 
6
- startServer({ name: 'hostinger-api-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-api-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/billing.js';
5
5
 
6
- startServer({ name: 'hostinger-billing-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/billing.js';
5
5
 
6
- startServer({ name: 'hostinger-billing-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/dns.js';
5
5
 
6
- startServer({ name: 'hostinger-dns-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/dns.js';
5
5
 
6
- startServer({ name: 'hostinger-dns-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/domains.js';
5
5
 
6
- startServer({ name: 'hostinger-domains-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/domains.js';
5
5
 
6
- startServer({ name: 'hostinger-domains-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/ecommerce.js';
5
5
 
6
- startServer({ name: 'hostinger-ecommerce-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/ecommerce.js';
5
5
 
6
- startServer({ name: 'hostinger-ecommerce-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/horizons.js';
5
5
 
6
- startServer({ name: 'hostinger-horizons-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/horizons.js';
5
5
 
6
- startServer({ name: 'hostinger-horizons-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/hosting.js';
5
5
 
6
- startServer({ name: 'hostinger-hosting-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-hosting-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/hosting.js';
5
5
 
6
- startServer({ name: 'hostinger-hosting-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-hosting-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/mail.js';
5
5
 
6
- startServer({ name: 'hostinger-mail-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/mail.js';
5
5
 
6
- startServer({ name: 'hostinger-mail-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/reach.js';
5
5
 
6
- startServer({ name: 'hostinger-reach-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/reach.js';
5
5
 
6
- startServer({ name: 'hostinger-reach-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/vps.js';
5
5
 
6
- startServer({ name: 'hostinger-vps-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/vps.js';
5
5
 
6
- startServer({ name: 'hostinger-vps-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/wordpress.js';
5
5
 
6
- startServer({ name: 'hostinger-wordpress-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '1.52.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/wordpress.js';
5
5
 
6
- startServer({ name: 'hostinger-wordpress-mcp', version: '1.51.0', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '1.52.0', tools });
package/types.d.ts CHANGED
@@ -6911,7 +6911,7 @@ Use this endpoint to remove specific firewall rules.
6911
6911
  in a single atomic operation, instead of creating or deleting rules one by one.
6912
6912
 
6913
6913
  Any virtual machine using this firewall group will need to be synchronized after replacing rules;
6914
- pass the "sync" query parameter to trigger synchronization immediately.
6914
+ pass the "sync" parameter to trigger synchronization immediately.
6915
6915
  */
6916
6916
  "VPS_replaceAllFirewallRulesInGroupV1": {
6917
6917
  params: {
@@ -6919,14 +6919,14 @@ pass the "sync" query parameter to trigger synchronization immediately.
6919
6919
  * Firewall ID
6920
6920
  */
6921
6921
  firewallId: number;
6922
- /**
6923
- * Synchronize the firewall group to all its virtual machines after replacing the rules
6924
- */
6925
- sync?: boolean;
6926
6922
  /**
6927
6923
  * The complete set of firewall rules that atomically replaces all existing rules in the group
6928
6924
  */
6929
6925
  rules: array;
6926
+ /**
6927
+ * Synchronize the firewall group to all its virtual machines after replacing the rules
6928
+ */
6929
+ sync?: boolean;
6930
6930
  };
6931
6931
  response: any; // Response structure will depend on the API
6932
6932
  };