Anki MCP

आधिकारिक

एक MCP सर्वर जो AI सहायकों को Anki, स्पेस्ड रिपीटीशन फ्लैशकार्ड एप्लिकेशन, के साथ इंटरैक्ट करने में सक्षम बनाता है।

Anki MCP के साथ आप क्या कर सकते हैं?

  • समीक्षा के लिए देय कार्ड — अपने सहायक से किसी विशिष्ट डेक के देय कार्ड निकालने को कहें और get_due_cards तथा present_card के माध्यम से उन पर आपसे प्रश्नोत्तरी करवाएं।
  • कार्ड प्रदर्शन को रेट करें — सहायक से अपने उत्तर की गुणवत्ता (Again, Hard, Good, Easy) दर्ज करवाएं ताकि rate_card के जरिए समीक्षाओं को पुनर्निर्धारित किया जा सके।
  • कस्टम फ्लैशकार्ड बनाएं — सहायक को createModel और updateModelStyling का उपयोग करके कस्टम फ़ील्ड और RTL स्टाइलिंग के साथ नए नोट प्रकार बनाने का निर्देश दें, फिर addNotes से बैच में नोट जोड़ें।
  • नोट सामग्री प्रबंधित करें — findNotes के माध्यम से Anki क्वेरी सिंटैक्स (deck:, tag:, is:due) का उपयोग करके नोट खोजें, फिर updateNoteFields से उनके फ़ील्ड अपडेट करें।
  • कार्ड में मीडिया आयात करें — सहायक से storeMediaFile के साथ स्थानीय पथ या URL से एक छवि अपलोड करने को कहें और guiSelectedNotes तथा updateNoteFields का उपयोग करके इसे चयनित नोट के फ़ील्ड में डालें।
  • डेक और कार्ड व्यवस्थित करें — createDeck के साथ नेस्टेड डेक (Parent::Child) बनाएं, changeDeck से कार्ड को डेक के बीच स्थानांतरित करें, या समीक्षा के दौरान छोड़ने के लिए suspend से कार्ड निलंबित करें।

दस्तावेज़

Anki MCP सर्वर

Tests npm version

Anki + MCP Integration

AI सहायकों के साथ Anki को मॉडल कॉन्टेक्स्ट प्रोटोकॉल के माध्यम से सहज रूप से एकीकृत करें

[!IMPORTANT] अधिकांश सेटअप के लिए AnkiMCP ऐडऑन को प्राथमिकता दें।

यह ऐडऑन (GitHub) MCP सर्वर को सीधे Anki के अंदर चलाता है। Node.js इंस्टॉल करने की आवश्यकता नहीं है, AnkiConnect कॉन्फ़िगर करने की आवश्यकता नहीं है, अलग से प्रोसेस चालू रखने की आवश्यकता नहीं है: इसे कोड 124672614 के साथ इंस्टॉल करें, Anki को पुनः आरंभ करें, और सर्वर हर बार Anki खुलने पर तैयार रहता है। यह स्थानीय HTTP एक्सेस और बिल्ट-इन टनल के माध्यम से रिमोट एक्सेस दोनों को कवर करता है।

यह रिपॉजिटरी तब सही विकल्प है जब आपको विशेष रूप से आवश्यकता हो:

  • STDIO ट्रांसपोर्ट — Claude Desktop, Claude Code, Cursor, या कोई भी क्लाइंट जो सर्वर को सबप्रोसेस के रूप में चलाता है
  • MCPB बंडल — Claude Desktop के लिए वन-क्लिक .mcpb इंस्टॉल

HTTP, टनल, या वेब-आधारित क्लाइंट (claude.ai, ChatGPT) के लिए, ऐडऑन सरल और बेहतर समर्थित मार्ग है।

यह रिपो डिप्रेकेटेड नहीं है। यह उसी ankimcp.ai प्रोजेक्ट के हिस्से के रूप में ऐडऑन के साथ बनाए रखा और रिलीज़ किया जाता है।

एक मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) सर्वर जो AI सहायकों को Anki, स्पेस्ड रिपीटिशन फ्लैशकार्ड एप्लिकेशन, के साथ इंटरैक्ट करने में सक्षम बनाता है।

प्राकृतिक भाषा इंटरैक्शन के साथ अपने Anki अनुभव को बदलें — जैसे कि एक निजी ट्यूटर हो। AI सहायक केवल प्रश्न और उत्तर प्रस्तुत नहीं करता; यह अवधारणाओं को समझा सकता है, सीखने की प्रक्रिया को अधिक आकर्षक और मानवीय बना सकता है, संदर्भ प्रदान कर सकता है, और आपकी सीखने की शैली के अनुकूल हो सकता है। यह तुरंत नोट्स बना और संपादित कर सकता है, आपके अध्ययन सत्रों को गतिशील बातचीत में बदल सकता है। और भी सुविधाएँ जल्द आ रही हैं!

उदाहरण और ट्यूटोरियल

इस MCP सर्वर को Claude Desktop के साथ उपयोग करने के लिए व्यापक गाइड, वास्तविक दुनिया के उदाहरण और चरण-दर-चरण ट्यूटोरियल के लिए देखें:

ankimcp.ai — व्यावहारिक उदाहरणों और उपयोग के मामलों के साथ पूर्ण दस्तावेज़ीकरण

पूरक दस्तावेज़ीकरण के लिए docs/ देखें, जिसमें रिव्यूअर सेटअप गाइड और नमूना Anki डेक शामिल है।

उदाहरण उपयोग के मामले

तीन प्रतिनिधि प्रॉम्प्ट जो इस सर्वर द्वारा सक्षम टूल फ्लो दिखाते हैं:

  1. "मेरे स्पेनिश डेक की समीक्षा करने में मेरी मदद करें।" — सहायक AnkiWeb के साथ सिंक करने की पेशकश करता है (sync), देय कार्ड प्राप्त करता है (get_due_cards डेक फ़िल्टर के साथ), प्रत्येक कार्ड प्रस्तुत करता है (present_card), और आपकी रेटिंग रिकॉर्ड करता है (rate_card)। आपके अनुरूप स्पष्टीकरण के साथ प्राकृतिक अध्ययन बातचीत।

  2. "RTL स्टाइलिंग के साथ 10 अरबी शब्दावली कार्ड बनाएं।" — सहायक नोट प्रकार सूचीबद्ध करता है (modelNames), यदि आवश्यक हो तो एक कस्टम RTL मॉडल बनाता है (createModel + updateModelStyling दाएं-से-बाएं CSS के लिए), फिर बैच में कार्ड बनाता है (addNotes)।

  3. "मेरे डाउनलोड फ़ोल्डर से इस छवि को चयनित नोट के सामने आयात करें।" — सहायक स्थानीय फ़ाइल अपलोड करता है (storeMediaFile फ़ाइल पथ के साथ), ब्राउज़र से वर्तमान में चयनित नोट पढ़ता है (guiSelectedNotes + notesInfo), और <img> टैग के साथ सामने वाले फ़ील्ड को अपडेट करता है (updateNoteFields)।

उपलब्ध टूल

सर्वर 53 MCP टूल प्रदान करता है — रोज़मर्रा के Anki संचालन के लिए 42 आवश्यक टूल और 11 GUI टूल जो नोट संपादन/निर्माण वर्कफ़्लो के लिए Anki डेस्कटॉप इंटरफ़ेस चलाते हैं।

आवश्यक टूल

समीक्षा और अध्ययन

  • sync - नवीनतम डेटा खींचने और परिवर्तन पुश करने के लिए AnkiWeb के साथ सिंक करें
  • get_due_cards - समीक्षा के लिए देय कार्ड प्राप्त करें, वैकल्पिक रूप से डेक द्वारा फ़िल्टर किया गया (उत्तर छोड़े गए जब तक include_answer: true, डिफ़ॉल्ट false)
  • get_cards - स्थिति (देय, नया, सीख रहा है, निलंबित, दफनाया गया) और डेक द्वारा लचीले फ़िल्टरिंग के साथ कार्ड प्राप्त करें (उत्तर छोड़े गए जब तक include_answer: true, डिफ़ॉल्ट false)
  • present_card - समीक्षा के लिए उसके प्रश्न/सामने वाले पक्ष के साथ एक कार्ड दिखाएं
  • rate_card - कार्ड प्रदर्शन रेट करें (फिर से, कठिन, अच्छा, आसान) और अगली समीक्षा शेड्यूल करें
  • forgetCards - कार्ड को नए पर रीसेट करें, समीक्षा रिकॉर्ड किए बिना उनके शेड्यूलिंग को त्याग दें
  • setDueDate - कार्ड को N दिनों में देय होने के लिए पुनर्निर्धारित करें ("0", "3-7", "1!"), समीक्षा रिकॉर्ड किए बिना
  • areSuspended - बिना कुछ बदले एक या अधिक कार्डों की निलंबन स्थिति जांचें
  • suspend - कार्ड निलंबित करें ताकि अनसस्पेंड होने तक समीक्षा के दौरान उन्हें छोड़ दिया जाए
  • unsuspend - कार्ड अनसस्पेंड करें ताकि वे सामान्य समीक्षा में वापस आ जाएं

नोट: forgetCards और setDueDate शेड्यूलिंग बदलते हैं बिना समीक्षा लॉग किए, जो उन्हें rate_card से अलग करता है। उन्हें तब उपयोग करें जब कार्ड का शेड्यूल गलत हो न कि उत्तर: कार्ड को Again रेट करना उसे गहरा दफनाने के लिए एक वास्तविक चूक रिकॉर्ड करता है और उसके आसान कारक को गिरा देता है, जो भविष्य के शेड्यूलिंग और आपके आंकड़ों दोनों को स्थायी रूप से तिरछा कर देता है। forgetCards अंतराल को मिटा देता है और कार्ड को फिर से शुरू करता है; setDueDate कार्ड का इतिहास रखता है और केवल अगली समीक्षा को स्थानांतरित करता है।

