LocalCan

आधिकारिक

AI एजेंटों को localhost के लिए सार्वजनिक URL (tunnels), लाइव HTTP ट्रैफ़िक निरीक्षण, स्नैपशॉट प्रकाशन, और एक्सेस नियंत्रण प्रदान करता है।

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

  • कैप्चर किए गए ट्रैफ़िक का निरीक्षण करें — अपने सहायक से list_traffic के साथ हाल के एक्सचेंजों की सूची माँगें या get_exchange के माध्यम से markdown, curl, या HAR प्रारूप में पूरा अनुरोध/प्रतिक्रिया प्राप्त करें।
  • सार्वजनिक टनल प्रबंधित करें — create_public_url और pause_public_url जैसे टूल से Public URL बनाएँ, रोकें, फिर से शुरू करें, या हटाएँ, जिसमें कस्टम अनुरोध हेडर सेट करना भी शामिल है।
  • स्नैपशॉट प्रकाशित और रीफ़्रेश करें — publish_snapshot के साथ किसी फ़ोल्डर को साझा करने योग्य स्नैपशॉट के रूप में तैनात करें, फिर बाद में update_snapshot के साथ इसे अपडेट करें ताकि पूर्वावलोकन लिंक अद्यतित रहें।
  • एक्सेस और टिप्पणियाँ नियंत्रित करें — set_password के साथ URL को पासवर्ड-सुरक्षित करें, list_comments के माध्यम से टिप्पणी थ्रेड की समीक्षा करें, और अपने सहायक से सीधे उत्तर दें या उन्हें हल करें।
  • टनल और सेवा स्थिति जाँचें — get_status का उपयोग करके पुष्टि करें कि कैप्चर चल रहा है, या list_public_urls से देखें कि कौन से लिंक सक्रिय, रोके गए, या स्नैपशॉट परोस रहे हैं।

दस्तावेज़

MCP सर्वर

LocalCan का Model Context Protocol सर्वर चलाएँ और इसे अपने MCP होस्ट से जोड़ें, साथ ही टूल्स और स्विच का पूरा संदर्भ देखें।

localcan mcp stdio पर Model Context Protocol सर्वर चलाता है। एक MCP होस्ट (Claude Code, Codex, Cursor, Claude Desktop, और अन्य) इसे लॉन्च करता है और LocalCan के टूल्स को कॉल करके कैप्चर किए गए ट्रैफ़िक को पढ़ता है, Public URLs (टनल) प्रबंधित करता है, और Snapshots प्रकाशित करता है। टूल्स को डेटा लौटाने के लिए LocalCan चल रहा होना चाहिए, इसलिए पहले डेस्कटॉप ऐप खोलें या localcan start -d चलाएँ।

टूल्स

सर्वर छब्बीस टूल्स उजागर करता है। पढ़ना बिना किसी सेटिंग के काम करता है। सोलह टूल्स जो चीज़ें बदलते हैं उन्हें लिखने की अनुमति चाहिए, जो डिफ़ॉल्ट रूप से बंद है (नीचे दिए गए स्विच देखें)। Public URL बनाने या जोड़ने के लिए सक्रिय लाइसेंस चाहिए। Snapshot प्रकाशित करने और URL को पासवर्ड-सुरक्षित करने के लिए सब्सक्रिप्शन प्लान चाहिए, इसलिए स्थायी लाइसेंस को अस्वीकार कर दिया जाता है, भले ही वह अभी भी Public URLs खोल सकता है। बिना लाइसेंस के, प्रतिबंधित टूल्स एक स्पष्ट सक्रियण संदेश लौटाते हैं, जबकि मौजूदा URLs को रोकना, फिर से शुरू करना और हटाना अभी भी काम करता है।

ट्रैफ़िक:

