thinhost-mcp
Official# thinhost-mcp
The [thin.host](https://thin.host) MCP server: publish static sites (Docusaurus, Astro, Vite,
Next export, hand-written HTML), provision custom domains, and send transactional email —
from Claude Code, Claude Desktop, or any MCP client.
Prefer nothing to install? The same tools are hosted at `https://thin.host/mcp` (OAuth or a
bearer API key): `claude mcp add --transport http thin-host https://thin.host/mcp`.
## Install (local server, reads your build folder directly)
Create an API key in the thin.host dashboard (Settings → Create API key), then:
```bash
claude mcp add thin-host \
-e THINHOST_API_URL=https://thin.host/v1 \
-e THIN_HOST_API_KEY=th_live_your_key \
-- uvx thinhost-mcp
```
Claude Desktop (`claude_desktop_config.json`):
```json
{{ "mcpServers": {{ "thin-host": {{ "command": "uvx", "args": ["thinhost-mcp"],
"env": {{ "THINHOST_API_URL": "https://thin.host/v1", "THIN_HOST_API_KEY": "th_live_your_key" }} }} }} }}
```
## Tools
| Tool | What it does |
|---|---|
| `publish_website` | Publish an HTML file, folder, ZIP or static build folder as a live site (big builds batched automatically) |
| `update_website` | Push changes; `sync=true` prunes files the new build no longer ships |
| `publish_website_from_url` / `update_website_from_url` | Same, from a public .zip/.html URL |
| `list_websites` | List the account's hosted sites |
| `provision_domain` / `check_domain_status` / `update_origin` / `release_domain` / `list_domains` | Custom domains with a hosted claim + DNS flow |
| `send_email` | Transactional email (allowlist + verified sending domain required) |
Docusaurus users: see the [recipe](https://thin.host/docs/static-sites) and the drop-in Claude
skill in [`skills/thin-host-docusaurus`](skills/thin-host-docusaurus/SKILL.md).
## Development
This repo is exported from the thin.host application repo (`scripts/export_mcp_package.py`
there) so the package can never drift from the deployed server; edit it there, re-export, and
push. Releases are built by GitHub Actions and published to PyPI with trusted publishing when a
`v*` tag is pushed.
TDQS
Scored across 11 tools
Tools target mostly distinct resources and actions: website publishing/listing/updating, domain provisioning/status/update/release/listing, and email. The only real overlap is between publish_website/update_website and their _from_url variants; descriptions clarify the source-path vs URL distinction, but an agent could still hesitate between them.
All tool names use consistent snake_case and follow a predictable verb_noun or verb_noun_suffix pattern. The _from_url variants also use a consistent suffix convention.
11 tools is well-scoped for a hosting, domain, and transactional email platform. Each tool covers a distinct operation without excessive surface area.
Domain lifecycle is complete: provision, check status, update origin, release, and list. Website lifecycle covers publish, update, and list, but lacks an obvious delete/unpublish or get-detail operation, which is a notable gap for a hosting service.