नोट: कार्ड front/back सामग्री प्रत्येक कार्ड के लिए उसके अपने टेम्पलेट से प्रस्तुत की जाती है (जैसा कि Anki दिखाता है), इसलिए उल्टे और क्लोज़ कार्ड सही दिशा प्रदर्शित करते हैं। आपके कार्ड टेम्पलेट्स द्वारा जोड़ा गया स्थिर पाठ भी आउटपुट में दिखाई देता है।

डेक प्रबंधन

  • listDecks - सभी डेक सूचीबद्ध करें, वैकल्पिक रूप से प्रति-डेक अध्ययन-कतार आंकड़ों के साथ
  • deckStats - एकल डेक के लिए व्यापक आंकड़े प्राप्त करें (अध्ययन कतार, वास्तविक कार्ड-स्थिति गणना, आसान/अंतराल वितरण)
  • createDeck - एक नया खाली डेक बनाएं (Parent::Child का समर्थन करता है, अधिकतम 2 स्तर)
  • changeDeck - कार्ड को एक अलग डेक में ले जाएं (यदि मौजूद नहीं है तो बनाया जाएगा)

नोट: डेक आंकड़े दो प्रकार के होते हैं। counts ब्लॉक (और सब कुछ listDecks रिपोर्ट करता है) Anki के डेक ब्राउज़र को दर्शाता है: कार्ड आज देय, प्रत्येक डेक की दैनिक नई/समीक्षा सीमाओं द्वारा सीमित, निलंबित और दफनाए गए कार्ड बहिष्कृत — इसलिए review "परिपक्व कार्ड" नहीं है और other बाल्टी केवल अंकगणितीय शेष है (अधिकतर समीक्षा कार्ड आज देय नहीं हैं और दैनिक सीमा से अधिक नए कार्ड)। वास्तविक प्रति-स्थिति कुल के लिए states ब्लॉक का उपयोग deckStats / collection_stats पर करें, जो Anki खोजों के माध्यम से new, learning, review, suspended और buried की गणना करता है, देय तिथियों और दैनिक सीमाओं को अनदेखा करता है।

नोट प्रबंधन

  • addNote - निर्दिष्ट फ़ील्ड और टैग के साथ एक एकल नोट बनाएं
  • addNotes - डेक और मॉडल साझा करने वाले 100 नोट तक बैच-निर्माण करें (आंशिक सफलता समर्थित)
  • findNotes - Anki क्वेरी सिंटैक्स का उपयोग करके नोट खोजें (deck:, tag:, is:due, आदि)
  • notesInfo - नोट्स के बारे में विस्तृत जानकारी प्राप्त करें (फ़ील्ड, टैग, नोट प्रकार, कार्ड आईडी; CSS modelStyling से आता है)
  • updateNoteFields - मौजूदा नोट फ़ील्ड अपडेट करें (CSS-जागरूक, HTML सामग्री का समर्थन करता है)
  • deleteNotes - नोट्स और सभी संबंधित कार्ड हटाएं (विनाशकारी, पुष्टि की आवश्यकता है)

टैग प्रबंधन

  • getTags - संग्रह में सभी टैग प्राप्त करें (डुप्लिकेशन से बचने के लिए पहले उपयोग करें)
  • addTags - निर्दिष्ट नोट्स में स्पेस-सेपरेटेड टैग जोड़ें
  • removeTags - निर्दिष्ट नोट्स से स्पेस-सेपरेटेड टैग हटाएं
  • replaceTags - निर्दिष्ट नोट्स में एक टैग का नाम बदलें
  • clearUnusedTags - किसी भी नोट द्वारा उपयोग नहीं किए गए अनाथ टैग हटाएं (विनाशकारी)

मीडिया प्रबंधन

  • getMediaFilesNames - collection.media में मीडिया फ़ाइलें सूचीबद्ध करें, वैकल्पिक रूप से पैटर्न द्वारा फ़िल्टर किया गया
  • retrieveMediaFile - मीडिया फ़ाइल को base64 सामग्री के रूप में डाउनलोड करें
  • storeMediaFile - base64 डेटा, एक पूर्ण फ़ाइल पथ, या URL से मीडिया अपलोड करें
  • deleteMediaFile - collection.media से एक मीडिया फ़ाइल हटाएं (विनाशकारी)

💡 छवियों के लिए सर्वोत्तम अभ्यास:

  • ✅ फ़ाइल पथ का उपयोग करें (जैसे, /Users/you/image.png) - तेज़ और कुशल
  • ✅ URL का उपयोग करें (जैसे, https://example.com/image.jpg) - सीधा डाउनलोड
  • ❌ base64 से बचें - अत्यंत धीमा और टोकन-अकुशल

बस Claude को बताएं कि छवि कहां है, और यह सबसे कुशल विधि का उपयोग करके अपलोड को स्वचालित रूप से संभाल लेगा।

मॉडल/टेम्पलेट प्रबंधन

  • modelNames - सभी उपलब्ध नोट प्रकार/मॉडल सूचीबद्ध करें
  • modelFieldNames - एक विशिष्ट नोट प्रकार के लिए फ़ील्ड नाम प्राप्त करें
  • modelStyling - एक नोट प्रकार के लिए CSS स्टाइलिंग जानकारी प्राप्त करें
  • modelTemplates - एक नोट प्रकार के लिए कार्ड टेम्पलेट (फ्रंट और बैक HTML) प्राप्त करें
  • createModel - कस्टम फ़ील्ड, कार्ड टेम्पलेट और CSS के साथ एक नया नोट प्रकार बनाएं (जैसे, RTL मॉडल)
  • updateModelStyling - मौजूदा नोट प्रकार के लिए CSS स्टाइलिंग अपडेट करें (इसके सभी कार्डों पर लागू होता है)
  • updateModelTemplates - मौजूदा नोट प्रकार के लिए कार्ड टेम्पलेट (फ्रंट और बैक HTML) अपडेट करें (इसके सभी कार्डों पर लागू होता है)
  • addModelField - मौजूदा नोट प्रकार में एक नया फ़ील्ड जोड़ें (अंत में जोड़ा गया या एक विशिष्ट स्थिति में डाला गया)
  • removeModelField - मौजूदा नोट प्रकार से एक फ़ील्ड हटाएं (सभी नोट्स से इसकी सामग्री हटाता है; स्पष्ट पुष्टि की आवश्यकता है)
  • renameModelField - मौजूदा नोट प्रकार में एक फ़ील्ड का नाम बदलें (Anki कार्ड टेम्पलेट्स में पुराने नाम के संदर्भों को फिर से लिखता है)
  • repositionModelField - मौजूदा नोट प्रकार के भीतर एक फ़ील्ड की स्थिति बदलें

आंकड़े

  • collection_stats - प्रति-डेक विवरण और संग्रह-व्यापी कार्ड-स्थिति गणना के साथ सभी डेक में एकत्रित आंकड़े
  • review_stats - समीक्षा इतिहास विश्लेषण (अस्थायी पैटर्न, प्रतिधारण मेट्रिक्स, अध्ययन स्ट्रीक्स)

GUI टूल

Anki डेस्कटॉप इंटरफ़ेस चलाने वाले टूल। नोट संपादन/निर्माण और डेक-प्रबंधन वर्कफ़्लो के लिए अभिप्रेत, समीक्षा सत्रों के लिए नहीं।

  • guiBrowse - कार्ड ब्राउज़र खोलें और कार्ड खोजें
  • guiSelectCard - कार्ड ब्राउज़र में एक विशिष्ट कार्ड चुनें
  • guiSelectedNotes - कार्ड ब्राउज़र में वर्तमान में चयनित नोट्स की आईडी प्राप्त करें
  • guiAddCards - पूर्व निर्धारित नोट विवरण के साथ कार्ड जोड़ें संवाद खोलें
  • guiEditNote - एक विशिष्ट नोट के लिए नोट संपादक खोलें
  • guiDeckOverview - एक विशिष्ट डेक के लिए डेक अवलोकन संवाद खोलें
  • guiDeckBrowser - डेक ब्राउज़र संवाद खोलें
  • guiCurrentCard - समीक्षा मोड में वर्तमान कार्ड के बारे में जानकारी प्राप्त करें (उत्तर शामिल है; समीक्षा मोड के बाहर त्रुटि)
  • guiShowQuestion - वर्तमान कार्ड का प्रश्न पक्ष दिखाएं
  • guiShowAnswer - वर्तमान कार्ड का उत्तर पक्ष दिखाएं
  • guiUndo - Anki में अंतिम क्रिया पूर्ववत करें

पूर्वापेक्षाएँ

  • Anki जिसमें AnkiConnect प्लगइन स्थापित हो
  • Node.js 22.12.0+

स्थापना

अपनी मशीन पर सर्वर प्राप्त करने के कुछ तरीके हैं। एक बार स्थापित होने के बाद, इसे अपने AI सहायक से जोड़ने के लिए AI क्लाइंट कनेक्ट करना पर जाएं — स्थानीय या दूरस्थ रूप से।

npm (वैश्विक या npx)

सर्वर स्थापित करने का सामान्य-उद्देश्य तरीका, किसी भी MCP क्लाइंट के लिए उपयुक्त जो इसे सीधे लॉन्च करता है।

उन क्लाइंट्स के लिए इसे वैश्विक रूप से स्थापित करें जो ankimcp कमांड चलाते हैं:

npm install -g @ankimcp/anki-mcp-server

या बिना किसी स्थापना के मांग पर चलाएं:

npx @ankimcp/anki-mcp-server

MCPB बंडल (Claude Desktop के लिए अनुशंसित)

Claude Desktop के लिए इस MCP सर्वर को स्थापित करने का सबसे आसान तरीका:

  1. रिलीज़ पृष्ठ से नवीनतम .mcpb बंडल डाउनलोड करें
  2. Claude Desktop में, एक्सटेंशन स्थापित करें:
    • विधि 1: सेटिंग्स → एक्सटेंशन पर जाएं, फिर .mcpb फ़ाइल को खींचें और छोड़ें
    • विधि 2: सेटिंग्स → डेवलपर → एक्सटेंशन → एक्सटेंशन स्थापित करें पर जाएं, फिर .mcpb फ़ाइल चुनें
  3. यदि आवश्यक हो तो AnkiConnect URL कॉन्फ़िगर करें (डिफ़ॉल्ट http://localhost:8765 है)
  4. Claude Desktop को पुनः आरंभ करें

बस इतना ही! बंडल में सर्वर को स्थानीय रूप से चलाने के लिए आवश्यक सब कुछ शामिल है।

Anthropic MCP निर्देशिका समीक्षकों के लिए: पूर्व-जनसंख्या वाले नमूना डेक के साथ एक शून्य-से-एकीकरण वॉकथ्रू docs/reviewer-setup.md में रहता है।

स्रोत से स्थापित करें (विकास के लिए)

For development or advanced usage (running the test suite requires Node.js 24.9+ — the npm test scripts load the ESM-only NestJS 12 packages via require(esm), which Jest only supports there; the runtime requirement for using the server stays 22.12.0+):

npm install
npm run build

AI क्लाइंट से कनेक्ट करना

एक AI सहायक इस सर्वर तक दो तरीकों से पहुँच सकता है, यह इस पर निर्भर करता है कि सहायक कहाँ चलता है:

  • स्थानीय — सर्वर AI क्लाइंट के समान मशीन पर चलता है (Claude Desktop, Cursor, Cline, Zed, या स्थानीय ब्राउज़र सत्र)। डेस्कटॉप MCP क्लाइंट के लिए STDIO का उपयोग करें, स्थानीय वेब-आधारित टूल के लिए HTTP का उपयोग करें।
  • दूरस्थ — एक होस्टेड/दूरस्थ AI (जैसे ChatGPT या Claude.ai क्लाउड में) को आपकी स्थानीय मशीन पर चल रहे Anki तक पहुँचने की आवश्यकता है। प्रबंधित Tunnel का उपयोग करें (✅ अनुशंसित — प्रमाणित) या, एक हल्के बिना-प्रमाणीकरण विकल्प के रूप में, ngrok का उपयोग करें।

स्थानीय

सर्वर आपके AI क्लाइंट के समान कंप्यूटर पर चलता है और localhost पर AnkiConnect से बात करता है।

STDIO (प्राथमिक स्थानीय एकीकरण)

STDIO स्थानीय डेस्कटॉप MCP क्लाइंट के लिए मानक ट्रांसपोर्ट है — Claude Desktop, Cursor IDE, Cline, Zed Editor, opencode, और अन्य। क्लाइंट सर्वर को एक सबप्रोसेस के रूप में लॉन्च करता है और मानक इनपुट/आउटपुट पर संचार करता है।

समर्थित क्लाइंट:

  • Claude Desktop
  • Cursor IDE - AI-संचालित कोड संपादक
  • Cline - AI सहायता के लिए VS Code एक्सटेंशन
  • Zed Editor - तेज़, आधुनिक कोड संपादक
  • opencode - टर्मिनल AI कोडिंग एजेंट
  • अन्य MCP क्लाइंट जो STDIO ट्रांसपोर्ट का समर्थन करते हैं

Claude Desktop के लिए, MCPB बंडल सबसे आसान रास्ता है। अन्य क्लाइंट के लिए, --stdio फ्लैग के साथ npm पैकेज कॉन्फ़िगर करें।

कॉन्फ़िगरेशन - एक विधि चुनें:

विधि 1: npx का उपयोग करना (अनुशंसित - कोई इंस्टॉलेशन आवश्यक नहीं)

{
  "mcpServers": {
    "anki-mcp": {
      "command": "npx",
      "args": ["-y", "@ankimcp/anki-mcp-server", "--stdio"],
      "env": {
        "ANKI_CONNECT_URL": "http://localhost:8765"
      }
    }
  }
}

विधि 2: वैश्विक इंस्टॉलेशन का उपयोग करना

पहले, वैश्विक रूप से इंस्टॉल करें:

npm install -g @ankimcp/anki-mcp-server

फिर कॉन्फ़िगर करें:

{
  "mcpServers": {
    "anki-mcp": {
      "command": "ankimcp",
      "args": ["--stdio"],
      "env": {
        "ANKI_CONNECT_URL": "http://localhost:8765"
      }
    }
  }
}

opencode अपने स्वयं के प्रारूप का उपयोग करता है — सर्वर mcp के अंतर्गत जाते हैं, कमांड एक एकल सरणी है, और पर्यावरण चर environment के अंतर्गत जाते हैं:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "anki-mcp": {
      "type": "local",
      "command": ["npx", "-y", "@ankimcp/anki-mcp-server", "--stdio"],
      "enabled": true,
      "environment": {
        "ANKI_CONNECT_URL": "http://localhost:8765"
      }
    }
  }
}