टूलयह क्या करता हैपैरामीटर
get_statusरिपोर्ट करता है कि कैप्चर चालू है या नहीं और कितना ट्रैफ़िक बफ़र किया गया है।कोई नहीं
enable_captureकैप्चर चालू करता है। कैप्चर डिफ़ॉल्ट रूप से बंद है और डेमॉन के पुनरारंभ होने पर रीसेट हो जाता है।कोई नहीं
list_trafficहाल के एक्सचेंजों की सूची देता है, नए पहले।last (डिफ़ॉल्ट 20), host सबस्ट्रिंग, project आईडी, method, status (सटीक कोड या 5xx जैसा वर्ग)
get_exchangeआईडी द्वारा एक एक्सचेंज लौटाता है।id आवश्यक (पूर्ण आईडी या कोई अद्वितीय उपसर्ग), format markdown, curl, http, har, json में से एक (डिफ़ॉल्ट markdown), include_response (डिफ़ॉल्ट true)

एक एक्सचेंज वह अनुरोध है जिसे LocalCan ने आपके बैकएंड को अग्रेषित किया, न कि क्लाइंट के मूल अनुरोध की बाइट-दर-बाइट प्रति। डेटा मॉडल के लिए Traffic देखें।

Public URLs:

टूलयह क्या करता हैपैरामीटर
list_servicesउन सेवाओं की सूची देता है जिन्हें LocalCan परोसता है, प्रत्येक के साथ <project>/<service> हैंडल, उसका स्थानीय लक्ष्य, और एंडपॉइंट गिनती।कोई नहीं
list_public_urlsआपके Public URLs की सूची देता है, जिसमें रोके गए भी शामिल हैं, प्रत्येक के साथ उसकी स्थिति (active, paused, error, starting, inactive) और वह क्या परोसता है (live, snapshot, none)। हर पंक्ति में access भी होता है: none, password, link, या टीम-नीति का नाम। एक पार्क किया गया URL जो Snapshot परोसता है वह state paused लेकिन serving snapshot पढ़ता है, इसलिए "क्या लिंक चालू है?" का उत्तर serving से दें, state से नहीं।कोई नहीं
get_public_url_statusएक Public URL की स्थिति, वह क्या परोसता है (live, snapshot, none), और उसकी access सुरक्षा की रिपोर्ट करता है, सूची के समान शब्दावली के साथ, साथ ही उसका स्थानीय लक्ष्य और कोई अनुरोध हेडर नियम।url आवश्यक
create_public_urlएक नए प्रोजेक्ट में स्थानीय पोर्ट के लिए Public URL बनाता है और निर्दिष्ट पता लौटाता है, जैसे my-app-12.localcan.dev। कुछ सेकंड लगते हैं। यदि टनल अस्वीकार हो जाती है (उदाहरण के लिए आपके प्लान की Public URL सीमा) या समय समाप्त हो जाता है, तो प्रयास वापस ले लिया जाता है और कुछ भी पीछे नहीं छोड़ा जाता। एक लिंक के लिए जो आपकी मशीन ऑफ़लाइन होने के बाद भी पहुंच योग्य रहता है, add_snapshot के साथ एक Snapshot जोड़ें। एक ऐप के लिए जो वर्चुअल होस्ट के रूप में परोसा जाता है, host और headers में एक Host नियम पास करें (नीचे देखें)।port आवश्यक, name वैकल्पिक (पता आकार देता है), protocol http या tcp (डिफ़ॉल्ट http), host वैकल्पिक (डिफ़ॉल्ट localhost), headers वैकल्पिक (अनुरोध हेडर नियम, प्रत्येक {name, value, mode?, enabled?})
add_public_urlएक सेवा में Public URL जोड़ता है जिसे आप पहले से कॉन्फ़िगर कर चुके हैं। प्रोटोकॉल सेवा के लक्ष्य का अनुसरण करता है, इसलिए tcp:// लक्ष्य को TCP टनल मिलती है। विफलता पर create के समान रोलबैक।service हैंडल आवश्यक
pause_public_urlएक Public URL को ऑफ़लाइन ले जाता है जबकि उसका पता बनाए रखता है, ताकि इसे बाद में फिर से शुरू किया जा सके। एक उत्पन्न *.localcan.dev पता रोके जाने पर 7 दिनों के लिए आरक्षित रहता है, कस्टम डोमेन कभी समाप्त नहीं होते।url आवश्यक
resume_public_urlएक रोके गए Public URL को उसी पते पर वापस ऑनलाइन लाता है।url आवश्यक
remove_public_urlएक Public URL को स्थायी रूप से हटाता है। एक उत्पन्न पता जारी किया जाता है, एक कस्टम डोमेन आपका रहता है और इसे फिर से जोड़ा जा सकता है। किसी सेवा के अंतिम एंडपॉइंट को हटाने से खाली सेवा और प्रोजेक्ट भी हट जाते हैं। पता रखने लेकिन Snapshot परोसना बंद करने के लिए, remove_snapshot का उपयोग करें। विनाशकारी के रूप में चिह्नित, इसलिए होस्ट आमतौर पर पुष्टि मांगते हैं।url आवश्यक
set_public_url_headersएक Public URL पर अनुरोध हेडर नियमों को बदलता है, वे हेडर जो LocalCan आपके ऐप को अग्रेषित करने से पहले सेट करता है। पूरी सूची पास करें, एक खाली सूची उन्हें साफ़ करती है। get_public_url_status उसी आकार में नियमों की रिपोर्ट करता है (mode set, append, या remove, और enabled), इसलिए वहाँ पढ़ी गई सूची को संपादित और वापस लिखा जा सकता है।url और headers आवश्यक

