Unleash

आधिकारिक

MCP सर्वर जो Unleash फीचर फ्लैग्स के प्रबंधन और सर्वोत्तम प्रथाओं को स्वचालित करने के लिए है।

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

  • कोड परिवर्तनों का आकलन करेंevaluate_change से जोखिम का मूल्यांकन करने और यह अनुशंसा करने के लिए कहें कि किसी कोड परिवर्तन के लिए फीचर फ्लैग की आवश्यकता है या नहीं।
  • फीचर फ्लैग बनाएं — प्रकार, विवरण और प्रोजेक्ट टार्गेटिंग के साथ नया फ्लैग प्रदान करने के लिए create_flag का उपयोग करें।
  • मौजूदा फ्लैग का पता लगाएं — कोड या गिट इतिहास में पुन: उपयोग योग्य फ्लैग खोजने और डुप्लिकेट से बचने के लिए detect_flag चलाएं।
  • रैपिंग मार्गदर्शन प्राप्त करें — फ्लैग लागू करने के लिए भाषा-विशिष्ट कोड टेम्पलेट के लिए wrap_change का अनुरोध करें।
  • रोलआउट और स्थिति प्रबंधित करेंset_flag_rollout प्रतिशत कॉन्फ़िगर करें, फिर फ्लैग सक्षम या अक्षम करने के लिए toggle_flag_environment का उपयोग करें।
  • फ्लैग निरीक्षण और सूची — फ्लैग मेटाडेटा, रणनीतियों और प्रोजेक्ट इन्वेंट्री की समीक्षा करने के लिए get_flag_state या list_flags का उपयोग करें।

दस्तावेज़

Unleash MCP सर्वर

Model Context Protocol (MCP) सर्वर के लिए एक उद्देश्य-संचालित सर्वर जो Unleash फीचर फ्लैग प्रबंधित करता है। यह सर्वर LLM-संचालित कोडिंग सहायकों को Unleash की सर्वोत्तम प्रथाओं का पालन करते हुए फीचर फ्लैग बनाने और प्रबंधित करने में सक्षम बनाता है।

प्रतिक्रिया साझा करने के लिए, हमारे community Slack से जुड़ें या GitHub पर issue खोलें।

अवलोकन

यह MCP सर्वर Unleash Admin API के साथ एकीकृत होने वाले टूल प्रदान करता है, जिससे AI कोडिंग सहायक निम्न कार्य कर सकते हैं:

  • फीचर फ्लैग बनाएं उचित सत्यापन और टाइपिंग के साथ।
  • मौजूदा फ्लैग का पता लगाएं डुप्लिकेट रोकने या पुन: उपयोग को प्रोत्साहित करने के लिए।
  • परिवर्तनों का मूल्यांकन करें यह तय करने के लिए कि फीचर फ्लैग कब आवश्यक है।
  • प्रगति स्ट्रीम करें संचालन के दौरान दृश्यता के लिए।
  • त्रुटियों को सहजता से संभालें सहायक संकेतों के साथ।
  • सर्वोत्तम प्रथाओं का पालन करें Unleash दस्तावेज़ीकरण से।

उपलब्ध टूल

MCP सर्वर निम्नलिखित टूल प्रदान करता है:

  • create_flag: Unleash में फीचर फ्लैग बनाता है।
  • evaluate_change: जोखिम का स्कोर करता है और फीचर फ्लैग उपयोग की अनुशंसा करता है।
  • detect_flag: डुप्लिकेट से बचने के लिए मौजूदा फीचर फ्लैग खोजता है।
  • wrap_change: किसी परिवर्तन को फीचर फ्लैग में लपेटने के तरीके पर मार्गदर्शन प्रदान करता है।
  • set_flag_rollout: फीचर फ्लैग के लिए रोलआउट रणनीतियाँ कॉन्फ़िगर करता है (फ्लैग सक्षम नहीं करता)।
  • get_flag_state: फीचर फ्लैग के मेटाडेटा और उसकी सक्रियण रणनीतियों को सतह पर लाता है।
  • list_flags: किसी प्रोजेक्ट में सभी फीचर फ्लैग सूचीबद्ध करता है, वैकल्पिक पेजिनेशन और सॉर्ट क्रम के साथ।
  • list_projects: कॉन्फ़िगर किए गए टोकन के लिए उपलब्ध Unleash प्रोजेक्ट सूचीबद्ध करता है, वैकल्पिक पेजिनेशन के साथ।
  • toggle_flag_environment: किसी वातावरण में फीचर फ्लैग सक्षम या अक्षम करता है।
  • remove_flag_strategy: किसी वातावरण से फीचर फ्लैग की रणनीति हटाता है।
  • cleanup_flag: फ्लैग किए गए कोड पथों को सुरक्षित रूप से हटाने के लिए निर्देश उत्पन्न करता है।

मुख्य कार्यप्रवाह

AI सहायक के लिए मुख्य कार्यप्रवाह इस प्रकार डिज़ाइन किया गया है:

  1. evaluate_change: पहले, यह देखने के लिए कोड परिवर्तन का आकलन करें कि फ्लैग आवश्यक है या नहीं।
  2. detect_flag: इसे अक्सर evaluate_change द्वारा स्वचालित रूप से कॉल किया जाता है ताकि डुप्लिकेट फ्लैग बनने से रोका जा सके।
  3. create_flag: यदि नया फ्लैग आवश्यक है, तो यह टूल इसे Unleash में बनाता है।
  4. wrap_change: अंत में, यह टूल नए फ्लैग को लागू करने के लिए भाषा-विशिष्ट कोड प्रदान करता है।

मुख्य कार्यप्रवाह टूल के बारे में अधिक जानकारी Tool reference अनुभाग में देखें।

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

सर्वर चलाने से पहले, आपके पास निम्नलिखित होना चाहिए:

  • Node.js 22 या उच्चतर
  • pnpm पैकेज मैनेजर या npm
  • एक Unleash इंस्टेंस (होस्टेड या सेल्फ-होस्टेड)
  • फीचर फ्लैग बनाने की अनुमति वाला personal access token

आरंभ करें

यह अनुभाग Unleash MCP सर्वर को स्थापित करने और चलाने के विभिन्न तरीकों को कवर करता है। आप agents (जैसे Claude Code और Codex) के लिए सेटअप का पालन कर सकते हैं, npx का उपयोग करके MCP को standalone process के रूप में चला सकते हैं, या local development सेटअप का उपयोग कर सकते हैं।

एजेंट सेटअप

आप MCP सर्वर को सीधे Claude Code या Codex में जोड़ सकते हैं। एजेंट कॉन्फ़िगरेशन पथ-विशिष्ट होते हैं। आपको उस प्रोजेक्ट की रूट निर्देशिका से निम्नलिखित कमांड चलाना होगा जहाँ आप MCP का उपयोग करना चाहते हैं।

Claude Code के लिए:

claude mcp add unleash \
    --env UNLEASH_BASE_URL={{your-instance-url}} \
    --env UNLEASH_PAT={{your-personal-access-token}} \
    -- npx -y @unleash/mcp@latest --log-level error

Codex के लिए:

codex mcp add unleash \
    --env UNLEASH_BASE_URL={{your-instance-url}} \
    --env UNLEASH_PAT={{your-personal-access-token}} \
    -- npx -y @unleash/mcp@latest --log-level error

रिमोट एजेंट सेटअप (प्रयोगात्मक)

MCP सर्वर को स्थानीय रूप से चलाने के बजाय, आप अपने Unleash इंस्टेंस के अंतर्निहित रिमोट MCP सर्वर से HTTP पर सीधे कनेक्ट कर सकते हैं। यह Streamable HTTP transport का उपयोग करता है — कोई स्थानीय प्रक्रिया आवश्यक नहीं है।

नोट: रिमोट MCP एक प्रयोगात्मक सुविधा है जिसे आपके Unleash इंस्टेंस पर सक्षम किया जाना चाहिए। इसे सक्षम करने के लिए Unleash टीम से संपर्क करें।

OAuth