कॉन्फ़िगरेशन फ़ाइल स्थान:

  • Cursor IDE: ~/.cursor/mcp.json (macOS/Linux) या %USERPROFILE%\.cursor\mcp.json (Windows)
  • Cline: VS Code में सेटिंग्स UI के माध्यम से सुलभ
  • Zed Editor: एक्सटेंशन मार्केटप्लेस के माध्यम से MCP एक्सटेंशन के रूप में इंस्टॉल करें
  • opencode: आपके प्रोजेक्ट रूट में opencode.json, या वैश्विक रूप से ~/.config/opencode/opencode.json

क्लाइंट-विशिष्ट सुविधाओं और समस्या निवारण के लिए, अपने MCP क्लाइंट के दस्तावेज़ देखें। एक कॉन्फ़िगरेशन के लिए Claude Desktop से कनेक्ट करें भी देखें जो सीधे एक निर्मित dist/main-stdio.js की ओर इशारा करता है।

HTTP (स्थानीय वेब-आधारित AI)

HTTP मोड सर्वर को MCP स्ट्रीमेबल HTTP प्रोटोकॉल बोलने वाले स्थानीय वेब सर्वर के रूप में चलाता है। यह वह ट्रांसपोर्ट है जिससे एक वेब-आधारित AI टूल आपकी मशीन पर इंगित होने पर बात करता है, और यह वही है जो दूरस्थ विकल्प बाहरी दुनिया को उजागर करते हैं। अपने आप में, HTTP मोड केवल localhost से बंधता है।

localhost से परे बाइंडिंग? यदि आप --host 0.0.0.0 पास करते हैं (या एक रिवर्स प्रॉक्सी/सार्वजनिक डोमेन के पीछे चलते हैं), तो सर्वर DNS-रीबाइंडिंग सुरक्षा के लिए डिफ़ॉल्ट रूप से केवल लूपबैक Host हेडर स्वीकार करता है — क्लाइंट द्वारा उपयोग किए जाने वाले होस्टनाम(ओं) के लिए ALLOWED_HOSTS सेट करें। HTTP मोड कॉन्फ़िगरेशन देखें।

सेटअप - एक विधि चुनें:

विधि 1: npx का उपयोग करना (अनुशंसित - कोई इंस्टॉलेशन आवश्यक नहीं)

# Quick start
npx @ankimcp/anki-mcp-server

# With custom options
npx @ankimcp/anki-mcp-server --port 8080 --host 0.0.0.0
npx @ankimcp/anki-mcp-server --anki-connect http://localhost:8765

विधि 2: वैश्विक इंस्टॉलेशन का उपयोग करना

# Install once
npm install -g @ankimcp/anki-mcp-server

# Run the server
ankimcp

# With custom options
ankimcp --port 8080 --host 0.0.0.0
ankimcp --anki-connect http://localhost:8765

विधि 3: स्रोत से इंस्टॉल करें (विकास के लिए)

npm install
npm run build
npm run start:prod:http

स्थानीय HTTP सर्वर को क्लाउड-होस्टेड AI के लिए सुलभ बनाने के लिए, नीचे दिए गए दूरस्थ विकल्पों में से एक का उपयोग करें।

दूरस्थ

एक होस्टेड/दूरस्थ AI (जैसे ChatGPT या Claude.ai क्लाउड में चल रहा) सीधे localhost तक नहीं पहुँच सकता। ये विकल्प आपके स्थानीय Anki को इंटरनेट पर उजागर करते हैं ताकि एक दूरस्थ सहायक उससे बात कर सके।

Tunnel (✅ अनुशंसित)

अनुशंसित दूरस्थ मार्ग — प्रमाणित और सुरक्षित। एक कच्चे सार्वजनिक पोर्ट के विपरीत, टनल मोड के लिए आपको लॉग इन करना आवश्यक है (OAuth 2.0 डिवाइस फ्लो), इसलिए एंडपॉइंट किसी ऐसे व्यक्ति के लिए खुला नहीं है जो URL का अनुमान लगाता है।