एक ऐप जो वर्चुअल होस्ट के रूप में परोसा जाता है (myapp.test पर Laravel Herd या Valet साइट, एक nginx server_name) को अपना स्वयं का होस्टनाम देखने की आवश्यकता होती है, और LocalCan डिफ़ॉल्ट रूप से सार्वजनिक होस्टनाम अग्रेषित करता है। host और एक Host नियम, headers: [{"name": "Host", "value": "{{target_host}}"}] पास करें, और ऐप सही साइट परोसता है। मान टेम्पलेट Headers वाले हैं।

Snapshots (Snapshots देखें):

टूलयह क्या करता हैपैरामीटर
publish_snapshotएक फ़ोल्डर को नए Public URL पर Snapshot के रूप में प्रकाशित करता है, ताकि यह आपकी मशीन ऑफ़लाइन होने के बाद भी पहुंच योग्य रहे। जब संभव हो तो इसे निर्मित स्थिर आउटपुट पर इंगित करें, या LocalCan द्वारा निर्माण के लिए प्रोजेक्ट रूट पर (निर्भरताएँ पहले से स्थापित होनी चाहिए)। नया पता लौटाता है। हमेशा एक नया URL बनाता है, इसलिए मौजूदा पूर्वावलोकन को ताज़ा करने के लिए update_snapshot का उपयोग करें।path आवश्यक (पूर्ण), name वैकल्पिक (पता आकार देता है)
add_snapshotएक Public URL में Snapshot जोड़ता है जो आपके पास पहले से है, ताकि एक मौजूदा लिंक ऑफ़लाइन परोसता रहे। यदि URL में पहले से एक है तो update_snapshot पर इंगित करता है।url और path आवश्यक
update_snapshotएक Public URL पर Snapshot को फिर से प्रकाशित करता है। उसी स्रोत से पुनर्निर्माण के लिए path छोड़ें, या किसी अन्य फ़ोल्डर को पुनः इंगित करने के लिए इसे पास करें। यदि URL में कोई नहीं है तो add_snapshot पर इंगित करता है।url आवश्यक, path वैकल्पिक
remove_snapshotएक Public URL से Snapshot हटाता है। URL आरक्षित रहता है और आपकी टनल चालू रहने पर live परोसता रहता है। विनाशकारी के रूप में चिह्नित।url आवश्यक
get_snapshot_statusएक Public URL के Snapshot की रिपोर्ट करता है: उसका स्रोत फ़ोल्डर, कब प्रकाशित हुआ, क्या स्रोत तब से बदल गया (stale), और क्या URL अभी live या snapshot परोसता है। इस पर समीक्षा टिप्पणियाँ (स्थिति और गिनती) और, एक बार टिप्पणियाँ चालू होने के बाद, Snapshot का संस्करण संख्या भी रखता है।url आवश्यक

पहुँच नियंत्रण (Access control देखें):

