Model Context Protocol (MCP) server for Hostinger API.
$ npx -y skills add hostinger/api-mcp-server --agent claude-code
Model Context Protocol (MCP) server for Hostinger API.
If you don't want to install or run anything locally, connect directly to Hostinger's hosted MCP server:
https://mcp.hostinger.com
claude mcp add --transport http hostinger https://mcp.hostinger.com
This opens a browser window to authorize via OAuth. Once approved, the operations below are reachable through execute in your session.
Add https://mcp.hostinger.com as a remote Streamable HTTP MCP server in your client's configuration and complete the OAuth prompt when it appears. Refer to your client's docs for how it exposes "add remote MCP server" / "custom connector" settings.
If you don't have Node.js installed, you can download it from the official website. Alternatively, you can use a package manager like Homebrew (for macOS) or Chocolatey (for Windows) to install Node.js.
We recommend using NVM (Node Version Manager) to install and manage installed Node.js versions. After installing NVM, you can install Node.js with the following command:
nvm install v24
nvm use v24
To install the MCP server, run one of the following command, depending on your package manager:
# Install globally from npm
npm install -g @hostinger/mcp
# Or with yarn
yarn global add @hostinger/mcp
# Or with pnpm
pnpm add -g @hostinger/mcp
To update the MCP server to the latest version, use one of the following commands, depending on your package manager:
# Update globally from npm
npm update -g @hostinger/mcp
# Or with yarn
yarn global upgrade @hostinger/mcp
# Or with pnpm
pnpm update -g @hostinger/mcp
This package installs the following MCP server commands:
hostinger-api-mcp — unified server over every operation (410 total)hostinger-agency-hosting-mcp — 42 operations for agency-hostinghostinger-agent-readiness-mcp — 3 operations for agent-readinesshostinger-billing-mcp — 9 operations for billinghostinger-dns-mcp — 8 operations for dnshostinger-domains-mcp — 42 operations for domainshostinger-ecommerce-mcp — 29 operations for ecommercehostinger-horizons-mcp — 6 operations for horizonshostinger-hosting-mcp — 67 operations for hostinghostinger-mail-mcp — 38 operations for mailhostinger-reach-mcp — 62 operations for reachhostinger-vps-mcp — 67 operations for vpshostinger-wordpress-mcp — 40 operations for wordpressEvery binary exposes the same three tools; a scoped binary only searches and executes its own group's operations. hostinger-api-mcp remains the backwards-compatible default.
The following environment variables can be configured when running the server:
DEBUG: Enable debug logging (true/false) (default: false)HOSTINGER_API_TOKEN: Your API token, which will be sent in the Authorization header. When set, OAuth is bypassed entirely.API_TOKEN: Deprecated alias for HOSTINGER_API_TOKEN. Will be removed in a future version — prefer HOSTINGER_API_TOKEN.OAUTH_ISSUER: OAuth server base URL (default: https://auth.hostinger.com). Only used when HOSTINGER_API_TOKEN is not set.The server supports two authentication methods:
Set HOSTINGER_API_TOKEN in the environment or .env file. When present it always takes precedence — no OAuth code runs.
When HOSTINGER_API_TOKEN is not set and the server runs in stdio mode, OAuth 2.0 with PKCE is used automatically on the first authenticated tool call:
Credentials are stored at:
~/.config/hostinger-mcp/credentials.json (mode 0600)%APPDATA%\hostinger-mcp\credentials.jsonCredentials are shared across all Hostinger MCP binaries (hostinger-api-mcp, hostinger-vps-mcp, etc.).
Manual commands:
# Run the OAuth sign-in flow immediately (don't wait for the first tool call)
hostinger-api-mcp --login
# Revoke stored credentials
hostinger-api-mcp --logout
HTTP transport note: OAuth sign-in is not supported in --http mode. Set HOSTINGER_API_TOKEN before using --http.
{
"mcpServers": {
"hostinger-api": {
"command": "hostinger-api-mcp",
"env": {
"DEBUG": "false",
"HOSTINGER_API_TOKEN": "YOUR API TOKEN"
}
}
}
}
The MCP server supports two transport modes:
The server can use standard input / output (stdio) transport (default). This provides local streaming:
The server can use HTTP streaming transport. This provides bidirectional streaming over HTTP:
# Default HTTP transport on localhost:8100
hostinger-api-mcp --http
# Specify custom host and port
hostinger-api-mcp --http --host 0.0.0.0 --port 8150
Options:
--http Use HTTP streaming transport (requires HOSTINGER_API_TOKEN env var)
--stdio Use Server-Sent Events transport (default)
--host {host} Hostname or IP address to listen on (default: 127.0.0.1)
--port {port} Port to bind to (default: 8100)
--login Run OAuth sign-in flow and exit
--logout Revoke stored OAuth credentials and exit
--help Show help message
This server implements the Model Context Protocol (MCP) and can be used with any MCP-compatible consumer.
Example of connecting to this server using HTTP streaming transport:
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
// Create HTTP transport
const transport = new StreamableHTTPClientTransport({
url: "http://localhost:8100/",
headers: {
"Authorization": `Bearer ${process.env.HOSTINGER_API_TOKEN}`
}
});
// Connect to the MCP server
const client = new Client({
name: "my-client",
version: "1.0.0"
}, {
capabilities: {}
});
await client.connect(transport);
// List available tools
const { tools } = await client.listTools();
console.log("Available tools:", tools);
// Execute an operation
const result = await client.callTool({
name: "execute",
arguments: { operation: "billing_catalog_list", params: { category: "DOMAIN" } }
});
console.log("Tool result:", result);
Every server exposes three tools:
search — find operations by keyword; returns each match with its inputSchema.execute — run one operation: { "operation": "<name>", "params": { ... } }.multi-execute — run up to 20 operations in order, stopping at the first failure. A params value that is exactly "$steps.<i>.<path>" is replaced by that value from an earlier step's result.The operations search offers, by binary:
Operations that newer tools replace are hidden from search, and not documented, in every binary that also offers the replacing tool. They keep working through execute until they are removed.
hostinger-agency-hosting-mcpDeploy a node-static Agency Plan (h5g) website from an archive file. WARNING: this overwrites the website's existing contents and cannot be undone — always confirm with the user before proceeding. Use this for Agency Plan websites of type node-static (a Node.js-built static site that requires a build step or a plain simple static site). The tool resolves the website from its domain, uploads the archive to the website's file browser over TUS, and triggers the build-assets process which builds the site and deploys the result to public_html. This operation is synchronous: the build and deployment complete before the tool returns, so the website is live as soon as the tool finishes successfully — there is no separate asynchronous build to wait for or poll. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the archive yourself, this tool does it end-to-end. For plain PHP applications that should be extracted as-is, use agency-hosting_deploy-php-application instead. The website UID is automatically resolved from the domain.
customcustomDeploy a PHP (or other non-build) Agency Plan (h5g) website from an archive file. WARNING: this overwrites the website's existing contents and cannot be undone — always confirm with the user before proceeding. Use this for Agency Plan websites where the archive contents should be extracted and served as-is with no build step (e.g., PHP applications). The tool resolves the website from its domain, uploads the archive to the website's file browser over TUS, and triggers the import-archive process which overwrites the website contents with the archive contents. This operation is synchronous: the archive is extracted and deployed before the tool returns, so the website is live as soon as the tool finishes successfully — there is no separate asynchronous build to wait for or poll. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the archive yourself, this tool does it end-to-end. For node-static websites that require a build step, use agency-hosting_deploy-node-static-website instead. The website UID is automatically resolved from the domain.
customcustomLists the datacenters available for provisioning a new website on the given Agency Plan hosting order.
Each datacenter includes a pinger_url you can ping from the client to measure round-trip
latency; comparing the results across datacenters lets you pick the nearest one (lowest
ping) before choosing its code as the datacenter_code when creating a website setup.
GET/api/agency-hosting/v1/orders/{order_id}/datacentersChanges the primary domain for an Agency Plan website.
Provide the current domain in the path and the new domain in the request body. Set domain to null to revert to the temporary domain.
PUT/api/agency-hosting/v1/websites/{website_uid}/domains/{from_domain}Links a domain to the specified Agency Plan website so it can serve traffic for that domain.
POST/api/agency-hosting/v1/websites/{website_uid}/domainsReturns a paginated list of domains associated with Agency Plan websites accessible to the authenticated client.
Use the website_uuids filter to narrow results to specific websites.
GET/api/agency-hosting/v1/domainsUnlinks a domain from the specified Agency Plan website.
The website stops serving traffic on this domain immediately.
Website files and database are preserved, and any other linked domains remain accessible.
api-mcp-server is a Claude Code plugin with 20 hand-picked skills, indexed on Flowy in the MCP Servers category. Install it with the command on its page. It includes audit-hosting, connect-domain, deploy-to-hosting. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it