Server MCP

Terakhir diperbarui: 2026-09-08

hdply memiliki server MCP bawaan. Klien MCP apa pun — Claude Code, Claude Desktop, atau agen buatanmu — bisa menampilkan daftar situs, membuat situs, membaca HTML yang sedang tayang, menerbitkan versi baru, dan melihat riwayat deploy. Lima alat, satu API key, tidak ada yang perlu dijalankan secara lokal.

Aman diserahkan ke agen

Tidak ada alat hapus. Menghapus situs sengaja hanya bisa lewat konsol web. Agen dengan hak deploy penuh bisa menerbitkan versi yang buruk, tetapi tidak bisa menghancurkan pekerjaanmu.

Setiap deploy — oleh manusia maupun agen — tersimpan sebagai versi. Deploy yang salah bisa dipulihkan dengan sekali klik di konsol, dan get_deploy_history menunjukkan persis deploy mana yang datang lewat MCP ("source": "mcp"). Itulah bedanya dengan MCP deploy serbaguna: hdply dibatasi satu file HTML per situs, jadi kasus terburuknya hanyalah halaman yang tampak salah selama semenit.

Kasus penggunaan utama

Claude menulis halaman untukmu — proposal, dasbor, mockup — sebagai artefak HTML. Alih-alih menyimpan file dan mengunggahnya ke suatu tempat, kamu bilang "terbitkan ini" dan percakapan yang sama berakhir dengan URL publik yang bisa dikirim. Nanti, "ubah judulnya lalu terbitkan lagi" cukup satu giliran.

Menghubungkan

Claude Code, satu perintah:

claude mcp add --transport http hdply https://api.app.hdply.com/mcp \
  --header "Authorization: Bearer hdply_sk_…"

Claude Desktop, di claude_desktop_config.json (lewat mcp-remote, karena Desktop hanya menjalankan perintah lokal):

{
  "mcpServers": {
    "hdply": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://api.app.hdply.com/mcp",
               "--header", "Authorization: Bearer hdply_sk_…"]
    }
  }
}

Klien lain: ini endpoint Streamable HTTP tanpa status. Kirim JSON-RPC ke URL di bawah dengan header bearer yang sama.

POST https://api.app.hdply.com/mcp
Authorization: Bearer hdply_sk_…
Content-Type: application/json

{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}

Kunci dibuat di dasbor konsol (kartu "API key"). Hanya ditampilkan sekali dan memberi akses ke semua situs di akun — perlakukan seperti kata sandi.

Alat

Setiap alat menerima objek JSON dan mengembalikan konten teks. Kesalahan dikembalikan sebagai teks dengan isError: true, bukan kegagalan transport, sehingga agen bisa membaca alasannya dan mencoba lagi.

list_sites

Semua situs yang bisa kamu kelola, pribadi dan tim, beserta URL tayang dan apakah sudah ada yang di-deploy. Tanpa argumen.

Contoh pemanggilan

{ "name": "list_sites", "arguments": {} }

Hasil

[
  {
    "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

Membuat situs. Dengan html, situs tayang begitu pemanggilan kembali, di subdomain acak yang diberikan server; tanpa itu, situs kosong sampai deploy_site.

Masukan

{
  "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)
}

Contoh pemanggilan

{
  "name": "create_site",
  "arguments": {
    "html": "<!doctype html><html><head><title>Q3 proposal</title></head><body><h1>Q3 proposal</h1></body></html>"
  }
}

Hasil

Site "Q3 proposal" live at https://k3v9x2m7q1.hdply.com (id 42, subroute k3v9x2m7q1)

get_site_html

HTML yang diterima pengunjung saat ini. Baca sebelum mengedit agar agen mengubah yang benar-benar tayang, bukan yang diingatnya.

Masukan

{
  "site": string   // required — numeric project id ("42") or subdomain ("k3v9x2m7q1")
}

Contoh pemanggilan

{ "name": "get_site_html", "arguments": { "site": "k3v9x2m7q1" } }

Hasil

<!doctype html><html><head><title>Q3 proposal</title>…

deploy_site

Menerbitkan HTML baru ke situs yang ada. Tayang saat pemanggilan kembali, diversikan seperti deploy lain, ditandai mcp di riwayat.

Masukan

{
  "site": string   // required — numeric project id or subdomain
  "html": string   // required — full HTML document, max 1 MB
}

Contoh pemanggilan

{
  "name": "deploy_site",
  "arguments": {
    "site": "k3v9x2m7q1",
    "html": "<!doctype html>…"
  }
}

Hasil

Deployed. Live at https://k3v9x2m7q1.hdply.com

get_deploy_history

Riwayat deploy: siapa, kapan, seberapa besar, dan lewat jalur mana (web, api, mcp, restore). Terbaru di atas.

Masukan

{
  "site": string   // required — numeric project id ("42") or subdomain ("k3v9x2m7q1")
}

Contoh pemanggilan

{ "name": "get_deploy_history", "arguments": { "site": "k3v9x2m7q1" } }

Hasil

[
  {
    "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"
  }
]

Kesalahan

Kesalahan alat adalah hasil biasa dengan isError: true. Teksnya diawali kode yang stabil bila ada: file_too_large (lebih dari 1 MB), project_limit (batas paket tercapai), site not found. Satu-satunya kesalahan level HTTP adalah kegagalan autentikasi (401).

{ "content": [{ "type": "text", "text": "file_too_large: html exceeds the 1MB size limit" }], "isError": true }

Batasan

Penemuan

Server mendeskripsikan dirinya di dua URL tanpa autentikasi: server card berisi daftar alat dan skema terkini, serta manifest yang dipakai untuk direktori 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)

Lebih suka HTTP biasa? Operasi yang sama tersedia sebagai REST API, dan hdply.com/llms.txt merangkum keduanya untuk agen.