Server MCP

Ultimo aggiornamento: 2026-09-08

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

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.