Anki MCP
आधिकारिकएक MCP सर्वर जो AI सहायकों को Anki, स्पेस्ड रिपीटीशन फ्लैशकार्ड एप्लिकेशन, के साथ इंटरैक्ट करने में सक्षम बनाता है।
Anki MCP के साथ आप क्या कर सकते हैं?
- समीक्षा के लिए देय कार्ड इंटरैक्टिव रूप से देखें — अपने सहायक से
get_due_cardsके साथ देय कार्ड लाने,present_cardके माध्यम से उन्हें प्रस्तुत करने औरrate_cardके साथ अपनी रेटिंग दर्ज करने के लिए कहें। - कस्टम नोट प्रकार बनाएं और स्टाइल करें —
createModel,updateModelStyling, औरupdateModelTemplatesका उपयोग करके विशिष्ट फ़ील्ड, कार्ड टेम्पलेट और CSS के साथ एक नया नोट प्रकार बनाएं। - सूची से बैच-एड फ्लैशकार्ड — नोटों का एक सेट प्रदान करें और सहायक से उन्हें एक साथ
addNotesके साथ बनाने के लिए कहें, जो एक ही डेक और मॉडल साझा करते हों। - मौजूदा नोट खोजें और अपडेट करें —
findNotesके साथ डेक, टैग या देय स्थिति के आधार पर नोट खोजें, फिरupdateNoteFields,addTags, याremoveTagsका उपयोग करके उनके फ़ील्ड या टैग संशोधित करें। - अपने संग्रह में मीडिया प्रबंधित करें —
storeMediaFileके साथ स्थानीय फ़ाइल पथ से चित्र या ऑडियो अपलोड करें,getMediaFilesNamesके माध्यम से संग्रहीत फ़ाइलों की सूची देखें, या अप्रयुक्त मीडिया हटाएं। - मैन्युअल संपादन के लिए Anki का GUI खोलें — कार्ड ब्राउज़र खोलने के लिए
guiBrowse, कार्ड जोड़ें संवाद को पूर्व-भरने के लिएguiAddCards, या किसी विशिष्ट नोट को संपादित करने के लिएguiEditNoteका उपयोग करें।
दस्तावेज़
Anki MCP सर्वर
मॉडल संदर्भ प्रोटोकॉल के माध्यम से Anki को AI सहायकों के साथ सहजता से एकीकृत करें
बीटा - यह परियोजना सक्रिय विकास में है। API और सुविधाएँ बदल सकती हैं।
एक मॉडल संदर्भ प्रोटोकॉल (MCP) सर्वर जो AI सहायकों को Anki, स्पेस्ड रिपीटिशन फ्लैशकार्ड एप्लिकेशन के साथ इंटरैक्ट करने में सक्षम बनाता है।
प्राकृतिक भाषा इंटरैक्शन के साथ अपने Anki अनुभव को बदलें - जैसे एक निजी ट्यूटर होना। AI सहायक केवल प्रश्न और उत्तर प्रस्तुत नहीं करता; यह अवधारणाओं को समझा सकता है, सीखने की प्रक्रिया को अधिक आकर्षक और मानवीय बना सकता है, संदर्भ प्रदान कर सकता है, और आपकी सीखने की शैली के अनुकूल हो सकता है। यह तुरंत नोट्स बना और संपादित कर सकता है, आपके अध्ययन सत्रों को गतिशील बातचीत में बदल सकता है। जल्द ही और सुविधाएँ आ रही हैं!
उदाहरण और ट्यूटोरियल
Claude Desktop के साथ इस MCP सर्वर का उपयोग करने पर व्यापक गाइड, वास्तविक दुनिया के उदाहरण और चरण-दर-चरण ट्यूटोरियल के लिए, यहाँ जाएँ:
ankimcp.ai - व्यावहारिक उदाहरणों और उपयोग के मामलों के साथ पूर्ण दस्तावेज़ीकरण
पूरक दस्तावेज़ीकरण के लिए docs/ देखें, जिसमें समीक्षक सेटअप गाइड और नमूना Anki डेक शामिल है।
उदाहरण उपयोग के मामले
तीन प्रतिनिधि संकेत जो इस सर्वर द्वारा सक्षम टूल प्रवाह दिखाते हैं:
-
"मेरे स्पैनिश डेक की समीक्षा करने में मेरी मदद करें।" — सहायक AnkiWeb के साथ सिंक करता है (
sync), देय कार्ड लाता है (get_due_cardsडेक फ़िल्टर के साथ), प्रत्येक कार्ड प्रस्तुत करता है (present_card), और आपकी रेटिंग रिकॉर्ड करता है (rate_card)। आपके अनुरूप स्पष्टीकरण के साथ प्राकृतिक अध्ययन वार्तालाप। -
"RTL स्टाइलिंग के साथ 10 अरबी शब्दावली कार्ड बनाएँ।" — सहायक नोट प्रकारों को सूचीबद्ध करता है (
modelNames), यदि आवश्यक हो तो एक कस्टम RTL मॉडल बनाता है (createModel+updateModelStylingदाएँ-से-बाएँ CSS के लिए), फिर बैच में कार्ड बनाता है (addNotes)। -
"मेरे डाउनलोड फ़ोल्डर से इस छवि को चयनित नोट के सामने आयात करें।" — सहायक स्थानीय फ़ाइल अपलोड करता है (
storeMediaFileफ़ाइल पथ के साथ), ब्राउज़र से वर्तमान में चयनित नोट पढ़ता है (guiSelectedNotes+notesInfo), और एक<img>टैग के साथ सामने के फ़ील्ड को अपडेट करता है (updateNoteFields)।
उपलब्ध उपकरण
सर्वर 42 MCP उपकरण प्रदान करता है — रोज़मर्रा के Anki संचालन के लिए 31 आवश्यक उपकरण और 11 GUI उपकरण जो नोट संपादन/निर्माण वर्कफ़्लो के लिए Anki डेस्कटॉप इंटरफ़ेस चलाते हैं।
आवश्यक उपकरण
समीक्षा और अध्ययन
sync- नवीनतम डेटा खींचने और परिवर्तनों को पुश करने के लिए AnkiWeb के साथ सिंक करेंget_due_cards- वे कार्ड प्राप्त करें जो समीक्षा के लिए देय हैं, वैकल्पिक रूप से डेक द्वारा फ़िल्टर किए गएget_cards- स्थिति (देय, नया, सीखना, निलंबित, दफन) और डेक द्वारा लचीले फ़िल्टरिंग के साथ कार्ड प्राप्त करेंpresent_card- समीक्षा के लिए एक कार्ड उसके प्रश्न/सामने की ओर के साथ दिखाएँrate_card- कार्ड के प्रदर्शन को रेट करें (फिर से, कठिन, अच्छा, आसान) और अगली समीक्षा शेड्यूल करें
नोट: कार्ड
front/backसामग्री प्रत्येक कार्ड के लिए उसके अपने टेम्पलेट से प्रस्तुत की जाती है (जैसा कि Anki इसे दिखाता है), इसलिए उल्टे और क्लोज़ कार्ड सही दिशा प्रदर्शित करते हैं। आपके कार्ड टेम्पलेट्स द्वारा जोड़ा गया स्थिर पाठ भी आउटपुट में दिखाई देता है।
डेक प्रबंधन
listDecks- सभी डेक सूचीबद्ध करें, वैकल्पिक रूप से प्रति-डेक कार्ड-गणना आँकड़ों के साथdeckStats- एकल डेक के लिए व्यापक आँकड़े प्राप्त करें (गणना, सहजता/अंतराल वितरण)createDeck- एक नया खाली डेक बनाएँ (Parent::Childका समर्थन करता है, अधिकतम 2 स्तर)changeDeck- कार्डों को एक अलग डेक में ले जाएँ (यदि मौजूद नहीं है तो बनाया गया)
नोट प्रबंधन
addNote- निर्दिष्ट फ़ील्ड और टैग के साथ एकल नोट बनाएँaddNotes- एक डेक और मॉडल साझा करने वाले 100 तक नोट बैच-बनाएँ (आंशिक सफलता समर्थित)findNotes- Anki क्वेरी सिंटैक्स का उपयोग करके नोट्स खोजें (deck:,tag:,is:due, आदि)notesInfo- नोट्स के बारे में विस्तृत जानकारी प्राप्त करें (फ़ील्ड, टैग, CSS स्टाइलिंग)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- किसी मौजूदा नोट प्रकार में एक फ़ील्ड का नाम बदलें (पुराने नाम का संदर्भ देने वाले कार्ड टेम्पलेट को अलग से अपडेट किया जाना चाहिए)repositionModelField- किसी मौजूदा नोट प्रकार के भीतर फ़ील्ड की स्थिति बदलें
आँकड़े
collection_stats- प्रति-डेक विश्लेषण के साथ सभी डेक में एकत्रित आँकड़ेreview_stats- समीक्षा इतिहास विश्लेषण (अस्थायी पैटर्न, अवधारण मीट्रिक्स, अध्ययन स्ट्रीक्स)
GUI उपकरण
उपकरण जो Anki डेस्कटॉप इंटरफ़ेस चलाते हैं। नोट संपादन/निर्माण और डेक-प्रबंधन वर्कफ़्लो के लिए अभिप्रेत, समीक्षा सत्रों के लिए नहीं।
guiBrowse- कार्ड ब्राउज़र खोलें और कार्ड खोजेंguiSelectCard- कार्ड ब्राउज़र में एक विशिष्ट कार्ड चुनेंguiSelectedNotes- कार्ड ब्राउज़र में वर्तमान में चयनित नोट्स की ID प्राप्त करें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 सर्वर को स्थापित करने का सबसे आसान तरीका:
- रिलीज़ पृष्ठ से नवीनतम
.mcpbबंडल डाउनलोड करें - Claude Desktop में, एक्सटेंशन स्थापित करें:
- विधि 1: सेटिंग्स → एक्सटेंशन पर जाएँ, फिर
.mcpbफ़ाइल को खींचें और छोड़ें - विधि 2: सेटिंग्स → डेवलपर → एक्सटेंशन → एक्सटेंशन स्थापित करें पर जाएँ, फिर
.mcpbफ़ाइल चुनें
- विधि 1: सेटिंग्स → एक्सटेंशन पर जाएँ, फिर
- यदि आवश्यक हो तो AnkiConnect URL कॉन्फ़िगर करें (डिफ़ॉल्ट
http://localhost:8765है) - Claude Desktop को पुनरारंभ करें
बस इतना ही! बंडल में सर्वर को स्थानीय रूप से चलाने के लिए आवश्यक सब कुछ शामिल है।
Anthropic MCP निर्देशिका समीक्षकों के लिए: एक पूर्व-आबादी नमूना डेक के साथ शून्य-से-एकीकरण वॉकथ्रू
docs/reviewer-setup.mdमें रहता है।
स्रोत से स्थापित करें (विकास के लिए)
विकास या उन्नत उपयोग के लिए:
npm install
npm run build
AI क्लाइंट कनेक्ट करना
दो तरीके हैं जिनसे एक AI सहायक इस सर्वर तक पहुँच सकता है, यह इस पर निर्भर करता है कि सहायक कहाँ चलता है:
- स्थानीय — सर्वर AI क्लाइंट (Claude Desktop, Cursor, Cline, Zed, या एक स्थानीय ब्राउज़र सत्र) के समान मशीन पर चलता है। डेस्कटॉप MCP क्लाइंट के लिए STDIO का उपयोग करें, स्थानीय वेब-आधारित उपकरणों के लिए HTTP।
- दूरस्थ — एक होस्टेड/दूरस्थ AI (जैसे क्लाउड में ChatGPT या Claude.ai) को आपकी स्थानीय मशीन पर चल रहे Anki तक पहुँचने की आवश्यकता है। प्रबंधित टनल (✅ अनुशंसित — प्रमाणीकृत) या, एक हल्के गैर-प्रमाणीकृत विकल्प के रूप में, ngrok का उपयोग करें।
स्थानीय
सर्वर आपके AI क्लाइंट के समान कंप्यूटर पर चलता है और localhost पर AnkiConnect से बात करता है।
STDIO (प्राथमिक स्थानीय एकीकरण)
STDIO स्थानीय डेस्कटॉप MCP क्लाइंट के लिए मानक परिवहन है — Claude Desktop, Cursor IDE, Cline, Zed Editor, और अन्य। क्लाइंट सर्वर को एक उप-प्रक्रिया के रूप में लॉन्च करता है और मानक इनपुट/आउटपुट पर संचार करता है।
समर्थित क्लाइंट:
- Claude Desktop
- Cursor IDE - AI-संचालित कोड संपादक
- Cline - AI सहायता के लिए VS Code एक्सटेंशन
- Zed Editor - तेज़, आधुनिक कोड संपादक
- अन्य 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"
}
}
}
}
कॉन्फ़िगरेशन फ़ाइल स्थान:
- Cursor IDE:
~/.cursor/mcp.json(macOS/Linux) या%USERPROFILE%\.cursor\mcp.json(Windows) - Cline: VS Code में सेटिंग्स UI के माध्यम से सुलभ
- Zed Editor: एक्सटेंशन मार्केटप्लेस के माध्यम से MCP एक्सटेंशन के रूप में स्थापित करें
क्लाइंट-विशिष्ट सुविधाओं और समस्या निवारण के लिए, अपने MCP क्लाइंट के दस्तावेज़ीकरण से परामर्श करें। एक कॉन्फ़िगरेशन के लिए Claude Desktop से कनेक्ट करें भी देखें जो सीधे निर्मित dist/main-stdio.js की ओर इशारा करता है।
HTTP (स्थानीय वेब-आधारित AI)
HTTP मोड सर्वर को MCP स्ट्रीमेबल HTTP प्रोटोकॉल बोलने वाले एक स्थानीय वेब सर्वर के रूप में चलाता है। यह वह परिवहन है जिससे एक वेब-आधारित AI उपकरण तब बात करता है जब आपकी मशीन की ओर इशारा किया जाता है, और यह वही है जो दूरस्थ विकल्प बाहरी दुनिया के सामने उजागर करते हैं। अपने आप में, HTTP मोड केवल 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 को इंटरनेट पर उजागर करते हैं ताकि एक रिमोट सहायक इससे बात कर सके।
टनल (✅ अनुशंसित)
अनुशंसित रिमोट पथ — प्रमाणीकृत और सुरक्षित। एक कच्चे सार्वजनिक पोर्ट के विपरीत, टनल मोड में आपको लॉग इन करना होता है (OAuth 2.0 डिवाइस फ्लो), इसलिए एंडपॉइंट URL का अनुमान लगाने वाले किसी भी व्यक्ति के लिए खुला नहीं है।
टनल मोड वेब-आधारित AI सहायकों को आपकी खुद की टनल चलाए बिना आपके स्थानीय Anki तक पहुँचने देता है। सर्वर एक WebSocket के माध्यम से प्रबंधित AnkiMCP टनल सेवा (wss://tunnel.ankimcp.ai) से जुड़ता है और उसे एक सार्वजनिक 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 सर्वर को इन-प्रोसेस एक इन-मेमोरी ट्रांसपोर्ट के पीछे चलाता है (McpModule बिना किसी अंतर्निहित ट्रांसपोर्ट के शुरू होता है)। TunnelMcpService उस इन-मेमोरी ट्रांसपोर्ट को MCP सर्वर से जोड़ता है, और TunnelClient इसे एक WebSocket पर रिमोट टनल सेवा से जोड़ता है — MCP अनुरोधों को अंदर और प्रतिक्रियाओं को बाहर रिले करता है। AnkiConnect अभी भी केवल आपकी स्थानीय मशीन पर ही पहुँचा जाता है।
ngrok (अप्रमाणीकृत विकल्प)
यदि आप प्रबंधित टनल पर किसी खाते के बिना स्थानीय HTTP मोड को सार्वजनिक रूप से उजागर करना चाहते हैं, तो अंतर्निहित --ngrok फ्लैग एक ngrok उपप्रक्रिया (src/services/ngrok.service.ts) लॉन्च करता है और स्टार्टअप बैनर में सार्वजनिक URL प्रिंट करता है:
# One-time ngrok setup, then:
ankimcp --ngrok
यह मार्ग अप्रमाणीकृत है — URL वाला कोई भी व्यक्ति आपके Anki तक पहुँच सकता है, इसलिए यह टनल की तुलना में कम सुरक्षित है। जब तक आपके पास अपना स्वयं का ngrok एंडपॉइंट प्रबंधित करने का कोई विशिष्ट कारण न हो, टनल को प्राथमिकता दें। (वैश्विक ngrok स्थापना और ऑटोटोकन की आवश्यकता है।)
--ngrok फ्लैग ngrok को --host-header=rewrite के साथ लॉन्च करता है, इसलिए ngrok अग्रेषित करने से पहले अपस्ट्रीम Host को localhost में फिर से लिखता है। यह अनुरोधों को लूपबैक होस्ट अनुमति सूची के भीतर रखता है (देखें 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 <port> Port to listen on (HTTP mode, default: 3000)
-h, --host <host> Host to bind to (HTTP mode, default: 127.0.0.1)
-a, --anki-connect <url> AnkiConnect URL (default: http://localhost:8765)
--ngrok Start ngrok tunnel (requires global ngrok installation)
--read-only Run in read-only mode (blocks all write operations)
--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 फ्लैग आपके Anki संग्रह में किसी भी संशोधन को रोकता है। सक्षम होने पर:
- सभी पढ़ने के संचालन सामान्य रूप से काम करते हैं (डेक ब्राउज़ करना, कार्ड देखना, नोट्स खोजना)
- समीक्षा संचालन की अनुमति है (सिंक, answerCards, निलंबित/अन-निलंबित)
- सामग्री संशोधन अवरुद्ध हैं (addNote, deleteNotes, createDeck, updateNoteFields, आदि)
- आकस्मिक परिवर्तनों के जोखिम के बिना 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 में निम्नलिखित में से किसी भी तरीके से कॉन्फ़िगर कर सकते हैं:
- यहाँ जाकर: सेटिंग्स → डेवलपर → कॉन्फ़िग संपादित करें
- या कॉन्फ़िग फ़ाइल को मैन्युअल रूप से संपादित करके
कॉन्फ़िगरेशन
अपने 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_URL | AnkiConnect URL | http://localhost:8765 |
ANKI_CONNECT_API_VERSION | API संस्करण | 6 |
ANKI_CONNECT_API_KEY | API कुंजी यदि AnkiConnect में कॉन्फ़िगर की गई है | - |
ANKI_CONNECT_TIMEOUT | अनुरोध टाइमआउट मिलीसेकंड में | 5000 |
READ_ONLY | केवल-पढ़ने का मोड सक्षम करें (true या 1) | false |
ALLOWED_HOSTS | HTTP मोड: लूपबैक से परे स्वीकार करने के लिए अतिरिक्त Host हेडर मान (अल्पविराम से अलग किए गए होस्टनाम)। LAN/सार्वजनिक पते पर बाइंड करते समय या रिवर्स प्रॉक्सी के पीछे चलते समय आवश्यक। देखें HTTP मोड कॉन्फ़िगरेशन। | केवल लूपबैक |
ALLOWED_ORIGINS | HTTP मोड: ब्राउज़र 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_HOSTS | URL आयात के लिए विशिष्ट निजी नेटवर्क होस्ट की अनुमति दें (अल्पविराम से अलग, जैसे, 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"- "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 स्टाइलिंग जानकारी लौटाता है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 (डिफ़ॉल्ट: लोकलहोस्ट) से बात करता है। यदि आप 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 मोड (डिफ़ॉल्ट)
- Claude Desktop जैसे स्थानीय 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 (
PORTenv var के माध्यम से कॉन्फ़िगर करने योग्य) - डिफ़ॉल्ट होस्ट:
127.0.0.1(HOSTenv var के माध्यम से कॉन्फ़िगर करने योग्य) - MCP समापन बिंदु:
http://127.0.0.1:3000/(रूट पथ)
टनल मोड (प्रबंधित वेबसॉकेट टनल)
- अंतर्निहित प्रमाणीकरण के साथ, प्रबंधित AnkiMCP टनल सेवा के माध्यम से वेब-आधारित AI सहायकों के लिए
- MCP सर्वर इन-मेमोरी ट्रांसपोर्ट के पीछे इन-प्रोसेस चलता है;
TunnelMcpServiceइसे MCP सर्वर से जोड़ता है औरTunnelClientइसे वेबसॉकेट पर टनल सेवा से जोड़ता है - प्रवेश बिंदु:
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 क्लाइंट) की अनुमति है; होस्ट सत्यापन रीबाइंडिंग के खिलाफ बचाव है। - डिफ़ॉल्ट रूप से लोकलहोस्ट (127.0.0.1) से बाइंड करता है।
- वर्तमान संस्करण में कोई प्रमाणीकरण नहीं (OAuth समर्थन की योजना है)।
HTTP मोड को लोकलहोस्ट से परे उजागर करना — यदि आप किसी 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 हेडर स्वीकार किए जाएंगे।
डॉकर / रिवर्स प्रॉक्सी / सार्वजनिक डोमेन: वही नियम लागू होता है। डॉकर में, अनुरोध आमतौर पर कंटेनर के प्रकाशित होस्टनाम या प्रॉक्सी के
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
यह कमांड करेगा:
package.jsonसेmanifest.jsonमें संस्करण सिंक करें- पुरानी
.mcpbफ़ाइलें हटाएँ - TypeScript प्रोजेक्ट बनाएँ
dist/औरnode_modules/को एक.mcpbफ़ाइल में पैकेज करें- devDependencies हटाने के लिए
mcpb cleanचलाएँ (बंडल को ~47MB से ~10MB तक अनुकूलित करता है)
आउटपुट फ़ाइल का नाम anki-mcp-server-X.X.X.mcpb होगा और इसे एक-क्लिक इंस्टॉलेशन के लिए वितरित किया जा सकता है।
क्या बंडल होता है
MCPB बंडल में शामिल हैं:
- संकलित जावास्क्रिप्ट (
dist/निर्देशिका - सभी तीन प्रवेश बिंदु शामिल हैं) - केवल उत्पादन निर्भरताएँ (
node_modules/-mcpb cleanद्वारा हटाए गए devDependencies) - पैकेज मेटाडेटा (
package.json) - मैनिफेस्ट कॉन्फ़िगरेशन (
manifest.json-main-stdio.jsका उपयोग करने के लिए कॉन्फ़िगर किया गया) - आइकन (
icon.png)
स्रोत फ़ाइलें, परीक्षण और विकास कॉन्फ़िगरेशन .mcpbignore के माध्यम से स्वचालित रूप से बाहर रखे गए हैं।
Claude Desktop में लॉगिंग
Claude Desktop में MCPB एक्सटेंशन के रूप में चलने पर, लॉग यहाँ लिखे जाते हैं:
लॉग स्थान: ~/Library/Logs/Claude/ (macOS)
लॉग कई फ़ाइलों में विभाजित होते हैं:
- main.log - सामान्य Claude Desktop एप्लिकेशन लॉग
- mcp-server-Anki MCP Server.log - इस एक्सटेंशन के लिए MCP प्रोटोकॉल संदेश
- mcp.log - सभी सर्वरों से संयुक्त MCP लॉग
नोट: पिनो लॉगर आउटपुट (सर्वर कोड से INFO, ERROR, WARN संदेश) stderr पर जाता है और MCP-विशिष्ट लॉग फ़ाइलों में दिखाई देता है। Claude Desktop निर्धारित करता है कि कौन सी लॉग फ़ाइल कौन से संदेश प्राप्त करती है, लेकिन आम तौर पर:
- एप्लिकेशन स्टार्टअप और MCP प्रोटोकॉल संचार → MCP-विशिष्ट लॉग
- सर्वर आंतरिक लॉगिंग (पिनो) → 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 त्रुटियों से बचने के लिए "कनेक्शन प्रकार: प्रॉक्सी के माध्यम से" का उपयोग करें।
चरण 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 इंस्पेक्टर चलाएँ:
npm run inspector:debug
यह पोर्ट 9229 पर Node.js डिबगिंग सक्षम के साथ सर्वर शुरू करेगा और पहली पंक्ति पर निष्पादन रोक देगा।
चरण 3: अपने IDE से डीबगर संलग्न करें
WebStorm
- Run → Edit Configurations पर जाएँ
- एक नया Attach to Node.js/Chrome कॉन्फ़िगरेशन जोड़ें
- पोर्ट को
9229पर सेट करें - संलग्न करने के लिए Debug पर क्लिक करें
VS Code
- डीबग पैनल खोलें (Ctrl+Shift+D / Cmd+Shift+D)
- Debug MCP Server (Attach) कॉन्फ़िगरेशन चुनें
- संलग्न करने के लिए F5 दबाएँ
चरण 4: ब्रेकप्वाइंट सेट करें और डीबग करें
एक बार संलग्न होने के बाद, आप यह कर सकते हैं:
- अपनी TypeScript स्रोत फ़ाइलों में ब्रेकप्वाइंट सेट करें
- कोड निष्पादन के माध्यम से कदम दर कदम आगे बढ़ें
- चर और कॉल स्टैक का निरीक्षण करें
- अभिव्यक्तियों के मूल्यांकन के लिए डीबग कंसोल का उपयोग करें
डीबगर स्रोत मानचित्रों के साथ काम करेगा, जिससे आप संकलित जावास्क्रिप्ट के बजाय मूल TypeScript कोड को डीबग कर सकेंगे।
Claude Desktop के साथ डीबगिंग
आप Node.js डीबगर को सक्षम करके और अपने IDE को संलग्न करके Claude Desktop के अंदर चलने के दौरान MCP सर्वर को डीबग भी कर सकते हैं।
चरण 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
- Run → Edit Configurations पर जाएँ
- + बटन पर क्लिक करें और Attach to Node.js/Chrome चुनें
- कॉन्फ़िगर करें:
- नाम:
Attach to Anki MCP (Claude Desktop) - होस्ट:
localhost - पोर्ट:
9229 - से संलग्न करें:
Node.js < 8याChrome or Node.js > 6.3(WebStorm संस्करण पर निर्भर करता है)
- नाम:
- OK पर क्लिक करें
- संलग्न करने के लिए Debug (Shift+F9) पर क्लिक करें
VS Code
.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"]
}
]
}
- डीबग पैनल खोलें (Ctrl+Shift+D / Cmd+Shift+D)
- Attach to Anki MCP (Claude Desktop) चुनें
- संलग्न करने के लिए 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.22.0 - सक्रिय बीटा विकास। हाल की सुविधाओं में संग्रह-व्यापी समीक्षा विश्लेषण (review_stats अब सभी डेक में एकत्रित होता है जब deck छोड़ा जाता है), मॉडल फ़ील्ड प्रबंधन (addModelField, removeModelField, renameModelField, repositionModelField), बैच नोट निर्माण (addNotes), एकीकृत ngrok टनलिंग (--ngrok फ्लैग), मीडिया फ़ाइल प्रबंधन, मॉडल/टेम्पलेट प्रबंधन और व्यापक डेक आँकड़े शामिल हैं। API प्रतिक्रिया और परीक्षण के आधार पर बदल सकते हैं।
MCPB स्पेक विकास
यह परियोजना एंथ्रोपिक के 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 एकीकरण बनाने या कार्यक्षमता का महत्वपूर्ण रूप से विस्तार करने की योजना के लिए एक ठोस आधार की आवश्यकता है, तो इस परियोजना का वास्तुशिल्प दृष्टिकोण समय के साथ रखरखाव और मापनीयता को आसान बनाता है।
उपयोगी लिंक
- मॉडल कॉन्टेक्स्ट प्रोटोकॉल दस्तावेज़ीकरण
- AnkiConnect API दस्तावेज़ीकरण
- Claude Desktop डाउनलोड
- डेस्कटॉप एक्सटेंशन बनाना (Anthropic ब्लॉग)
- MCP सर्वर रिपॉजिटरी
- NestJS दस्तावेज़ीकरण
- 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 प्रौद्योगिकियों को जोड़ती है। सभी ट्रेडमार्क, सेवा चिह्न, व्यापार नाम, उत्पाद नाम और लोगो उनके संबंधित स्वामियों की संपत्ति हैं।