hostinger-api-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DEBUG | No | Enable debug logging (true/false) | false |
| API_TOKEN | Yes | Your API token, which will be sent in the Authorization header |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Hostinger API notes for agents. Find operations with search; the inputSchema it returns is authoritative for request shapes. Run one with execute, or chain several with multi-execute.
Databases (web hosting, hosting_* operations)
MySQL runs on the same server as the website. From the deployed app connect to host 127.0.0.1, port 3306. PHP may also use localhost (Unix socket). Node.js should use 127.0.0.1: localhost can resolve to IPv6 (::1) and not every database user has that grant.
The
hostfrom hosting_databases_list (srvNNNN.hstgr.io) is only for connections from outside Hostinger, after hosting_databases_create-remote-connection. Never use it from the app.Agency Plan (agency-hosting_* operations) database users are created for localhost; the PHP app connects there.
Asynchronous operations
A success response often means "queued", not "done". Poll the matching read operation with backoff (seconds, then minutes). Never re-send the write.
hosting_websites_create -> poll hosting_websites_list-setups with the domain until status is completed (a few minutes); file, deploy and database calls return 404/409 before that.
A Node.js deploy or hosting_nodejs_start-build -> poll hosting_get-deployment with the domain until the build state is completed or failed; a failed build comes back with its logs and failure analysis.
wordpress_installations_install and WordPress plugin/theme/core jobs -> poll wordpress_installations_list.
agency-hosting_website-setups_create -> poll agency-hosting_website-setups_status with setup_uuid; other Agency Plan jobs -> agency-hosting_websites_list-processes.
Website deletion, database repair and domain contact changes finish in the background.
Credentials
Never write database passwords or API tokens into source code, client-side JavaScript or committed .env files.
Node.js apps read them from environment variables: set the full set with hosting_nodejs_replace-environment-variables (full replace; values are masked on read). Build-time variables (Next.js) need a new build afterwards.
PHP apps read them from a config file on the server, outside the repository.
Generate strong passwords and do not echo them back once stored.
Deploying from a shell
The Hostinger CLI deploys a website in one command and links the directory:
hostinger up <dir> --domain <domain> --format json(--yesreplaces content,--createmakes a site,--dry-runshows the plan). It never prompts without a terminal.
Deploying a website (this server only)
hosting_deploy replaces the upload, archive-deploy, build, WordPress import/plugin/theme and Git operations named above. Give it a local directory (it detects static/PHP, Node.js, a WordPress site, plugin or theme and packs it itself), a local archive with
type, orgit: { repository, branch }. Do not run those operations by hand.A Node.js deploy returns a buildUuid at once and builds on the server. Poll hosting_get-deployment with the domain, pausing longer each time, until the build state is completed or failed. A failed build comes back with its logs and analysis: fix the cause and deploy again. It replaces the build, log and settings operations.
Static, PHP, plugin and theme deploys are complete when hosting_deploy returns. A WordPress site import only starts: its files are extracted and the site is ready a few minutes later.
Every deploy overwrites the site's contents: confirm the domain with the user before the first deploy to a site that already has content.
Product updates
For what is new at Hostinger (release notes, recent changes, new features), call changelog_list-entries, filtered by
productandsince. For what is coming (the roadmap), call it withstatus: upcoming. It needs no API token.
For end-to-end site builds install the headless skill: npx skills add hostinger/api-mcp-server
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| resources | {} |
| extensions | {
"io.modelcontextprotocol/skills": {}
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| searchA | Find API operations by keyword. Returns the best matches, each with its operation name, hints and inputSchema. Pass a result's operation and params matching its inputSchema to execute or multi-execute. |
| executeA | Run one API operation found with search. params is a flat object holding the operation's path, query and body parameters as described by its inputSchema. |
| multi-executeA | Run up to 20 API operations in order, stopping at the first failure. A params value that is exactly "$steps.." is replaced by that value from the result of earlier step (dot-separated keys; numbers index arrays), e.g. "$steps.0.0.id". |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| audit-hosting/SKILL.md | |
| connect-domain/SKILL.md | |
| deploy-to-hosting/SKILL.md | |
| hostinger-headless/SKILL.md | |
| hostinger-headless/connect/SKILL.md | |
| hostinger-headless/connect/bootstrap.mjs | |
| hostinger-headless/connect/tools/antigravity.md | |
| hostinger-headless/connect/tools/claude-code.md | |
| hostinger-headless/connect/tools/codex.md | |
| hostinger-headless/connect/tools/cursor.md | |
| hostinger-headless/connect/tools/devin.md | |
| hostinger-headless/connect/tools/vscode.md | |
| hostinger-headless/hostinger-mcp.mjs | |
| hostinger-headless/push-content.mjs | |
| hostinger-headless/report.schema.json | |
| hostinger-headless/run-log.mjs | |
| hostinger-headless/steps/01-check-state/SKILL.md | |
| hostinger-headless/steps/02-refine/SKILL.md | |
| hostinger-headless/steps/03-provision/SKILL.md | |
| hostinger-headless/steps/03-provision/ecommerce/SKILL.md | |
| hostinger-headless/steps/03-provision/webapp/SKILL.md | |
| hostinger-headless/steps/03-provision/wordpress/SKILL.md | |
| hostinger-headless/steps/04-content-model/SKILL.md | |
| hostinger-headless/steps/04-content-model/ecommerce/SKILL.md | |
| hostinger-headless/steps/04-content-model/wordpress/SKILL.md | |
| hostinger-headless/steps/04-content-model/wordpress/by-hand.md | |
| hostinger-headless/steps/04-content-model/wordpress/contact-form.md | |
| hostinger-headless/steps/04-content-model/wordpress/custom-plugins.md | |
| hostinger-headless/steps/04-content-model/wordpress/woocommerce.md | |
| hostinger-headless/steps/05-design/SKILL.md | |
| hostinger-headless/steps/06-frontend/SKILL.md | |
| hostinger-headless/steps/07-validate/SKILL.md | |
| hostinger-headless/steps/08-deploy/SKILL.md | |
| hostinger-headless/steps/09-done/SKILL.md | |
| hostinger-headless/wait.mjs | |
| hostinger-headless/wp-mcp.mjs | |
| maintain-wordpress/SKILL.md | |
| migrate-to-hosting/SKILL.md | |
| troubleshoot-website/SKILL.md |
TDQS
Scored across 3 tools
Search is explicitly for discovery, execute for running one operation, and multi-execute for running up to 20 in order with dependency chaining. Their purposes are clearly distinct and non-overlapping, with descriptions that make the boundaries obvious.
The names 'search', 'execute', and 'multi-execute' all use verb-based action words, but 'multi-execute' is a compound that deviates slightly from the simple verb pattern. The set is still predictable and readable overall.
Three tools perfectly match the generic API gateway pattern: one for discovery, one for single execution, and one for batch execution. Each tool earns its place without redundancy or missing layers.
The set covers discovery, single execution, and chained batch execution, which is nearly complete for a meta-API gateway. Minor gaps include no continue-on-error option for multi-execute and no way to list all operations without a keyword.