MCP सर्वर

आख़िरी अपडेट: 2026-09-08

hdply में MCP सर्वर बिल्ट-इन है। कोई भी MCP क्लाइंट — Claude Code, Claude Desktop या आपका अपना एजेंट — आपकी साइटें लिस्ट कर सकता है, नई बना सकता है, लाइव HTML पढ़ सकता है, नया वर्शन पब्लिश कर सकता है और डिप्लॉय हिस्ट्री देख सकता है। पाँच टूल, एक API key, लोकल में कुछ चलाने की ज़रूरत नहीं।

एजेंट को सौंपना सुरक्षित है

कोई delete टूल नहीं है। साइट हटाना जानबूझकर सिर्फ़ वेब कंसोल से होता है। पूरे डिप्लॉय अधिकार वाला एजेंट खराब वर्शन पब्लिश कर सकता है, लेकिन आपका काम नष्ट नहीं कर सकता।

हर डिप्लॉय — इंसान का हो या एजेंट का — वर्शन के रूप में सुरक्षित रहता है। गलत डिप्लॉय कंसोल में एक क्लिक से रिस्टोर हो जाता है, और 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 में (mcp-remote के ज़रिए, क्योंकि Desktop सिर्फ़ लोकल कमांड चलाता है):

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

कोई और क्लाइंट: यह एक stateless 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"}

Key कंसोल डैशबोर्ड ("API key" कार्ड) से मिलती है। यह एक बार दिखती है और अकाउंट की हर साइट तक पहुँच देती है — इसे पासवर्ड की तरह रखें।

टूल

हर टूल एक 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 (1 MB से ज़्यादा), project_limit (प्लान की सीमा), site not found। HTTP स्तर के एरर सिर्फ़ ऑथेंटिकेशन फेल (401) हैं।

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

सीमाएँ

डिस्कवरी

सर्वर दो बिना-ऑथ URL पर खुद का वर्णन करता है: लाइव टूल लिस्ट और स्कीमा वाला server card, और 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 दोनों का एजेंट-सारांश देता है।