Appcircle MCP Server

आधिकारिक

Appcircle का आध

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

  • बिल्ड प्रोफ़ाइलों की सूची बनाएं और खोजेंget_build_profiles के साथ पेजिनेटेड बिल्ड प्रोफ़ाइल प्राप्त करें और नाम से फ़िल्टर करें।
  • बिल्ड कॉन्फ़िगरेशन और वर्कफ़्लो का निरीक्षण करेंget_build_profile_details, get_build_configuration_details, और get_workflow_detail का उपयोग करके किसी विशिष्ट बिल्ड प्रोफ़ाइल, उसके कॉन्फ़िगरेशन और वर्कफ़्लो का विवरण प्राप्त करें।
  • हस्ताक्षर पहचान की समीक्षा करेंget_certificates, get_keystores, get_provisioning_profiles, और get_bundle_identifiers के माध्यम से प्रमाणपत्र, कीस्टोर, प्रोविज़निंग प्रोफ़ाइल और बंडल पहचानकर्ताओं की सूची बनाएं।
  • परीक्षण और एंटरप्राइज़ वितरण स्थिति की जाँच करेंget_distribution_profiles और get_distribution_profile_details के साथ वितरण प्रोफ़ाइल और उनके ऐप संस्करण प्राप्त करें, या get_store_profiles के माध्यम से एंटरप्राइज़ स्टोर प्रोफ़ाइल का निरीक्षण करें।
  • CI/CD स्वास्थ्य और बिल्ड इतिहास रिपोर्ट तैयार करें — एकत्रित रुझानों और मूल-कारण विश्लेषण के लिए get_build_insights_report का उपयोग करें, या कच्चे बिल्ड रिकॉर्ड के लिए get_build_history_report का उपयोग करें।

दस्तावेज़

Appcircle MCP सर्वर

Appcircle के लिए MCP सर्वर: किसी भी MCP-सक्षम क्लाइंट (Claude Desktop, Cursor, VS Code, आदि) को बिल्ड, साइनिंग आइडेंटिटीज़, परीक्षण वितरण, एंटरप्राइज़ ऐप स्टोर, स्टोर्स पर प्रकाशित करें और रिपोर्टिंग उपकरण प्रदान करता है। Appcircle MCP सर्वर AI उपकरणों और Appcircle के बीच एक सेतु का काम करता है; इस प्रकार, AI एजेंट, सहायक और चैटबॉट संरचित, शासित और कार्य-स्तरीय उपकरणों के माध्यम से Appcircle संसाधनों तक सुरक्षित रूप से पहुँच और सहभागिता कर सकते हैं।

उपयोग के मामले

  • CI/CD और वर्कफ़्लो इंटेलिजेंस: पाइपलाइन रन की निगरानी करें, रिलीज़ स्थिति को ट्रैक करें, और अपने मोबाइल CI/CD वर्कफ़्लो में अंतर्दृष्टि प्राप्त करें।
  • कॉन्फ़िगरेशन और पर्यावरण अंतर्दृष्टि: यह समझने के लिए बिल्ड कॉन्फ़िगरेशन और साइनिंग सेटअप की क्वेरी करें कि कोई प्रोजेक्ट कैसे कॉन्फ़िगर किया गया है और समस्याएँ कहाँ से उत्पन्न हो सकती हैं।
  • रिपोर्टिंग और परिचालन अंतर्दृष्टि: CI स्थिरता, आवर्ती समस्याओं, पाइपलाइन प्रदर्शन और समग्र CI/CD स्वास्थ्य का सारांश तैयार करें।

संचालन विधियाँ

आप MCP सर्वर का चार तरीकों से उपयोग कर सकते हैं:

विधिसारांश
1. दूरस्थ होस्टhttps://mcp.appcircle.io. से कनेक्ट करें। कोई स्थानीय इंस्टॉल नहीं; आपका क्लाइंट प्रत्येक अनुरोध पर आपका Appcircle टोकन (जैसे Authorization: Bearer <token>) भेजता है।
2. स्थानीय (stdio)स्रोत से सर्वर चलाएँ: रेपो क्लोन करें, वैकल्पिक रूप से venv का उपयोग करें, फिर appcircle-mcp चलाएँ (डिफ़ॉल्ट ट्रांसपोर्ट stdio है)। Python और pip आवश्यक है। वातावरण में APPCIRCLE_ACCESS_TOKEN सेट करें। आपका MCP क्लाइंट सर्वर को एक उप-प्रक्रिया के रूप में चलाता है।
3. स्थानीय (streamable-http)HTTP पर स्थानीय रूप से सर्वर चलाएँ: --transport streamable-http और वैकल्पिक रूप से --host / --port (जैसे appcircle-mcp --transport streamable-http --host 127.0.0.1 --port 8000) का उपयोग करें। क्लाइंट उस URL से कनेक्ट होते हैं और अनुरोध में अपना टोकन भेजते हैं।
4. स्थानीय (Docker)अपनी मशीन पर आधिकारिक Docker इमेज चलाएँ। Docker आवश्यक है। इमेज के डिफ़ॉल्ट पोर्ट का उपयोग करें या --port से ओवरराइड करें; सटीक उपयोग के लिए इमेज दस्तावेज़ देखें।