टूलयह क्या करता हैपैरामीटर
set_passwordएक Public URL को पासवर्ड-सुरक्षित करता है ताकि केवल वे लोग इसे खोल सकें जिनके पास पासवर्ड है। LocalCan के सर्वरों पर लागू किया जाता है, इसलिए यह उस URL पर एक Snapshot को भी कवर करता है। जब तक आप एक पास नहीं देते तब तक एक मजबूत पासवर्ड उत्पन्न करता है, और इसे साझा करने के लिए लौटाता है। सब्सक्रिप्शन प्लान की आवश्यकता है।url आवश्यक, password वैकल्पिक (उत्पन्न करने के लिए छोड़ें)
clear_accessपासवर्ड सुरक्षा हटाता है, URL को फिर से सार्वजनिक बनाता है। URL या उसका Snapshot नहीं हटाता। विनाशकारी के रूप में चिह्नित, इसलिए होस्ट आमतौर पर पुष्टि मांगते हैं।url आवश्यक
get_access_statusएक Public URL की सुरक्षा की रिपोर्ट करता है और जब यह पासवर्ड-सुरक्षित होता है तो उसका वर्तमान पासवर्ड लौटाता है। पासवर्ड कभी भी list_public_urls द्वारा नहीं लौटाया जाता, केवल यहाँ।url आवश्यक

टिप्पणियाँ (समीक्षकों द्वारा Snapshot पर छोड़ी गई समीक्षा टिप्पणियाँ, Comments देखें):

टूलयह क्या करता हैपैरामीटर
list_commentsएक Public URL के Snapshot पर टिप्पणी थ्रेड्स को उनके उत्तरों के साथ सूचीबद्ध करता है। प्रत्येक थ्रेड में पृष्ठ पथ, एंकर (एक CSS चयनकर्ता और उस तत्व में पिन की स्थिति), समीक्षक का व्यूपोर्ट और ब्राउज़र, और Snapshot संस्करण जिस पर इसे छोड़ा गया था। कभी कुछ पढ़ा हुआ चिह्नित नहीं करता।url आवश्यक, status open, resolved, या all (डिफ़ॉल्ट open), page पथ, version संख्या
reply_commentआपके खाते के नाम के तहत एक थ्रेड में उत्तर पोस्ट करता है। थ्रेड पर समीक्षकों को यह ईमेल द्वारा मिलता है जब तक कि टीम के लिए उत्तर सूचनाएँ बंद न हों या उन्होंने सदस्यता समाप्त न की हो। केवल उत्तर, नए थ्रेड पृष्ठ पर पिन किए जाते हैं।url, comment_id, body आवश्यक
resolve_commentएक थ्रेड को resolved चिह्नित करता है, उत्तर सहित।url और comment_id आवश्यक
reopen_commentएक resolved थ्रेड को फिर से खोलता है।url और comment_id आवश्यक
set_commentsएक Snapshot पर टिप्पणियाँ स्विच करता है: on, paused (मौजूदा थ्रेड पठनीय रहते हैं, कोई नया नहीं), या off। एक सुरक्षित URL और सब्सक्रिप्शन प्लान की आवश्यकता है।url और state आवश्यक

फीडबैक लूप

टूल्स एक लूप में जुड़ते हैं जिसे एक एजेंट अपने दम पर चला सकता है: खुले थ्रेड्स पढ़ने के लिए list_comments, स्रोत संपादित करें, नया संस्करण प्रकाशित करने के लिए update_snapshot, फिर प्रति थ्रेड reply_comment और resolve_comment। टिप्पणियाँ नए संस्करण पर स्थानांतरित हो जाती हैं, इसलिए समीक्षक उत्तर उसी पिन पर देखता है। सर्वर एजेंट को यह स्वयं बताता है। इसके MCP निर्देश, जिन्हें होस्ट एजेंट के प्रॉम्प्ट में जोड़ते हैं, लूप, समीक्षा-राउंड सेटअप (publish_snapshot, set_password, set_comments), और वर्चुअल होस्ट रेसिपी का वर्णन करते हैं। दो चीज़ें जो एक एजेंट नहीं कर सकता: एक थ्रेड शुरू करना (समीक्षक उन्हें पृष्ठ पर पिन करते हैं) और थ्रेड्स को पढ़ा हुआ चिह्नित करना (अपठित आपकी अपनी इनबॉक्स स्थिति है ऐप में)।