टनल मोड वेब-आधारित AI सहायकों को आपके स्थानीय Anki तक पहुँचने देता है बिना अपना स्वयं का टनल चलाए। सर्वर प्रबंधित AnkiMCP टनल सेवा (wss://tunnel.ankimcp.ai) से एक WebSocket पर बाहर जुड़ता है और एक सार्वजनिक URL सौंपा जाता है। प्रमाणीकरण अंतर्निहित है — कोई ngrok खाता या अलग टनल प्रक्रिया आवश्यक नहीं है, और आप एक बार लॉग इन करते हैं।

लॉग इन करें (OAuth डिवाइस फ्लो):

टनल मोड OAuth 2.0 डिवाइस अनुदान का उपयोग करता है। लॉग इन करना स्वचालित रूप से आपके ब्राउज़र को एक अनुमोदन पृष्ठ पर खोलता है जिसमें कोड पहले से ही URL में एम्बेडेड होता है — टाइप करने के लिए कुछ नहीं, बस अनुमोदन करें। (यदि ब्राउज़र नहीं खुल सकता है, तो टर्मिनल एक सत्यापन URL और कोड प्रिंट करता है जिसे फ़ॉलबैक के रूप में मैन्युअल रूप से दर्ज किया जा सकता है।) सफलता पर, क्रेडेंशियल ~/.ankimcp/credentials.json (फ़ाइल अनुमतियाँ 0600) में सहेजे जाते हैं।

# Pre-authenticate (optional — --tunnel will trigger this automatically if needed)
ankimcp --login
npx @ankimcp/anki-mcp-server --login

# Clear saved credentials
ankimcp --logout

टनल शुरू करें:

# Connect to the managed tunnel service (wss://tunnel.ankimcp.ai)
ankimcp --tunnel
npx @ankimcp/anki-mcp-server --tunnel

# Override the tunnel server URL (must be ws:// or wss://) — e.g. for self-hosting
ankimcp --tunnel wss://my-tunnel.example.com

यदि कोई क्रेडेंशियल मौजूद नहीं है, तो --tunnel स्वचालित रूप से पहले लॉगिन फ्लो शुरू करता है, फिर टनल पर जारी रहता है। इस ऑटो-लॉगिन के लिए एक इंटरैक्टिव टर्मिनल आवश्यक है — जब stdout एक TTY नहीं है (systemd, हेडलेस Docker, CI), तो सर्वर तेजी से विफल हो जाता है और आपको पहले ankimcp --login चलाने के लिए कहता है। एक बार कनेक्ट होने पर, सार्वजनिक टनल URL मुद्रित होता है; डिस्कनेक्ट करने के लिए Ctrl+C दबाएं। उस URL को अपने AI सहायक के साथ साझा करें।

टनल-मोड पर्यावरण चर:

चरविवरणडिफ़ॉल्ट
TUNNEL_SERVER_URLटनल सर्वर WebSocket URL (--tunnel/--login फ्लैग मान इसे ओवरराइड करता है)wss://tunnel.ankimcp.ai
TUNNEL_AUTH_CLIENT_IDडिवाइस फ्लो के लिए OAuth क्लाइंट ID। उन्नत — केवल तब आवश्यक जब एक स्व-होस्टेड टनल/प्रमाणीकरण सेवा की ओर इशारा करते हुए।(अंतर्निहित)

डिवाइस-फ्लो प्रमाणीकरण एंडपॉइंट (/auth/device, /auth/token) TUNNEL_SERVER_URL से व्युत्पन्न होते हैं, इसलिए --tunnel (या TUNNEL_SERVER_URL) को एक अलग होस्ट पर इंगित करना प्रमाणीकरण को भी उस होस्ट पर ले जाता है।

यह कैसे काम करता है: टनल मोड MCP सर्वर को एक इन-मेमोरी ट्रांसपोर्ट (TunnelTransport) के पीछे इन-प्रोसेस चलाता है। वह ट्रांसपोर्ट MCP सर्वर का मालिक है और प्रत्येक रिले किए गए अनुरोध निकाय को एक प्रतिक्रिया में बदल देता है, और TunnelClient इसे एक WebSocket पर दूरस्थ टनल सेवा से जोड़ता है — MCP अनुरोधों को अंदर और प्रतिक्रियाओं को बाहर रिले करता है। AnkiConnect अभी भी केवल आपकी स्थानीय मशीन पर पहुँचा जाता है।

प्रोटोकॉल संशोधन: क्योंकि टनल MCP सर्वर को इन-प्रोसेस जोड़ता है, टनल मोड केवल MCP प्रोटोकॉल के 2025 संशोधन की सेवा करता है, जबकि STDIO और HTTP मोड 2025 और नए 2026-07-28 संशोधन दोनों की सेवा करते हैं। हर टूल किसी भी तरह से समान व्यवहार करता है — लेकिन एक क्लाइंट जो केवल 2026-07-28 बोलता है, उसे टनल पर प्रोटोकॉल-संस्करण त्रुटि के साथ वापस कर दिया जाता है; उस क्लाइंट के लिए STDIO या HTTP मोड चलाएं।

ngrok (बिना-प्रमाणीकरण विकल्प)

यदि आप प्रबंधित टनल पर खाते के बिना स्थानीय HTTP मोड को सार्वजनिक रूप से उजागर करना पसंद करते हैं, तो अंतर्निहित --ngrok फ्लैग एक ngrok सबप्रोसेस (src/services/ngrok.service.ts) लॉन्च करता है और स्टार्टअप बैनर में सार्वजनिक URL प्रिंट करता है:

# One-time ngrok setup, then:
ankimcp --ngrok

यह मार्ग बिना-प्रमाणीकरण है — URL वाला कोई भी व्यक्ति आपके Anki तक पहुँच सकता है, इसलिए यह Tunnel से कम सुरक्षित है। जब तक आपके पास अपना स्वयं का ngrok एंडपॉइंट प्रबंधित करने का विशिष्ट कारण न हो, Tunnel को प्राथमिकता दें। (वैश्विक ngrok इंस्टॉलेशन और authtoken की आवश्यकता है।)

--ngrok फ्लैग ngrok को --host-header=rewrite के साथ लॉन्च करता है, इसलिए ngrok फॉरवर्डिंग से पहले अपस्ट्रीम Host को localhost में फिर से लिखता है। यह अनुरोधों को लूपबैक Host अनुमतिसूची के भीतर रखता है (DNS-रीबाइंडिंग सुरक्षा देखें) बिना आपको सार्वजनिक *.ngrok डोमेन को ALLOWED_HOSTS में जोड़ने की आवश्यकता के। यदि आप इसके बजाय ngrok को मैन्युअल रूप से चलाते हैं, तो उसी फ्लैग का उपयोग करें — ngrok http --host-header=rewrite 3000 — अन्यथा ngrok सार्वजनिक ngrok होस्टनाम को Host के रूप में फॉरवर्ड करता है और सर्वर इसे 403 के साथ अस्वीकार कर देता है।

CLI विकल्प (सभी मोड)

ankimcp [options]

Options:
  --stdio                        Run in STDIO mode (for MCP clients)
  --tunnel [url]                 Connect via the managed tunnel (authenticated)
  --login                        Authenticate for tunnel mode (OAuth device flow)
  --logout                       Clear saved tunnel credentials
  -p, --port <number>            Port to listen on (HTTP mode; default: 3000, or PORT env var)
  -h, --host <address>           Host to bind to (HTTP mode; default: 127.0.0.1, or HOST env var)
  -a, --anki-connect <url>       AnkiConnect URL (default: http://localhost:8765, or ANKI_CONNECT_URL env var)
  --ngrok                        Start ngrok tunnel (requires global ngrok installation)
  --read-only                    Run in read-only mode (blocks content changes and rescheduling; rating, suspend and sync still work)
  --help                         Show help message

Usage with npx (no installation needed):
  npx @ankimcp/anki-mcp-server                        # HTTP mode
  npx @ankimcp/anki-mcp-server --port 8080            # Custom port
  npx @ankimcp/anki-mcp-server --stdio                # STDIO mode
  npx @ankimcp/anki-mcp-server --tunnel               # Managed tunnel mode
  npx @ankimcp/anki-mcp-server --ngrok                # HTTP mode with ngrok tunnel
  npx @ankimcp/anki-mcp-server --read-only            # Read-only mode

Usage with global installation:
  npm install -g @ankimcp/anki-mcp-server             # Install once
  ankimcp                                             # HTTP mode
  ankimcp --port 8080                                 # Custom port
  ankimcp --stdio                                     # STDIO mode
  ankimcp --tunnel                                    # Managed tunnel mode
  ankimcp --ngrok                                     # HTTP mode with ngrok tunnel
  ankimcp --read-only                                 # Read-only mode

केवल-पढ़ने का मोड (सभी मोड)

--read-only फ्लैग (या READ_ONLY=true) नोट सामग्री, डेक, टैग, मीडिया और नोट प्रकारों में परिवर्तन, और कार्डों के मैन्युअल पुनर्निर्धारण को अवरुद्ध करता है। जब सक्षम हो:

  • सभी पढ़ने के संचालन सामान्य रूप से काम करते हैं (डेक ब्राउज़ करना, कार्ड देखना, नोट खोजना)
  • ये परिवर्तन अभी भी अनुमत हैं: समीक्षा के दौरान कार्ड रेट करना (rate_card), कार्ड निलंबित/अनसस्पेंड करना (suspend, unsuspend), AnkiWeb के साथ सिंक करना (sync), और GUI टूल जो Anki की विंडो नेविगेट करते हैं (guiBrowse, guiDeckOverview, …)
  • सामग्री संशोधन अवरुद्ध हैं (addNote, deleteNotes, createDeck, updateNoteFields, आदि); एक डेक के लिए createDeck जो पहले से मौजूद है, फिर भी सफल होता है, क्योंकि कुछ भी नहीं लिखा जाता है
  • मैन्युअल पुनर्निर्धारण अवरुद्ध है: forgetCards (नए पर रीसेट) और setDueDate
  • guiUndo अवरुद्ध है, क्योंकि एक पूर्ववत संग्रह में परिवर्तन को वापस कर सकता है
  • guiAddCards और guiEditNote अवरुद्ध हैं, क्योंकि उनके द्वारा खोले गए संवाद में जोड़ा या सहेजा गया नोट संग्रह में लिखा जाता है
  • इसकी सामग्री में आकस्मिक परिवर्तन के बिना Anki डेटा की खोज के लिए उपयोगी
# HTTP mode with read-only
ankimcp --read-only

# STDIO mode with read-only
ankimcp --stdio --read-only

# Can combine with other flags
ankimcp --ngrok --read-only

आप पर्यावरण चर के माध्यम से भी केवल-पढ़ने का मोड सक्षम कर सकते हैं:

READ_ONLY=true ankimcp

या MCP क्लाइंट कॉन्फ़िगरेशन में:

{
  "mcpServers": {
    "anki-mcp": {
      "command": "npx",
      "args": ["-y", "@ankimcp/anki-mcp-server", "--stdio", "--read-only"],
      "env": {
        "ANKI_CONNECT_URL": "http://localhost:8765"
      }
    }
  }
}

Claude Desktop से कनेक्ट करें (स्थानीय मोड)

आप Claude Desktop में सर्वर को कॉन्फ़िगर कर सकते हैं:

  • जाकर: Settings → Developer → Edit Config
  • या कॉन्फ़िग फ़ाइल को मैन्युअल रूप से संपादित करके

कॉन्फ़िगरेशन

अपने Claude Desktop कॉन्फ़िग में निम्नलिखित जोड़ें:

{
  "mcpServers": {
    "anki-mcp": {
      "command": "node",
      "args": ["/path/to/anki-mcp-server/dist/main-stdio.js"],
      "env": {
        "ANKI_CONNECT_URL": "http://localhost:8765"
      }
    }
  }
}

/path/to/anki-mcp-server को अपने वास्तविक प्रोजेक्ट पथ से बदलें।

कॉन्फ़िग फ़ाइल स्थान

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

अधिक विवरण के लिए, आधिकारिक MCP दस्तावेज़ देखें।

पर्यावरण चर (वैकल्पिक)

चरविवरणडिफ़ॉल्ट
ANKI_CONNECT_URLAnkiConnect URLhttp://localhost:8765
ANKI_CONNECT_API_VERSIONAPI संस्करण6
ANKI_CONNECT_API_KEYAPI कुंजी यदि AnkiConnect में कॉन्फ़िगर की गई है-
ANKI_CONNECT_TIMEOUTअनुरोध टाइमआउट ms में5000
READ_ONLYकेवल-पढ़ने का मोड सक्षम करें (true या 1)false
PORTHTTP मोड: सुनने के लिए पोर्ट (--port फ्लैग प्राथमिकता लेता है)3000
HOSTHTTP मोड: बाइंड करने के लिए पता (--host फ्लैग प्राथमिकता लेता है)127.0.0.1
ALLOWED_HOSTSHTTP मोड: लूपबैक से परे स्वीकार करने के लिए अतिरिक्त Host हेडर मान (अल्पविराम-पृथक होस्टनाम)। LAN/सार्वजनिक पते पर बाइंडिंग या रिवर्स प्रॉक्सी के पीछे चलने पर आवश्यक। HTTP मोड कॉन्फ़िगरेशन देखें।केवल लूपबैक
ALLOWED_ORIGINSHTTP मोड: ब्राउज़र Origin/Referer पैटर्न की अल्पविराम-पृथक अनुमतिसूची (वाइल्डकार्ड समर्थित, जैसे https://*.ngrok.io)।http://localhost:*,http://127.0.0.1:*,https://localhost:*,https://127.0.0.1:*
TUNNEL_SERVER_URLटनल सर्वर WebSocket URL (केवल टनल मोड)wss://tunnel.ankimcp.ai
MEDIA_ALLOWED_TYPESफ़ाइल पथ आयात के लिए अनुमति देने के लिए अतिरिक्त MIME प्रकार (अल्पविराम-पृथक, जैसे, application/pdf)-
MEDIA_IMPORT_DIRफ़ाइल पथ आयात को इस निर्देशिका तक सीमित करें-
MEDIA_ALLOWED_HOSTSURL आयात के लिए विशिष्ट निजी नेटवर्क होस्ट की अनुमति दें (अल्पविराम-पृथक, जैसे, 192.168.1.50,my-nas)-

उपयोग उदाहरण

नोट खोजना और अद्यतन करना

# Search for notes in a specific deck
findNotes(query: "deck:Spanish")

# Get detailed information about notes
notesInfo(notes: [1234567890, 1234567891])

# Update a note's fields (HTML content supported)
updateNoteFields(note: {
  id: 1234567890,
  fields: {
    "Front": "<b>¿Cómo estás?</b>",
    "Back": "How are you?"
  }
})

# Delete notes (requires confirmation)
deleteNotes(notes: [1234567890], confirmDeletion: true)

Anki क्वेरी सिंटैक्स उदाहरण

findNotes टूल Anki की शक्तिशाली क्वेरी सिंटैक्स का समर्थन करता है:

  • "deck:DeckName" - किसी विशिष्ट डेक के सभी नोट्स
  • "tag:important" - "महत्वपूर्ण" टैग वाले नोट्स
  • "is:due" - समीक्षा के लिए देय कार्ड
  • "is:new" - नए कार्ड जिनका अध्ययन नहीं किया गया है
  • "added:7" - पिछले 7 दिनों में जोड़े गए नोट्स
  • "front:hello" - फ्रंट फ़ील्ड में "hello" वाले नोट्स
  • "flag:1" - लाल फ़्लैग वाले नोट्स
  • "prop:due<=2" - 2 दिनों के भीतर देय कार्ड
  • "deck:Spanish tag:verb" - स्पेनिश डेक नोट्स जिनमें क्रिया टैग है (AND)
  • "deck:Spanish OR deck:French" - किसी भी डेक के नोट्स

महत्वपूर्ण नोट्स

CSS और HTML हैंडलिंग

  • notesInfo टूल प्रत्येक नोट का नोट प्रकार नाम लौटाता है; CSS स्वयं modelStyling से आता है
  • updateNoteFields टूल फ़ील्ड में HTML सामग्री का समर्थन करता है और CSS स्टाइलिंग को संरक्षित करता है
  • प्रत्येक नोट मॉडल की अपनी CSS स्टाइलिंग होती है - मॉडल-विशिष्ट CSS प्राप्त करने के लिए modelStyling का उपयोग करें

अपडेट चेतावनी

⚠️ महत्वपूर्ण: updateNoteFields का उपयोग करते समय, अपडेट के दौरान Anki के ब्राउज़र में नोट न देखें, अन्यथा फ़ील्ड ठीक से अपडेट नहीं होंगे। अपडेट करने से पहले ब्राउज़र बंद करें या किसी अन्य नोट पर स्विच करें। अधिक विवरण के लिए ज्ञात समस्याएँ देखें।

विलोपन सुरक्षा

deleteNotes टूल को आकस्मिक विलोपन को रोकने के लिए स्पष्ट पुष्टि (confirmDeletion: true) की आवश्यकता होती है। किसी नोट को हटाने से संबंधित सभी कार्ड स्थायी रूप से हट जाते हैं।

सुरक्षा

मीडिया फ़ाइल पथ और URL सत्यापन

मीडिया टूल (storeMediaFile, retrieveMediaFile, deleteMediaFile) और updateNoteFields ऑडियो/चित्र फ़ील्ड में प्रॉम्प्ट इंजेक्शन के दुरुपयोग को रोकने के लिए सुरक्षा सत्यापन शामिल है:

  • फ़ाइल पथ आयात केवल मीडिया फ़ाइल प्रकारों तक सीमित हैं (चित्र, ऑडियो, वीडियो)। गैर-मीडिया फ़ाइलें (जैसे, SSH कुंजियाँ, क्रेडेंशियल, शेल कॉन्फ़िग) MIME प्रकार के आधार पर अस्वीकार कर दी जाती हैं। अतिरिक्त फ़ाइल प्रकारों की अनुमति देने के लिए MEDIA_ALLOWED_TYPES कॉन्फ़िगर करें, या आयात को किसी विशिष्ट निर्देशिका तक सीमित करने के लिए MEDIA_IMPORT_DIR कॉन्फ़िगर करें।
  • URL आयात SSRF हमलों के विरुद्ध सत्यापित किए जाते हैं। निजी नेटवर्क (10.x, 172.16.x, 192.168.x), लूपबैक (127.x), लिंक-लोकल (169.254.x), और गैर-HTTP(S) स्कीमों के अनुरोध अवरुद्ध हैं। विशिष्ट निजी नेटवर्क होस्ट की अनुमति देने के लिए MEDIA_ALLOWED_HOSTS कॉन्फ़िगर करें।
  • फ़ाइलनाम पथ ट्रैवर्सल को रोकने के लिए सैनिटाइज़ किए जाते हैं (जैसे, ../../ अनुक्रम हटा दिए जाते हैं)।

ये सुरक्षाएँ storeMediaFile, retrieveMediaFile, deleteMediaFile, और updateNoteFields ऑडियो/चित्र फ़ील्ड पर लागू होती हैं।

पथ ट्रैवर्सल भेद्यता Hideaki Takahashi द्वारा रिपोर्ट की गई।

DNS-रीबाइंडिंग सुरक्षा (HTTP ट्रांसपोर्ट)

HTTP मोड में चलते समय, सर्वर प्रत्येक अनुरोध पर Host हेडर को मान्य करता है। डिफ़ॉल्ट रूप से केवल लूपबैक होस्ट (localhost, 127.0.0.1, ::1) स्वीकार किए जाते हैं, पोर्ट की परवाह किए बिना। Host एक ब्राउज़र-निषिद्ध हेडर है, इसलिए एक दुर्भावनापूर्ण वेब पेज इसे जाली नहीं बना सकता — यह DNS-रीबाइंडिंग पथ को बंद कर देता है जहाँ एक रीबाउंड पृष्ठ स्थानीय सर्वर तक स्पूफ़ किए गए Host और बिना Origin के पहुँचता है, और MCP टूल तक पहुँचता है। एक अस्वीकृत Host को 403 के साथ अस्वीकार कर दिया जाता है।

यदि आप 0.0.0.0 से बाइंड करते हैं, रिवर्स प्रॉक्सी के पीछे चलते हैं, या सार्वजनिक टनल डोमेन उजागर करते हैं, तो उन होस्टों की अनुमति देने के लिए ALLOWED_HOSTS (अल्पविराम-पृथक होस्टनाम) सेट करें। ngrok के साथ टनलिंग करते समय सर्वर --host-header=rewrite का उपयोग करता है, इसलिए अपस्ट्रीम अभी भी लूपबैक Host देखता है। विकल्पों की पूरी सूची के लिए HTTP मोड कॉन्फ़िगरेशन देखें।

DNS-रीबाइंडिंग भेद्यता avishaigo-commits और yotampe-pluto द्वारा रिपोर्ट की गई।

गोपनीयता नीति

यह MCP सर्वर आपकी मशीन पर स्थानीय रूप से चलता है और कोई टेलीमेट्री, एनालिटिक्स, या उपयोग डेटा एकत्र नहीं करता है।

पूर्ण नीति: https://ankimcp.ai/privacy/

  • डेटा संग्रह: सर्वर कुछ भी एकत्र नहीं करता है। यह आपके AI सहायक और आपके स्थानीय AnkiConnect प्लगइन के बीच अनुरोधों को प्रॉक्सी करता है।
  • उपयोग / भंडारण: कोई सर्वर-साइड भंडारण नहीं। सभी फ़्लैशकार्ड डेटा आपके अपने डिवाइस पर आपके Anki इंस्टॉलेशन में रहता है।
  • तृतीय-पक्ष साझाकरण: कोई नहीं। सर्वर केवल आपके द्वारा कॉन्फ़िगर किए गए AnkiConnect URL से बात करता है (डिफ़ॉल्ट: localhost)। यदि आप Anki की अंतर्निहित AnkiWeb सिंक सक्षम करते हैं, तो यह आपके Anki इंस्टॉल और AnkiWeb के बीच सीधे होता है — इस सर्वर के दायरे से बाहर।
  • प्रतिधारण: लागू नहीं — कोई डेटा सर्वर-साइड बनाए नहीं रखा जाता है।
  • संपर्क: support@ankimcp.ai

ज्ञात समस्याएँ

ज्ञात समस्याओं और सीमाओं की व्यापक सूची के लिए, कृपया हमारे दस्तावेज़ देखें:

ज्ञात समस्याएँ दस्तावेज़

महत्वपूर्ण सीमाएँ

ब्राउज़र में देखे जाने पर नोट अपडेट विफल हो जाते हैं

⚠️ महत्वपूर्ण: updateNoteFields का उपयोग करके नोट्स अपडेट करते समय, यदि नोट वर्तमान में Anki की ब्राउज़र विंडो में देखा जा रहा है तो अपडेट चुपचाप विफल हो जाएगा। यह एक अपस्ट्रीम AnkiConnect सीमा है।

समाधान: अपडेट करने से पहले हमेशा ब्राउज़र बंद करें या किसी अन्य नोट पर नेविगेट करें।

अधिक विवरण और अन्य ज्ञात समस्याओं के लिए, पूर्ण दस्तावेज़ देखें।

समस्या निवारण

ERR_REQUIRE_ESM त्रुटि

यदि आपको इस तरह की त्रुटि दिखाई देती है:

Error [ERR_REQUIRE_ESM]: require() of ES Module not supported

इसका मतलब है कि आपका Node.js संस्करण समर्थित नहीं है। सर्वर को Node.js 22.12.0+ की आवश्यकता है।

नोट: न्यूनतम समर्थित रनटाइम Node.js 22.12.0 है। Node.js 20 (Iron) 2026-04-30 को जीवन-अंत तक पहुँच गया और अब समर्थित नहीं है।

अपना संस्करण जाँचें:

node --version

समाधान: Node.js को संस्करण 22.12.0+ में अपडेट करें। आप इसे nodejs.org से डाउनलोड कर सकते हैं या nvm जैसे संस्करण प्रबंधक का उपयोग कर सकते हैं।

विकास

ट्रांसपोर्ट मोड

यह सर्वर अलग-अलग प्रवेश बिंदुओं के माध्यम से तीन MCP ट्रांसपोर्ट मोड का समर्थन करता है:

STDIO मोड (डिफ़ॉल्ट)

  • क्लॉड डेस्कटॉप जैसे स्थानीय MCP क्लाइंट के लिए
  • संचार के लिए मानक इनपुट/आउटपुट का उपयोग करता है
  • प्रवेश बिंदु: dist/main-stdio.js
  • चलाएँ: npm run start:prod:stdio या node dist/main-stdio.js
  • MCPB बंडल: STDIO मोड का उपयोग करता है

HTTP मोड (स्ट्रीमेबल HTTP)

  • दूरस्थ MCP क्लाइंट और वेब-आधारित एकीकरण के लिए
  • MCP स्ट्रीमेबल HTTP प्रोटोकॉल का उपयोग करता है
  • प्रवेश बिंदु: dist/main-http.js
  • चलाएँ: npm run start:prod:http या node dist/main-http.js
  • डिफ़ॉल्ट पोर्ट: 3000 (PORT env var के माध्यम से कॉन्फ़िगर करने योग्य)
  • डिफ़ॉल्ट होस्ट: 127.0.0.1 (HOST env var के माध्यम से कॉन्फ़िगर करने योग्य)
  • MCP एंडपॉइंट: http://127.0.0.1:3000/ (रूट पथ)

टनल मोड (प्रबंधित WebSocket टनल)

  • अंतर्निहित प्रमाणीकरण के साथ प्रबंधित AnkiMCP टनल सेवा के माध्यम से वेब-आधारित AI सहायकों के लिए
  • MCP सर्वर इन-मेमोरी ट्रांसपोर्ट के पीछे इन-प्रोसेस चलता है; TunnelTransport MCP सर्वर का मालिक है और TunnelClient इसे WebSocket पर टनल सेवा से जोड़ता है
  • प्रोटोकॉल: केवल 2025 MCP संशोधन प्रदान करता है (STDIO और HTTP भी 2026-07-28 प्रदान करते हैं)
  • प्रवेश बिंदु: dist/main-tunnel.js
  • चलाएँ: node dist/main-tunnel.js --tunnel (या ankimcp --tunnel)
  • प्रमाणीकरण: ankimcp --login / ankimcp --logout; क्रेडेंशियल ~/.ankimcp/credentials.json पर संग्रहीत (0600)
  • देव: npm run start:dev:tunnel (वॉच मोड, --tunnel --debug चलाता है)

निर्माण

npm run build  # Builds once, creates dist/ with all three entry points

main-stdio.js, main-http.js, और main-tunnel.js सभी एक ही dist/ निर्देशिका में निर्मित हैं। अपनी आवश्यकताओं के आधार पर चुनें कि कौन सा चलाना है।

HTTP मोड कॉन्फ़िगरेशन

पर्यावरण चर:

  • PORT - HTTP सर्वर पोर्ट (डिफ़ॉल्ट: 3000)
  • HOST - बाइंड पता (डिफ़ॉल्ट: 127.0.0.1 केवल-लोकलहोस्ट के लिए)
  • ALLOWED_HOSTS - अंतर्निहित लूपबैक सेट (localhost, 127.0.0.1, ::1) से परे स्वीकार करने के लिए अल्पविराम-पृथक अतिरिक्त Host हेडर मान। केवल-होस्टनाम और पोर्ट-अज्ञेयवादी। डिफ़ॉल्ट: केवल लूपबैक।
  • ALLOWED_ORIGINS - ब्राउज़र Origin/Referer पैटर्न की अल्पविराम-पृथक अनुमति सूची; वाइल्डकार्ड समर्थित (जैसे https://*.ngrok.io)। डिफ़ॉल्ट: http://localhost:*,http://127.0.0.1:*,https://localhost:*,https://127.0.0.1:*।
  • LOG_LEVEL - लॉगिंग स्तर (डिफ़ॉल्ट: info)

सुरक्षा:

  • होस्ट हेडर सत्यापन (DNS-रीबाइंडिंग सुरक्षा) — प्रत्येक HTTP अनुरोध में एक Host हेडर होना चाहिए जो अनुमति सूची से मेल खाता हो। डिफ़ॉल्ट रूप से केवल लूपबैक होस्ट (localhost, 127.0.0.1, ::1) स्वीकार किए जाते हैं, पोर्ट की परवाह किए बिना। Host एक ब्राउज़र-निषिद्ध हेडर है, इसलिए एक दुर्भावनापूर्ण वेब पेज इसे जाली नहीं बना सकता — यह DNS-रीबाइंडिंग पथ को बंद कर देता है जहाँ एक रीबाउंड पृष्ठ स्पूफ़ किए गए Host और बिना Origin के सर्वर तक पहुँचता है। एक अस्वीकृत Host को 403 के साथ अस्वीकार कर दिया जाता है।
  • ओरिजिन हेडर सत्यापन — मौजूद-लेकिन-अस्वीकृत Origin/Referer वाले ब्राउज़र अनुरोध अस्वीकार कर दिए जाते हैं। बिना Origin वाले अनुरोध (curl, Postman, MCP-over-HTTP क्लाइंट) की अनुमति है; रीबाइंडिंग के विरुद्ध बचाव होस्ट सत्यापन है।
  • डिफ़ॉल्ट रूप से localhost (127.0.0.1) से बाइंड होता है।
  • वर्तमान संस्करण में कोई प्रमाणीकरण नहीं (OAuth समर्थन की योजना है)।

HTTP मोड को localhost से परे उजागर करना — यदि आप LAN/सार्वजनिक पते से बाइंड करते हैं या सर्वर को रिवर्स प्रॉक्सी या सार्वजनिक डोमेन के पीछे रखते हैं, तो आपको क्लाइंट द्वारा उपयोग किए जाने वाले होस्टनामों के लिए ALLOWED_HOSTS सेट करना आवश्यक है, अन्यथा प्रत्येक गैर-लूपबैक अनुरोध 403 के साथ अस्वीकार कर दिया जाता है:

# Bind to all interfaces and accept the machine's LAN name + a public domain
ALLOWED_HOSTS=my-nas.local,anki.example.com PORT=8080 HOST=0.0.0.0 node dist/main-http.js

जब आप ALLOWED_HOSTS के बिना 0.0.0.0/:: से बाइंड करते हैं, तो सर्वर एक स्टार्टअप चेतावनी लॉग करता है कि केवल लूपबैक Host हेडर स्वीकार किए जाएंगे।

Docker / रिवर्स प्रॉक्सी / सार्वजनिक डोमेन: वही नियम लागू होता है। Docker में, अनुरोध आमतौर पर कंटेनर के प्रकाशित होस्टनाम या प्रॉक्सी के Host के साथ आते हैं, इसलिए ALLOWED_HOSTS तदनुसार सेट करें। एक रिवर्स प्रॉक्सी (nginx, Caddy, Traefik) को या तो मूल Host को आगे भेजना चाहिए और उस होस्टनाम को ALLOWED_HOSTS में सूचीबद्ध करना चाहिए, या अपस्ट्रीम Host को localhost में फिर से लिखना चाहिए। अंतर्निहित --ngrok एकीकरण इसे स्वचालित रूप से संभालता है (नीचे देखें)।

उदाहरण: चलाने के मोड

# Development - STDIO mode (watch mode with auto-rebuild)
npm run start:dev:stdio

# Development - HTTP mode (watch mode with auto-rebuild)
npm run start:dev:http

# Production - STDIO mode
npm run start:prod:stdio
# or
node dist/main-stdio.js

# Production - HTTP mode
npm run start:prod:http
# or
PORT=8080 HOST=0.0.0.0 node dist/main-http.js

MCPB बंडल बनाना

वितरण योग्य MCPB बंडल बनाने के लिए:

npm run mcpb:bundle

यह कमांड:

  1. package.json से manifest.json में संस्करण सिंक करेगा
  2. पुरानी .mcpb फ़ाइलें हटाएगा
  3. TypeScript प्रोजेक्ट बनाएगा
  4. dist/ और node_modules/ को एक .mcpb फ़ाइल में पैकेज करेगा
  5. devDependencies हटाने के लिए mcpb clean चलाएगा (बंडल को ~47MB से ~10MB तक अनुकूलित करता है)

आउटपुट फ़ाइल का नाम anki-mcp-server-X.X.X.mcpb होगा और इसे एक-क्लिक इंस्टॉलेशन के लिए वितरित किया जा सकता है।

क्या बंडल किया जाता है

MCPB बंडल में शामिल हैं:

  • संकलित JavaScript (dist/ निर्देशिका - सभी तीन प्रवेश बिंदु शामिल हैं)
  • केवल उत्पादन निर्भरताएँ (node_modules/ - devDependencies mcpb clean द्वारा हटा दी गईं)
  • पैकेज मेटाडेटा (package.json)
  • मेनिफेस्ट कॉन्फ़िगरेशन (manifest.json - main-stdio.js का उपयोग करने के लिए कॉन्फ़िगर किया गया)
  • आइकन (icon.png)

स्रोत फ़ाइलें, परीक्षण, और विकास कॉन्फ़िग .mcpbignore के माध्यम से स्वचालित रूप से बाहर रखे गए हैं।

क्लॉड डेस्कटॉप में लॉगिंग

क्लॉड डेस्कटॉप में MCPB एक्सटेंशन के रूप में चलते समय, लॉग यहाँ लिखे जाते हैं:

लॉग स्थान: ~/Library/Logs/Claude/ (macOS)

लॉग कई फ़ाइलों में विभाजित हैं:

  • main.log - सामान्य क्लॉड डेस्कटॉप एप्लिकेशन लॉग
  • mcp-server-Anki MCP Server.log - इस एक्सटेंशन के लिए MCP प्रोटोकॉल संदेश
  • mcp.log - सभी सर्वरों से संयुक्त MCP लॉग

नोट: pino लॉगर आउटपुट (सर्वर कोड से INFO, ERROR, WARN संदेश) stderr पर जाता है और MCP-विशिष्ट लॉग फ़ाइलों में दिखाई देता है। क्लॉड डेस्कटॉप निर्धारित करता है कि कौन सी लॉग फ़ाइल कौन से संदेश प्राप्त करती है, लेकिन सामान्य रूप से:

  • एप्लिकेशन स्टार्टअप और MCP प्रोटोकॉल संचार → MCP-विशिष्ट लॉग
  • सर्वर आंतरिक लॉगिंग (pino) → MCP-विशिष्ट लॉग और कभी-कभी main.log दोनों

लॉग को वास्तविक समय में देखने के लिए:

tail -f ~/Library/Logs/Claude/mcp-server-Anki\ MCP\ Server.log

MCP सर्वर की डिबगिंग

आप MCP इंस्पेक्टर का उपयोग करके और अपने IDE (WebStorm, VS Code, आदि) से डिबगर संलग्न करके MCP सर्वर को डीबग कर सकते हैं।

HTTP मोड के लिए नोट: MCP इंस्पेक्टर के साथ HTTP मोड (स्ट्रीमेबल HTTP) का परीक्षण करते समय, CORS त्रुटियों से बचने के लिए "Connection Type: Via Proxy" का उपयोग करें।

चरण 1: MCP इंस्पेक्टर में डीबग सर्वर कॉन्फ़िगर करें

mcp-inspector-config.json में पहले से ही एक डीबग सर्वर कॉन्फ़िगरेशन शामिल है:

{
  "mcpServers": {
    "stdio-server-debug": {
      "type": "stdio",
      "command": "node",
      "args": ["--inspect-brk=9229", "dist/main-stdio.js"],
      "env": {
        "MCP_SERVER_NAME": "anki-mcp-stdio-debug",
        "MCP_SERVER_VERSION": "1.0.0",
        "LOG_LEVEL": "debug"
      },
      "note": "Anki MCP server with debugging enabled on port 9229"
    }
  }
}

चरण 2: डीबग सर्वर प्रारंभ करें

डीबग सर्वर के साथ MCP Inspector चलाएँ:

npm run inspector:debug

यह पोर्ट 9229 पर Node.js डीबगिंग सक्षम के साथ सर्वर प्रारंभ करेगा और पहली पंक्ति पर निष्पादन रोक देगा।

चरण 3: अपने IDE से डीबगर संलग्न करें

WebStorm
  1. Run → Edit Configurations पर जाएँ
  2. एक नया Attach to Node.js/Chrome कॉन्फ़िगरेशन जोड़ें
  3. पोर्ट को 9229 पर सेट करें
  4. संलग्न करने के लिए Debug पर क्लिक करें
VS Code
  1. डीबग पैनल खोलें (Ctrl+Shift+D / Cmd+Shift+D)
  2. Debug MCP Server (Attach) कॉन्फ़िगरेशन चुनें
  3. संलग्न करने के लिए F5 दबाएँ

चरण 4: ब्रेकपॉइंट सेट करें और डीबग करें

एक बार संलग्न होने के बाद, आप यह कर सकते हैं:

  • अपनी TypeScript स्रोत फ़ाइलों में ब्रेकपॉइंट सेट करें
  • कोड निष्पादन के माध्यम से कदम दर कदम आगे बढ़ें
  • चर और कॉल स्टैक का निरीक्षण करें
  • अभिव्यक्तियों का मूल्यांकन करने के लिए डीबग कंसोल का उपयोग करें

डीबगर स्रोत मानचित्रों के साथ काम करेगा, जिससे आप संकलित JavaScript के बजाय मूल TypeScript कोड को डीबग कर सकते हैं।

Claude Desktop के साथ डीबगिंग

आप Claude Desktop के अंदर चलते समय MCP सर्वर को भी डीबग कर सकते हैं, Node.js डीबगर को सक्षम करके और अपने IDE को संलग्न करके।

चरण 1: डीबगिंग के लिए Claude Desktop कॉन्फ़िगर करें

डीबगिंग सक्षम करने के लिए अपने Claude Desktop कॉन्फ़िग को अपडेट करें:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "anki-mcp": {
      "command": "node",
      "args": [
        "--inspect=9229",
        "<path_to_project>/anki-mcp-server/dist/main-stdio.js"
      ],
      "env": {
        "ANKI_CONNECT_URL": "http://localhost:8765"
      }
    }
  }
}

मुख्य परिवर्तन: dist/main-stdio.js के पथ से पहले --inspect=9229 जोड़ें

डीबग विकल्प:

  • --inspect=9229 - डीबगर तुरंत प्रारंभ करें, ब्लॉक नहीं करता (अनुशंसित)
  • --inspect-brk=9229 - डीबगर संलग्न होने तक निष्पादन रोकें (स्टार्टअप समस्याओं को डीबग करने के लिए)

चरण 2: Claude Desktop पुनः प्रारंभ करें

कॉन्फ़िग सहेजने के बाद, Claude Desktop को पुनः प्रारंभ करें। MCP सर्वर अब पोर्ट 9229 पर डीबगिंग सक्षम के साथ चलेगा।

चरण 3: अपने IDE से डीबगर संलग्न करें

WebStorm
  1. Run → Edit Configurations पर जाएँ
  2. + बटन पर क्लिक करें और Attach to Node.js/Chrome चुनें
  3. कॉन्फ़िगर करें:
    • नाम: Attach to Anki MCP (Claude Desktop)
    • होस्ट: localhost
    • पोर्ट: 9229
    • संलग्न करें: Node.js < 8 या Chrome or Node.js > 6.3 (WebStorm संस्करण के आधार पर)
  4. OK पर क्लिक करें
  5. संलग्न करने के लिए Debug (Shift+F9) पर क्लिक करें
VS Code
  1. .vscode/launch.json में जोड़ें:
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "attach",
      "name": "Attach to Anki MCP (Claude Desktop)",
      "port": 9229,
      "skipFiles": ["<node_internals>/**"],
      "sourceMaps": true,
      "outFiles": ["${workspaceFolder}/dist/**/*.js"]
    }
  ]
}
  1. डीबग पैनल खोलें (Ctrl+Shift+D / Cmd+Shift+D)
  2. Attach to Anki MCP (Claude Desktop) चुनें
  3. संलग्न करने के लिए F5 दबाएँ

