MCP-Server
hdply bringt einen eingebauten MCP-Server mit. Jeder MCP-Client — Claude Code, Claude Desktop oder ein eigener Agent — kann Ihre Sites auflisten, eine anlegen, das live geschaltete HTML lesen, eine neue Version veröffentlichen und die Deploy-Historie einsehen. Fünf Tools, ein API-Schlüssel, nichts lokal auszuführen.
Sicher genug für einen Agenten
Es gibt kein Lösch-Tool. Eine Site zu entfernen geht absichtlich nur über die Web-Konsole. Ein Agent mit vollen Deploy-Rechten kann eine schlechte Version veröffentlichen, aber Ihre Arbeit nicht zerstören.
Jeder Deploy — von Mensch oder Agent — wird versioniert. Ein falscher Deploy ist in der Konsole mit einem Klick wiederhergestellt, und get_deploy_history zeigt genau, welche Deploys über MCP kamen ("source": "mcp"). Das ist der Unterschied zu einem allgemeinen Deployment-MCP: hdply ist auf eine HTML-Datei pro Site begrenzt, der schlimmste Fall ist also eine Seite, die eine Minute lang falsch aussieht.
Der Hauptanwendungsfall
Claude schreibt Ihnen eine Seite — ein Konzept, ein Dashboard, ein Mockup — als HTML-Artefakt. Statt die Datei zu speichern und irgendwo hochzuladen, sagen Sie „veröffentliche das“, und dieselbe Unterhaltung endet mit einer öffentlichen URL zum Verschicken. Später ist „ändere die Überschrift und veröffentliche neu“ wieder nur ein Zug.
Verbinden
Claude Code, ein Befehl:
claude mcp add --transport http hdply https://api.app.hdply.com/mcp \ --header "Authorization: Bearer hdply_sk_…"
Claude Desktop, in claude_desktop_config.json (über mcp-remote, da Desktop nur lokale Befehle startet):
{
"mcpServers": {
"hdply": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.app.hdply.com/mcp",
"--header", "Authorization: Bearer hdply_sk_…"]
}
}
}
Jeder andere Client: Es ist ein zustandsloser Streamable-HTTP-Endpunkt. Senden Sie JSON-RPC an die URL unten mit demselben Bearer-Header.
POST https://api.app.hdply.com/mcp
Authorization: Bearer hdply_sk_…
Content-Type: application/json
{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}
Den Schlüssel erstellen Sie im Konsolen-Dashboard (Karte „API key“). Er wird einmal angezeigt und gewährt Zugriff auf alle Sites des Kontos — behandeln Sie ihn wie ein Passwort.
Tools
Jedes Tool nimmt ein JSON-Objekt entgegen und liefert Textinhalt zurück. Fehler kommen als Text mit isError: true, nie als Transportfehler, damit ein Agent den Grund lesen und es erneut versuchen kann.
list_sites
Alle Sites, die Sie verwalten können, persönlich und im Team, mit Live-URL und ob schon etwas deployt ist. Ohne Argumente.
Beispielaufruf
{ "name": "list_sites", "arguments": {} }
Ergebnis
[
{
"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
Legt eine Site an. Mit html ist sie live, sobald der Aufruf zurückkehrt, auf einer vom Server vergebenen zufälligen Subdomain; ohne bleibt sie leer bis deploy_site.
Eingabe
{
"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)
}
Beispielaufruf
{
"name": "create_site",
"arguments": {
"html": "<!doctype html><html><head><title>Q3 proposal</title></head><body><h1>Q3 proposal</h1></body></html>"
}
}
Ergebnis
Site "Q3 proposal" live at https://k3v9x2m7q1.hdply.com (id 42, subroute k3v9x2m7q1)
get_site_html
Das HTML, das Besucher gerade bekommen. Vor einer Änderung lesen, damit der Agent das ändert, was wirklich live ist, nicht das, woran er sich erinnert.
Eingabe
{
"site": string // required — numeric project id ("42") or subdomain ("k3v9x2m7q1")
}
Beispielaufruf
{ "name": "get_site_html", "arguments": { "site": "k3v9x2m7q1" } }
Ergebnis
<!doctype html><html><head><title>Q3 proposal</title>…
deploy_site
Veröffentlicht neues HTML auf einer bestehenden Site. Live bei Rückkehr des Aufrufs, versioniert wie jeder Deploy, in der Historie mit mcp markiert.
Eingabe
{
"site": string // required — numeric project id or subdomain
"html": string // required — full HTML document, max 1 MB
}
Beispielaufruf
{
"name": "deploy_site",
"arguments": {
"site": "k3v9x2m7q1",
"html": "<!doctype html>…"
}
}
Ergebnis
Deployed. Live at https://k3v9x2m7q1.hdply.com
get_deploy_history
Die Deploy-Historie: wer, wann, wie groß und über welchen Weg (web, api, mcp, restore). Neueste zuerst.
Eingabe
{
"site": string // required — numeric project id ("42") or subdomain ("k3v9x2m7q1")
}
Beispielaufruf
{ "name": "get_deploy_history", "arguments": { "site": "k3v9x2m7q1" } }
Ergebnis
[
{
"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"
}
]
Fehler
Tool-Fehler sind gewöhnliche Ergebnisse mit isError: true. Der Text beginnt mit einem stabilen Code, wo es einen gibt: file_too_large (über 1 MB), project_limit (Tariflimit erreicht), site not found. Die einzigen Fehler auf HTTP-Ebene sind Authentifizierungsfehler (401).
{ "content": [{ "type": "text", "text": "file_too_large: html exceeds the 1MB size limit" }], "isError": true }
Grenzen
- Eine HTML-Datei pro Site, maximal 1 MB. CSS und JavaScript inline einbetten; Bilder als externe URLs oder Data-URIs.
- Kostenlose Konten fassen 6 Sites; Light hebt das auf 25, Pro ist unbegrenzt. Darüber schlägt
create_sitemitproject_limitfehl. - Neue Sites werden mit
X-Robots-Tag: noindexausgeliefert, bis der Besitzer die Indexierung in der Konsole (oder per RESTPATCH /v1/projects/{id}/settings) einschaltet. Ein Agent kann eine Seite nicht allein auffindbar machen.
Discovery
Der Server beschreibt sich unter zwei URLs ohne Authentifizierung: einer Server-Card mit der aktuellen Tool-Liste samt Schemas und dem Manifest für MCP-Verzeichnisse.
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)
Lieber reines HTTP? Dieselben Operationen gibt es als REST-API, und hdply.com/llms.txt fasst beides für Agenten zusammen.