Server MCP
hdply include un server MCP integrato. Qualsiasi client MCP — Claude Code, Claude Desktop o un agente tuo — può elencare i tuoi siti, crearne uno, leggere l’HTML online, pubblicare una nuova versione e consultare la cronologia dei deploy. Cinque strumenti, una chiave API, niente da eseguire in locale.
Sicuro da affidare a un agente
Non esiste uno strumento di eliminazione. Rimuovere un sito si può fare solo dalla console web, per scelta. Un agente con tutti i permessi di deploy può pubblicare una versione sbagliata, ma non può distruggere il tuo lavoro.
Ogni deploy — umano o agente — è versionato. Un deploy sbagliato si ripristina con un clic nella console, e get_deploy_history mostra esattamente quali deploy sono passati da MCP ("source": "mcp"). È questa la differenza rispetto a un MCP di deploy generico: hdply è limitato a un file HTML per sito, quindi il caso peggiore è una pagina che appare sbagliata per un minuto.
Il caso d’uso principale
Claude ti scrive una pagina — una proposta, una dashboard, un mockup — come artefatto HTML. Invece di salvare il file e caricarlo da qualche parte, dici «pubblicalo» e la stessa conversazione finisce con un URL pubblico da inviare. Più tardi, «cambia il titolo e ripubblica» è un altro singolo turno.
Connessione
Claude Code, un comando:
claude mcp add --transport http hdply https://api.app.hdply.com/mcp \ --header "Authorization: Bearer hdply_sk_…"
Claude Desktop, in claude_desktop_config.json (tramite mcp-remote, perché Desktop avvia solo comandi locali):
{
"mcpServers": {
"hdply": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.app.hdply.com/mcp",
"--header", "Authorization: Bearer hdply_sk_…"]
}
}
}
Qualsiasi altro client: è un endpoint Streamable HTTP senza stato. Invia JSON-RPC all’URL qui sotto con lo stesso header bearer.
POST https://api.app.hdply.com/mcp
Authorization: Bearer hdply_sk_…
Content-Type: application/json
{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}
La chiave si crea nella dashboard della console (scheda «API key»). Viene mostrata una sola volta e dà accesso a tutti i siti dell’account: trattala come una password.
Strumenti
Ogni strumento riceve un oggetto JSON e restituisce contenuto testuale. Gli errori tornano come testo con isError: true, mai come errore di trasporto, così l’agente può leggere il motivo e riprovare.
list_sites
Tutti i siti che puoi gestire, personali e di team, con l’URL online e se c’è già qualcosa pubblicato. Senza argomenti.
Esempio di chiamata
{ "name": "list_sites", "arguments": {} }
Risultato
[
{
"id": 42,
"name": "Q3 proposal",
"subroute": "k3v9x2m7q1",
"url": "https://k3v9x2m7q1.hdply.com",
"live": true
},
{
"id": 43,
"name": "Launch page",
"subroute": "launch",
"url": "https://launch.hdply.com",
"live": false,
"team_id": 7,
"team_name": "Design"
}
]
create_site
Crea un sito. Con html è online appena la chiamata ritorna, su un sottodominio casuale assegnato dal server; senza, il sito esiste vuoto fino a deploy_site.
Input
{
"html": string // optional — full HTML document, max 1 MB; live immediately when given
"name": string // optional — falls back to the HTML <title>
"team_id": number // optional — create inside a team (0 = personal)
}
Esempio di chiamata
{
"name": "create_site",
"arguments": {
"html": "<!doctype html><html><head><title>Q3 proposal</title></head><body><h1>Q3 proposal</h1></body></html>"
}
}
Risultato
Site "Q3 proposal" live at https://k3v9x2m7q1.hdply.com (id 42, subroute k3v9x2m7q1)
get_site_html
L’HTML che i visitatori ricevono adesso. Leggilo prima di una modifica, così l’agente cambia ciò che è davvero online, non ciò che ricorda.
Input
{
"site": string // required — numeric project id ("42") or subdomain ("k3v9x2m7q1")
}
Esempio di chiamata
{ "name": "get_site_html", "arguments": { "site": "k3v9x2m7q1" } }
Risultato
<!doctype html><html><head><title>Q3 proposal</title>…
deploy_site
Pubblica nuovo HTML su un sito esistente. Online al ritorno della chiamata, versionato come ogni deploy, etichettato mcp nella cronologia.
Input
{
"site": string // required — numeric project id or subdomain
"html": string // required — full HTML document, max 1 MB
}
Esempio di chiamata
{
"name": "deploy_site",
"arguments": {
"site": "k3v9x2m7q1",
"html": "<!doctype html>…"
}
}
Risultato
Deployed. Live at https://k3v9x2m7q1.hdply.com
get_deploy_history
La cronologia dei deploy: chi, quando, quanto grande e per quale via (web, api, mcp, restore). Il più recente per primo.
Input
{
"site": string // required — numeric project id ("42") or subdomain ("k3v9x2m7q1")
}
Esempio di chiamata
{ "name": "get_deploy_history", "arguments": { "site": "k3v9x2m7q1" } }
Risultato
[
{
"id": 918,
"size": 4812,
"hash": "3f9c1a7b2d4e6f80",
"source": "mcp",
"actor_email": "you@example.com",
"created_at": "2026-09-08T09:41:12Z"
},
{
"id": 902,
"size": 4790,
"hash": "b81e0c5d9a2f4711",
"source": "web",
"actor_email": "you@example.com",
"created_at": "2026-09-07T18:02:55Z"
}
]
Errori
Gli errori degli strumenti sono risultati normali con isError: true. Il testo inizia con un codice stabile quando esiste: file_too_large (oltre 1 MB), project_limit (limite del piano raggiunto), site not found. Gli unici errori a livello HTTP sono quelli di autenticazione (401).
{ "content": [{ "type": "text", "text": "file_too_large: html exceeds the 1MB size limit" }], "isError": true }
Limiti
- Un file HTML per sito, massimo 1 MB. Metti CSS e JavaScript inline; le immagini possono essere URL esterni o data URI.
- Gli account gratuiti hanno 6 siti; Light sale a 25 e Pro è illimitato. Oltre,
create_sitefallisce conproject_limit. - I nuovi siti sono serviti con
X-Robots-Tag: noindexfinché il proprietario non attiva l’indicizzazione nella console (o via RESTPATCH /v1/projects/{id}/settings). Un agente non può rendere una pagina cercabile da solo.
Discovery
Il server si descrive a due URL senza autenticazione: una server card con l’elenco degli strumenti e gli schemi aggiornati, e il manifest usato per le directory MCP.
https://api.app.hdply.com/.well-known/mcp/server-card.json # tools + schemas, live https://api.app.hdply.com/.well-known/mcp/server.json # registry manifest (com.hdply/hdply)
Preferisci HTTP semplice? Le stesse operazioni esistono come API REST, e hdply.com/llms.txt riassume entrambe per gli agenti.