AI एजेंट के लिए पासपोर्ट OCR MCP सर्वर
किसी असिस्टेंट को पासपोर्ट, पहचान पत्र या ट्रैवल डॉक्यूमेंट पढ़ने की क्षमता दें – और बदले में टेक्स्ट का ढेर नहीं, स्ट्रक्चर्ड फ़ील्ड पाएँ। सर्वर दो तरीकों से Model Context Protocol बोलता है: stdio पर, npm से इंस्टॉल होकर और आपके क्लाइंट द्वारा एक कमांड की तरह चलाया जाकर, या Streamable HTTP पर, mcp.doc.cheap पर होस्ट किया हुआ। दोनों ही तरह यह सार्वजनिक HTTP API का एक हल्का क्लाइंट है: इसके पास अपना कोई डेटा नहीं होता।
npx -y @doc-cheap/mcp npm पर @doc-cheap/mcp के रूप में और आधिकारिक MCP रजिस्ट्री में cheap.doc/mcp के रूप में प्रकाशित; सोर्स कोड GitLab पर सार्वजनिक मिरर पर है।
इन जगहों पर सूचीबद्ध: आधिकारिक MCP रजिस्ट्री, Smithery, cursor.directory, npm।
आपके एजेंट को क्या मिलता है
असली फ़र्क़ यही है। जो OCR टूल टेक्स्ट का पूरा पेज लौटाता है, वह मॉडल को दोबारा पार्स करने का काम थमा देता है, और जिस मॉडल से किसी तारीख़ को दोबारा पार्स करने को कहा जाए, वह देर-सबेर कोई तारीख़ गढ़ ही लेगा। यह टूल फ़ील्ड पहले से अलग करके लौटाता है:
- धारक – दिया गया नाम, उपनाम, जन्म तिथि, लिंग, राष्ट्रीयता।
- डॉक्यूमेंट – प्रकार, देश, जारी करने वाला देश, नंबर, सीरीज़, जारी होने की तारीख़, वैधता समाप्ति की तारीख़, क्या उसकी वैधता ख़त्म हो चुकी है, और कितने दिन बाक़ी हैं।
- मिला हुआ हर फ़ील्ड, हर एक अपने कॉन्फ़िडेंस के साथ, मशीन-रीडेबल ज़ोन (MRZ) और छपे विज़ुअल ज़ोन से अलग-अलग पढ़ा हुआ – ताकि मॉडल यह मानकर न चले, बल्कि देख सके कि दोनों रीडिंग मेल खाती हैं।
- मशीन-रीडेबल ज़ोन एक फ़ैसले के साथ: पास, फ़ेल या अनुपस्थित, कारण के साथ, और ख़ुद लाइनें भी।
- एक लाइन का सारांश, जिसे असिस्टेंट काम करते हुए आपको दिखा सकता है।
विफलताएँ एरर ब्लॉक में पढ़ने लायक़ एक लाइन के रूप में लौटती हैं, कभी चुपचाप ख़ाली नतीजे के रूप में नहीं: असिस्टेंट उस पर कार्रवाई कर सकता है और उसे आपको दिखा सकता है। API का इनकार API के अपने शब्दों, उसके एरर कोड और उसे समझाने वाले पेज के लिंक के साथ आता है।
इसे अपने क्लाइंट में इंस्टॉल करें
अपने क्लाइंट के MCP कॉन्फ़िगरेशन में यह ब्लॉक जोड़ें और क्लाइंट को रीस्टार्ट करें। DOC_CHEAP_API_KEY में अपनी कुंजी डालें, या इसे छोड़ दें, तब सार्वजनिक सैंडबॉक्स कुंजी इस्तेमाल होगी।
Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"doc-cheap": {
"command": "npx",
"args": [
"-y",
"@doc-cheap/mcp"
],
"env": {
"DOC_CHEAP_API_KEY": "sk_live_your_key"
}
}
}
}Claude Code
एक कमांड, प्रोजेक्ट डायरेक्टरी से
claude mcp add-json doc-cheap '{"command":"npx","args":["-y","@doc-cheap/mcp"],"env":{"DOC_CHEAP_API_KEY":"sk_live_your_key"}}'Cursor
~/.cursor/mcp.json, या किसी प्रोजेक्ट में .cursor/mcp.json
{
"mcpServers": {
"doc-cheap": {
"command": "npx",
"args": [
"-y",
"@doc-cheap/mcp"
],
"env": {
"DOC_CHEAP_API_KEY": "sk_live_your_key"
}
}
}
}VS Code
.vscode/mcp.json – ध्यान दें कि यह mcpServers नहीं, servers के अंदर आता है
{
"servers": {
"doc-cheap": {
"command": "npx",
"args": [
"-y",
"@doc-cheap/mcp"
],
"type": "stdio",
"env": {
"DOC_CHEAP_API_KEY": "sk_live_your_key"
}
}
}
}Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"doc-cheap": {
"command": "npx",
"args": [
"-y",
"@doc-cheap/mcp"
],
"env": {
"DOC_CHEAP_API_KEY": "sk_live_your_key"
}
}
}
}Windsurf
~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"doc-cheap": {
"command": "npx",
"args": [
"-y",
"@doc-cheap/mcp"
],
"env": {
"DOC_CHEAP_API_KEY": "sk_live_your_key"
}
}
}
}Kiro
वर्कस्पेस में .kiro/settings/mcp.json, या ~/.kiro/settings/mcp.json
{
"mcpServers": {
"doc-cheap": {
"command": "npx",
"args": [
"-y",
"@doc-cheap/mcp"
],
"disabled": false,
"autoApprove": [
"check_balance",
"search_docs"
],
"env": {
"DOC_CHEAP_API_KEY": "sk_live_your_key"
}
}
}
}Kiro, एक क्लिक में
क्लाइंट का अपना इंस्टॉल लिंक। कुछ भी लिखने से पहले यह पुष्टि माँगता है और कमांड व आर्ग्युमेंट की सूची दिखाता है।
- ब्लॉक जोड़ने के बाद क्लाइंट को रीस्टार्ट करें। सर्वर को क्लाइंट ही चलाता है, इसलिए बदला हुआ कॉन्फ़िगरेशन और बदला हुआ एनवायरनमेंट उसे केवल नई शुरुआत पर मिलता है।
- DOC_CHEAP_API_KEY के बिना सर्वर सार्वजनिक सैंडबॉक्स कुंजी पर चला जाता है: तब स्कैन उसकी मुफ़्त सीमा के अंदर चलते हैं और बताने के लिए कोई बैलेंस नहीं होता। इसे काम करते देखने का यही सबसे तेज़ तरीक़ा है।
- वैकल्पिक सेटिंग्स: DOC_CHEAP_DOCS_BASE (सर्च नतीजे कहाँ लिंक करें), DOC_CHEAP_DOCS_DIR (डॉक्यूमेंटेशन की कौन-सी कॉपी में सर्च करें), और DOC_CHEAP_IMAGE_ROOT (नीचे सुरक्षा उपाय देखें)।
या होस्ट किए गए सर्वर से कनेक्ट करें
यही तीन टूल https://mcp.doc.cheap/mcp पर Streamable HTTP के ज़रिए होस्ट किए गए हैं, इसलिए जो क्लाइंट किसी URL से कनेक्ट होता है, उसे कुछ इंस्टॉल करने की ज़रूरत नहीं। कोई लॉगिन नहीं: अपनी कुंजी X-Doc-Cheap-Api-Key या Authorization: Bearer के रूप में भेजें – दोनों भेजने पर नाम वाला हेडर माना जाता है – या कोई न भेजें, तब सार्वजनिक सैंडबॉक्स कुंजी इस्तेमाल होती है। होस्ट किया गया सर्वर आपकी मशीन की फ़ाइलें नहीं पढ़ सकता, इसलिए वह इमेज base64 में या https URL के रूप में लेता है।
https://mcp.doc.cheap/mcp Claude Code
एक कमांड
claude mcp add --transport http doc-cheap https://mcp.doc.cheap/mcp --header "Authorization: Bearer sk_live_your_key"Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"doc-cheap": {
"url": "https://mcp.doc.cheap/mcp",
"headers": {
"Authorization": "Bearer sk_live_your_key"
}
}
}
}VS Code
.vscode/mcp.json
{
"servers": {
"doc-cheap": {
"type": "http",
"url": "https://mcp.doc.cheap/mcp",
"headers": {
"Authorization": "Bearer sk_live_your_key"
}
}
}
}Claude Desktop और claude.ai में इसे Settings, Connectors में कस्टम कनेक्टर के रूप में https://mcp.doc.cheap/mcp URL के साथ जोड़ें; कुंजी के बिना यह सैंडबॉक्स कुंजी पर चलता है।
तीन टूल
| टूल | क्या करता है | क्या लौटाता है | घोषित व्यवहार |
|---|---|---|---|
scan_document Recognise a passport or ID document | डॉक्यूमेंट की इमेज पहचानता है | पूरा स्ट्रक्चर्ड नतीजा, साथ में एक लाइन का सारांश | केवल-पढ़ने वाला नहीं – यह एक क्रेडिट ले सकता है। विनाशकारी नहीं। आइडेम्पोटेंट तब, जब आप idempotency key भेजें, और केवल तभी। ओपन-वर्ल्ड: जवाब एक रिमोट सेवा से आता है। |
check_balance Check remaining credits | खाते का उपयोग पढ़ता है | बैलेंस और मौजूदा अवधि के काउंटर | केवल-पढ़ने वाला, और ओपन-वर्ल्ड: आँकड़े खाते की लाइव स्थिति हैं। |
search_docs Search the doc.cheap API documentation | डॉक्यूमेंटेशन में सर्च करता है | मेल खाने वाले सेक्शन, शीर्षक, लिंक और अंश के साथ – ऑफ़लाइन | केवल-पढ़ने वाला, और क्लोज़्ड-वर्ल्ड: कॉर्पस डॉक्यूमेंटेशन की वह कॉपी है जो सर्वर के साथ आती है, इसलिए एक ही क्वेरी बिना किसी नेटवर्क के एक ही जवाब देती है। |
- scan_document इमेज को image_base64, image_path या image_url के रूप में लेता है, और वही विकल्प जो सीधी कॉल लेती है, जैसे expect_country, return_portrait, reference और idempotency_key.
- search_docs सर्वर के साथ आने वाली डॉक्यूमेंटेशन की कॉपी पढ़ता है, इसलिए वह बिना किसी नेटवर्क के जवाब देता है – यानी एजेंट एक भी कॉल ख़र्च किए बिना फ़ील्ड के नाम या कोई एरर कोड देख सकता है।
- check_balance को ऐसी कुंजी चाहिए जिसके पीछे कोई खाता हो। सार्वजनिक सैंडबॉक्स कुंजी पर यह साफ़ बताता है कि कोई बैलेंस नहीं है, बजाय ऐसे शून्य लौटाने के जो असली रीडिंग जैसे दिखें।
- हर टूल एक आउटपुट स्कीमा घोषित करता है और उसी से मेल खाता स्ट्रक्चर्ड कंटेंट लौटाता है, इसलिए एजेंट टेक्स्ट पार्स किए बिना फ़ील्ड इस्तेमाल कर सकता है।
- डॉक्यूमेंटेशन का हर पेज एक रिसोर्स भी है जिसे एजेंट पढ़ सकता है, और चार प्रॉम्प्ट – डॉक्यूमेंट को JSON में पढ़ना, वैधता समाप्ति की तारीख़ जाँचना, बैच स्कैन करना, एरर कोड समझाना – आम काम एक ही क़दम में शुरू कर देते हैं।
कितना ख़र्च आता है
हर पहचाने गए डॉक्यूमेंट के लिए $0.01। एक जैसी दर, हर खाते के लिए, वॉल्यूम कितना भी हो – एक ही नंबर, और मोलभाव की कोई ज़रूरत नहीं। डॉक्यूमेंट का शुल्क केवल तब लगता है जब वह पहचाना गया हो: जो स्कैन कुछ नहीं ढूँढ पाता, इमेज नहीं पढ़ पाता या प्रकार नहीं पहचान पाता, वह अपना फ़ैसला बताता है और उसका कोई शुल्क नहीं लगता। हर नतीजा बताता है कि मामला कौन-सा था, इसलिए एजेंट – और आप – हमेशा जानते हैं कि उस कॉल पर कुछ ख़र्च हुआ या नहीं।
खाता बनाने से पहले: सार्वजनिक सैंडबॉक्स कुंजी हर IP एड्रेस पर कुल 10 पहचाने गए डॉक्यूमेंट मुफ़्त चलाती है, घंटे में अधिकतम 10 रिक्वेस्ट, जवाब चाहे जो भी हो, और रजिस्टर करने पर 20 क्रेडिट और जुड़ते हैं। एक क्रेडिट यानी एक सेंट यानी एक डॉक्यूमेंट।
प्रोडक्शन में पहचान में मीडियन पर लगभग 275 ms लगते हैं, और हर नतीजे में उसकी अपनी टाइमिंग होती है, इसलिए एजेंट लूप असली आँकड़े के हिसाब से बजट बना सकता है।
सीधी कॉल वाली ही क़ीमत, वही कुंजी और रिस्पॉन्स की वही बनावट: बिलिंग कैसे होती है, और तुलना कैसी है।
सर्वर क्या रिपोर्ट करता है
डिफ़ॉल्ट रूप से सर्वर कहीं कुछ रिपोर्ट नहीं करता: जब तक आप ख़ुद कोई रिपोर्टिंग एंडपॉइंट सेट न करें, फ़ेलियर रिपोर्टिंग बंद रहती है, और उसके बिना ट्रैकर लाइब्रेरी लोड तक नहीं होती।
दो सुरक्षा उपाय जिन्हें जानना ज़रूरी है
सर्वर आपकी मशीन पर आपके अधिकारों के साथ चलता है, और उसके आर्ग्युमेंट एक मॉडल चुनता है। इसलिए उनमें से दो पर पाबंदी लगाई गई है:
लोकल फ़ाइलें तब तक बंद हैं जब तक आप एक डायरेक्टरी नहीं खोलते
जब तक DOC_CHEAP_IMAGE_ROOT किसी डायरेक्टरी का नाम न दे, image_path कुछ भी करने से मना कर देता है, और असिस्टेंट से image_base64 भेजने को कहता है। वेरिएबल सेट होने पर, डायरेक्टरी और माँगी गई फ़ाइल, दोनों को containment जाँच से पहले symlink के ज़रिए resolve किया जाता है; .. सेगमेंट और बाहर की ओर इशारा करने वाला लिंक, दोनों अस्वीकार किए जाते हैं, और रिलेटिव पाथ उसी डायरेक्टरी से लिया जाता है, न कि वहाँ से जहाँ क्लाइंट ने प्रोसेस शुरू किया हो। रूट के बाहर का पाथ और मौजूद न होने वाला पाथ, दोनों एक ही मैसेज देते हैं – दोनों के लिए अलग मैसेज आपकी मशीन के किसी भी पाथ के लिए “क्या यह फ़ाइल मौजूद है?” का जवाब दे देते।
रिमोट इमेज सार्वजनिक https पर होनी चाहिए
image_url को सर्वर डाउनलोड करता है, इसलिए स्कीम https: होनी चाहिए और होस्ट केवल सार्वजनिक इंटरनेट एड्रेस पर resolve होना चाहिए: loopback, प्राइवेट, link-local, carrier-grade NAT, मल्टीकास्ट और रिज़र्व्ड रेंज अस्वीकार की जाती हैं, उनके IPv6-mapped रूप भी। एक भी ग़ैर-सार्वजनिक जवाब पूरे URL को अस्वीकार कर देता है। रीडायरेक्ट हाथ से फ़ॉलो किए जाते हैं, अधिकतम तीन हॉप, और हर हॉप की फिर से जाँच होती है। बॉडी की सीमा 25 MB है, जो आते समय गिनी जाती है, किसी हेडर पर भरोसा करके नहीं।
image_base64 पर इनमें से कोई पाबंदी नहीं है, क्योंकि कॉल करने वाले के पास बाइट पहले से हैं – इसीलिए ऊपर का हर इनकार उसी की ओर इशारा करता है।
गाइड पढ़ें
- MCP सर्वर इस्तेमाल करें – कॉन्फ़िगरेशन, टूल, सुरक्षा उपाय, और जब क्लाइंट कोई टूल न दिखाए तो क्या जाँचें (अंग्रेज़ी में)।
- API डॉक्यूमेंटेशन – वह HTTP इंटरफ़ेस जिसका यह सर्वर एक क्लाइंट है।
- OpenAPI स्पेसिफ़िकेशन – ख़ुद कॉन्ट्रैक्ट।
- पहले बिना खाते के कॉल करें – वही पहचान, टर्मिनल से।