OAuth प्रवाह आपका ब्राउज़र खोलता है, आपको Unleash में लॉग इन करने देता है, और स्वचालित रूप से एक अल्पकालिक PAT प्रदान करता है। कोई मैन्युअल टोकन प्रबंधन आवश्यक नहीं है।

Claude Code के लिए:

claude mcp add unleash https://{{your-instance-url}}/api/admin/mcp --transport http

Codex के लिए:

codex mcp add unleash https://{{your-instance-url}}/api/admin/mcp --transport http

पहले उपयोग पर, क्लाइंट स्वचालित रूप से लॉगिन के लिए आपका ब्राउज़र खोलेगा। Unleash के साथ प्रमाणित होने के बाद, एक PAT बनाया जाता है और सभी बाद के अनुरोधों के लिए उपयोग किया जाता है।

PAT डिफ़ॉल्ट रूप से 24 घंटे के बाद समाप्त हो जाता है।

व्यक्तिगत एक्सेस टोकन (PAT)

इस विधि का उपयोग करें जब आपके पास पहले से PAT हो या हेडलेस/गैर-इंटरैक्टिव एक्सेस की आवश्यकता हो (CI पाइपलाइन, साझा डेवलपर वातावरण, क्लाइंट जो OAuth का समर्थन नहीं करते)।

PAT बनाने के लिए: अपने Unleash इंस्टेंस में लॉग इन करें, Profile > Personal Access Tokens पर जाएं, और एक नया टोकन बनाएं।

Claude Code के लिए:

claude mcp add unleash https://{{your-instance-url}}/api/admin/mcp \
  --transport http \
  --header "Authorization: Bearer {{your-personal-access-token}}"

Codex के लिए:

codex mcp add unleash https://{{your-instance-url}}/api/admin/mcp \
  --transport http \
  --header "Authorization: Bearer {{your-personal-access-token}}"

--header फ्लैग PAT को सीधे भेजता है, OAuth प्रवाह को पूरी तरह से बायपास करता है।

npx के साथ त्वरित आरंभ

आप रिपॉजिटरी को क्लोन किए बिना npx का उपयोग करके MCP सर्वर को एक स्टैंडअलोन प्रक्रिया के रूप में चला सकते हैं। पर्यावरण चर या उस निर्देशिका में एक स्थानीय .env फ़ाइल के माध्यम से कॉन्फ़िगरेशन प्रदान करें जहाँ आप कमांड चलाते हैं:

UNLEASH_BASE_URL={{your-instance-url}} \
UNLEASH_PAT={{your-personal-access-token}} \
UNLEASH_DEFAULT_PROJECT={{default_project_id}} \
npx @unleash/mcp@latest --log-level debug

CLI स्थानीय बिल्ड के समान फ्लैग का समर्थन करता है (उदाहरण के लिए, --dry-run, --log-level)।

स्थानीय विकास सेटअप

स्थानीय विकास के लिए प्रोजेक्ट सेट करने के लिए इन चरणों का पालन करें।

  1. निर्भरताएँ स्थापित करें

रिपॉजिटरी क्लोन करें और pnpm का उपयोग करके निर्भरताएँ स्थापित करें। Corepack सभी को समान pnpm संस्करण पर रखता है:

git clone https://github.com/Unleash/unleash-mcp.git
cd unleash-mcp

# Enable Corepack once per machine, then prepare the pnpm this repo expects
corepack enable
corepack prepare pnpm@11.0.8 --activate

pnpm install
  1. Claude या Codex से सीधे डेव मोड में चलाएं

npm run आउटपुट और tsx watch बैनर से बचें क्योंकि कोई भी अतिरिक्त stdout MCP हैंडशेक को तोड़ देता है। दो शांत विकल्प:

A) संकलित JS का उपयोग करें (सबसे विश्वसनीय)

npm run build
# or keep it hot in another terminal: npm run build:watch

claude mcp add unleash-dev \
  --env UNLEASH_BASE_URL={{your-instance-url}} \
  --env UNLEASH_PAT={{your-personal-access-token}} \
  --env LOG_LEVEL=debug \
  --env APP_LOG_FILE="$(pwd)/app.log" \
  --env MCP_STDIO_LOG_FILE="$(pwd)/mcp-stdio.log" \
  -- node "$(pwd)/dist/index.js"

codex mcp add unleash-dev \
  --env UNLEASH_BASE_URL={{your-instance-url}} \
  --env UNLEASH_PAT={{your-personal-access-token}} \
  --env LOG_LEVEL=debug \
  --env APP_LOG_FILE="$(pwd)/app.log" \
  --env MCP_STDIO_LOG_FILE="$(pwd)/mcp-stdio.log" \
  -- node "$(pwd)/dist/index.js"

B) TypeScript का सीधे उपयोग करें (कोई बिल्ड नहीं)

claude mcp add unleash-dev \
  --env UNLEASH_BASE_URL={{your-instance-url}} \
  --env UNLEASH_PAT={{your-personal-access-token}} \
  --env LOG_LEVEL=debug \
  --env APP_LOG_FILE="$(pwd)/app.log" \
  --env MCP_STDIO_LOG_FILE="$(pwd)/mcp-stdio.log" \
  -- node --no-warnings --import tsx "$(pwd)/src/index.ts"

codex mcp add unleash-dev \
  --env UNLEASH_BASE_URL={{your-instance-url}} \
  --env UNLEASH_PAT={{your-personal-access-token}} \
  --env LOG_LEVEL=debug \
  --env APP_LOG_FILE="$(pwd)/app.log" \
  --env MCP_STDIO_LOG_FILE="$(pwd)/mcp-stdio.log" \
  -- node --no-warnings --import tsx "$(pwd)/src/index.ts"

नोट्स:

  • node --import tsx शांत है (कोई npm जीवनचक्र आउटपुट नहीं) और TS को सीधे चलाता है; जब आप बिल्ड से बचना चाहते हैं तो इसका उपयोग करें।
  • node dist/index.js सबसे सुरक्षित विकल्प है; इसे npm run build:watch के साथ जोड़ें ताकि एजेंट कमांड स्थिर रहते हुए परिवर्तनों पर पुनर्निर्माण हो सके।
  • लॉग रिपॉजिटरी रूट (app.log, mcp-stdio.log) में रहते हैं, दोनों gitignored हैं।

लॉगिंग नियंत्रण

  • LOG_LEVEL (पसंदीदा): एप्लिकेशन लॉगिंग वर्बोसिटी नियंत्रित करता है (debug, info, warn, error)। अनसेट होने पर डिफ़ॉल्ट error होता है।
  • --log-level CLI फ्लैग: LOG_LEVEL के लिए वैकल्पिक ओवरराइड जब आप एक बार का परिवर्तन चाहते हैं।
  • APP_LOG_FILE (वैकल्पिक): यदि सेट है, तो एप्लिकेशन लॉग इस फ़ाइल में लिखे जाते हैं (stdout नहीं)। यदि अनसेट है, तो लॉग stderr पर जाते हैं।
  • MCP_STDIO_LOG_FILE (वैकल्पिक): यदि सेट है, तो MCP stdin/stdout/stderr को चैनल उपसर्गों के साथ इस एकल फ़ाइल में tee किया जाता है। प्रोटोकॉल संदेश अभी भी सामान्य रूप से stdout पर प्रवाहित होते हैं।

क्लाइंट एट्रिब्यूशन

जब कोई MCP क्लाइंट आरंभीकरण के दौरान clientInfo भेजता है (Claude Code, Cursor, Copilot, Windsurf, Codex, Kiro, और अन्य अनुरूप क्लाइंट), सर्वर बाहरी Unleash Admin API कॉल पर User-Agent हेडर को समृद्ध करता है:

User-Agent: unleash-mcp/<version> (MCP Server; client=claude-code/1.2.3)

यह Unleash इवेंट लॉग को "किस AI टूल ने इस फ्लैग को बनाया या टॉगल किया" का उत्तर देने में सक्षम बनाता है बिना किसी सर्वर-साइड परिवर्तन के। एट्रिब्यूशन मान सैनिटाइज़ किए जाते हैं ताकि वे User-Agent हेडर को तोड़ न सकें।