विस्तृत क्लाइंट कॉन्फ़िगरेशन (Cursor, Claude, आदि) समर्पित इंस्टॉलेशन गाइड में रहता है; यह खंड केवल एक उच्च-स्तरीय सारांश है।

इंस्टॉलेशन

क्लाइंट-विशिष्ट सेटअप गाइड:

  • Claude एप्लिकेशन - Claude Desktop और Claude Code CLI के लिए इंस्टॉलेशन गाइड।
  • Cursor IDE - Cursor IDE के लिए इंस्टॉलेशन गाइड।
  • Codex - Codex ऐप और Codex CLI के लिए इंस्टॉलेशन गाइड।
  • Antigravity IDE - Antigravity IDE के लिए इंस्टॉलेशन गाइड।
  • VS Code (GitHub Copilot) - GitHub Copilot के साथ VS Code के लिए इंस्टॉलेशन गाइड।
  • Windsurf IDE - Windsurf IDE के लिए इंस्टॉलेशन गाइड।
  • Gemini CLI - Gemini CLI के लिए इंस्टॉलेशन गाइड।
  • GitHub Copilot CLI - GitHub Copilot CLI के लिए इंस्टॉलेशन गाइड।

कॉन्फ़िगरेशन (पर्यावरण चर)

चरआवश्यकविवरण
APPCIRCLE_ACCESS_TOKENहाँ (केवल stdio)Appcircle API एक्सेस टोकन। stdio ट्रांसपोर्ट का उपयोग करते समय आवश्यक। streamable-http के लिए, प्रत्येक क्लाइंट अपना स्वयं का टोकन भेजता है। टोकन प्राप्त करने के तरीके के लिए टोकन प्राप्त करना देखें।
APPCIRCLE_API_URLनहींAPI आधार URL (डिफ़ॉल्ट: https://api.appcircle.io स्व-होस्ट किए गए उपयोगकर्ताओं के लिए भिन्न हो सकता है)।
APPCIRCLE_MCP_ALLOWED_HOSTनहीं (केवल streamable-http)MCP सर्वर के लिए सार्वजनिक होस्टनाम (जैसे mcp.appcircle.io)। इसे तब सेट करें जब रिवर्स प्रॉक्सी के पीछे तैनात किया जा रहा हो ताकि सर्वर क्लाइंट से Host हेडर स्वीकार करे। लोकलहोस्ट के लिए छोड़ दें।
APPCIRCLE_MCP_PORTनहीं (केवल streamable-http)HTTP सर्वर के लिए बाइंड पोर्ट (डिफ़ॉल्ट: 8000)। यदि प्रदान किया गया हो तो --port द्वारा ओवरराइड किया जाता है। ऑन-प्रिमाइसेस या Docker के लिए उपयोगी जब एक विशिष्ट पोर्ट की आवश्यकता हो।
LOG_LEVELनहींलॉगिंग स्तर, जैसे DEBUG, INFO (डिफ़ॉल्ट: INFO)।
APPCIRCLE_EXCLUDED_TOOLSETSनहींबहिष्कृत करने के लिए अल्पविराम-पृथक टूलसेट (जैसे build_module,report)। नीचे टूलसेट देखें।

इन्हें अपने शेल में या अपने MCP क्लाइंट के कॉन्फ़िगरेशन में सेट करें।

टूलसेट

उपलब्ध टूलसेट

उपकरणों के निम्नलिखित सेट उपलब्ध हैं:

टूलसेटविवरण
build_moduleबिल्ड प्रोफ़ाइल, कॉन्फ़िगरेशन, वर्कफ़्लो, कमिट और पाइपलाइन संचालन
signing_identitiesसाइनिंग आइडेंटिटीज़ और बंडल आइडेंटिफ़ायर
testing_distributionपरीक्षण वितरण प्रोफ़ाइल और वितरण विवरण
publish_to_storesप्रकाशन प्रोफ़ाइल और स्टोर प्रकाशन संचालन
enterprise_app_storeएंटरप्राइज़ ऐप स्टोर प्रोफ़ाइल और स्टोर विवरण
reportरिपोर्टिंग: बिल्ड इतिहास, वितरण, साइनिंग, प्रकाशन स्थिति और संबंधित रिपोर्ट

आप एक या अधिक टूलसेट को बाहर कर सकते हैं ताकि उनके उपकरण पंजीकृत न हों। बहिष्करण CLI तर्कों या APPCIRCLE_EXCLUDED_TOOLSETS पर्यावरण चर के माध्यम से सेट किए जा सकते हैं; दोनों को मिला दिया जाता है (संघ)।

  • CLI: --exclude toolset1 toolset2 या --exclude-toolsets toolset1,toolset2
  • Env: APPCIRCLE_EXCLUDED_TOOLSETS=build_module,report

बहिष्करण के साथ उदाहरण MCP कॉन्फ़िग (Cursor / Claude Desktop):

{
  "mcpServers": {
    "appcircle": {
      "command": "appcircle-mcp",
      "args": ["--exclude", "report"]
    }
  }
}

उपकरण

उपकरण MCP tools/list के माध्यम से उजागर किए जाते हैं। नीचे दिया गया संदर्भ टूलसेट द्वारा सभी उपकरणों को सूचीबद्ध करता है; प्रतिक्रिया आकार और उदाहरणों के लिए docs/tool_contract.md देखें।

Build
  • get_build_profiles - वर्तमान संगठन के लिए बिल्ड प्रोफ़ाइल प्राप्त करें (पृष्ठांकित)। वैकल्पिक रूप से प्रोफ़ाइल नाम से फ़िल्टर करें।

    • पहुँच स्तर: पढ़ें
    • page: पृष्ठ संख्या (1-आधारित)। डिफ़ॉल्ट: 1. (संख्या, वैकल्पिक)
    • size: पृष्ठ आकार (1-100)। डिफ़ॉल्ट: 25. 100 से ऊपर के मान 100 पर सीमित हैं। (संख्या, वैकल्पिक)
    • search: नाम से प्रोफ़ाइल फ़िल्टर करने के लिए वैकल्पिक खोज शब्द (केस-असंवेदनशील आंशिक मिलान)। (स्ट्रिंग, वैकल्पिक)
  • get_build_profile_details - ID द्वारा एकल बिल्ड प्रोफ़ाइल प्राप्त करें, वैकल्पिक रूप से इसके बिल्ड कॉन्फ़िगरेशन सहित।

    • पहुँच स्तर: पढ़ें
    • profile_id: बिल्ड प्रोफ़ाइल ID (जैसे UUID)। (स्ट्रिंग, आवश्यक)
    • configurations: यदि सत्य है, तो प्रोफ़ाइल के बिल्ड कॉन्फ़िगरेशन भी प्राप्त करें। डिफ़ॉल्ट: असत्य। (बूलियन, वैकल्पिक)
  • get_build_configuration_details - प्रोफ़ाइल ID और कॉन्फ़िगरेशन ID द्वारा एकल बिल्ड कॉन्फ़िगरेशन प्राप्त करें।

    • पहुँच स्तर: पढ़ें
    • profile_id: बिल्ड प्रोफ़ाइल ID (जैसे UUID)। (स्ट्रिंग, आवश्यक)
    • configuration_id: बिल्ड कॉन्फ़िगरेशन ID (जैसे UUID)। (स्ट्रिंग, आवश्यक)
  • get_build_profile_workflows - प्रोफ़ाइल ID द्वारा बिल्ड प्रोफ़ाइल के लिए वर्कफ़्लो प्राप्त करें।

    • पहुँच स्तर: पढ़ें
    • profile_id: बिल्ड प्रोफ़ाइल ID (जैसे UUID)। (स्ट्रिंग, आवश्यक)
  • get_workflow_detail - बिल्ड प्रोफ़ाइल ID और वर्कफ़्लो ID द्वारा एकल वर्कफ़्लो प्राप्त करें।

    • पहुँच स्तर: पढ़ें
    • profile_id: बिल्ड प्रोफ़ाइल ID (जैसे UUID)। (स्ट्रिंग, आवश्यक)
    • workflow_id: वर्कफ़्लो ID (जैसे UUID)। (स्ट्रिंग, आवश्यक)
  • get_commits_by_branch - बिल्ड शाखा के लिए कमिट प्राप्त करें (पृष्ठांकित)।

    • पहुँच स्तर: पढ़ें
    • branch_id: शाखा ID (जैसे UUID)। (स्ट्रिंग, आवश्यक)
    • page: पृष्ठ संख्या (1-आधारित)। यदि आकार के साथ प्रदान किया जाता है, तो पृष्ठांकन सक्षम करता है। डिफ़ॉल्ट: 1. (संख्या, वैकल्पिक)
    • size: पृष्ठ आकार। यदि पृष्ठ के साथ प्रदान किया जाता है, तो पृष्ठांकन सक्षम करता है। डिफ़ॉल्ट: 25, अधिकतम 100। (संख्या, वैकल्पिक)
  • get_commit_details - कमिट ID (UUID) या कमिट हैश (git SHA) द्वारा एकल कमिट प्राप्त करें। या तो commit_id या commit_hash प्रदान करें, दोनों नहीं।

    • पहुँच स्तर: पढ़ें
    • commit_id: कमिट ID (UUID)। (स्ट्रिंग, वैकल्पिक)
    • commit_hash: कमिट हैश (git SHA)। (स्ट्रिंग, वैकल्पिक)
Signing Identities
  • get_bundle_identifiers - संगठन के लिए सभी बंडल आइडेंटिफ़ायर प्राप्त करें (iOS/macOS ऐप बंडल ID)।

    • पहुँच स्तर: पढ़ें
    • कोई पैरामीटर नहीं।
  • get_certificates - संगठन के लिए सभी साइनिंग प्रमाणपत्र प्राप्त करें। संवेदनशील फ़ील्ड (p12Password, p12Binary, metaData, thumbprint) छोड़े गए हैं।

    • पहुँच स्तर: पढ़ें
    • कोई पैरामीटर नहीं।
  • get_keystores - संगठन के लिए सभी कीस्टोर प्राप्त करें (जैसे Android साइनिंग कीस्टोर)। संवेदनशील फ़ील्ड (password, aliasPassword, binary, checkSum, sha256FingerPrint) छोड़े गए हैं।

    • पहुँच स्तर: पढ़ें
    • कोई पैरामीटर नहीं।
  • get_provisioning_profiles - संगठन के लिए प्रोविज़निंग प्रोफ़ाइल प्राप्त करें (जैसे iOS/macOS)। संवेदनशील/बड़े फ़ील्ड (binary, metaData, certificateThumbPrints, provisionedDevices, connectApiKeyId) छोड़े गए हैं। वैकल्पिक रूप से ऐप (बंडल) ID द्वारा फ़िल्टर करें।

    • पहुँच स्तर: पढ़ें
    • app_id: प्रोविज़निंग प्रोफ़ाइल को फ़िल्टर करने के लिए वैकल्पिक ऐप (बंडल) ID (जैसे com.example.app)। (स्ट्रिंग, वैकल्पिक)
Testing Distribution
  • get_distribution_profiles - वर्तमान संगठन के लिए परीक्षण वितरण प्रोफ़ाइल प्राप्त करें (पृष्ठांकित)। वैकल्पिक रूप से प्रोफ़ाइल नाम से फ़िल्टर करें।

    • पहुँच स्तर: पढ़ें
    • page: पृष्ठ संख्या (1-आधारित)। डिफ़ॉल्ट: 1. (संख्या, वैकल्पिक)
    • size: पृष्ठ आकार (1-100)। डिफ़ॉल्ट: 25, अधिकतम 100। (संख्या, वैकल्पिक)
    • search: नाम से प्रोफ़ाइल फ़िल्टर करने के लिए वैकल्पिक खोज शब्द। (स्ट्रिंग, वैकल्पिक)
  • get_distribution_profile_details - ID द्वारा एकल परीक्षण वितरण प्रोफ़ाइल प्राप्त करें (वैकल्पिक ऐप संस्करण पृष्ठांकन के साथ)।

    • पहुँच स्तर: पढ़ें
    • profile_id: वितरण प्रोफ़ाइल ID (जैसे UUID)। (स्ट्रिंग, आवश्यक)
    • page: ऐप संस्करणों के लिए पृष्ठ संख्या (1-आधारित)। डिफ़ॉल्ट: 1. (संख्या, वैकल्पिक)
    • size: ऐप संस्करणों के लिए पृष्ठ आकार (1-100)। डिफ़ॉल्ट: 25, अधिकतम 100। (संख्या, वैकल्पिक)
Publish to Stores
  • get_publish_profiles - किसी दिए गए प्लेटफ़ॉर्म प्रकार के लिए वर्तमान संगठन के लिए प्रकाशन प्रोफ़ाइल प्राप्त करें (पृष्ठांकित)। वैकल्पिक रूप से प्रवाह स्थिति द्वारा फ़िल्टर करें।

    • पहुँच स्तर: पढ़ें
    • platform_type: प्रकाशन प्रोफ़ाइल का प्लेटफ़ॉर्म प्रकार ("ios" या "android")। (स्ट्रिंग, आवश्यक)
    • page: पृष्ठ संख्या (1-आधारित)। डिफ़ॉल्ट: 1. (संख्या, वैकल्पिक)
    • size: पृष्ठ आकार (1-100)। डिफ़ॉल्ट: 25, अधिकतम 100। (संख्या, वैकल्पिक)
    • flow_status: फ़िल्टर करने के लिए वैकल्पिक प्रवाह स्थिति कोड (जैसे 0=सफलता, 1=विफल, 91=चल रहा है)। (संख्या, वैकल्पिक)
  • get_publish_profile_details - प्लेटफ़ॉर्म प्रकार और ID द्वारा एकल प्रकाशन प्रोफ़ाइल प्राप्त करें (वैकल्पिक ऐप संस्करण पृष्ठांकन के साथ)।

    • पहुँच स्तर: पढ़ें
    • platform_type: प्लेटफ़ॉर्म प्रकार ("ios" या "android")। (स्ट्रिंग, आवश्यक)
    • profile_id: प्रकाशन प्रोफ़ाइल ID (जैसे UUID)। (स्ट्रिंग, आवश्यक)
    • page: ऐप संस्करणों के लिए पृष्ठ संख्या (1-आधारित)। डिफ़ॉल्ट: 1. (संख्या, वैकल्पिक)
    • size: ऐप संस्करणों के लिए पृष्ठ आकार (1-100)। डिफ़ॉल्ट: 25, अधिकतम 100। (संख्या, वैकल्पिक)
Enterprise App Store
  • get_store_profiles - वर्तमान संगठन के लिए एंटरप्राइज़ ऐप स्टोर प्रोफ़ाइल प्राप्त करें (पृष्ठांकित)।

    • पहुँच स्तर: पढ़ें
    • page: पृष्ठ संख्या (1-आधारित)। डिफ़ॉल्ट: 1. (संख्या, वैकल्पिक)
    • size: पृष्ठ आकार (1-100)। डिफ़ॉल्ट: 25, अधिकतम 100। (संख्या, वैकल्पिक)
  • get_store_profile_details - ID द्वारा एकल एंटरप्राइज़ ऐप स्टोर प्रोफ़ाइल प्राप्त करें (वैकल्पिक ऐप संस्करण पृष्ठांकन के साथ)।

    • पहुँच स्तर: पढ़ें
    • profile_id: एंटरप्राइज़ ऐप स्टोर प्रोफ़ाइल ID (जैसे UUID)। (स्ट्रिंग, आवश्यक)
    • page: ऐप संस्करणों के लिए पृष्ठ संख्या (1-आधारित)। डिफ़ॉल्ट: 1. (संख्या, वैकल्पिक)
    • size: ऐप संस्करणों के लिए पृष्ठ आकार (1-100)। डिफ़ॉल्ट: 25, अधिकतम 100। (संख्या, वैकल्पिक)
Report - **get_build_history_report** - बिल्ड इतिहास रिपोर्ट प्राप्त करें, वैकल्पिक रूप से दिनांक सीमा, बिल्ड प्रोफ़ाइल और संगठन द्वारा फ़िल्टर की गई। पृष्ठांकित। - **पहुँच स्तर:** पढ़ें - `start_date`: वैकल्पिक प्रारंभ तिथि (YYYY-MM-DD)। (स्ट्रिंग, वैकल्पिक) - `end_date`: वैकल्पिक समाप्ति तिथि (YYYY-MM-DD)। (स्ट्रिंग, वैकल्पिक) - `page`: पृष्ठ संख्या (डिफ़ॉल्ट: 1)। (संख्या, वैकल्पिक) - `size`: प्रति पृष्ठ आइटम (1-100, डिफ़ॉल्ट: 50)। (संख्या, वैकल्पिक) - `build_profile_name`: बिल्ड प्रोफ़ाइल नाम से फ़िल्टर करें। (स्ट्रिंग, वैकल्पिक) - `organization_id`: संगठन UUID द्वारा फ़िल्टर करें। (स्ट्रिंग, वैकल्पिक)
  • get_build_insights_report - बिल्ड इतिहास पर एक परिकलित बिल्ड इनसाइट्स रिपोर्ट (स्वास्थ्य स्नैपशॉट + रुझान, मूल कारण, आर्टिफैक्ट स्वास्थ्य, वर्कफ़्लो गुणवत्ता, कतार समय, और परिपक्वता मूल्यांकन विश्लेषण) प्राप्त करें, सर्वर-साइड पर एकत्रित। get_build_history_report के विपरीत, यह आंतरिक रूप से प्रत्येक पृष्ठ प्राप्त करता है और कच्चे रिकॉर्ड के बजाय छोटे पूर्व-एकत्रित परिणाम लौटाता है।

    • पहुँच स्तर: पढ़ें
    • start_date: वर्तमान अवधि के लिए वैकल्पिक प्रारंभ तिथि (YYYY-MM-DD)। डिफ़ॉल्ट: पिछले 30 दिन। (स्ट्रिंग, वैकल्पिक)
    • end_date: वर्तमान अवधि के लिए वैकल्पिक समाप्ति तिथि (YYYY-MM-DD)। (स्ट्रिंग, वैकल्पिक)
    • sections: गणना करने के लिए अनुभागों की वैकल्पिक सूची: health_snapshot, root_cause, artifact_health, workflow_quality, queue_time, maturity_assessment। डिफ़ॉल्ट: सभी छह। (स्ट्रिंग की सरणी, वैकल्पिक)
    • include_sub_orgs: यदि सत्य है, तो टोकन के अपने संगठन में फ़िल्टर करने के बजाय इतिहास-व्युत्पन्न मीट्रिक में क्रॉस-ऑर्ग बिल्ड रिकॉर्ड रखें। डिफ़ॉल्ट: असत्य। (बूलियन, वैकल्पिक)
  • get_distribution_app_version_report - वितरित ऐप संस्करणों के लिए दैनिक उपयोग रिपोर्ट प्राप्त करें। पृष्ठांकित; प्रोफ़ाइल, OS, संगठन द्वारा फ़िल्टर का समर्थन करता है।

    • पहुँच स्तर: पढ़ें
    • start_date: वैकल्पिक प्रारंभ तिथि (YYYY-MM-DD)। (स्ट्रिंग, वैकल्पिक)
    • end_date: वैकल्पिक समाप्ति तिथि (YYYY-MM-DD)। (स्ट्रिंग, वैकल्पिक)
    • page: पृष्ठ संख्या (डिफ़ॉल्ट: 1)। (संख्या, वैकल्पिक)
    • size: प्रति पृष्ठ आइटम (1-100, डिफ़ॉल्ट: 50)। (संख्या, वैकल्पिक)
    • profile_name: वितरण प्रोफ़ाइल नाम से फ़िल्टर करें। (स्ट्रिंग, वैकल्पिक)
    • os: OS द्वारा फ़िल्टर करें ("ios" या "android")। (स्ट्रिंग, वैकल्पिक)
    • organization_id: संगठन UUID द्वारा फ़िल्टर करें। (स्ट्रिंग, वैकल्पिक)
  • get_distribution_sent_report - वितरित ऐप साझाकरण के लिए दैनिक उपयोग रिपोर्ट प्राप्त करें। पृष्ठांकित; प्रोफ़ाइल, OS, संगठन द्वारा फ़िल्टर का समर्थन करता है।

    • पहुँच स्तर: पढ़ें
    • start_date: वैकल्पिक प्रारंभ तिथि (YYYY-MM-DD)। (स्ट्रिंग, वैकल्पिक)
    • end_date: वैकल्पिक समाप्ति तिथि (YYYY-MM-DD)। (स्ट्रिंग, वैकल्पिक)
    • page: पृष्ठ संख्या (डिफ़ॉल्ट: 1)। (संख्या, वैकल्पिक)
    • size: प्रति पृष्ठ आइटम (1-100, डिफ़ॉल्ट: 50)। (संख्या, वैकल्पिक)
    • profile_name: वितरण प्रोफ़ाइल नाम से फ़िल्टर करें। (स्ट्रिंग, वैकल्पिक)
    • os: OS द्वारा फ़िल्टर करें ("ios" या "android")। (स्ट्रिंग, वैकल्पिक)
    • organization_id: संगठन UUID द्वारा फ़िल्टर करें। (स्ट्रिंग, वैकल्पिक)
  • get_enterprise_app_store_app_usage_report - एंटरप्राइज़ ऐप स्टोर के लिए ऐप उपयोग रिपोर्ट प्राप्त करें। start_date और end_date आवश्यक हैं। पृष्ठांकित।

    • पहुँच स्तर: पढ़ें
    • start_date: प्रारंभ तिथि (YYYY-MM-DD)। (स्ट्रिंग, आवश्यक)
    • end_date: समाप्ति तिथि (YYYY-MM-DD)। (स्ट्रिंग, आवश्यक)
    • page: पृष्ठ संख्या (डिफ़ॉल्ट: 1)। (संख्या, वैकल्पिक)
    • size: प्रति पृष्ठ आइटम (1-100, डिफ़ॉल्ट: 50)। (संख्या, वैकल्पिक)
    • organization_id: संगठन UUID द्वारा वैकल्पिक फ़िल्टर। (स्ट्रिंग, वैकल्पिक)
  • get_publish_resign_report - प्रकाशन पुनर्हस्ताक्षर रिपोर्ट प्राप्त करें, वैकल्पिक रूप से दिनांक सीमा, ऐप नाम, संगठन और स्थिति द्वारा फ़िल्टर की गई। पृष्ठांकित।

    • पहुँच स्तर: पढ़ें
    • start_date: वैकल्पिक प्रारंभ तिथि (YYYY-MM-DD)। (स्ट्रिंग, वैकल्पिक)
    • end_date: वैकल्पिक समाप्ति तिथि (YYYY-MM-DD)। (स्ट्रिंग, वैकल्पिक)
    • page: पृष्ठ संख्या (डिफ़ॉल्ट: 1)। (संख्या, वैकल्पिक)
    • size: प्रति पृष्ठ आइटम (1-100, डिफ़ॉल्ट: 50)। (संख्या, वैकल्पिक)
    • app_name: ऐप नाम से फ़िल्टर करें। (स्ट्रिंग, वैकल्पिक)
    • organization_id: संगठन UUID द्वारा फ़िल्टर करें। (स्ट्रिंग, वैकल्पिक)
    • status: पुनर्हस्ताक्षर स्थिति द्वारा फ़िल्टर करें (0=प्रतीक्षारत, 1=प्रसंस्करण, 2=सफल, 3=विफल, 4=रद्द, 5=समय समाप्त)। (संख्या, वैकल्पिक)
  • get_publish_status_report - प्रकाशन स्थिति रिपोर्ट प्राप्त करें, वैकल्पिक रूप से दिनांक सीमा, ऐप नाम, संगठन और स्थिति द्वारा फ़िल्टर की गई। पृष्ठांकित।

    • पहुँच स्तर: पढ़ें
    • start_date: वैकल्पिक प्रारंभ तिथि (YYYY-MM-DD)। (स्ट्रिंग, वैकल्पिक)
    • end_date: वैकल्पिक समाप्ति तिथि (YYYY-MM-DD)। (स्ट्रिंग, वैकल्पिक)
    • page: पृष्ठ संख्या (डिफ़ॉल्ट: 1)। (संख्या, वैकल्पिक)
    • size: प्रति पृष्ठ आइटम (1-100, डिफ़ॉल्ट: 50)। (संख्या, वैकल्पिक)
    • app_name: ऐप नाम से फ़िल्टर करें। (स्ट्रिंग, वैकल्पिक)
    • organization_id: संगठन UUID द्वारा फ़िल्टर करें। (स्ट्रिंग, वैकल्पिक)
    • status: प्रकाशन स्थिति द्वारा फ़िल्टर करें (जैसे 0=सफलता, 1=विफल, 91=चल रहा है)। (संख्या, वैकल्पिक)
  • get_signing_report - हस्ताक्षर रिपोर्ट प्राप्त करें, वैकल्पिक रूप से दिनांक सीमा, संगठन, OS और बिल्ड स्थिति द्वारा फ़िल्टर की गई। पृष्ठांकित।

    • पहुँच स्तर: पढ़ें
    • start_date: वैकल्पिक प्रारंभ तिथि (YYYY-MM-DD)। (स्ट्रिंग, वैकल्पिक)
    • end_date: वैकल्पिक समाप्ति तिथि (YYYY-MM-DD)। (स्ट्रिंग, वैकल्पिक)
    • page: पृष्ठ संख्या (डिफ़ॉल्ट: 1)। (संख्या, वैकल्पिक)
    • size: प्रति पृष्ठ आइटम (1-100, डिफ़ॉल्ट: 50)। (संख्या, वैकल्पिक)
    • organization_id: संगठन UUID द्वारा फ़िल्टर करें। (स्ट्रिंग, वैकल्पिक)
    • os: OS द्वारा फ़िल्टर करें ("ios" या "android")। (स्ट्रिंग, वैकल्पिक)
    • build_status: बिल्ड स्थिति द्वारा फ़िल्टर करें (जैसे 0=सफलता, 1=विफल, 91=चल रहा है)। (संख्या, वैकल्पिक)

सर्वर चलाना

रेपो रूट से:

python -m src.server

या pip install -e . के बाद:

appcircle-mcp

सर्वर stdio (या SSE/HTTP, आपका क्लाइंट इसे कैसे शुरू करता है इस पर निर्भर करता है) पर चलता है।

प्रतिक्रिया प्रारूप

प्रत्येक उपकरण एक मानक लिफाफा लौटाता है:

  • सफलता: { "success": true, "data": <payload>, "meta": { ... } }
    data उपकरण परिणाम है; meta वैकल्पिक है (जैसे count, page, filters)।
  • त्रुटि: { "success": false, "error": { "tool", "type", "message", "details" } }
    सभी उपकरणों के लिए समान आकार ताकि क्लाइंट त्रुटियों को लगातार पार्स कर सकें।

पूर्ण विनिर्देश: docs/tool_contract.md

परीक्षण

डेव निर्भरताओं के साथ स्थापित करें:

pip install -e ".[dev]"

यूनिट परीक्षण (डिफ़ॉल्ट)

एक नकली API का उपयोग करें; कोई APPCIRCLE_ACCESS_TOKEN आवश्यक नहीं। डिफ़ॉल्ट pytest केवल ये चलाता है (देखें testpaths pyproject.toml में):

pytest test/unit/ -v
  • एकल फ़ाइल: pytest test/unit/tools/build_module/test_get_build_profiles.py -v
  • कवरेज के साथ: pytest test/unit/ --cov=src --cov-report=term-missing

एकीकरण परीक्षण

वास्तविक Appcircle API को कॉल करें। वातावरण में APPCIRCLE_ACCESS_TOKEN सेट करें, फिर चलाएँ:

pytest test/integration/ -v
  • सभी एकीकरण परीक्षण: pytest test/integration/ -v
  • उपकरण द्वारा: pytest test/integration/build_module/ -v, pytest test/integration/report/ -v, आदि।
  • मार्कर द्वारा: pytest -m integration -v (रेपो रूट से चलाते समय; यदि यूनिट और एकीकरण दोनों एकत्र किए जाते हैं तो केवल एकीकरण परीक्षण शामिल करता है)

यदि APPCIRCLE_ACCESS_TOKEN सेट नहीं है, तो एकीकरण परीक्षण छोड़ दिए जाते हैं (कोई विफलता नहीं)।

एकीकरण परीक्षणों के लिए वैकल्पिक env vars (जब खोज विफल हो जाती है या परीक्षणों को वास्तविक IDs की आवश्यकता होती है; उन परीक्षणों को छोड़ने के लिए छोड़ें):

चरविवरण
APPCIRCLE_TEST_ORGANIZATION_IDसंगठन UUID। test_with_organization_id (एंटरप्राइज़ ऐप स्टोर ऐप उपयोग रिपोर्ट) द्वारा उपयोग किया जाता है।
APPCIRCLE_TEST_BRANCH_IDशाखा UUID। get_commits_by_branch और संबंधित परीक्षणों द्वारा उपयोग किया जाता है जब API से कोई शाखा खोजी नहीं जा सकती।
APPCIRCLE_TEST_COMMIT_IDकमिट UUID। get_commit_details परीक्षणों द्वारा उपयोग किया जाता है जब API से कोई कमिट खोजी नहीं जा सकती।

सुरक्षा

यह परियोजना pyproject.toml में सूचीबद्ध तृतीय-पक्ष ओपन-सोर्स पैकेजों पर निर्भर करती है। जबकि हम निर्भरता संस्करण श्रेणियों को पिन करते हैं और क्रिप्टोग्राफ़िक हैश के साथ एक लॉकफ़ाइल (uv.lock) भेजते हैं, ये पैकेज स्वतंत्र रूप से बनाए रखे जाते हैं और "जैसे हैं" प्रदान किए जाते हैं। Appcircle तृतीय-पक्ष निर्भरताओं की सुरक्षा या विश्वसनीयता के बारे में कोई गारंटी नहीं देता है।

हम उपयोग से पहले स्थापित पैकेजों का ऑडिट करने की सलाह देते हैं:

uv run pip-audit