Skip to Content
MCP सर्वरMCP सर्वर

MCP सर्वर

SupDesk MCP (Model Context Protocol) सर्वर AI सहायकों और अन्य LLM-संचालित टूल को किसी प्रोजेक्ट के हेल्प सेंटर, फ़ीडबैक बोर्ड, चेंजलॉग, संदेश थ्रेड, बीटा प्रोग्राम और वेटलिस्ट तक सीधी पहुँच देता है।

एंडपॉइंट

https://mcp.supdesk.app/mcp

प्रमाणीकरण

API कुंजी को Bearer टोकन के रूप में पास करें:

Authorization: Bearer sd_live_...

SupDesk कंसोल में वर्कस्पेस सेटिंग्स → API कुंजियाँ के अंतर्गत कुंजियाँ बनाएँ।

कुंजी ही प्रोजेक्ट तय करती है, इसलिए कोई भी टूल project_id तर्क नहीं लेता — मॉडल के अनुमान लगाने या ग़लत होने के लिए कुछ बचता ही नहीं।

आपको क्या मिलता है

कौन-से टूल दिखते हैं यह प्रोजेक्ट पर निर्भर करता है। प्रोजेक्ट सेटिंग्स में बंद की गई सुविधा के टूल tools/list से पूरी तरह हटा दिए जाते हैं, ठीक वैसे ही जैसे REST API उन रूट्स पर 404 देता है।

समूहटूलआवश्यकता
हेल्प सेंटर10हेल्प सेंटर सक्षम
फ़ीडबैक बोर्ड5फ़ीडबैक बोर्ड सक्षम
चेंजलॉग5चेंजलॉग सक्षम
संदेश5निजी संदेश सक्षम
बीटा परीक्षण8बीटा सक्षम
वेटलिस्ट4वेटलिस्ट सक्षम
अवलोकन1हमेशा उपलब्ध

पठन हर योजना पर काम करता है। लेखन के लिए सशुल्क योजना आवश्यक है — केवल-पठन कुंजी पर बनाना, अपडेट करना या हटाना forbidden लौटाता है, जबकि उसी कुंजी से पठन ठीक काम करता है।

हेल्प सेंटर

  • list_articles — लेख, नवीनतम संपादन पहले। इसमें ड्राफ़्ट और संग्रहीत लेख शामिल हैं; ग्राहक जो देख सकते हैं उसके लिए status से फ़िल्टर करें।
  • get_article — id से एक लेख, उसके Markdown मुख्य पाठ सहित।
  • search_articlesप्रकाशित लेखों पर पूर्ण-पाठ खोज, क्रमबद्ध, स्निपेट के साथ।
  • create_article — एक ड्राफ़्ट बनाता है। प्रकाशन एक अलग कॉल है, इसलिए कुछ भी गलती से ग्राहकों तक नहीं पहुँचता।
  • update_article — कोई भी फ़ील्ड पैच करें; status को published या archived पर सेट करें।
  • delete_article — स्थायी; जिस लेख को रखना चाहते हैं उसे सेवा से हटाने के लिए संग्रहीत करें।
  • list_article_categories, create_article_category, update_article_category, delete_article_category — श्रेणी हटाने पर उसके लेख यथावत रहते हैं, अवर्गीकृत।

लेख का मुख्य पाठ Markdown है, HTML नहीं। पोर्टल उन्हें ऐसे व्यूअर से रेंडर करता है जो HTML का मूल्यांकन कभी नहीं करता, इसलिए HTML पाठकों तक अक्षरशः पाठ के रूप में पहुँचता है।

योजना का लेख भत्ता समाप्त होते ही create_article limit_reached के साथ विफल होता है — Free 5, Pro 50, Team असीमित।

फ़ीडबैक बोर्ड

  • list_feedback — पोस्ट, नवीनतम पहले। तीनों प्रकार (bug, feature, feedback) शामिल हैं जब तक आप type से सीमित न करें।
  • get_feedback, create_feedback, update_feedbackupdate_feedback से ही आप किसी पोस्ट को backlog → open → planned → in_progress → done के साथ आगे बढ़ाते हैं।
  • delete_feedback — पोस्ट, उसके वोट और उसकी टिप्पणियाँ हटा देता है।

चेंजलॉग, संदेश, बीटा और वेटलिस्ट