समृद्धि अक्षम करने और unleash-mcp/<version> (MCP Server) पर वापस जाने के लिए UNLEASH_MCP_CLIENT_ATTRIBUTION=off सेट करें। डिफ़ॉल्ट: सक्षम।

टूल संदर्भ

यह अनुभाग प्रत्येक मुख्य टूल का विस्तार से वर्णन करता है, जिसमें इसका उद्देश्य, पैरामीटर और आउटपुट शामिल हैं।

फ्लैग बनाएं

create_flag टूल व्यापक सत्यापन और प्रगति ट्रैकिंग के साथ Unleash में एक नया फीचर फ्लैग बनाता है।

कब उपयोग करें

इस टूल का उपयोग करें जब आप पहले ही निर्धारित कर चुके हों कि फीचर फ्लैग आवश्यक है (उदाहरण के लिए, evaluate_change चलाने के बाद) और आप इसे सही प्रकार और मेटाडेटा के साथ बनाने के लिए तैयार हैं।

पैरामीटर

टूल निम्नलिखित पैरामीटर स्वीकार करता है:

  • name (आवश्यक): प्रोजेक्ट के भीतर अद्वितीय फीचर फ्लैग नाम।
  • type (आवश्यक): फीचर फ्लैग प्रकार जो जीवनचक्र और उद्देश्य को दर्शाता है।
    • release: उपयोगकर्ताओं के लिए क्रमिक फीचर रोलआउट।
    • experiment: A/B परीक्षण और प्रयोग।
    • operational: सिस्टम व्यवहार और परिचालन टॉगल।
    • kill-switch: आपातकालीन शटडाउन या सर्किट ब्रेकर।
    • permission: उपयोगकर्ता भूमिकाओं या अधिकारों के आधार पर फीचर एक्सेस नियंत्रित करें।
  • description (आवश्यक): फ्लैग क्या नियंत्रित करता है और यह क्यों मौजूद है, इसकी स्पष्ट व्याख्या।
  • projectId (वैकल्पिक): लक्ष्य प्रोजेक्ट (डिफ़ॉल्ट UNLEASH_DEFAULT_PROJECT है)।
  • impressionData (वैकल्पिक): एनालिटिक्स ट्रैकिंग सक्षम करें (डिफ़ॉल्ट false है)।

उपयोग उदाहरण

एजेंट प्रॉम्प्ट

Use create_flag with:
- name: "new-checkout-flow"
- type: "release"
- description: "Gradual rollout of the redesigned checkout experience"
- projectId: "ecommerce"

टूल पेलोड

{
  "name": "new-checkout-flow",
  "type": "release",
  "description": "Gradual rollout of the redesigned checkout experience with improved conversion tracking",
  "projectId": "ecommerce",
  "impressionData": true
}

टूल आउटपुट

सफलता पर, टूल एक JSON ऑब्जेक्ट लौटाता है जिसमें Unleash Admin UI में नए फीचर फ्लैग का URL, प्रोग्रामेटिक एक्सेस के लिए एक MCP संसाधन लिंक, निर्माण टाइमस्टैम्प और कॉन्फ़िगरेशन विवरण शामिल होते हैं।

परिवर्तन का मूल्यांकन करें

evaluate_change टूल मूल्यांकन करता है कि क्या कोई कोड परिवर्तन फीचर फ्लैग के पीछे होना चाहिए। यह परिवर्तन की संरचना, संदर्भ और संभावित जोखिम की जांच करता है और स्पष्टीकरण और अगले चरणों के साथ एक अनुशंसा लौटाता है।

कब उपयोग करें

किसी फीचर या संशोधन की शुरुआत में evaluate_change का उपयोग करें जब आप समझना चाहते हैं कि कार्य के लिए फीचर फ्लैग आवश्यक है या नहीं। यह टूल तब भी सहायक होता है जब आप अनिश्चित हों कि किस फ्लैग प्रकार का उपयोग करना है या रोलआउट योजना पर मार्गदर्शन चाहते हैं।

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

टूल Unleash सर्वोत्तम प्रथाओं के आधार पर LLM सहायक के लिए विस्तृत, मार्कडाउन-स्वरूपित मार्गदर्शन लौटाता है।

मार्गदर्शन में शामिल हैं:

  • पैरेंट फ्लैग पहचान: जांचता है कि कोड पहले से मौजूद फ्लैग द्वारा संरक्षित है या नहीं।
  • जोखिम मूल्यांकन: जोखिमपूर्ण संचालन की पहचान करने के लिए कोड पैटर्न का विश्लेषण करता है।
  • कोड प्रकार मूल्यांकन: परिवर्तन को वर्गीकृत करता है (उदाहरण के लिए, परीक्षण, कॉन्फ़िगरेशन, फीचर, या बग फिक्स)।
  • अनुशंसा: सुझाव देता है कि फ्लैग बनाएं, मौजूदा फ्लैग का उपयोग करें, या फ्लैग छोड़ें।
  • अगली क्रियाएँ: आगे क्या करना है इस पर विशिष्ट निर्देश प्रदान करता है।

जब evaluate_change निर्धारित करता है कि फ्लैग आवश्यक है, तो यह स्पष्ट निर्देश प्रदान करता है:

  1. फीचर फ्लैग बनाने के लिए create_flag टूल को कॉल करें।
  2. भाषा-विशिष्ट कोड रैपिंग मार्गदर्शन प्राप्त करने के लिए wrap_change टूल को कॉल करें।
  3. पहचाने गए पैटर्न का पालन करते हुए रैप किए गए कोड को लागू करें।

मूल्यांकन प्रक्रिया

टूल एक स्पष्ट मूल्यांकन प्रक्रिया का पालन करता है:

Step 1: Gather code changes (git diff, read files)
        ↓
Step 2: Check for parent flags (avoiding nesting)
        ↓
Step 3: Assess code type (test? config? feature?)
        ↓
Step 4: Evaluate risk (auth? payments? API changes?)
        ↓
Step 5: Calculate risk score
        ↓
Step 6: Make recommendation
        ↓
Step 7: Take action (create flag or proceed without)

जोखिम मूल्यांकन

टूल जोखिम स्कोर करने के लिए भाषा-अज्ञेय पैटर्न का उपयोग करता है:

  • गंभीर जोखिम (स्कोर +5): उदाहरण के लिए, प्रमाणीकरण, भुगतान, सुरक्षा और डेटाबेस संचालन।
  • उच्च जोखिम (स्कोर +3): उदाहरण के लिए, API परिवर्तन, बाहरी सेवाएँ, या नई कक्षाएं।
  • मध्यम जोखिम (स्कोर +2): उदाहरण के लिए, अतुल्यकालिक संचालन या स्थिति प्रबंधन।
  • निम्न जोखिम (स्कोर +1): उदाहरण के लिए, बग फिक्स, रीफैक्टर, या छोटे परिवर्तन।

स्कोर मिलान की गई श्रेणियों में जमा होते हैं। कुल एक जोखिम स्तर पर मैप होता है:

  • गंभीर: स्कोर ≥ 5
  • उच्च: स्कोर ≥ 3
  • मध्यम: स्कोर ≥ 2
  • निम्न: स्कोर < 2

आउटपुट में एक confidence स्कोर (0-1) शामिल है जो LLM की स्व-मूल्यांकित निश्चितता को दर्शाता है, जो अधिक संदर्भ प्रदान किए जाने पर बढ़ता है।