चरण 4: वास्तविक समय में डीबग करें

एक बार संलग्न होने के बाद, आप यह कर सकते हैं:

  • अपनी TypeScript स्रोत फ़ाइलों में ब्रेकपॉइंट सेट करें (जैसे, src/mcp/primitives/essential/tools/create-model.tool.ts)
  • Claude Desktop का सामान्य रूप से उपयोग करें - टूल आह्वान होने पर ब्रेकपॉइंट हिट होंगे
  • कोड निष्पादन के माध्यम से कदम दर कदम आगे बढ़ें
  • चर और कॉल स्टैक का निरीक्षण करें
  • डीबग कंसोल का उपयोग करें

उदाहरण: create-model.tool.ts में पंक्ति 119 पर ब्रेकपॉइंट सेट करें, फिर Claude से एक नया मॉडल बनाने के लिए कहें। डीबगर आपके ब्रेकपॉइंट पर रुक जाएगा!

नोट: जब तक Claude Desktop चल रहा है, डीबगर संलग्न रहता है। आप Claude Desktop को पुनः प्रारंभ किए बिना किसी भी समय अलग/पुनः संलग्न कर सकते हैं।

बिल्ड कमांड

npm run build              # Build the project (compile TypeScript to JavaScript)
npm run start:dev:stdio    # STDIO mode with watch (auto-rebuild)
npm run start:dev:http     # HTTP mode with watch (auto-rebuild)
npm run type-check         # Run TypeScript type checking
npm run lint               # Run ESLint
npm run mcpb:bundle        # Sync version, clean, build, and create MCPB bundle

