कस्टम MCP सर्वर को ChatGPT में जोड़ने का हैंड्स-ऑन ट्यूटोरियल। डेवलपर मोड चालू करें, कनेक्टर फ़ॉर्म भरें, OAuth या बिना ऑथेंटिकेशन चुनें, टनल से सर्वर की जाँच करें, आम एरर ठीक करें और इमेज व वीडियो टूल जोड़ें।
आपके पास एक ऐसा सर्वर है जो कुछ काम की चीज़ करता है, और आप चाहते हैं कि ChatGPT उसे एक साधारण चैट से कॉल करे। इसका रास्ता मौजूद है, और यह बस एक फ़ॉर्म है। पेच यह है कि इस फ़ॉर्म में चार-पाँच ऐसे जाल छिपे हैं जो एक बिल्कुल सही सर्वर को भी खराब दिखा सकते हैं। यह ट्यूटोरियल पूरा रास्ता दिखाता है, डेवलपर मोड चालू करने से लेकर पहली टूल कॉल को मंज़ूरी देने तक, और हर जाल के बारे में पहले ही बताता है। आप एक छोटा टेस्ट सर्वर बनाएँगे, उसे टनल के ज़रिए सार्वजनिक करेंगे, लोगों को सबसे ज़्यादा आने वाली एरर ठीक करेंगे, और फिर देखेंगे कि PicassoIA के इमेज और वीडियो टूल उसी कनेक्टर में कैसे जुड़ सकते हैं।
कस्टम MCP कनेक्टर क्या है
MCP सरल शब्दों में
Model Context Protocol (MCP) एक ओपन स्टैंडर्ड है, जो AI क्लाइंट को सर्वर पर मौजूद टूल कॉल करने देता है। सर्वर टूल्स की एक सूची प्रकाशित करता है। हर टूल का एक नाम होता है, सरल अंग्रेज़ी में एक विवरण होता है, और इनपुट के लिए एक JSON स्कीमा होता है। क्लाइंट वह सूची पढ़ता है, तय करता है कि कौन-सा टूल कब काम आएगा, और एक संरचित अनुरोध भेजता है। सर्वर डेटा लौटाता है या कोई कार्य करता है।
ChatGPT में, कस्टम MCP कनेक्टर वह सेटिंग एंट्री है जो ChatGPT को उन सर्वरों में से किसी एक की ओर इंगित करती है। एक बार सेव हो जाने पर आपके टूल चैट में बने-बनाए टूल्स के साथ दिखने लगते हैं।
अपना सर्वर क्यों जोड़ें
बिल्ट-इन कनेक्टर लोकप्रिय ऐप्स को संभालते हैं। आपका अपना सर्वर बाकी सब कुछ संभालता है:
निजी डेटा: टिकट, ऑर्डर, इन्वेंटरी, ऐसा डेटाबेस जिसे कोई और नहीं देख सकता।
कार्रवाइयाँ: ड्राफ़्ट बनाना, रेंडर शुरू करना, स्टेटस अपडेट पोस्ट करना।
एक कोडबेस, कई क्लाइंट: वही सर्वर आम तौर पर दूसरे MCP क्लाइंट में भी जोड़ा जा सकता है।
लॉजिक कोड में, प्रॉम्प्ट में नहीं: वैलिडेशन, रेट लिमिट और परमिशन वहीं रहें जहाँ उन्हें होना चाहिए।
💡 केवल रिमोट। ChatGPT रिमोट MCP सर्वरों से बात करता है। जो सर्वर stdio पर एक लोकल प्रोसेस के रूप में चलता है, जैसे कई डेस्कटॉप टूल चलते हैं, उसे ChatGPT तक पहुँचने से पहले HTTP एंडपॉइंट में लपेटना होगा।
ChatGPT छूने से पहले
प्लान और वर्कस्पेस की ज़रूरतें
डेवलपर मोड की शुरुआत वेब पर Plus और Pro खातों के लिए बीटा के रूप में हुई थी। Business, Enterprise और Edu जैसे वर्कस्पेस प्लान इसे एक निजी टॉगल के बजाय एडमिन-नियंत्रित परमिशन के ज़रिए पाते हैं। OpenAI ने यह बदला है कि कौन-से प्लान राइट एक्शन पाते हैं, और स्विच को एक से ज़्यादा बार मेनू के अंदर इधर-उधर किया है, इसलिए किसी भी प्लान की सूची (इस सूची सहित) को ऐसी चीज़ मानें जो लगातार बदलती रहती है। अगर आपकी स्क्रीन नीचे के चरणों से अलग दिखे, तो डेवलपर मोड पर OpenAI का मौजूदा हेल्प आर्टिकल देखें।
वर्कस्पेस में यह परमिशन आम तौर पर वर्कस्पेस सेटिंग्स के permissions and roles क्षेत्र में होती है। अगर आपको स्विच दिखाई न दे, तो अपने सर्वर को दोष देने से पहले एडमिन से पूछें।
आपके सर्वर को सार्वजनिक URL चाहिए
ChatGPT OpenAI के इंफ़्रास्ट्रक्चर से कनेक्ट करता है, आपके लैपटॉप से नहीं। इसके तीन परिणाम हैं:
URL सार्वजनिक इंटरनेट से पहुँचने लायक होना चाहिए।
उसे HTTPS इस्तेमाल करना होगा।
VPN या निजी नेटवर्क के पीछे वाले सर्वर कनेक्ट नहीं होंगे।
ChatGPT दो रिमोट ट्रांसपोर्ट स्वीकार करता है:
ट्रांसपोर्ट
ChatGPT के साथ काम करता है
आम URL
नोट
Streamable HTTP
हाँ
https://your-domain.com/mcp
नए सर्वर के लिए सबसे अच्छा विकल्प
SSE (Server-Sent Events)
हाँ
https://your-domain.com/sse
पुराना तरीका, अब भी स्वीकार होता है
stdio (लोकल प्रोसेस)
नहीं
कोई नहीं
पहले इसे HTTP सर्वर में लपेटें
डेवलपर मोड चालू करें
कस्टम कनेक्टर एक स्विच के पीछे रहते हैं, क्योंकि कस्टम सर्वर असली डेटा पढ़ और बदल सकता है। रास्ता यह है:
नीचे-बाईं ओर अपना प्रोफ़ाइल आइकन क्लिक करें और Settings खोलें।
Connectors खोलें। नए बिल्ड में इस पेज का नाम Apps & Connectors होता है।
पेज के नीचे के पास Developer mode स्विच ढूँढें और उसे चालू करें। कुछ खातों में यह Security के अंदर होता है।
चेतावनी स्वीकार करें। यह इसलिए दिखती है क्योंकि आपका जोड़ा गया सर्वर आपकी ओर से कार्रवाई कर सकता है।
स्विच चालू होते ही कनेक्टर्स पेज पर Create बटन दिखने लगता है।
💡 स्विच नहीं मिल रहा? यह सेटिंग 2026 में इधर-उधर हुई है। यह मान लेने से पहले कि आपके प्लान में यह नहीं है, सेटिंग्स विंडो में "developer" शब्द खोजें।
कनेक्टर चरण-दर-चरण जोड़ें
फ़ॉर्म भरें
Create पर क्लिक करें और ये फ़ील्ड भरें:
फ़ील्ड
क्या दर्ज करें
टिप
Name
"Order Lookup" जैसा कोई छोटा लेबल
चैट मेन्यू में आप इसी को चुनते हैं
Description
सर्वर क्या करता है, इसके बारे में एक या दो वाक्य
मॉडल किसी टूल को कॉल करना है या नहीं, यह तय करते समय इसे पढ़ता है, इसलिए इसे निर्देश की तरह लिखें
Icon
वैकल्पिक
लंबी सूची में इसे पहचानना आसान हो जाता है
MCP server URL
पाथ सहित पूरा HTTPS URL, जैसे https://api.example.com/mcp
पाथ का छूट जाना विफलता का बहुत आम कारण है
Authentication
कोई ऑथेंटिकेशन नहीं या OAuth
विवरण अगले सेक्शन में है
उस चेकबॉक्स पर निशान लगाएँ जो पुष्टि करता है कि आप ऐप पर भरोसा करते हैं, फिर Create पर क्लिक करें।
No authentication या OAuth चुनें
विकल्प
कब इस्तेमाल करें
जोखिम
No authentication
सार्वजनिक, केवल-पढ़ने वाला डेटा, या एक डिस्पोज़ेबल टेस्ट सर्वर
URL मिलने वाला कोई भी व्यक्ति आपके टूल कॉल कर सकता है
OAuth
यूज़र खाते से जुड़ी कोई भी चीज़, निजी डेटा या राइट एक्शन
आपको एक OAuth प्रोवाइडर चलाना या जोड़ना होगा
OAuth के साथ, Create पर क्लिक करते ही ChatGPT आपको आपके आइडेंटिटी प्रोवाइडर के लॉगिन पेज पर भेज देता है। साइन इन करें, allow पर क्लिक करें, और कनेक्टर को अधिकृत करके आप ChatGPT में वापस आ जाएँगे।
आप जो भी प्रोवाइडर इस्तेमाल करें, उसके लिए वही सबसे संकीर्ण परमिशन माँगें जो आपके टूल्स को चाहिए। जो कनेक्टर केवल ऑर्डर पढ़ता है, उसके पास उन्हें रिफ़ंड करने की परमिशन कभी नहीं होनी चाहिए, क्योंकि आप जो परमिशन देते हैं वही तय करती है कि खराब टूल कॉल कितना नुकसान कर सकती है।
हानिरहित डेटा लौटाने वाले टेस्ट सर्वर पर बिना ऑथेंटिकेशन से शुरू करें। किसी असली चीज़ को छूने से पहले OAuth पर जाएँ।
चैट में इस्तेमाल करें
नई चैट शुरू करें और plus icon पर क्लिक करें।
More चुनें, फिर Developer mode।
अपना कनेक्टर स्रोत के रूप में चुनें।
कुछ ऐसा पूछें जो सर्वर कर सकता है, जैसे "list my open orders"।
ChatGPT एक टूल कॉल प्रस्तावित करता है और उसके arguments दिखाता है।
उन्हें पढ़ें, फिर Confirm पर क्लिक करें।
पहले कुछ टेस्ट के लिए, अपने प्रॉम्प्ट में कनेक्टर का नाम लें: "Using Order Lookup, list my open orders।" नाम लेने से एक वेरिएबल हट जाता है। एक बार टूल काम करने लगे, तो नाम हटाकर देखें कि ChatGPT उसे अपने-आप चुनता है या नहीं, इससे पता चलता है कि आपका विवरण अपना काम कर रहा है या नहीं।
💡 कन्फ़र्मेशन कार्ड पढ़ें। डेवलपर मोड में हर टूल कॉल चलने से पहले आपको दिखाई जाती है। यह कार्ड आपकी आख़िरी जाँच-चौकी है, इसलिए arguments पर सरसरी नज़र डालें, बिना सोचे-समझे क्लिक करते न जाएँ।
जाँच के लिए एक छोटा सर्वर बनाएँ
इसे लोकल चलाएँ
ChatGPT को असली डेटा की ओर इंगित करने से पहले यह साबित करने का सबसे तेज़ तरीका एक हानिरहित टूल है। यह टूल आधिकारिक Python SDK इस्तेमाल करके शब्द गिनता है:
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("hello-connector", stateless_http=True)
@mcp.tool()
def word_count(text: str) -> int:
"""Count the words in a block of text.
Use when the user asks how long a draft is."""
return len(text.split())
if __name__ == "__main__":
mcp.run(transport="streamable-http")
चार आदतें किसी टूल को मॉडल के लिए इस्तेमाल में आसान बनाती हैं:
हर टूल का एक काम।lookup_order और refund_order, एक अकेले manage_order से बेहतर हैं।
सरल नाम। ऐसे क्रिया और संज्ञा शब्द जिन्हें मॉडल किसी अनुरोध से मिला सके।
टाइप किए हुए arguments। स्कीमा में strings, numbers और enums, कभी भी एक खुला free-form ब्लॉब नहीं।
छोटे आउटपुट। वे फ़ील्ड लौटाएँ जो सवाल का जवाब देते हैं, पूरी डेटाबेस रो नहीं।
SDK को pip install "mcp[cli]" से इंस्टॉल करें और फ़ाइल चलाएँ। इस लेख लिखने के समय के SDK डिफ़ॉल्ट के साथ, एंडपॉइंट http://127.0.0.1:8000/mcp है। अगर आपके वर्ज़न में कोई दूसरा पोर्ट या path है, तो उसके डॉक्स यह बताएँगे।
ChatGPT सर्वर को देखे, उससे पहले MCP Inspector को उस पर इंगित करें:
npx @modelcontextprotocol/inspector
Streamable HTTP ट्रांसपोर्ट चुनें, लोकल URL डालें, कनेक्ट करें, और टूल्स की सूची देखें। अगर word_count दिखे और चले, तो सर्वर स्वस्थ है, और बाद की कोई भी विफलता नेटवर्क या फ़ॉर्म की होगी।
टनल से सार्वजनिक करें
टनल आपके लोकल पोर्ट को एक सार्वजनिक HTTPS पता देती है:
ngrok http 8000
Cloudflare का cloudflared tunnel --url http://localhost:8000 वही काम करता है। उसके दिखाए गए HTTPS पते को कॉपी करें, /mcp जोड़ें, और उसे MCP server URL फ़ील्ड में डालें।
💡 मुफ़्त टनल URL बदलते रहते हैं। टनल को दोबारा शुरू करेंगे तो पता बदल जाएगा और कनेक्टर टूट जाएगा। नए URL के साथ उसे दोबारा बनाएँ, या टेस्ट सफल होने के बाद किसी स्थायी डोमेन पर चले जाएँ।
वे एरर ठीक करें जो आपको रोकती हैं
आम एरर और उनके समाधान
लक्षण
संभावित कारण
समाधान
कनेक्टर बनने में विफल
URL HTTP है, लोकल है, या VPN के पीछे है
सार्वजनिक HTTPS पता या टनल इस्तेमाल करें
कनेक्ट पर Not found
गलत या गायब path (/, /mcp, /sse)
पहले Inspector में ठीक वही URL खोलें
कनेक्ट होता है पर शून्य टूल दिखते हैं
टूल लिस्ट का अनुरोध एरर देता है
list अनुरोध के लिए अपने सर्वर लॉग पढ़ें
OAuth लॉगिन लूप करता है
रीडायरेक्ट पता प्रोवाइडर ने अनुमति नहीं दी
अपने प्रोवाइडर के सेटअप पेज पर माँगा गया callback पता जोड़ें
टूल्स कभी कॉल नहीं होते
विवरण अस्पष्ट हैं
बताएँ कि हर टूल कब इस्तेमाल करना है और कब नहीं
कल चला, आज विफल
टनल का पता बदल गया
नए URL के साथ कनेक्टर दोबारा बनाएँ
इसी क्रम में डीबग करें, और पहले विफल चरण पर रुकें। पहले Inspector खोलें और ठीक उसी URL से कनेक्ट करें। दूसरे, टर्मिनल से curl के साथ वह URL माँगें और पुष्टि करें कि वह HTTPS पर जवाब देता है। तीसरे, जब आप Create पर क्लिक करें, तब अपने सर्वर लॉग पढ़ें। उसके बाद ही ChatGPT या फ़ॉर्म पर शक करें। सर्वर से बाहर की ओर काम करने से आप ऐसी सेटिंग्स बदलने से बचते हैं जो कभी खराब थी ही नहीं।
जब टूल्स पुराने लगें
आपने टूल लिस्ट बदली है, पर ChatGPT अब भी पुरानी दिखा रहा है। कनेक्टर की सेटिंग खोलें और refresh विकल्प इस्तेमाल करें। अगर उससे कुछ न हो, तो कनेक्टर हटाकर उसे फिर से जोड़ें, जिससे सर्वर की ताज़ा रीडिंग होती है।
एक और बात जानने लायक है: OpenAI के दस्तावेज़ों में एक search टूल का ज़िक्र है जो संभावित परिणाम लौटाता है, और एक fetch टूल का जो ID से एक दस्तावेज़ लौटाता है, जैसे deep research जैसी सुविधाओं के लिए। जो सर्वर केवल कस्टम टूल रखता है, वह डेवलपर मोड में काम कर सकता है, पर उन सुविधाओं को दिखाई नहीं देगा।
प्रोडक्शन में इसे सुरक्षित रखें
प्रॉम्प्ट इंजेक्शन और राइट एक्शन
आपका सर्वर जो टेक्स्ट लौटाता है, वह मॉडल पढ़ता है। एक सपोर्ट टिकट, एक वेब पेज या एक साझा दस्तावेज़ में छिपे निर्देश हो सकते हैं, जो मॉडल को ऐसा टूल कॉल करने के लिए बहका दें जो आपने कभी चाहा ही नहीं। OpenAI की अपनी चेतावनी सीधी है: प्रॉम्प्ट इंजेक्शन पर नज़र रखें और हर टूल कॉल की समीक्षा करें, खासकर राइट एक्शन की।
इसे ध्यान में रखकर बनाएँ:
रीड टूल्स को राइट टूल्स से अलग रखें। राइट टूल्स संकीर्ण और कम रखें।
हर विनाशकारी कार्य के लिए स्पष्ट ID माँगें, कभी भी अस्पष्ट सर्च स्ट्रिंग नहीं।
डिलीट और भुगतान में एक पुष्टि arguments जोड़ें।
सीक्रेट्स को टूल आउटपुट से बाहर रखें। अगर मॉडल कोई टोकन देखता है, तो मान लें कि वह उसे दोहरा सकता है।
हर कॉल का लॉग रखें, arguments, यूज़र और परिणाम के साथ, ताकि कोई खराब कार्रवाई ट्रेस की जा सके।
सर्वर पर रेट लिमिट लगाएँ, क्योंकि लूप में फँसा मॉडल किसी इंसान से कहीं ज़्यादा तेज़ी से टूल कॉल कर सकता है।
इमेज और वीडियो टूल जोड़ें
PicassoIA मॉडल को टूल्स में लपेटें
सबसे संतोषजनक कनेक्टर वह है जो कुछ ऐसा बनाता है जिसे आप देख सकें। PicassoIA https://api.picassoia.com/v1 पर एक डेवलपर API देता है, जो pia_sk_ से शुरू होने वाले bearer टोकन से ऑथेंटिकेट होता है। एंडपॉइंट Replicate शैली का पालन करते हैं: एक POST अनुरोध /v1/models/{owner}/{name}/predictions पर एक जॉब शुरू करता है, और GET पर /v1/predictions/{id} उसकी स्थिति जाँचता है। चार मॉडल API और MCP के ज़रिए उपलब्ध हैं:
जॉब एसिंक्रोनस होते हैं, इसलिए एक की जगह दो टूल बनाएँ: एक स्टार्टर जो prediction ID लौटाए, और एक चेकर जो जॉब पूरा होने पर आउटपुट लौटाए। परिणाम तैयार होने तक ChatGPT चेकर को कॉल कर सकता है।
import os
import httpx
PIA = "https://api.picassoia.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['PICASSOIA_TOKEN']}"}
@mcp.tool()
def start_image(prompt: str) -> dict:
"""Start an image job. Returns an id to pass to get_result."""
r = httpx.post(
f"{PIA}/models/picassoia/picassoia-image/predictions",
headers=HEADERS, json={"input": {"prompt": prompt}}, timeout=30,
)
r.raise_for_status()
return {"id": r.json()["id"]}
@mcp.tool()
def get_result(prediction_id: str) -> dict:
"""Check a job. Returns status and, when finished, the output."""
r = httpx.get(f"{PIA}/predictions/{prediction_id}", headers=HEADERS, timeout=30)
r.raise_for_status()
data = r.json()
return {"status": data.get("status"), "output": data.get("output")}
इसे एक स्केच मानें। रिक्वेस्ट बॉडी Replicate परंपरा का पालन करती है, इसलिए शिप करने से पहले मॉडल पेज पर सटीक इनपुट फ़ील्ड की पुष्टि करें।
कुछ सीमाएँ डिज़ाइन को आकार देती हैं। एक खाते में अधिकतम 5 predictions एक साथ चल सकते हैं, और यह संख्या टोकन और MCP कनेक्शनों के बीच साझा होती है। प्रॉम्प्ट 4,000 characters तक जाते हैं, और एक रिक्वेस्ट बॉडी 10 MB तक। एक्सेस की शर्तें और प्राइसिंग PicassoIA के pricing पेज पर हैं, इसलिए किसी को मुफ़्त टियर का वादा करने से पहले उन्हें पढ़ें।
💡 कुछ भी होस्ट नहीं करना चाहते? PicassoIA hosted MCP कनेक्शन भी देता है, जो साइन इन करने के बाद picassoia.com/en/mcp/accounts पर प्रबंधित होते हैं। ChatGPT में उन पर भरोसा करने से पहले जाँच लें कि कनेक्शन कौन-से क्लाइंट को सपोर्ट करता है।
टूल विवरण उसके पीछे के कोड से ज़्यादा मायने रखते हैं, क्योंकि मॉडल टूल्स को उनके विवरण पढ़कर चुनता है। एक LLM कुछ मिनटों में आपके विवरणों को निखार सकता है:
अपने टूल नाम, विवरण और इनपुट स्कीमा JSON के रूप में पेस्ट करें, ताकि कुछ छूटे नहीं।
पूछें: "हर विवरण को फिर से लिखें ताकि मॉडल को ठीक-ठीक पता चले कि यह टूल कब कॉल करना है और कब नहीं।"
दस टेस्ट प्रॉम्प्ट माँगें: पाँच जो टूल को ट्रिगर करने चाहिए और पाँच जो टूल को ट्रिगर नहीं करने चाहिए।
सभी दसों को अपनी कनेक्टर चैट में चलाएँ। हर चूक नोट करें, विवरण ठीक करें और दोहराएँ।
शब्दों पर दूसरी राय के लिए, वही सामग्री Claude Sonnet 5 में पेस्ट करें और दोनों फिर से लिखे गए संस्करणों की तुलना करें। जो विवरण छोटा और ज़्यादा साफ़-साफ़ बताने वाला हो, वही रखें।
आपका अगला प्रयोग
पहले शब्द गिनने वाला टूल बनाएँ और देखें कि पहली टूल कॉल चैट में कैसे दिखती है। फिर कनेक्टर को दिखाने के लिए कुछ दें। इमेज स्टार्टर जोड़ें, ChatGPT से किसी साधारण दृश्य की फ़ोटो माँगें, और हर अनुरोध में एक चीज़ बदलें: लेंस, रोशनी, या दिन का समय। छोटे बदलाव आपको प्रॉम्प्ट के बारे में किसी भी लंबे विवरण से ज़्यादा सिखाते हैं।
जब आप बिना सर्वर लिखे तैयार तस्वीरें चाहें, तो PicassoIA खोलें और PicassoIA Image से अपनी इमेज बनाकर देखें, PicassoIA Image Editor Pro से उन्हें निखारें, और किसी पसंदीदा इमेज को PicassoIA Video से जीवंत करें। एक प्रॉम्प्ट चुनें, उसे तीन तरीकों से चलाएँ, और वह संस्करण रखें जिसे देखकर आपकी नज़र दोबारा ठहर जाए।