एक बहिष्कृत श्रेणी उन फ़ाइलों को कवर करती है जिन्हें सामग्री की परवाह किए बिना फीचर फ्लैग की आवश्यकता नहीं होती: परीक्षण फ़ाइलें (*.test.ts, *_test.go, आदि), कॉन्फ़िगरेशन फ़ाइलें (*.config.js, .env, *.yaml), और दस्तावेज़ीकरण फ़ाइलें (*.md, docs/**)। बहिष्कृत फ़ाइलों तक सीमित परिवर्तन फ्लैग अनुशंसा को ट्रिगर नहीं करेंगे।

पूर्ण पैटर्न परिभाषाएँ, जिनमें प्रति-श्रेणी कीवर्ड, फ़ाइल ग्लोब, कोड पैटर्न और तर्क शामिल हैं, src/evaluation/riskPatterns.ts में हैं।

पैरेंट फ्लैग पहचान

टूल भाषाओं में सामान्य पैटर्न देखता है, जैसे:

  • सशर्त: if (isEnabled('flag')), if client.is_enabled('flag'):
  • असाइनमेंट: const enabled = useFlag('flag')
  • हुक: const enabled = useFlag('flag'){enabled && <Component />}
  • गार्ड: if (!isEnabled('flag')) return;
  • रैपर: withFeatureFlag('flag', () => {...})

पैरामीटर

सभी पैरामीटर वैकल्पिक हैं, लेकिन अधिक संदर्भ बेहतर सिफारिशों की ओर ले जाता है:

  • repository (स्ट्रिंग): रिपॉजिटरी का नाम या पथ।
  • branch (स्ट्रिंग): वर्तमान ब्रांच का नाम।
  • files (सरणी): बदली जा रही फ़ाइलों की सूची।
  • description (स्ट्रिंग): परिवर्तन का विवरण।
  • riskLevel (एनम): low, medium, high, या critical, जैसा कि उपयोगकर्ता द्वारा आकलन किया गया है।
  • codeContext (स्ट्रिंग): पैरेंट फ्लैग पहचान के लिए आसपास का कोड।

उपयोग उदाहरण

एजेंट प्रॉम्प्ट

सरल उपयोग जहां आप एजेंट को संदर्भ एकत्र करने देते हैं:

Use evaluate_change to help me determine if I need a feature flag

स्पष्ट निर्देश:

Use evaluate_change with:
- description: "Add Stripe payment processing"
- riskLevel: "high"

टूल पेलोड

{
  "repository": "my-app",
  "branch": "feature/stripe-integration",
  "files": ["src/payments/stripe.ts"],
  "description": "Add Stripe payment processing",
  "riskLevel": "high",
  "codeContext": "surrounding code for parent flag detection"
}

टूल आउटपुट

मूल्यांकन परिणाम के साथ एक JSON ऑब्जेक्ट लौटाता है, जिसमें एक needsFlag बूलियन, एक recommendation (जैसे, "create_new"), एक सुझाया गया फ्लैग नाम, जोखिम स्तर, और एक विस्तृत explanation शामिल है।

{
  "needsFlag": true,
  "reason": "new_feature",
  "recommendation": "create_new",
  "suggestedFlag": "stripe-payment-integration",
  "riskLevel": "critical",
  "riskScore": 5,
  "explanation": "This change integrates Stripe payments, which is critical risk...",
  "confidence": 0.9
}

फ्लैग का पता लगाएं

detect_flag टूल कोडबेस में मौजूदा फीचर फ्लैग ढूंढता है ताकि आप डुप्लिकेट बनाने के बजाय उन्हें पुनः उपयोग कर सकें। यह टूल स्वचालित रूप से evaluate_change वर्कफ़्लो में एकीकृत है, लेकिन इसे मैन्युअल रूप से भी उपयोग किया जा सकता है।

कब उपयोग करें

नया फीचर फ्लैग बनाने से पहले या कोड मूल्यांकन के दौरान इस टूल का उपयोग करें ताकि मौजूदा फ्लैग की जांच की जा सके जो आपके उपयोग के मामले को पहले से कवर कर सकते हैं। यह फ्लैग डुप्लिकेशन को रोकने में मदद करता है।

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

टूल व्यापक खोज निर्देश लौटाता है और कई पहचान रणनीतियों का उपयोग करता है:

  • फ़ाइल-आधारित पहचान: मौजूदा फ्लैग के लिए आप जिन फ़ाइलों को संशोधित कर रहे हैं उनमें खोजें।
  • Git इतिहास विश्लेषण: कमिट इतिहास में हाल ही में जोड़े गए फ्लैग देखें।
  • सिमेंटिक नाम मिलान: विवरणों को मौजूदा फ्लैग नामों से मिलाएं।
  • कोड संदर्भ विश्लेषण: परिवर्तन के आसपास के कोड का निरीक्षण करें।

फिर टूल एक स्कोरिंग प्रक्रिया का पालन करता है:

Step 1: Execute file-based search (grep for flag patterns in target files)
        ↓
Step 2: Search git history for recent flag additions
        ↓
Step 3: Perform semantic matching (description → flag names)
        ↓
Step 4: Analyze code context (if provided)
        ↓
Step 5: Combine scores from all methods
        ↓
Step 6: Return best candidate with confidence score

विश्वास स्तर

टूल विश्वास स्कोर के साथ उम्मीदवार लौटाता है:

  • उच्च ≥0.7: मजबूत मिलान; पुनः उपयोग की सिफारिश की जाती है।
  • मध्यम 0.4-0.7: संभावित मिलान; मैन्युअल रूप से समीक्षा करें।
  • निम्न <0.4: कमजोर मिलान; संभवतः नया फ्लैग बनाएं।

पैरामीटर

  • description (आवश्यक): परिवर्तन या सुविधा का विवरण। उदाहरण के लिए, "payment processing with Stripe", "new checkout flow"
  • files (वैकल्पिक): संशोधित की जा रही फ़ाइलें। उदाहरण के लिए, ["src/payments/stripe.ts", "src/checkout/flow.ts"]
  • codeContext (वैकल्पिक): फ्लैग के लिए स्कैन करने के लिए आस-पास का कोड।

उपयोग उदाहरण

एजेंट प्रॉम्प्ट

फ्लैग बनाने से पहले मौजूदा फ्लैग की जांच करें:

Use detect_flag with description "payment processing with Stripe"

मूल्यांकन में स्वचालित रूप से एकीकृत:

Use evaluate_change - automatically searches for existing flags

टूल पेलोड

{
  "description": "payment processing with Stripe",
  "files": ["src/payments/stripe.ts"]
}

टूल आउटपुट

एक JSON ऑब्जेक्ट लौटाता है जो दर्शाता है कि फ्लैग मिला या नहीं। यदि flagFound सत्य है, तो इसमें फ्लैग के नाम, स्थान, विश्वास स्कोर और मिलान के कारण के साथ एक candidate ऑब्जेक्ट शामिल है।

मिलान मिला:

{
  "flagFound": true,
  "candidate": {
    "name": "stripe-payment-integration",
    "location": "src/payments/stripe.ts:42",
    "context": "if (client.isEnabled('stripe-payment-integration')) {",
    "confidence": 0.85,
    "reasoning": "Found in same file you're modifying, added 2 days ago",
    "detectionMethod": "file-based"
  }
}

कोई मिलान नहीं मिला:

{
  "flagFound": false,
  "candidate": null
}

परिवर्तन लपेटें

टूल wrap_change फीचर फ्लैग के साथ कोड लपेटने के लिए भाषा-विशिष्ट कोड स्निपेट और मार्गदर्शन उत्पन्न करता है। यह LLM और डेवलपर्स को कोडबेस में मौजूदा पैटर्न का पालन करने और फ्लैग का सही उपयोग करने में मदद करता है।

कब उपयोग करें

इस टूल का उपयोग तब करें जब आपने एक फीचर फ्लैग बनाया हो (create_flag के साथ) और इसे अपने कोड में लागू करने की आवश्यकता हो। यह विशेष रूप से उपयोगी है जब आप यह सुनिश्चित करना चाहते हैं कि आप मौजूदा कोडबेस पैटर्न का पालन कर रहे हैं या फ्रेमवर्क-विशिष्ट उदाहरणों की आवश्यकता है (जैसे, React, Django)।

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

यह टूल evaluate_changecreate_flagwrap_change वर्कफ़्लो में अंतिम चरण है।

टूल अपनी प्रतिक्रिया में निम्नलिखित मार्गदर्शन प्रदान करता है:

  1. खोज निर्देश: grep का उपयोग करके अपने कोडबेस में मौजूदा फ्लैग पैटर्न खोजने के लिए चरण-दर-चरण मार्गदर्शिका।
  2. पैटर्न पहचान: सामान्य पैटर्न की पहचान करता है (उदाहरण के लिए, इम्पोर्ट, क्लाइंट वेरिएबल नाम, विधि नाम, या लपेटने की शैली)।
  3. डिफ़ॉल्ट टेम्पलेट: यदि कोई पैटर्न नहीं मिलता है तो फॉलबैक कोड स्निपेट।
  4. फ्रेमवर्क-विशिष्ट उदाहरण: React, Express, Django और अन्य के लिए विशेष पैटर्न।
  5. एकाधिक पैटर्न: if-ब्लॉक, गार्ड क्लॉज़, हुक, डेकोरेटर, मिडलवेयर, और अधिक।

समर्थित भाषाएं और फ्रेमवर्क:

  • TypeScript/JavaScript: Node.js, React Hooks, Express middleware।
  • Python: FastAPI, Django, Flask decorators।
  • Go: मानक if-ब्लॉक, HTTP middleware।
  • Ruby: Rails controllers।
  • PHP: Laravel controllers।
  • C#: .NET/ASP.NET controllers।
  • Java: Spring Boot।
  • Rust: Actix/Rocket handlers।

पैरामीटर

  • flagName (आवश्यक): कोड लपेटने के लिए फीचर फ्लैग का नाम। उदाहरण के लिए: "new-checkout-flow", या "stripe-integration"
  • language (वैकल्पिक): प्रोग्रामिंग भाषा (यदि प्रदान नहीं की गई है तो fileName से स्वतः पहचाना जाता है)। समर्थित: typescript, javascript, python, go, ruby, php, csharp, java, rust
  • fileName (वैकल्पिक): संशोधित की जा रही फ़ाइल का नाम (भाषा का पता लगाने में मदद करता है)। उदाहरण के लिए: "checkout.ts", "payment.py", या "handler.go"
  • codeContext (वैकल्पिक): मौजूदा पैटर्न का पता लगाने में मदद करने के लिए आसपास का कोड।
  • frameworkHint (वैकल्पिक): विशेष टेम्पलेट के लिए फ्रेमवर्क। उदाहरण के लिए, "React", "Express", "Django", "Rails", या "Spring Boot"

उपयोग उदाहरण

एजेंट प्रॉम्प्ट

Use wrap_change with:
- flagName: "new-checkout-flow"
- fileName: "src/components/checkout.ts"
- frameworkHint: "React"

टूल पेलोड

{
  "flagName": "new-checkout-flow",
  "fileName": "checkout.ts",
  "frameworkHint": "React"
}

टूल आउटपुट

एक व्यापक, मार्कडाउन-स्वरूपित स्ट्रिंग लौटाता है जो उपयोगकर्ता को उनके कोड को लपेटने के तरीके के बारे में मार्गदर्शन करता है। इसमें एक क्विकस्टार्ट, खोज निर्देश, प्लेसहोल्डर के साथ लपेटने के निर्देश, भाषा के लिए सभी उपलब्ध टेम्पलेट और SDK दस्तावेज़ीकरण के लिंक शामिल हैं।

# Feature Flag Wrapping Guide: "new-checkout-flow"

**Language:** TypeScript
**Framework:** React

## Quick Start
[Recommended pattern with import and usage]

## How to Search for Existing Flag Patterns
[Step-by-step Grep instructions]

## How to Wrap Code with Feature Flag
[Wrapping instructions with examples]

## All Available Templates
[If-block, guard clause, hooks, ternary, etc.]

फ्लैग रोलआउट सेट करें

set_flag_rollout टूल फीचर फ्लैग वातावरण पर एक flexibleRollout रणनीति कॉन्फ़िगर करता है। यह रोलआउट प्रतिशत, स्टिकीनेस और वैकल्पिक रणनीति-स्तरीय वेरिएंट सेट करता है। यह फ्लैग को सक्षम नहीं करता है; इसे चालू करने के लिए toggle_flag_environment का उपयोग करें।

कब उपयोग करें

create_flag के साथ फ्लैग बनाने के बाद इस टूल का उपयोग करें ताकि इसे सक्षम करने से पहले ट्रैफ़िक कैसे वितरित किया जाए, यह कॉन्फ़िगर किया जा सके। मौजूदा रोलआउट प्रतिशत को अपडेट करने या वेरिएंट जोड़ने के लिए भी इसका उपयोग करें।

पैरामीटर

  • featureName (आवश्यक): फीचर फ्लैग का नाम।
  • environment (आवश्यक): लक्ष्य वातावरण (उदाहरण के लिए, "production", "development")।
  • rolloutPercentage (आवश्यक): सुविधा प्राप्त करने वाले ट्रैफ़िक का प्रतिशत (0-100)।
  • projectId (वैकल्पिक): प्रोजेक्ट ID (डिफ़ॉल्ट UNLEASH_DEFAULT_PROJECT)।
  • groupId (वैकल्पिक): स्टिकीनेस बकेटिंग कुंजी (डिफ़ॉल्ट सुविधा का नाम)।
  • stickiness (वैकल्पिक): स्टिकीनेस फ़ील्ड (डिफ़ॉल्ट "default")।
  • title (वैकल्पिक): रणनीति के लिए वर्णनात्मक शीर्षक।
  • disabled (वैकल्पिक): रणनीति को अक्षम स्थिति में बनाएं (डिफ़ॉल्ट false)।
  • variants (वैकल्पिक): रणनीति-स्तरीय वेरिएंट की सूची, प्रत्येक के साथ name, weight (0-1000), वैकल्पिक weightType ("variable" या "fix"), stickiness, और payload ({type, value})।

उपयोग उदाहरण

एजेंट प्रॉम्प्ट

Use set_flag_rollout with:
- featureName: "new-checkout-flow"
- environment: "production"
- rolloutPercentage: 25

टूल पेलोड

{
  "featureName": "new-checkout-flow",
  "environment": "production",
  "rolloutPercentage": 25,
  "projectId": "ecommerce",
  "stickiness": "userId"
}

टूल आउटपुट

कॉन्फ़िगर किए गए प्रतिशत, Unleash एडमिन UI में फ्लैग का लिंक, एडमिन API रणनीतियों का URL, और फ्लैग के लिए एक MCP संसाधन लिंक के साथ एक पुष्टिकरण लौटाता है।

फ्लैग स्थिति प्राप्त करें

get_flag_state टूल Unleash एडमिन API से फीचर फ्लैग के वर्तमान मेटाडेटा और वातावरण रणनीतियों को प्राप्त करता है। यह फ्लैग के प्रकार, सक्षम/संग्रहीत स्थिति, इम्प्रेशन डेटा सेटिंग और सक्रिय रणनीतियों और वेरिएंट का प्रति-वातावरण सारांश लौटाता है।

कब उपयोग करें

फ्लैग को संशोधित करने से पहले उसका निरीक्षण करने के लिए, यह जांचने के लिए कि वातावरण में कितनी रणनीतियां सक्रिय हैं, या remove_flag_strategy को कॉल करने से पहले रणनीति ID खोजने के लिए इस टूल का उपयोग करें।

पैरामीटर

  • featureName (आवश्यक): फीचर फ्लैग का नाम।
  • projectId (वैकल्पिक): प्रोजेक्ट ID (डिफ़ॉल्ट UNLEASH_DEFAULT_PROJECT)।
  • environment (वैकल्पिक): परिणामों को एकल वातावरण में फ़िल्टर करें (केस-असंवेदनशील)।

उपयोग उदाहरण

एजेंट प्रॉम्प्ट

Use get_flag_state with:
- featureName: "new-checkout-flow"
- environment: "production"

टूल पेलोड

{
  "featureName": "new-checkout-flow",
  "projectId": "ecommerce",
  "environment": "production"
}

टूल आउटपुट

फ्लैग का एक टेक्स्ट सारांश लौटाता है (प्रकार, सक्षम/संग्रहीत/इम्प्रेशन-डेटा, प्रोजेक्ट, रणनीति गणना के साथ वातावरण सारांश) साथ ही UI और API लिंक। संरचित आउटपुट में सभी वातावरणों और रणनीति विवरणों के साथ पूर्ण फीचर ऑब्जेक्ट शामिल है।

फ्लैग सूचीबद्ध करें

list_flags टूल एक प्रोजेक्ट में फीचर फ्लैग की गणना करता है और पेजिनेशन और सॉर्ट क्रम के साथ एक संरचित इन्वेंट्री लौटाता है। सक्रिय और संग्रहीत फ्लैग अलग-अलग लौटाए जाते हैं: पूर्ण इन्वेंट्री को ऑडिट वर्कफ़्लो के लिए इकट्ठा करने के लिए इसे एक बार archived: false (डिफ़ॉल्ट) के साथ और एक बार archived: true के साथ कॉल करें।

कब उपयोग करें

इस टूल का उपयोग तब करें जब किसी एजेंट को यह पता लगाने की आवश्यकता हो कि कौन से फ्लैग पहले से मौजूद हैं, उदाहरण के लिए किसी प्रोजेक्ट का ऑडिट करना, सफाई के लिए उम्मीदवार ढूंढना, या फ्लैग बनाने या लपेटने से पहले संदर्भ बनाना। यह unleash://projects/{projectId}/feature-flags संसाधन का एजेंट-आह्वान योग्य समकक्ष है (देखें MCP संसाधन)।

पैरामीटर

  • projectId (वैकल्पिक): फ्लैग सूचीबद्ध करने के लिए प्रोजेक्ट (डिफ़ॉल्ट UNLEASH_DEFAULT_PROJECT; जब एकल प्रोजेक्ट मौजूद हो तो स्वतः हल हो जाता है)।
  • archived (वैकल्पिक): सक्रिय फ्लैग के बजाय संग्रहीत फ्लैग सूचीबद्ध करने के लिए true। डिफ़ॉल्ट false। सक्रिय और संग्रहीत फ्लैग एक ही प्रतिक्रिया में नहीं लौटाए जा सकते।
  • limit (वैकल्पिक): प्रति पृष्ठ अधिकतम फ्लैग (डिफ़ॉल्ट: सर्वर पृष्ठ आकार, आमतौर पर 50)।
  • order (वैकल्पिक): फ्लैग नाम के अनुसार सॉर्ट क्रम, asc या desc (डिफ़ॉल्ट: asc)।
  • offset (वैकल्पिक): पेजिनेशन के लिए छोड़े जाने वाले फ्लैग की संख्या (डिफ़ॉल्ट: 0)।

उपयोग उदाहरण

एजेंट प्रॉम्प्ट

Use list_flags with:
- projectId: "ecommerce"
- archived: false

टूल पेलोड

{
  "projectId": "ecommerce",
  "archived": false,
  "limit": 50,
  "order": "asc"
}

टूल आउटपुट

projectId, archived, order, limit, offset, nextOffset, totalFlags, और flags सरणी (प्रत्येक के साथ नाम, प्रकार, प्रोजेक्ट, संग्रहीत स्थिति और लिंक) के साथ एक टेक्स्ट सारांश और संरचित सामग्री लौटाता है। बड़े प्रोजेक्टों के माध्यम से पेज करने के लिए nextOffset का उपयोग करें।

प्रोजेक्ट सूचीबद्ध करें

list_projects टूल कॉन्फ़िगर किए गए टोकन के लिए उपलब्ध Unleash प्रोजेक्टों की गणना करता है, पेजिनेशन और सॉर्ट क्रम के साथ।

कब उपयोग करें

इस टूल का उपयोग तब करें जब लक्ष्य प्रोजेक्ट अज्ञात हो, या जब किसी एजेंट को फ्लैग सूचीबद्ध करने या बनाने से पहले प्रोजेक्ट चुनने की आवश्यकता हो। यह unleash://projects संसाधन का एजेंट-आह्वान योग्य समकक्ष है (देखें MCP संसाधन)।

पैरामीटर

  • limit (वैकल्पिक): प्रति पृष्ठ अधिकतम प्रोजेक्ट (डिफ़ॉल्ट: सर्वर पृष्ठ आकार, आमतौर पर 20)।
  • order (वैकल्पिक): प्रोजेक्ट निर्माण समय के अनुसार सॉर्ट क्रम, asc या desc (डिफ़ॉल्ट: desc, नवीनतम पहले)।
  • offset (वैकल्पिक): पेजिनेशन के लिए छोड़े जाने वाले प्रोजेक्ट की संख्या (डिफ़ॉल्ट: 0)।

उपयोग उदाहरण

एजेंट प्रॉम्प्ट

Use list_projects to see which projects are available.

टूल पेलोड

{
  "limit": 20,
  "order": "desc"
}

टूल आउटपुट

order, limit, offset, nextOffset, totalProjects, और projects सरणी (प्रत्येक के साथ id, नाम, विवरण, मोड, निर्माण समय और URL) के साथ एक टेक्स्ट सारांश और संरचित सामग्री लौटाता है।

फ्लैग वातावरण टॉगल करें

toggle_flag_environment टूल किसी विशिष्ट वातावरण में फीचर फ्लैग को सक्षम या अक्षम करता है। क्रमिक रोलआउट के लिए, सक्षम करने से पहले set_flag_rollout के साथ एक रणनीति कॉन्फ़िगर करें।

कब उपयोग करें

रोलआउट रणनीति कॉन्फ़िगर करने के बाद फ्लैग चालू करने के लिए, या किसी घटना के दौरान या रोलआउट पूरा करने के बाद फ्लैग अक्षम करने के लिए इस टूल का उपयोग करें।

पैरामीटर

  • featureName (आवश्यक): फीचर फ्लैग का नाम।
  • environment (आवश्यक): टॉगल करने के लिए एनवायरनमेंट (उदाहरण के लिए, "production")।
  • enabled (आवश्यक): सक्षम करने के लिए true, अक्षम करने के लिए false
  • projectId (वैकल्पिक): प्रोजेक्ट आईडी (डिफ़ॉल्ट UNLEASH_DEFAULT_PROJECT है)।

उपयोग उदाहरण

एजेंट प्रॉम्प्ट

Use toggle_flag_environment with:
- featureName: "new-checkout-flow"
- environment: "production"
- enabled: true

टूल पेलोड

{
  "featureName": "new-checkout-flow",
  "environment": "production",
  "enabled": true,
  "projectId": "ecommerce"
}

टूल आउटपुट

नई स्थिति की पुष्टि, एनवायरनमेंट का सारांश (सक्षम/अक्षम, स्ट्रैटेजी गिनती), और Unleash एडमिन UI और एडमिन API में फ्लैग के लिंक लौटाता है।

फ्लैग स्ट्रैटेजी हटाएँ

remove_flag_strategy टूल किसी फीचर फ्लैग एनवायरनमेंट से स्ट्रैटेजी कॉन्फ़िगरेशन हटाता है। स्ट्रैटेजी आईडी खोजने के लिए पहले get_flag_state का उपयोग करें।

कब उपयोग करें

इस टूल का उपयोग पुरानी स्ट्रैटेजी को साफ करने के लिए करें, या किसी मौजूदा स्ट्रैटेजी को हटाकर और set_flag_rollout के साथ नई स्ट्रैटेजी कॉन्फ़िगर करके उसे बदलने के लिए करें।

पैरामीटर

  • featureName (आवश्यक): फीचर फ्लैग का नाम।
  • environment (आवश्यक): एनवायरनमेंट जिससे स्ट्रैटेजी हटानी है।
  • strategyId (आवश्यक): हटाने के लिए स्ट्रैटेजी की आईडी (इसे get_flag_state के माध्यम से खोजें)।
  • projectId (वैकल्पिक): प्रोजेक्ट आईडी (डिफ़ॉल्ट UNLEASH_DEFAULT_PROJECT है)।

उपयोग उदाहरण

एजेंट प्रॉम्प्ट

Use get_flag_state to find strategy IDs for "new-checkout-flow" in production,
then use remove_flag_strategy to delete the old strategy.

टूल पेलोड

{
  "featureName": "new-checkout-flow",
  "environment": "production",
  "strategyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "projectId": "ecommerce"
}

टूल आउटपुट

हटाने की पुष्टि, एनवायरनमेंट में शेष स्ट्रैटेजी की गिनती, और Unleash एडमिन UI और एडमिन API में फ्लैग के लिंक लौटाता है।

फ्लैग साफ़ करें

cleanup_flag टूल कोडबेस से फीचर फ्लैग कोड को सुरक्षित रूप से हटाने के लिए चरण-दर-चरण निर्देश उत्पन्न करता है, जबकि वांछित कोड पथ को संरक्षित रखता है।

कब उपयोग करें

इस टूल का उपयोग तब करें जब कोई फीचर फ्लैग अपना जीवनचक्र पूरा कर चुका हो:

  • जब रोलआउट 100% तक पहुँच जाए और फ्लैग की अब आवश्यकता न हो।
  • जब किसी प्रयोगात्मक सुविधा को हटाया जा रहा हो (अक्षम पथ को संरक्षित करें)।
  • जब किल स्विच हटाना हो जो अब आवश्यक नहीं है।
  • पुराने फ्लैग की तकनीकी ऋण सफाई के दौरान।

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

टूल व्यापक सफाई निर्देश लौटाता है जो LLM को मार्गदर्शन देते हैं:

  1. grep पैटर्न का उपयोग करके फ्लैग की सभी घटनाओं को खोजना।
  2. उपयोग पैटर्न की पहचान करना (if-else ब्लॉक, टर्नरी एक्सप्रेशन, गार्ड क्लॉज़, हुक, डेकोरेटर, मिडलवेयर)।
  3. सही कोड पथ को संरक्षित करते हुए फ्लैग जाँच हटाना।
  4. भाषा-विशिष्ट मार्गदर्शन के साथ अप्रयुक्त इम्पोर्ट साफ करना।
  5. सफाई के बाद खोज और परीक्षण चरणों के साथ परिवर्तनों को सत्यापित करना।

यदि preservePath प्रदान नहीं किया गया है, तो टूल आगे बढ़ने से पहले उपयोगकर्ता से पूछने के लिए निर्देश लौटाता है कि कौन सा पथ रखना है।

पैरामीटर

  • flagName (आवश्यक): हटाने के लिए फीचर फ्लैग का नाम (उदाहरण के लिए, "new-checkout-flow")।
  • preservePath (वैकल्पिक): फ्लैग-ऑन कोड पथ रखने के लिए "enabled" (पूर्ण रोलआउट के लिए सामान्य), या फ्लैग-ऑफ पथ रखने के लिए "disabled" (हटाए गए प्रयोगों के लिए)। यदि छोड़ दिया जाता है, तो टूल आपको उपयोगकर्ता से पूछने के लिए संकेत देता है।
  • files (वैकल्पिक): साफ करने के लिए विशिष्ट फ़ाइलें। यदि छोड़ दिया जाता है, तो पूरे कोडबेस की खोज करता है।
  • language (वैकल्पिक): विशेष इम्पोर्ट सफाई मार्गदर्शन के लिए प्रोग्रामिंग भाषा (उदाहरण के लिए, "typescript", "python")। यदि प्रदान नहीं किया गया है तो files से स्वतः पता लगाया जाता है।

उपयोग उदाहरण

एजेंट प्रॉम्प्ट

Use cleanup_flag with:
- flagName: "new-checkout-flow"
- preservePath: "enabled"

टूल पेलोड

{
  "flagName": "new-checkout-flow",
  "preservePath": "enabled",
  "files": ["src/components/checkout.tsx", "src/api/checkout.ts"],
  "language": "typescript"
}

टूल आउटपुट

सफाई के दायरे और संरक्षित पथ को कवर करने वाली मार्कडाउन गाइड, सभी घटनाओं को खोजने के लिए grep कमांड, प्रति-पैटर्न हटाने के निर्देश, भाषा-विशिष्ट इम्पोर्ट सफाई, और सफाई के बाद सत्यापन चरण (पुनः खोज, परीक्षण चलाना, मैन्युअल समीक्षा) लौटाता है।

MCP संसाधन

सर्वर प्रोजेक्ट और फीचर फ्लैग डेटा पढ़ने के लिए MCP संसाधन पंजीकृत करता है। सभी संसाधन JSON लौटाते हैं और 60 सेकंड के लिए कैश किए जाते हैं।

URI टेम्पलेटविवरण
unleash://projects{?limit,order,offset}प्रोजेक्ट सूचीबद्ध करें। डिफ़ॉल्ट पेज आकार: 20, निर्माण समय के अनुसार क्रमबद्ध (नवीनतम पहले)।
unleash://projects/{projectId}/feature-flags{?limit,order,offset}किसी प्रोजेक्ट में फ्लैग सूचीबद्ध करें। डिफ़ॉल्ट पेज आकार: 50, वर्णानुक्रम में क्रमबद्ध।
unleash://projects/{projectId}/feature-flags/{flagName}एकल फीचर फ्लैग मेटाडेटा।

पहले दो टेम्पलेट वैकल्पिक क्वेरी पैरामीटर स्वीकार करते हैं: limit (पेज आकार), order (asc या desc), और offset (पेजिनेशन प्रारंभ)। प्रतिक्रियाओं में fetchedAt, cached, totalProjects या totalFlags, और nextOffset फ़ील्ड शामिल हैं।

संसाधन बनाम टूल: MCP संसाधन एप्लिकेशन-नियंत्रित होते हैं, इसलिए कई क्लाइंट उन्हें केवल उपयोगकर्ता-संचालित UI (उदाहरण के लिए #-उल्लेख) के माध्यम से सतह पर लाते हैं और एजेंट को अपने आप resources/read कॉल करने की अनुमति नहीं देते हैं। जब किसी एजेंट को प्रोग्रामेटिक रूप से प्रोजेक्ट या फ्लैग की गणना करने की आवश्यकता होती है, तो list_projects और list_flags टूल का उपयोग करें, जो टूल इंटरफ़ेस के माध्यम से समान डेटा लौटाते हैं। detect_flag इन्वेंट्री विश्लेषण उसी पथ से होकर गुजरता है।

उदाहरण संसाधन पठन

Read unleash://projects/ecommerce/feature-flags?limit=10&order=asc

ecommerce प्रोजेक्ट में पहले 10 फीचर फ्लैग लौटाता है, वर्णानुक्रम में क्रमबद्ध, पेजिनेशन मेटाडेटा के साथ।

आर्किटेक्चर

सर्वर एक केंद्रित, उद्देश्य-संचालित डिज़ाइन का पालन करता है।

संरचना

src/
├── index.ts                     # Stdio CLI entry point
├── server.ts                    # Transport-agnostic server factory
├── remote.ts                    # HTTP request handler for embedded mode
├── config.ts                    # Configuration loading and validation
├── context.ts                   # Shared runtime context
├── version.ts                   # Version constant
├── unleash/
│   └── client.ts                # Unleash Admin API client
├── tools/
│   ├── types.ts                 # Shared ToolDefinition type
│   ├── createFlag.ts            # create_flag tool
│   ├── evaluateChange.ts        # evaluate_change tool
│   ├── detectFlag.ts            # detect_flag tool
│   ├── wrapChange.ts            # wrap_change tool
│   ├── cleanupFlag.ts           # cleanup_flag tool
│   ├── setFlagRollout.ts        # set_flag_rollout tool
│   ├── getFlagState.ts          # get_flag_state tool
│   ├── toggleFlagEnvironment.ts # toggle_flag_environment tool
│   └── removeFlagStrategy.ts    # remove_flag_strategy tool
├── resources/
│   └── unleashResources.ts      # MCP resource handlers (projects, flags)
├── prompts/
│   └── promptBuilder.ts         # Markdown formatting utilities
├── evaluation/
│   ├── riskPatterns.ts          # Risk assessment patterns
│   └── flagDetectionPatterns.ts # Parent flag detection patterns
├── detection/
│   ├── flagDiscovery.ts         # Flag discovery strategies
│   └── flagScoring.ts           # Scoring and ranking logic
├── knowledge/
│   └── unleashBestPractices.ts  # Best practices knowledge base
├── templates/
│   ├── languages.ts             # Language detection and metadata
│   ├── wrapperTemplates.ts      # Code wrapping templates
│   ├── searchGuidance.ts        # Pattern search instructions
│   └── cleanupGuidance.ts       # Flag cleanup instructions
└── utils/
    ├── errors.ts                # Error normalization
    ├── streaming.ts             # Progress notifications
    └── stdioLogging.ts          # Stdio protocol traffic logging

डिज़ाइन सिद्धांत

  • पतली सतह क्षेत्र: केवल मुख्य क्षमताओं के लिए आवश्यक एंडपॉइंट।
  • उद्देश्य-संचालित: प्रत्येक मॉड्यूल एक विशिष्ट, सु-परिभाषित उद्देश्य प्रदान करता है।
  • स्पष्ट सत्यापन: Zod स्कीमा API कॉल से पहले सभी इनपुट सत्यापित करती हैं।
  • त्रुटि सामान्यीकरण: सभी त्रुटियाँ {code, message, hint} प्रारूप में परिवर्तित होती हैं।
  • प्रगति स्ट्रीमिंग: लंबे समय तक चलने वाले ऑपरेशन दृश्यता प्रदान करते हैं।
  • सर्वोत्तम अभ्यास एकीकरण: Unleash दस्तावेज़ों से मार्गदर्शन टूल विवरण में एम्बेड किया गया है।

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

यह अनुभाग सभी कॉन्फ़िगरेशन विकल्पों के लिए त्वरित संदर्भ प्रदान करता है।

पर्यावरण चर:

  • UNLEASH_BASE_URL: आपका Unleash इंस्टेंस URL (आवश्यक)। https://your-instance.getunleash.io और https://your-instance.getunleash.io/api दोनों स्वीकार किए जाते हैं — सर्वर अंत में /api को सामान्य कर देता है यदि मौजूद हो, ताकि आप वही मान पेस्ट कर सकें जो अधिकांश Unleash SDK अपेक्षा करते हैं।
  • UNLEASH_PAT: व्यक्तिगत एक्सेस टोकन (आवश्यक)।
  • UNLEASH_DEFAULT_PROJECT: डिफ़ॉल्ट प्रोजेक्ट आईडी जो MCP को उपयोग करनी चाहिए (वैकल्पिक)।

CLI फ्लैग:

  • --dry-run: वास्तविक API कॉल किए बिना ऑपरेशन का अनुकरण करें।
  • --log-level: लॉगिंग वर्बोसिटी सेट करें (debug, info, warn, error)।

सर्वोत्तम अभ्यास

यह सर्वर आधिकारिक दस्तावेज़ीकरण से Unleash सर्वोत्तम अभ्यासों को प्रोत्साहित करता है:

फ्लैग जीवनचक्र

  1. इरादे के साथ बनाएँ: उद्देश्य को संकेत देने के लिए सही फ्लैग प्रकार चुनें।
  2. स्पष्ट रूप से दस्तावेज़ित करें: विवरण लिखें जो "क्यों" समझाते हैं।
  3. सफाई की योजना बनाएँ: फीचर फ्लैग अस्थायी होते हैं; उनके हटाने की योजना बनाएँ।
  4. उपयोग की निगरानी करें: महत्वपूर्ण फ्लैग के लिए इम्प्रेशन डेटा सक्षम करें।

फ्लैग प्रकार

  • रिलीज़ फ्लैग: क्रमिक फीचर रोलआउट के लिए (पूर्ण रोलआउट के बाद हटाएँ)।
  • प्रयोग फ्लैग: A/B परीक्षणों के लिए (विश्लेषण के बाद हटाएँ)।
  • ऑपरेशनल फ्लैग: सिस्टम व्यवहार के लिए (लंबे समय तक चलने वाले, समय-समय पर समीक्षा करें)।
  • किल स्विच: आपातकालीन नियंत्रण के लिए (जब तक फीचर स्थिर न हो जाए तब तक बनाए रखें)।
  • अनुमति फ्लैग: एक्सेस नियंत्रण के लिए (लंबे समय तक चलने वाले, अनुमतियों की समीक्षा करें)।

नामकरण परंपराएँ

  • kebab-case का उपयोग करें: new-checkout-flow
  • वर्णनात्मक बनें: enable-ai-recommendations न कि flag1
  • आवश्यकता होने पर दायरा शामिल करें: mobile-push-notifications

API संदर्भ

यह सर्वर Unleash एडमिन API का उपयोग करता है। पूर्ण API दस्तावेज़ीकरण के लिए, देखें:

उपयोग किए गए एंडपॉइंट

  • GET /api/admin/projects - प्रोजेक्ट सूचीबद्ध करें
  • GET /api/admin/projects/{projectId}/features - फीचर फ्लैग सूचीबद्ध करें
  • POST /api/admin/projects/{projectId}/features - फीचर फ्लैग बनाएँ
  • GET /api/admin/projects/{projectId}/features/{featureName} - फ्लैग विवरण प्राप्त करें
  • POST /api/admin/projects/{projectId}/features/{featureName}/environments/{environment}/strategies - रोलआउट स्ट्रैटेजी जोड़ें
  • DELETE /api/admin/projects/{projectId}/features/{featureName}/environments/{environment}/strategies/{strategyId} - स्ट्रैटेजी हटाएँ
  • POST /api/admin/projects/{projectId}/features/{featureName}/environments/{environment}/on - फ्लैग सक्षम करें
  • POST /api/admin/projects/{projectId}/features/{featureName}/environments/{environment}/off - फ्लैग अक्षम करें

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

कॉन्फ़िगरेशन समस्याएँ

त्रुटि: "UNLEASH_BASE_URL must be a valid URL": सुनिश्चित करें कि आपका बेस URL पूर्ण है, जिसमें प्रोटोकॉल शामिल है। उदाहरण के लिए, https://app.unleash-hosted.com/instance। कोई भी अंतिम स्लैश हटाएँ।

त्रुटि: "UNLEASH_PAT is required": जाँचें कि आपकी .env फ़ाइल मौजूद है और उसमें UNLEASH_PAT={{your-personal-access-token}} है। सत्यापित करें कि टोकन Unleash में मान्य है।

API समस्याएँ

त्रुटि: "HTTP_401": आपका व्यक्तिगत एक्सेस टोकन अमान्य या समाप्त हो सकता है। प्रोफ़ाइल > प्रोफ़ाइल सेटिंग्स देखें > व्यक्तिगत API टोकन > नया टोकन के अंतर्गत नया टोकन बनाएँ।

त्रुटि: "HTTP_403": आपके टोकन के पास इस प्रोजेक्ट में फ्लैग बनाने की अनुमति नहीं है। Unleash में अपनी भूमिका और अनुमतियों की समीक्षा करें।

त्रुटि: "HTTP_404": प्रोजेक्ट आईडी मौजूद नहीं है। Unleash एडमिन UI में प्रोजेक्ट आईडी की पुष्टि करें।

त्रुटि: "HTTP_409": इस नाम वाला फ्लैग पहले से ही प्रोजेक्ट में मौजूद है। एक अलग नाम का उपयोग करें या मौजूदा फ्लैग का पुन: उपयोग करें।

लाइसेंस

MIT

योगदान

यह एक केंद्रित दायरे वाला उद्देश्य-संचालित प्रोजेक्ट है। योगदान को:

  • मौजूदा टूल सतह और MCP संसाधन मॉडल के साथ संरेखित होना चाहिए।
  • पतली, उद्देश्य-संचालित आर्किटेक्चर बनाए रखना चाहिए।
  • Unleash सर्वोत्तम अभ्यासों का पालन करना चाहिए।
  • स्पष्ट दस्तावेज़ीकरण शामिल करना चाहिए।