एक एजेंट को जोड़ना

आप कैसे जुड़ते हैं यह इस बात पर निर्भर करता है कि एजेंट कैसे चलता है। टर्मिनल एजेंट (Claude Code, Codex) आपके शेल PATH को विरासत में लेते हैं, इसलिए एक सादा localcan कमांड काम करता है। GUI ऐप्स (Cursor, Claude Desktop, VS Code, और अन्य) आपके शेल PATH को लोड नहीं करते, इसलिए उन्हें बाइनरी का पूर्ण पथ चाहिए, उदाहरण के लिए /Users/you/.localcan/bin/localcan। डेस्कटॉप ऐप की Settings एक तैयार कॉन्फ़िगरेशन कॉपी कर सकती है जिसमें सही पथ भरा हुआ है, जो Windows पर भी विश्वसनीय मार्ग है।

Claude Code

claude mcp add --scope user localcan -- localcan mcp

फ्लैग --scope user सर्वर को हर प्रोजेक्ट के लिए पंजीकृत करता है। इसे केवल वर्तमान प्रोजेक्ट में पंजीकृत करने के लिए हटाएँ।

Codex

codex mcp add localcan -- localcan mcp

यह सर्वर को ~/.codex/config.toml पर लिखता है। Codex डेस्कटॉप ऐप या IDE एक्सटेंशन के लिए, localcan के स्थान पर पूर्ण पथ पास करें।

Cursor, Claude Desktop, और Windsurf

ये समान mcpServers प्रारूप साझा करते हैं:

{
  "mcpServers": {
    "localcan": {
      "command": "/Users/you/.localcan/bin/localcan",
      "args": ["mcp"]
    }
  }
}

इसे सही फ़ाइल में जोड़ें, फिर पुनः लोड करें:

  • Cursor: ~/.cursor/mcp.json, फिर Settings में सर्वर सक्षम करें।
  • Claude Desktop: claude_desktop_config.json (Settings, Developer, Edit Config), फिर बंद करें और फिर से लॉन्च करें।
  • Windsurf: ~/.codeium/windsurf/mcp_config.json, फिर MCP पैनल ताज़ा करें।

VS Code

VS Code (Copilot एजेंट मोड) एक स्पष्ट प्रकार के साथ servers कुंजी का उपयोग करता है। इसे अपने वर्कस्पेस में .vscode/mcp.json में जोड़ें:

{
  "servers": {
    "localcan": {
      "type": "stdio",
      "command": "/Users/you/.localcan/bin/localcan",
      "args": ["mcp"]
    }
  }
}

आप उसी सर्वर ऑब्जेक्ट के साथ code --add-mcp भी चला सकते हैं।

Zed

Zed अपने settings.json में context_servers का उपयोग करता है:

{
  "context_servers": {
    "localcan": {
      "source": "custom",
      "command": "/Users/you/.localcan/bin/localcan",
      "args": ["mcp"]
    }
  }
}

आप इसे Agent Panel सेटिंग्स से भी जोड़ सकते हैं।

एजेंट पहुँच, रिडक्शन, और लिखने की अनुमति

