MCP 서버
hdply에는 MCP 서버가 내장되어 있습니다. Claude Code, Claude Desktop, 직접 만든 에이전트 등 어떤 MCP 클라이언트든 사이트 목록 조회, 생성, 라이브 HTML 읽기, 새 버전 배포, 배포 히스토리 확인을 할 수 있습니다. 도구 5개, API 키 하나, 로컬에서 실행할 것은 없습니다.
에이전트에게 맡겨도 안전합니다
삭제 도구가 없습니다. 사이트 삭제는 의도적으로 웹 콘솔에서만 가능합니다. 배포 권한을 전부 가진 에이전트도 잘못된 버전을 올릴 수는 있지만, 작업물을 파괴할 수는 없습니다.
사람이 하든 에이전트가 하든 모든 배포는 버전으로 남습니다. 잘못된 배포는 콘솔에서 클릭 한 번으로 복원되고, get_deploy_history로 어떤 배포가 MCP를 거쳤는지("source": "mcp") 정확히 알 수 있습니다. 범용 배포 MCP와의 차이가 여기에 있습니다. hdply는 사이트당 HTML 파일 하나로 범위가 좁아서, 최악의 경우라야 잠깐 이상하게 보이는 페이지입니다.
대표 유스케이스
Claude가 기획안, 대시보드, 목업 같은 페이지를 HTML 아티팩트로 만들어 줍니다. 파일을 저장해서 어딘가에 올리는 대신 "이거 공개해줘"라고 말하면, 같은 대화가 보낼 수 있는 공개 URL로 끝납니다. 나중에 "제목 바꿔서 다시 올려줘"도 한 턴이면 됩니다.
연결
Claude Code는 명령 한 줄:
claude mcp add --transport http hdply https://api.app.hdply.com/mcp \ --header "Authorization: Bearer hdply_sk_…"
Claude Desktop은 claude_desktop_config.json에 추가합니다 (Desktop은 로컬 명령만 실행하므로 mcp-remote를 거칩니다):
{
"mcpServers": {
"hdply": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.app.hdply.com/mcp",
"--header", "Authorization: Bearer hdply_sk_…"]
}
}
}
다른 클라이언트: 상태 없는 Streamable HTTP 엔드포인트입니다. 아래 URL에 같은 Bearer 헤더로 JSON-RPC를 보내면 됩니다.
POST https://api.app.hdply.com/mcp
Authorization: Bearer hdply_sk_…
Content-Type: application/json
{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}
키는 콘솔 대시보드의 "API 키" 카드에서 발급합니다. 한 번만 표시되고 계정의 모든 사이트에 접근할 수 있으니 비밀번호처럼 다루세요.
도구
각 도구는 JSON 객체를 받아 텍스트 콘텐츠를 돌려줍니다. 오류는 전송 실패가 아니라 isError: true가 붙은 텍스트로 돌아오므로, 에이전트가 이유를 읽고 다시 시도할 수 있습니다.
list_sites
관리할 수 있는 모든 사이트(개인·팀)를 라이브 URL, 배포 여부와 함께 돌려줍니다. 인자 없음.
호출 예시
{ "name": "list_sites", "arguments": {} }
결과
[
{
"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
사이트를 만듭니다. html을 주면 서버가 배정한 무작위 서브도메인에서 응답이 오는 순간 라이브되고, 없으면 deploy_site 전까지 빈 사이트로 존재합니다.
입력
{
"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)
}
호출 예시
{
"name": "create_site",
"arguments": {
"html": "<!doctype html><html><head><title>Q3 proposal</title></head><body><h1>Q3 proposal</h1></body></html>"
}
}
결과
Site "Q3 proposal" live at https://k3v9x2m7q1.hdply.com (id 42, subroute k3v9x2m7q1)
get_site_html
방문자가 지금 받고 있는 HTML입니다. 수정 전에 읽어서 에이전트가 기억이 아니라 실제 라이브 내용을 고치게 하세요.
입력
{
"site": string // required — numeric project id ("42") or subdomain ("k3v9x2m7q1")
}
호출 예시
{ "name": "get_site_html", "arguments": { "site": "k3v9x2m7q1" } }
결과
<!doctype html><html><head><title>Q3 proposal</title>…
deploy_site
기존 사이트에 새 HTML을 배포합니다. 응답이 오면 라이브이고, 다른 배포와 똑같이 버전이 남으며 히스토리에 mcp로 태깅됩니다.
입력
{
"site": string // required — numeric project id or subdomain
"html": string // required — full HTML document, max 1 MB
}
호출 예시
{
"name": "deploy_site",
"arguments": {
"site": "k3v9x2m7q1",
"html": "<!doctype html>…"
}
}
결과
Deployed. Live at https://k3v9x2m7q1.hdply.com
get_deploy_history
배포 히스토리: 누가, 언제, 얼마나 큰 파일을, 어떤 경로(web, api, mcp, restore)로 배포했는지. 최신순.
입력
{
"site": string // required — numeric project id ("42") or subdomain ("k3v9x2m7q1")
}
호출 예시
{ "name": "get_deploy_history", "arguments": { "site": "k3v9x2m7q1" } }
결과
[
{
"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"
}
]
오류
도구 오류는 isError: true가 붙은 일반 결과입니다. 코드가 있는 경우 텍스트가 그 코드로 시작합니다: file_too_large(1MB 초과), project_limit(플랜 한도 도달), site not found. HTTP 수준 오류는 인증 실패(401)뿐입니다.
{ "content": [{ "type": "text", "text": "file_too_large: html exceeds the 1MB size limit" }], "isError": true }
제한
- 사이트당 HTML 파일 하나, 최대 1MB. CSS와 JavaScript는 인라인으로 넣고, 이미지는 외부 URL이나 data URI를 쓰세요.
- 무료 계정은 사이트 6개, Light는 25개, Pro는 무제한입니다. 그 이상이면
create_site가project_limit로 실패합니다. - 새 사이트는 소유자가 콘솔(또는 REST
PATCH /v1/projects/{id}/settings)에서 검색 노출을 켜기 전까지X-Robots-Tag: noindex로 서빙됩니다. 에이전트가 혼자서 페이지를 검색에 노출시킬 수는 없습니다.
디스커버리
서버는 인증 없는 URL 두 곳에서 자신을 설명합니다. 라이브 도구 목록과 스키마가 담긴 서버 카드, 그리고 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)
일반 HTTP가 편하다면 같은 작업이 REST API로도 있고, hdply.com/llms.txt가 둘 다 에이전트용으로 요약합니다.