REST API के साथ पूर्ण समानता, उन्हीं क्वेरी पर:

  • चेंजलॉगlist_changelog, get_changelog_entry, create_changelog_entry, update_changelog_entry, delete_changelog_entry। प्रविष्टियाँ डिफ़ॉल्ट रूप से ड्राफ़्ट होती हैं, क्योंकि प्रकाशन ही आपके ग्राहकों को ईमेल भेजता है।
  • संदेशlist_threads, get_thread (पूरे संदेश इतिहास के साथ), create_thread, reply_to_thread, update_thread
  • बीटा परीक्षणlist_beta_programs, get_beta_program, create_beta_program, update_beta_program, delete_beta_program, list_beta_testers, add_beta_tester, remove_beta_testeradd_beta_tester ईमेल पर idempotent है और स्वीकृति टोकन लौटाता है; यह सर्वर कोई ईमेल नहीं भेजता, इसलिए आमंत्रण पहुँचाना आपका काम है।
  • वेटलिस्टlist_waitlist, add_waitlist_signup (ईमेल पर idempotent), update_waitlist_signup, remove_waitlist_signup

अवलोकन

project_stats पूरे प्रोजेक्ट की गिनती लौटाता है — स्थिति के अनुसार फ़ीडबैक पोस्ट, खुले थ्रेड, प्रकाशित और ड्राफ़्ट लेख, और उन लेखों को मिले मददगार / गैर-मददगार वोट — ताकि कोई एजेंट चार पेजिनेटेड सूचियाँ छाने बिना बता सके कि “कितना बाकी है?”

संरचित आउटपुट

हर टूल एक outputSchema घोषित करता है और structuredContent (टाइप किया, सत्यापित) तथा वही डेटा JSON के रूप में रखने वाला एक content टेक्स्ट ब्लॉक — दोनों लौटाता है। आपका क्लाइंट जिसका समर्थन करे उसे पार्स करें।

const result = await mcpClient.callTool("get_article", { id: "8f7a..." }); result.structuredContent.article.title; // typed JSON.parse(result.content[0].text); // same payload, fallback

एनोटेशन

हर टूल एनोटेशन रखता है ताकि क्लाइंट को कॉल करने से पहले पता हो कि वह क्या कॉल कर रहा है:

एनोटेशनकिन पर सेट
readOnlyHint: truelist_*, get_*, search_*, project_stats
idempotentHint: trueपठन और update_*
destructiveHint: truedelete_*, remove_*

पेजिनेशन

सूची टूल एक अपारदर्शी cursor लेते हैं और next_cursor लौटाते हैं — अगले पृष्ठ के लिए उसे वापस पास करें, और जब वह null हो तो रुक जाएँ।

let cursor; do { const page = await mcpClient.callTool("list_articles", { status: "published", cursor }); handle(page.structuredContent.data); cursor = page.structuredContent.next_cursor; } while (cursor);

Cursor एक टोकन है, गणित नहीं — इसे अपारदर्शी मानें। विकृत cursor चुपचाप पहले पृष्ठ से दोबारा शुरू करने के बजाय invalid_request लौटाता है, वरना पेजिनेटेड चक्र हमेशा के लिए घूमता रहता।

ध्यान दें कि यह हर टूल की अपनी आर्ग्युमेंट स्कीमा में एक परंपरा है। MCP का प्रोटोकॉल-स्तरीय cursor टूल और संसाधनों की सूचियों पर लागू होता है, टूल जो लौटाता है उस पर नहीं; नीचे दी गई संसाधन सूची असली वाला उपयोग करती है।

संसाधन

टूल कॉल करके परिणाम चिपकाने के बजाय, प्रोजेक्ट सामग्री को संदर्भ के रूप में जोड़ने हेतु:

URIसामग्री
supdesk://articles/{slug}एक प्रकाशित हेल्प लेख, Markdown के रूप में।
supdesk://boardप्रोजेक्ट की खुली फ़ीडबैक पोस्ट, JSON के रूप में।

लेख सूची वास्तव में प्रोटोकॉल-पेजिनेटेड है, और इसमें केवल प्रकाशित लेख शामिल हैं — संसाधन वह सामग्री है जिसे क्लाइंट अक्षरशः दिखा सकता है, और ड्राफ़्ट किसी कारण से अप्रकाशित है।

