Unleash MCP Server

आधिकारिक

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

दस्तावेज़

Unleash MCP सर्वर

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

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

अवलोकन

यह MCP सर्वर ऐसे उपकरण प्रदान करता है जो Unleash एडमिन 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: अंत में, यह उपकरण नए फ्लैग को लागू करने के लिए भाषा-विशिष्ट कोड प्रदान करता है।

मुख्य कार्यप्रवाह उपकरणों पर अधिक जानकारी उपकरण संदर्भ अनुभाग में देखें।

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

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

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

आरंभ करें

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

एजेंट सेटअप

आप 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 सर्वर को स्थानीय रूप से चलाने के बजाय, आप HTTP पर सीधे अपने Unleash इंस्टेंस के अंतर्निहित दूरस्थ MCP सर्वर से जुड़ सकते हैं। यह स्ट्रीमेबल HTTP ट्रांसपोर्ट का उपयोग करता है — किसी स्थानीय प्रक्रिया की आवश्यकता नहीं है।

नोट: दूरस्थ 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 इंस्टेंस में लॉग इन करें, प्रोफ़ाइल > व्यक्तिगत एक्सेस टोकन पर जाएं, और एक नया टोकन बनाएं।

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 --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 [email protected] --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 चैनल उपसर्गों के साथ इस एकल फ़ाइल में टी किए जाते हैं। प्रोटोकॉल संदेश अभी भी सामान्य रूप से stdout पर प्रवाहित होते हैं।

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

जब कोई MCP क्लाइंट आरंभीकरण के दौरान clientInfo भेजता है (Claude Code, Cursor, Copilot, Windsurf, Codex, Kiro, और अन्य अनुरूप क्लाइंट), तो सर्वर आउटबाउंड Unleash एडमिन 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 (वैकल्पिक): एनालिटिक्स ट्रैकिंग सक्षम करें (डिफ़ॉल्ट रूप से गलत)।

उपयोग उदाहरण

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

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 एडमिन 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 (string): रिपॉजिटरी का नाम या पथ।
  • branch (string): वर्तमान शाखा का नाम।
  • files (array): बदली जा रही फ़ाइलों की सूची।
  • description (string): परिवर्तन का विवरण।
  • riskLevel (enum): low, medium, high, या critical, जैसा कि उपयोगकर्ता द्वारा मूल्यांकित।
  • codeContext (string): मूल फ़्लैग पहचान के लिए आसपास का कोड।

उपयोग उदाहरण

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

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

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 मिडलवेयर।
  • Python: FastAPI, Django, Flask डेकोरेटर।
  • Go: मानक If-ब्लॉक, HTTP मिडलवेयर।
  • Ruby: Rails नियंत्रक।
  • PHP: Laravel नियंत्रक।
  • C#: .NET/ASP.NET नियंत्रक।
  • Java: Spring Boot।
  • Rust: Actix/Rocket हैंडलर।

पैरामीटर

  • 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 (वैकल्पिक): प्रोजेक्ट आईडी (डिफ़ॉल्ट 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 को कॉल करने से पहले रणनीति आईडी खोजने के लिए इस टूल का उपयोग करें।

पैरामीटर

  • featureName (आवश्यक): फ़ीचर फ़्लैग का नाम।
  • projectId (वैकल्पिक): प्रोजेक्ट आईडी (डिफ़ॉल्ट 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 सरणी (प्रत्येक में आईडी, नाम, विवरण, मोड, निर्माण समय और 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

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

  • पतला सतह क्षेत्र: केवल मुख्य क्षमताओं के लिए आवश्यक एंडपॉइंट।
  • उद्देश्य-संचालित: प्रत्येक मॉड्यूल एक विशिष्ट, सुपरिभाषित उद्देश्य पूरा करता है।
  • स्पष्ट सत्यापन: API कॉल से पहले Zod स्कीमा सभी इनपुट मान्य करते हैं।
  • त्रुटि सामान्यीकरण: सभी त्रुटियाँ {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 परीक्षणों के लिए (विश्लेषण के बाद हटाएँ)।
  • संचालन फ्लैग: सिस्टम व्यवहार के लिए (लंबे समय तक चलने वाले, समय-समय पर समीक्षा करें)।
  • किल स्विच: आपातकालीन नियंत्रण के लिए (सुविधा स्थिर होने तक बनाए रखें)।
  • अनुमति फ्लैग: एक्सेस नियंत्रण के लिए (लंबे समय तक चलने वाले, अनुमतियों की समीक्षा करें)।

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

  • केबैब-केस का उपयोग करें: 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 एक मान्य URL होना चाहिए": सुनिश्चित करें कि आपका बेस URL प्रोटोकॉल सहित पूर्ण है। उदाहरण के लिए, https://app.unleash-hosted.com/instance। किसी भी अनुगामी स्लैश को हटा दें।

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

API समस्याएँ

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

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

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

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

लाइसेंस

MIT

योगदान

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

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