तीनों को डेस्कटॉप ऐप में Settings के अंतर्गत ("AI Agents (MCP)" अनुभाग) नियंत्रित किया जाता है, या टर्मिनल से: एजेंट पहुँच के लिए localcan mcp enable / disable, रिडक्शन के लिए localcan mcp redact <on|off>, लिखने की अनुमति के लिए localcan mcp access <read_only|read_write>, और वर्तमान स्थिति देखने के लिए localcan mcp status।

  • एजेंट एक्सेस डिफ़ॉल्ट रूप से चालू है। इसे बंद करने से एजेंट LocalCan का उपयोग बिल्कुल नहीं कर पाएंगे। सर्वर फिर भी शुरू होता है, लेकिन हर टूल तब तक स्पष्ट "एक्सेस अक्षम है" संदेश लौटाता है जब तक आप इसे वापस चालू नहीं करते।
  • रिडक्शन डिफ़ॉल्ट रूप से एजेंटों के लिए चालू है। संवेदनशील हेडर (Authorization, कुकीज़, API कुंजियाँ) टूल प्रतिक्रियाओं से हटा दिए जाते हैं। URL और बॉडी रिडक्ट नहीं होते। इसे बंद करें ताकि आपका अपना एजेंट कच्चे मान प्राप्त कर सके।
  • लेखन एक्सेस डिफ़ॉल्ट रूप से बंद है। पढ़ना इसके बिना काम करता है, लेकिन लेखन टूल तब तक स्पष्ट केवल-पढ़ने योग्य संदेश लौटाते हैं जब तक आप इसे ऐप में ("Allow agents to create and change Public URLs") या localcan mcp access read_write के साथ चालू नहीं करते। एजेंट एक्सेस चालू करने से लेखन एक्सेस नहीं मिलता। वे अलग-अलग स्विच हैं। हर लेखन कॉल सर्वर के डायग्नोस्टिक आउटपुट में लॉग होती है, जिसे आपका होस्ट कैप्चर करता है, ताकि आपके पास रिकॉर्ड रहे कि एजेंट ने क्या बदला। set_password को दिया गया पासवर्ड उस लॉग में मास्क किया जाता है।

जब कोई टूल मना करता है

  • हर टूल डेमन कनेक्शन संदेश के साथ त्रुटि देता है: LocalCan चल नहीं रहा है। डेस्कटॉप ऐप खोलें या localcan start -d चलाएँ।
  • list_traffic कुछ भी नहीं लौटाता: कैप्चर बंद है (यह डिफ़ॉल्ट रूप से बंद है और डेमन पुनः आरंभ होने पर रीसेट हो जाता है)। localcan traffic enable चलाएँ या एजेंट को enable_capture कॉल करने दें।
  • "MCP access is disabled": एजेंट एक्सेस बंद है। localcan mcp enable चलाएँ या Settings टॉगल फ्लिप करें।
  • "MCP is read-only": टूल चीज़ें बदलता है और लेखन एक्सेस बंद है। localcan mcp access read_write चलाएँ या Settings टॉगल चालू करें।
  • "public URLs require a license": Public URL बनाने और जोड़ने के लिए सक्रिय लाइसेंस चाहिए। ऐप में या localcan license activate <key> के साथ एक सक्रिय करें।
  • "need a subscription plan": Snapshots और Access control केवल सदस्यता-आधारित हैं। एक सतत लाइसेंस Public URLs खोल सकता है लेकिन Snapshot प्रकाशित नहीं कर सकता या पासवर्ड सेट नहीं कर सकता। अपने dashboard से सदस्यता लें, फिर पुनः प्रयास करें।
  • "already has a snapshot" या "has no snapshot yet": संदेश में नामित टूल का उपयोग करें। add_snapshot एक Snapshot को ऐसे URL से जोड़ता है जिसमें कोई नहीं है, update_snapshot उसे रीफ्रेश करता है जिसमें पहले से है।
  • "Snapshot limit reached": आपकी योजना सीमित करती है कि कितने Public URLs एक साथ Snapshot परोस सकते हैं। संदेश उन URLs को सूचीबद्ध करता है जो पहले से स्लॉट उपयोग कर रहे हैं, जिन्हें आप नया प्रकाशित करने के बजाय update_snapshot के साथ रीफ्रेश कर सकते हैं।
  • "Comments need a protected URL": set_comments को Access control के बिना URL पर कॉल किया गया था। पहले set_password चलाएँ।
  • "Your account has no display name": उत्तर पोस्ट करने के लिए एक नाम चाहिए। इसे dashboard में सेट करें, या ऐप से स्वामी के रूप में खोलने के बाद Snapshot पृष्ठ पर एक बार उत्तर दें।
  • होस्ट सर्वर को विफल या बिना टूल के दिखाता है: एक GUI ऐप PATH पर localcan नहीं ढूंढ पाता। पूर्ण पथ का उपयोग करें, सबसे आसानी से Settings कॉपी कॉन्फ़िग के माध्यम से।