NPM पैकेज परीक्षण (स्थानीय)

प्रकाशित करने से पहले npm पैकेज का स्थानीय रूप से परीक्षण करें:

# 1. Create local package
npm run pack:local         # Builds and creates @ankimcp/anki-mcp-server-*.tgz

# 2. Install globally from local package
npm run install:local      # Installs from ./@ankimcp/anki-mcp-server-*.tgz

# 3. Test the command
ankimcp                    # Runs HTTP server on port 3000

# 4. Uninstall when done testing
npm run uninstall:local    # Removes global installation

यह कैसे काम करता है:

  • npm pack एक .tgz फ़ाइल बनाता है जो npm publish के बनाने के समान होती है
  • .tgz से इंस्टॉल करना उसका अनुकरण करता है जो उपयोगकर्ताओं को npm install -g ankimcp से मिलता है
  • यह आपको npm पर प्रकाशित करने से पहले पूर्ण उपयोगकर्ता अनुभव का परीक्षण करने देता है

परीक्षण कमांड

npm test              # Run all tests
npm run test:unit     # Run unit tests only
npm run test:tools    # Run tool-specific tests
npm run test:workflows # Run workflow integration tests
npm run test:e2e      # Run end-to-end tests
npm run test:cov      # Run tests with coverage report
npm run test:watch    # Run tests in watch mode
npm run test:debug    # Run tests with debugger
npm run test:ci       # Run tests for CI (silent, with coverage)