प्रॉम्प्ट

प्रोजेक्ट के वास्तविक डेटा से जुड़े दो शुरुआती बिंदु:

  • draft_article_from_thread — हल हो चुकी सपोर्ट बातचीत को हेल्प-सेंटर लेख में बदलता है, ताकि उसी प्रश्न वाले अगले ग्राहक को थ्रेड खोलने के बजाय उत्तर मिल जाए। इसके लिए हेल्प सेंटर और निजी संदेश दोनों सक्षम होने चाहिए।
  • triage_feedback — एक पोस्ट का आकलन करता है और तर्क सहित स्थिति की सिफ़ारिश करता है। यह पहले search_articles जाँचता है, ताकि नया काम प्रस्तावित करने के बजाय मौजूदा उत्तर सामने आ जाए।

दोनों अपने तर्कों के लिए MCP की completion क्षमता का उपयोग करते हैं: जैसे ही आप कोई श्रेणी टाइप करते हैं, सर्वर आपको अनुमान लगाने देने के बजाय प्रोजेक्ट के वास्तविक श्रेणी slug बताता है।

लॉगिंग

बहु-चरणीय लेखन MCP लॉगिंग पर प्रगति सूचनाएँ भेजते हैं — create_article योजना भत्ता जाँचता है, खाली slug खोजता है, फिर सम्मिलित करता है, और हर चरण पर बताता है। जिस क्लाइंट में लॉगिंग समर्थन नहीं है वह अप्रभावित रहता है; लेखन दोनों ही स्थितियों में आगे बढ़ता है।

उदाहरण

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json में जोड़ें:

{ "mcpServers": { "sup-desk": { "command": "npx", "args": [ "-y", "mcp-remote", "https://mcp.supdesk.app/mcp", "--header", "Authorization: Bearer sd_live_..." ] } } }

किसी प्रश्न का उत्तर दें, या उत्तर लिखें

// Check whether the help center already covers it. const hits = await mcpClient.callTool("search_articles", { query: "reset password", limit: 5 }); if (hits.structuredContent.data.length === 0) { // Nothing yet — draft one. It's created as a draft. const created = await mcpClient.callTool("create_article", { title: "How do I reset my password?", body: "Open **Settings**, then choose *Reset password*.", category_id: "3c2b..." }); // Publishing is deliberate and separate. await mcpClient.callTool("update_article", { id: created.structuredContent.article.id, status: "published" }); }

बोर्ड को व्यवस्थित करें

const open = await mcpClient.callTool("list_feedback", { status: "open", limit: 10 }); await mcpClient.callTool("update_feedback", { id: open.structuredContent.data[0].id, status: "planned" });

सब कुछ जो बाकी है, एक ही कॉल में

const stats = await mcpClient.callTool("project_stats", {}); // { posts_by_status: { open: 12, planned: 3, ... }, open_threads: 4, // articles_published: 18, articles_draft: 2, // article_helpful: 240, article_not_helpful: 11 }

दर सीमाएँ

MCP सर्वर REST API की सीमाएँ साझा करता है: प्रति प्रोजेक्ट 60 सेकंड में 120 अनुरोध। देखें दर सीमाएँ और उपयोग

त्रुटियाँ

विफल टूल कॉल isError: true के साथ वही त्रुटि शब्दावली लौटाता है जो REST API उपयोग करता है:

{ "error": { "code": "limit_reached", "message": "Your plan allows 5 help-center articles." } }
कोडअर्थ
unauthorizedअनुपस्थित, विकृत, रद्द या अज्ञात API कुंजी।
forbiddenमान्य कुंजी, पर योजना में API लेखन पहुँच नहीं है।
invalid_requestखराब तर्क — विकृत cursor सहित।
not_foundइस प्रोजेक्ट में ऐसी कोई id नहीं।
limit_reachedयोजना का कोई भत्ता समाप्त हो गया (जैसे लेख सीमा)।
rate_limitedवर्तमान विंडो में बहुत अधिक अनुरोध।
internal_errorहमारी ओर से कुछ विफल हुआ। पुनः प्रयास सुरक्षित है।

पूरी सूची त्रुटियाँ के अंतर्गत प्रलेखित है।

Last updated on