परीक्षण कवरेज

परियोजना निम्न के लिए 70% न्यूनतम कवरेज सीमा बनाए रखती है:

  • शाखाएँ
  • फ़ंक्शन
  • पंक्तियाँ
  • कथन

कवरेज रिपोर्ट coverage/ निर्देशिका में उत्पन्न होती हैं।

संस्करण

यह परियोजना सिमेंटिक वर्जनिंग का पालन करती है, जिसमें पूर्व-1.0 विकास दृष्टिकोण है:

  • 0.x.x - बीटा/विकास संस्करण (वर्तमान चरण)

    • 0.1.x - बग फिक्स और पैच
    • 0.2.0+ - नई सुविधाएँ या मामूली सुधार
    • ब्रेकिंग परिवर्तन 0.x संस्करणों में स्वीकार्य हैं
  • 1.0.0 - पहला स्थिर रिलीज़

    • तब रिलीज़ होगा जब API स्थिर और परीक्षण किया हुआ हो
    • ब्रेकिंग परिवर्तनों के लिए प्रमुख संस्करण वृद्धि की आवश्यकता होगी (2.0.0, आदि)

वर्तमान स्थिति: 0.27.0 - सक्रिय बीटा विकास। हाल की सुविधाओं में संग्रह-व्यापी समीक्षा विश्लेषण (review_stats अब सभी डेक में एकत्रित होता है जब deck छोड़ा जाता है), मॉडल फ़ील्ड प्रबंधन (addModelField, removeModelField, renameModelField, repositionModelField), बैच नोट निर्माण (addNotes), एकीकृत ngrok टनलिंग (--ngrok फ़्लैग), मीडिया फ़ाइल प्रबंधन, मॉडल/टेम्पलेट प्रबंधन, और व्यापक डेक आँकड़े शामिल हैं। API फीडबैक और परीक्षण के आधार पर बदल सकते हैं।

MCPB स्पेक विकास

यह परियोजना Anthropic के MCPB बंडल विनिर्देश को लक्षित करती है, जो अभी भी विकसित हो रहा है। हम स्पेक को https://github.com/modelcontextprotocol/mcpb पर ट्रैक करते हैं और अनुपालन बनाए रखने के लिए ब्रेकिंग परिवर्तन पेश कर सकते हैं। ब्रेकिंग परिवर्तन 0.x.x संस्करण योजना के तहत अनुमत हैं।

समान परियोजनाएँ

यदि आप Anki MCP एकीकरण की खोज कर रहे हैं, तो यहाँ इस स्थान में अन्य परियोजनाएँ हैं:

scorzeth/anki-mcp-server

  • स्थिति: परित्यक्त प्रतीत होता है (कोई हालिया अपडेट नहीं)
  • Anki MCP एकीकरण का प्रारंभिक कार्यान्वयन

nailuoGG/anki-mcp-server

  • दृष्टिकोण: हल्का, एकल-फ़ाइल कार्यान्वयन
  • वास्तुकला: प्रक्रियात्मक कोड संरचना जिसमें सभी उपकरण एक फ़ाइल में हैं
  • इसके लिए अच्छा: सरल उपयोग के मामले, न्यूनतम निर्भरताएँ

यह परियोजना क्यों अलग है:

  • एंटरप्राइज़-ग्रेड वास्तुकला: निर्भरता इंजेक्शन के साथ NestJS पर निर्मित
  • मॉड्यूलर डिज़ाइन: प्रत्येक उपकरण चिंताओं के स्पष्ट पृथक्करण के साथ एक अलग वर्ग है
  • रखरखाव: मौजूदा कोड को छुए बिना नई सुविधाओं के साथ विस्तार करना आसान
  • परीक्षण: 70% कवरेज आवश्यकता के साथ व्यापक परीक्षण सूट
  • प्रकार सुरक्षा: Zod सत्यापन के साथ सख्त TypeScript
  • त्रुटि हैंडलिंग: सहायक उपयोगकर्ता फीडबैक के साथ मजबूत त्रुटि हैंडलिंग
  • उत्पादन-तैयार: उचित लॉगिंग, प्रगति रिपोर्टिंग, और MCPB बंडल समर्थन
  • स्केलेबिलिटी: बुनियादी उपकरणों से जटिल वर्कफ़्लो तक आसानी से बढ़ सकता है

उपयोग का मामला: यदि आपको उन्नत Anki एकीकरण बनाने के लिए एक ठोस आधार की आवश्यकता है या कार्यक्षमता को महत्वपूर्ण रूप से विस्तारित करने की योजना है, तो इस परियोजना का वास्तुकला दृष्टिकोण समय के साथ बनाए रखना और स्केल करना आसान बनाता है।

उपयोगी लिंक

लाइसेंस और श्रेय

यह परियोजना MIT लाइसेंस के तहत लाइसेंस प्राप्त है — पूर्ण पाठ के लिए LICENSE देखें।

कॉपीराइट © 2026 Anatoly Tarnavsky।

तृतीय-पक्ष श्रेय

  • Anki® Ankitects Pty Ltd का पंजीकृत ट्रेडमार्क है। यह परियोजना एक अनौपचारिक तृतीय-पक्ष उपकरण है और Ankitects Pty Ltd से संबद्ध, समर्थित, या प्रायोजित नहीं है। Anki लोगो का उपयोग https://apps.ankiweb.net के लिंक के साथ Anki को संदर्भित करने के लिए वैकल्पिक लाइसेंस के तहत किया जाता है। आधिकारिक Anki एप्लिकेशन के लिए, https://apps.ankiweb.net पर जाएँ।

  • मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) Anthropic द्वारा एक खुला मानक है। MCP लोगो आधिकारिक MCP दस्तावेज़ीकरण रिपॉजिटरी से है और MIT लाइसेंस के तहत उपयोग किया जाता है। MCP के बारे में अधिक जानकारी के लिए, https://modelcontextprotocol.io पर जाएँ।

  • यह एक स्वतंत्र परियोजना है जो Anki और MCP प्रौद्योगिकियों को जोड़ती है। सभी ट्रेडमार्क, सेवा चिह्न, व्यापार नाम, उत्पाद नाम, और लोगो उनके संबंधित स्वामियों की संपत्ति हैं।