Appcircle MCP Server

ทางการ

เซิร์ฟเวอร์ MCP อย่างเป็นทางการของ Appcircle

คุณทำอะไรได้บ้างด้วย Appcircle MCP?

  • ตรวจสอบสถานะบิลด์และล็อก — ใช้ get_build_status และ get_build_logs เพื่อตรวจสอบการรันไปป์ไลน์และดีบักข้อผิดพลาด
  • ทริกเกอร์หรือยกเลิกบิลด์ — ใช้ trigger_build และ cancel_build เพื่อเริ่มหรือหยุดการรันบิลด์จริง
  • สร้างข้อมูลเชิงลึกด้านสุขภาพของ CI/CD — ใช้ get_build_insights_report เพื่อรับภาพรวมสุขภาพ สถานะแนวโน้ม และการวิเคราะห์สาเหตุต้นตอ
  • จัดการการกระจายการทดสอบ — ใช้ get_distribution_profiles และ send_app_version_to_testers เพื่อส่งบิลด์ให้ผู้ทดสอบ
  • ตรวจสอบข้อมูลประจำตัวสำหรับการเซ็นชื่อ — ใช้ get_certificates, get_keystores และ get_provisioning_profiles เพื่อตรวจสอบการตั้งค่าการเซ็นชื่อ
  • ติดตามการเผยแพร่บนสโตร์ — ใช้ get_publish_profiles และ get_publish_details เพื่อติดตามการรันโฟลว์การเผยแพร่

เอกสาร

Appcircle MCP Server

MCP server สำหรับ Appcircle: เปิดเผยเครื่องมือ Build, Signing Identities, Testing Distribution, Enterprise App Store, Publish to Stores และ Reporting ให้กับไคลเอนต์ที่รองรับ MCP ใดๆ (Claude Desktop, Cursor, VS Code, ฯลฯ) Appcircle MCP Server ทำหน้าที่เป็นสะพานเชื่อมระหว่างเครื่องมือ AI และ Appcircle ดังนั้น AI agents, assistants และ chatbots จึงสามารถเข้าถึงและโต้ตอบกับทรัพยากรของ Appcircle ได้อย่างปลอดภัยผ่านเครื่องมือที่มีโครงสร้าง ควบคุม และระดับงาน

กรณีการใช้งาน (Use Cases)

  • CI/CD และ Workflow Intelligence: ตรวจสอบการทำงานของ pipeline, ติดตามสถานะ release และรับข้อมูลเชิงลึกเกี่ยวกับเวิร์กโฟลว์ mobile CI/CD ของคุณ
  • Configuration และ Environment Insights: ค้นหาการกำหนดค่า build และการตั้งค่า signing เพื่อทำความเข้าใจว่าโปรเจกต์ถูกกำหนดค่าอย่างไรและปัญหาอาจเกิดจากที่ใด
  • Reporting และ Operational Insights: สร้างสรุปความเสถียรของ CI, ปัญหาที่เกิดซ้ำ, ประสิทธิภาพของ pipeline และสุขภาพโดยรวมของ CI/CD

โหมดการทำงาน (Running Modes)

คุณสามารถใช้ MCP server ได้สี่วิธี:

โหมดสรุป
1. Remote hostเชื่อมต่อกับ https://mcp.appcircle.io. ไม่ต้องติดตั้งในเครื่อง; ไคลเอนต์ของคุณส่ง Appcircle token ของคุณ (เช่น Authorization: Bearer <token>) ในแต่ละคำขอ
2. Local (stdio)รัน server จาก source: clone repo, อาจใช้ venv, จากนั้นรัน appcircle-mcp (transport เริ่มต้นคือ stdio) ต้องใช้ Python และ pip ตั้งค่า APPCIRCLE_ACCESS_TOKEN ใน environment ไคลเอนต์ MCP ของคุณรัน server เป็น subprocess
3. Local (streamable-http)รัน server ในเครื่องผ่าน HTTP: ใช้ --transport streamable-http และอาจใช้ --host / --port (เช่น appcircle-mcp --transport streamable-http --host 127.0.0.1 --port 8000) ไคลเอนต์เชื่อมต่อกับ URL นั้นและส่ง token ในคำขอ
4. Local (Docker)รัน Docker image อย่างเป็นทางการบนเครื่องของคุณ ต้องใช้ Docker ใช้พอร์ตเริ่มต้นของ image หรือแทนที่ด้วย --port; ดูเอกสาร image สำหรับการใช้งานที่แน่นอน

การกำหนดค่าไคลเอนต์โดยละเอียด (Cursor, Claude, ฯลฯ) อยู่ใน installation guides เฉพาะ; ส่วนนี้เป็นเพียงสรุประดับสูงเท่านั้น

การติดตั้ง (Installation)

คู่มือการตั้งค่าเฉพาะไคลเอนต์:

  • Claude Applications - คู่มือการติดตั้งสำหรับ Claude Desktop และ Claude Code CLI
  • Cursor IDE - คู่มือการติดตั้งสำหรับ Cursor IDE
  • Codex - คู่มือการติดตั้งสำหรับ Codex app และ Codex CLI
  • Antigravity IDE - คู่มือการติดตั้งสำหรับ Antigravity IDE
  • VS Code (GitHub Copilot) - คู่มือการติดตั้งสำหรับ VS Code กับ GitHub Copilot
  • Windsurf IDE - คู่มือการติดตั้งสำหรับ Windsurf IDE
  • Gemini CLI - คู่มือการติดตั้งสำหรับ Gemini CLI
  • GitHub Copilot CLI - คู่มือการติดตั้งสำหรับ GitHub Copilot CLI

การกำหนดค่า (Environment Variables)

ตัวแปรจำเป็นคำอธิบาย
APPCIRCLE_ACCESS_TOKENใช่ (stdio เท่านั้น)Appcircle API access token จำเป็นเมื่อใช้ stdio transport สำหรับ streamable-http ไคลเอนต์แต่ละตัวส่ง token ของตัวเอง ดู Obtaining a token สำหรับวิธีรับ
APPCIRCLE_API_URLไม่API base URL (ค่าเริ่มต้น: https://api.appcircle.io อาจแตกต่างสำหรับผู้ใช้ self-hosted)
APPCIRCLE_MCP_ALLOWED_HOSTไม่ (streamable-http เท่านั้น)Public hostname สำหรับ MCP server (เช่น mcp.appcircle.io) ตั้งค่านี้เมื่อ deploy หลัง reverse proxy เพื่อให้ server ยอมรับ header Host จากไคลเอนต์ ละเว้นสำหรับ localhost
APPCIRCLE_MCP_PORTไม่ (streamable-http เท่านั้น)Bind port สำหรับ HTTP server (ค่าเริ่มต้น: 8000) ถูกแทนที่โดย --port หากระบุ มีประโยชน์สำหรับ on-prem หรือ Docker เมื่อต้องใช้พอร์ตเฉพาะ
LOG_LEVELไม่ระดับการบันทึก (Logging level) เช่น DEBUG, INFO (ค่าเริ่มต้น: INFO)
APPCIRCLE_EXCLUDED_TOOLSETSไม่ชุดเครื่องมือที่จะแยกออก คั่นด้วยเครื่องหมายจุลภาค (เช่น build_module,report) ดู Toolsets ด้านล่าง
AC_MCP_ENABLE_WRITE_TOOLSไม่เครื่องมือ write/action (เช่น trigger_build, cancel_build) ลงทะเบียนโดยค่าเริ่มต้น ตั้งค่าเป็น false/0/no/off เพื่อเลือกไม่ใช้และไม่ลงทะเบียนเลย (ไม่ใช่แค่ปิดใช้งานตอนเรียก)

ตั้งค่าเหล่านี้ใน shell ของคุณหรือในการกำหนดค่าไคลเอนต์ MCP ของคุณ

Toolsets

Toolsets ที่มี

ชุดเครื่องมือต่อไปนี้มีให้ใช้งาน:

Toolsetคำอธิบาย
build_moduleBuild profiles, configurations, workflows, commits และการดำเนินการ pipeline
signing_identitiesSigning identities และ bundle identifiers
testing_distributionTesting distribution profiles และรายละเอียดการแจกจ่าย
publish_to_storesPublish profiles และการดำเนินการเผยแพร่ไปยัง store
enterprise_app_storeEnterprise app store profiles และรายละเอียด store
reportReporting: build history, distribution, signing, publish status และรายงานที่เกี่ยวข้อง

คุณสามารถแยกหนึ่งหรือหลาย toolsets เพื่อไม่ให้ลงทะเบียนเครื่องมือของพวกเขา การแยกสามารถตั้งค่าได้ผ่าน CLI arguments หรือตัวแปร environment APPCIRCLE_EXCLUDED_TOOLSETS; ทั้งสองถูกรวม (union)

  • 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"]
    }
  }
}

เครื่องมือ (Tools)

เครื่องมือถูกเปิดเผยผ่าน MCP tools/list ข้อมูลอ้างอิงด้านล่างแสดงรายการเครื่องมือทั้งหมดตาม toolset; สำหรับรูปร่างการตอบสนองและตัวอย่างดู docs/tool_contract.md

Build
  • get_build_profiles - รับ build profiles สำหรับองค์กรปัจจุบัน (แบ่งหน้า) สามารถกรองตามชื่อโปรไฟล์, แพลตฟอร์ม, สถานะ build ล่าสุด และแหล่ง repository ได้ สามารถเรียงลำดับได้

    • ระดับการเข้าถึง: read
    • page: หมายเลขหน้า (เริ่มที่ 1) ค่าเริ่มต้น: 1 (number, ไม่บังคับ)
    • size: ขนาดหน้า (1-100) ค่าเริ่มต้น: 25 ค่าที่มากกว่า 100 จะถูกจำกัดที่ 100 (number, ไม่บังคับ)
    • search: คำค้นหาเพื่อกรองโปรไฟล์ (การจับคู่บางส่วนแบบไม่คำนึงถึงตัวพิมพ์ใหญ่เล็กกับชื่อโปรไฟล์; การค้นหาของ API อาจจับคู่ฟิลด์อื่นของโปรไฟล์ด้วย) (string, ไม่บังคับ)
    • platform: รายการรหัสแพลตฟอร์มเพื่อกรอง ค่าที่อนุญาต: 1=iOS, 2=Android (list of numbers, ไม่บังคับ)
    • last_build_status: รายการรหัสสถานะ build ล่าสุดเพื่อกรอง ค่าที่อนุญาต: 0=Success, 1=Failed, 2=Canceled, 3=Timeout, 90=Waiting, 91=Running (list of numbers, ไม่บังคับ)
    • repository_source: รายการรหัสแหล่ง repository เพื่อกรอง ค่าที่อนุญาต: 1=GitHub, 2=Bitbucket, 3=GitLab, 4=Azure DevOps, 6=Public Repository, 7=Private Repository, 8=SSH (list of numbers, ไม่บังคับ)
    • sort: รหัสฟิลด์การเรียงลำดับ ค่าที่อนุญาต: 1=Profile Name, 2=Create Date, 3=Last Build Date (number, ไม่บังคับ)
    • sort_direction: รหัสทิศทางการเรียงลำดับ ค่าที่อนุญาต: 1=ASC, 2=DESC (number, ไม่บังคับ)
  • get_build_profile_details - รับ build profile เดี่ยวตาม ID, อาจรวม build configurations ของมัน

    • ระดับการเข้าถึง: read
    • profile_id: ID ของ build profile (เช่น UUID) (string, จำเป็น)
    • configurations: หากเป็น true, ดึง build configurations ของโปรไฟล์ด้วย ค่าเริ่มต้น: false (boolean, ไม่บังคับ)
  • get_build_configuration_details - รับ build configuration เดี่ยวตาม profile ID และ configuration ID

    • ระดับการเข้าถึง: read
    • profile_id: ID ของ build profile (เช่น UUID) (string, จำเป็น)
    • configuration_id: ID ของ build configuration (เช่น UUID) (string, จำเป็น)
  • get_build_profile_workflows - รับ workflows สำหรับ build profile ตาม profile ID

    • ระดับการเข้าถึง: read
    • profile_id: ID ของ build profile (เช่น UUID) (string, จำเป็น)
  • get_workflow_detail - รับ workflow เดี่ยวตาม build profile ID และ workflow ID

    • ระดับการเข้าถึง: read
    • profile_id: ID ของ build profile (เช่น UUID) (string, จำเป็น)
    • workflow_id: ID ของ workflow (เช่น UUID) (string, จำเป็น)
  • get_commits_by_branch - รับ commits สำหรับ build branch (แบ่งหน้า)

    • ระดับการเข้าถึง: read
    • branch_id: ID ของ branch (เช่น UUID) (string, จำเป็น)
    • page: หมายเลขหน้า (เริ่มที่ 1) หากระบุพร้อม size, จะเปิดใช้งานการแบ่งหน้า ค่าเริ่มต้น: 1 (number, ไม่บังคับ)
    • size: ขนาดหน้า หากระบุพร้อม page, จะเปิดใช้งานการแบ่งหน้า ค่าเริ่มต้น: 25, สูงสุด 100 (number, ไม่บังคับ)
  • get_commit_details - รับ commit เดี่ยวตาม commit ID (UUID) หรือตาม commit hash (git SHA) ระบุ commit_id หรือ commit_hash อย่างใดอย่างหนึ่ง ไม่ใช่ทั้งสอง

    • ระดับการเข้าถึง: read
    • commit_id: ID ของ commit (UUID) (string, ไม่บังคับ)
    • commit_hash: hash ของ commit (git SHA) (string, ไม่บังคับ)
  • get_last_commit - รับ commit ล่าสุดบน build branch

    • ระดับการเข้าถึง: read
    • branch_id: ID ของ branch (เช่น UUID) (string, จำเป็น)
  • get_build_status - รับสถานะของ build (เช่น 0=Success, 1=Failed, 2=Canceled, 3=Timeout, 90=Waiting, 91=Running, 92=Completing, 99=Unknown)

    • ระดับการเข้าถึง: read
    • commit_id: ID ของ commit (UUID) (string, จำเป็น)
    • build_id: ID ของ build (UUID) (string, จำเป็น)
  • get_build_logs - รับ logs สำหรับ build, อาจจำกัดเฉพาะขั้นตอนเดียว ค่าเริ่มต้นคือมุมมองแบบ tail-truncated เพื่อหลีกเลี่ยงการท่วม context ของโมเดล

    • ระดับการเข้าถึง: read
    • commit_id: ID ของ commit (UUID) (string, จำเป็น)
    • build_id: ID ของ build (UUID) (string, จำเป็น)
    • step: ชื่อขั้นตอนที่แน่นอน (ไม่คำนึงถึงตัวพิมพ์ใหญ่เล็ก) เพื่อจำกัดผลลัพธ์ให้อยู่ในบล็อก log ของขั้นตอนเดียว (string, ไม่บังคับ)
    • full_log: หากเป็น true, ส่งคืน log ทั้งหมดแทนค่าเริ่มต้นแบบ tail ยังจำกัดที่ 256 KB ค่าเริ่มต้น: false (boolean, ไม่บังคับ)
    • tail_lines: จำนวนบรรทัดที่จะเก็บจากท้ายเมื่อไม่ใช้ full_log ค่าเริ่มต้น: 200, สูงสุด 1000 (number, ไม่บังคับ)
    • grep: ตัวกรองสตริงย่อยแบบไม่คำนึงถึงตัวพิมพ์ใหญ่เล็กที่ใช้กับบรรทัดก่อนการตัดทอน (string, ไม่บังคับ)
  • get_variable_groups - รับกลุ่มตัวแปร environment ของ build ทั้งหมดสำหรับองค์กร รวมถึงตัวแปรของแต่ละกลุ่ม (key, value, isSecret, isFile) ค่าลับถูกปกปิดโดย API แล้ว

    • ระดับการเข้าถึง: read
    • ไม่มีพารามิเตอร์
  • trigger_build - SIDE EFFECT: เริ่มการรัน build จริงใหม่ (จัดคิว build จริง, ใช้ build minutes/credits) บน branch (commit ที่ซิงค์ล่าสุด) หรือสำหรับ commit เฉพาะหนึ่งรายการ ลงทะเบียนโดยค่าเริ่มต้น; ตั้งค่า AC_MCP_ENABLE_WRITE_TOOLS=false เพื่อเลือกไม่ใช้

    • ระดับการเข้าถึง: write
    • profile_id: ID ของ build profile (เช่น UUID) จำเป็นในโหมด branch (ไม่ให้ commit_id); ไม่ใช้ในโหมด commit (string, ไม่บังคับ)
    • workflow_id: ID ของ workflow (เช่น UUID) จำเป็นในโหมด branch ไม่บังคับในโหมด commit (ใช้ workflow ล่าสุด/ค่าเริ่มต้นหากละเว้น) (string, ไม่บังคับ)
    • branch_name: ชื่อ branch (เช่น "main") เฉพาะโหมด branch; ใช้ branch เริ่มต้นของโปรไฟล์หากละเว้น ต้องไม่ให้พร้อมกับ commit_id (string, ไม่บังคับ)
    • commit_id: ID ของ commit เอง (ไม่ใช่ git hash) เพื่อทริกเกอร์ build สำหรับ commit เฉพาะแทน commit ล่าสุดบน branch ต้องไม่ให้พร้อมกับ branch_name (string, ไม่บังคับ)
    • configuration_id: ID ของ build configuration (เช่น UUID) เพื่อใช้แทนค่าเริ่มต้น (string, ไม่บังคับ)
  • cancel_build - SIDE EFFECT: ยกเลิก build ที่อยู่ในคิวหรือกำลังรัน (งานจริงที่กำลังดำเนินอยู่จะหยุด; ไม่สามารถดำเนินต่อได้) ลงทะเบียนโดยค่าเริ่มต้น; ตั้งค่า AC_MCP_ENABLE_WRITE_TOOLS=false เพื่อเลือกไม่ใช้

    • ระดับการเข้าถึง: write
    • task_id: task ID ของ build (ฟิลด์ "taskId" ที่ส่งคืนโดย trigger_build) (string, จำเป็น)
Signing Identities
  • get_bundle_identifiers - รับ bundle identifiers ทั้งหมดสำหรับองค์กร (iOS/macOS app bundle IDs)

    • ระดับการเข้าถึง: read
    • ไม่มีพารามิเตอร์
  • get_certificates - ดึงใบรับรองการเซ็นชื่อทั้งหมดขององค์กร ฟิลด์ที่ละเอียดอ่อน (p12Password, p12Binary, metaData, thumbprint) จะถูกละเว้น

    • ระดับการเข้าถึง: อ่าน
    • ไม่มีพารามิเตอร์
  • get_keystores - ดึงคีย์สโตร์ทั้งหมดขององค์กร (เช่น คีย์สโตร์สำหรับเซ็นชื่อ Android) ฟิลด์ที่ละเอียดอ่อน (password, aliasPassword, binary, checkSum, sha256FingerPrint) จะถูกละเว้น

    • ระดับการเข้าถึง: อ่าน
    • ไม่มีพารามิเตอร์
  • get_provisioning_profiles - ดึงโปรไฟล์การจัดเตรียม (provisioning profiles) ขององค์กร (เช่น iOS/macOS) ฟิลด์ที่ละเอียดอ่อน/ขนาดใหญ่ (binary, metaData, certificateThumbPrints, provisionedDevices, connectApiKeyId) จะถูกละเว้น สามารถกรองตาม ID ของแอป (bundle) ได้ตามต้องการ

    • ระดับการเข้าถึง: อ่าน
    • app_id: ID ของแอป (bundle) ที่ต้องการกรองโปรไฟล์การจัดเตรียม (เช่น com.example.app) (สตริง, ไม่บังคับ)
การแจกจ่ายเพื่อการทดสอบ
  • get_distribution_profiles - ดึงโปรไฟล์การแจกจ่ายเพื่อการทดสอบขององค์กรปัจจุบัน (แบบแบ่งหน้า) สามารถกรองตามชื่อโปรไฟล์ แพลตฟอร์ม และประเภทการรับรองความถูกต้องได้ตามต้องการ และสามารถเรียงลำดับได้

    • ระดับการเข้าถึง: อ่าน
    • page: หมายเลขหน้า (เริ่มที่ 1) ค่าเริ่มต้น: 1 (ตัวเลข, ไม่บังคับ)
    • size: ขนาดหน้า (1-100) ค่าเริ่มต้น: 25, สูงสุด 100 (ตัวเลข, ไม่บังคับ)
    • search: คำค้นหาที่ต้องการกรองโปรไฟล์ (การจับคู่บางส่วนแบบไม่คำนึงถึงตัวพิมพ์ใหญ่เล็กในชื่อโปรไฟล์; การค้นหาของ API อาจจับคู่ฟิลด์อื่นของโปรไฟล์ด้วย) (สตริง, ไม่บังคับ)
    • platform: รายการรหัสแพลตฟอร์มที่ต้องการกรอง ค่าที่อนุญาต: 1=iOS, 2=Android (รายการตัวเลข, ไม่บังคับ)
    • authentication_type: รายการรหัสประเภทการรับรองความถูกต้องที่ต้องการกรอง ค่าที่อนุญาต: 1=None, 3=Static Login, 4=LDAP, 5=SSO (รายการตัวเลข, ไม่บังคับ)
    • sort: รหัสฟิลด์การเรียงลำดับที่ต้องการ ค่าที่อนุญาต: 1=ชื่อโปรไฟล์, 2=วันที่สร้าง, 3=วันที่อัปโหลดล่าสุด (ตัวเลข, ไม่บังคับ)
    • sort_direction: รหัสทิศทางการเรียงลำดับที่ต้องการ ค่าที่อนุญาต: 1=ASC, 2=DESC (ตัวเลข, ไม่บังคับ)
  • get_distribution_profile_details - ดึงโปรไฟล์การแจกจ่ายเพื่อการทดสอบรายการเดียวตาม ID (พร้อมการแบ่งหน้าของเวอร์ชันแอปตามต้องการ)

    • ระดับการเข้าถึง: อ่าน
    • profile_id: ID ของโปรไฟล์การแจกจ่าย (เช่น UUID) (สตริง, จำเป็น)
    • page: หมายเลขหน้าสำหรับเวอร์ชันแอป (เริ่มที่ 1) ค่าเริ่มต้น: 1 (ตัวเลข, ไม่บังคับ)
    • size: ขนาดหน้าสำหรับเวอร์ชันแอป (1-100) ค่าเริ่มต้น: 25, สูงสุด 100 (ตัวเลข, ไม่บังคับ)
  • get_testing_groups - ดึงกลุ่มการแจกจ่ายเพื่อการทดสอบทั้งหมดขององค์กร รวมถึงอีเมลของผู้ทดสอบสมาชิกแต่ละกลุ่มและประเภทกลุ่ม

    • ระดับการเข้าถึง: อ่าน
    • ไม่มีพารามิเตอร์
  • update_app_version_release_notes - ผลข้างเคียง: เขียนทับบันทึกการเผยแพร่ ("message") ที่แสดงต่อผู้ทดสอบ สำหรับเวอร์ชันแอปที่แจกจ่าย คืนค่าออบเจกต์เวอร์ชันแอปที่อัปเดตแล้ว (ไม่รวม certThumbPrints) ลงทะเบียนโดยค่าเริ่มต้น; ตั้งค่า AC_MCP_ENABLE_WRITE_TOOLS=false เพื่อเลือกไม่ใช้

    • ระดับการเข้าถึง: เขียน
    • profile_id: ID ของโปรไฟล์การแจกจ่าย (เช่น UUID) (สตริง, จำเป็น)
    • app_version_id: ID ของเวอร์ชันแอป (เช่น UUID) (สตริง, จำเป็น)
    • message: ข้อความบันทึกการเผยแพร่ใหม่ (สตริง, จำเป็น)
  • send_app_version_to_testers - ผลข้างเคียง: ส่งการแจ้งเตือนจริง ไปยังผู้ทดสอบ/กลุ่มทดสอบ โดยส่งงานการแจกจ่ายสำหรับเวอร์ชันแอปเฉพาะ ลงทะเบียนโดยค่าเริ่มต้น; ตั้งค่า AC_MCP_ENABLE_WRITE_TOOLS=false เพื่อเลือกไม่ใช้

    • ระดับการเข้าถึง: เขียน
    • profile_id: ID ของโปรไฟล์การแจกจ่าย (เช่น UUID) (สตริง, จำเป็น)
    • app_version_id: ID ของเวอร์ชันแอป (เช่น UUID) (สตริง, จำเป็น)
    • message: ข้อความแจ้งเตือนที่แสดงต่อผู้ทดสอบ (สตริง, จำเป็น)
    • testers: รายการผู้ทดสอบที่จะส่งให้ แต่ละรายการเป็นอีเมลของผู้ทดสอบหรือ ID ของกลุ่มทดสอบ (ฟิลด์ "id" จาก get_testing_groups) (รายการสตริง, จำเป็น)
เผยแพร่ไปยังสโตร์
  • get_publish_profiles - ดึงโปรไฟล์การเผยแพร่ขององค์กรปัจจุบันสำหรับประเภทแพลตฟอร์มที่กำหนด (แบบแบ่งหน้า) สามารถกรองตามสถานะโฟลว์ ตลาดเป้าหมาย การมีไบนารีตัวเลือกเผยแพร่ และสถานะสโตร์ได้ตามต้องการ และสามารถเรียงลำดับได้

    • ระดับการเข้าถึง: อ่าน
    • platform_type: ประเภทแพลตฟอร์มของโปรไฟล์การเผยแพร่ ("ios" หรือ "android") (สตริง, จำเป็น)
    • page: หมายเลขหน้า (เริ่มที่ 1) ค่าเริ่มต้น: 1 (ตัวเลข, ไม่บังคับ)
    • size: ขนาดหน้า (1-100) ค่าเริ่มต้น: 25, สูงสุด 100 (ตัวเลข, ไม่บังคับ)
    • flow_status: รหัสสถานะโฟลว์ที่ต้องการกรอง (เช่น 0=สำเร็จ, 1=ล้มเหลว, 91=กำลังทำงาน) (ตัวเลข, ไม่บังคับ)
    • market_place_type: รายการรหัสตลาดเป้าหมายที่ต้องการกรอง ค่าที่อนุญาตขึ้นอยู่กับ platform_type -- ios: 0=ไม่พร้อมใช้งาน, 1=App Store Connect, 4=Intune; android: 0=ไม่พร้อมใช้งาน, 2=Google Play, 3=AppGallery, 4=Intune (รายการตัวเลข, ไม่บังคับ)
    • has_rc_binary: ตัวกรองว่าโปรไฟล์มีไบนารีตัวเลือกเผยแพร่หรือไม่ (บูลีน, ไม่บังคับ)
    • store_status: รายการรหัสสถานะสโตร์ที่ต้องการกรอง ค่าที่อนุญาตขึ้นอยู่กับ platform_type (มีรหัสสำหรับ ios มากกว่า android มาก เช่น ios: "IN_REVIEW", "READY_FOR_SALE", "REJECTED"; android: "NOT_AVAILABLE", "DRAFT", "IN_PROGRESS", "HALTED", "COMPLETED") (รายการสตริง, ไม่บังคับ)
    • sort: รหัสฟิลด์การเรียงลำดับที่ต้องการ ค่าที่อนุญาต: 1=ชื่อโปรไฟล์, 2=วันที่สร้าง (ตัวเลข, ไม่บังคับ)
    • sort_direction: รหัสทิศทางการเรียงลำดับที่ต้องการ ค่าที่อนุญาต: 1=ASC, 2=DESC (ตัวเลข, ไม่บังคับ)
  • get_publish_profile_details - ดึงโปรไฟล์การเผยแพร่รายการเดียวตามประเภทแพลตฟอร์มและ ID (พร้อมการแบ่งหน้าของเวอร์ชันแอปตามต้องการ)

    • ระดับการเข้าถึง: อ่าน
    • platform_type: ประเภทแพลตฟอร์ม ("ios" หรือ "android") (สตริง, จำเป็น)
    • profile_id: ID ของโปรไฟล์การเผยแพร่ (เช่น UUID) (สตริง, จำเป็น)
    • page: หมายเลขหน้าสำหรับเวอร์ชันแอป (เริ่มที่ 1) ค่าเริ่มต้น: 1 (ตัวเลข, ไม่บังคับ)
    • size: ขนาดหน้าสำหรับเวอร์ชันแอป (1-100) ค่าเริ่มต้น: 25, สูงสุด 100 (ตัวเลข, ไม่บังคับ)
  • get_app_version_metadata - ดึงข้อมูลเมตาของรายการสโตร์สำหรับเวอร์ชันแอปรายการเดียว (ข้อมูลการตรวจสอบแอป, การแปลภาษา, ข้อมูลการเผยแพร่, ข้อมูลเวอร์ชันแอป) ไม่รวม appReviewInformation.demoPassword

    • ระดับการเข้าถึง: อ่าน
    • platform_type: ประเภทแพลตฟอร์ม ("ios" หรือ "android") (สตริง, จำเป็น)
    • profile_id: ID ของโปรไฟล์การเผยแพร่ (เช่น UUID) (สตริง, จำเป็น)
    • app_version_id: ID ของเวอร์ชันแอป (เช่น UUID) (สตริง, จำเป็น)
  • get_metadata_locales - ดึงตำแหน่งที่ตั้งของข้อมูลเมตาสโตร์ที่พร้อมใช้งานสำหรับเวอร์ชันแอปรายการเดียว (ชื่อ, รหัส, การแปล, isPrimary)

    • ระดับการเข้าถึง: อ่าน
    • platform_type: ประเภทแพลตฟอร์ม ("ios" หรือ "android") (สตริง, จำเป็น)
    • profile_id: ID ของโปรไฟล์การเผยแพร่ (เช่น UUID) (สตริง, จำเป็น)
    • app_version_id: ID ของเวอร์ชันแอป (เช่น UUID) (สตริง, จำเป็น)
  • get_intune_metadata - ดึงข้อมูลเมตาของแอป Microsoft Intune สำหรับเวอร์ชันแอปรายการเดียว (ชื่อที่แสดง, ผู้เผยแพร่, ID บันเดิล, เวอร์ชัน, สถานะการเผยแพร่, ประเภทอุปกรณ์ที่ใช้ได้, หมวดหมู่ ฯลฯ)

    • ระดับการเข้าถึง: อ่าน
    • platform_type: ประเภทแพลตฟอร์ม ("ios" หรือ "android") (สตริง, จำเป็น)
    • profile_id: ID ของโปรไฟล์การเผยแพร่ (เช่น UUID) (สตริง, จำเป็น)
    • app_version_id: ID ของเวอร์ชันแอป (เช่น UUID) (สตริง, จำเป็น)
  • get_publish_metadata_lock_status - ดึงว่าโปรไฟล์การเผยแพร่ถูกล็อกข้อมูลเมตาสโตร์สำหรับการแก้ไขหรือไม่

    • ระดับการเข้าถึง: อ่าน
    • platform_type: ประเภทแพลตฟอร์ม ("ios" หรือ "android") (สตริง, จำเป็น)
    • profile_id: ID ของโปรไฟล์การเผยแพร่ (เช่น UUID) (สตริง, จำเป็น)
  • get_publish_details - ดึงรายละเอียดการทำงานของโฟลว์การเผยแพร่สำหรับเวอร์ชันแอปรายการเดียว (สถานะ, เวลา, ขั้นตอนที่เรียงลำดับพร้อมประวัติการทำงาน/อาร์ติแฟกต์/ID ทรัพยากรล็อก)

    • ระดับการเข้าถึง: อ่าน
    • platform_type: ประเภทแพลตฟอร์ม ("ios" หรือ "android") (สตริง, จำเป็น)
    • profile_id: ID ของโปรไฟล์การเผยแพร่ (เช่น UUID) (สตริง, จำเป็น)
    • app_version_id: ID ของเวอร์ชันแอป (เช่น UUID) (สตริง, จำเป็น)
  • get_publish_step_logs - ดึงล็อกสำหรับการทำงานของโฟลว์การเผยแพร่ โดยสามารถจำกัดเฉพาะขั้นตอนเดียวได้ตามต้องการ ค่าเริ่มต้นคือมุมมองที่ตัดท้ายเพื่อหลีกเลี่ยงการท่วมบริบทของโมเดล

    • ระดับการเข้าถึง: อ่าน
    • platform_type: ประเภทแพลตฟอร์ม ("ios" หรือ "android") (สตริง, จำเป็น)
    • profile_id: ID ของโปรไฟล์การเผยแพร่ (เช่น UUID) (สตริง, จำเป็น)
    • publish_id: ID ของการทำงานโฟลว์การเผยแพร่ (ฟิลด์ "id" จาก get_publish_details) (สตริง, จำเป็น)
    • step_id: ID ของขั้นตอน (ฟิลด์ "id" ของขั้นตอนจากรายการ steps ของ get_publish_details) (สตริง, จำเป็น)
    • step: ชื่อขั้นตอนที่แน่นอนตามต้องการ (ไม่คำนึงถึงตัวพิมพ์ใหญ่เล็ก) เพื่อจำกัดเอาต์พุตให้เฉพาะบล็อกล็อกของขั้นตอนเดียว (สตริง, ไม่บังคับ)
    • full_log: หากเป็น true ให้คืนค่าล็อกทั้งหมดแทนค่าเริ่มต้นที่ตัดท้าย ยังคงจำกัดที่ 256 KB ค่าเริ่มต้น: false (บูลีน, ไม่บังคับ)
    • tail_lines: จำนวนบรรทัดที่จะเก็บจากท้ายเมื่อไม่ใช้ full_log ค่าเริ่มต้น: 200, สูงสุด 1000 (ตัวเลข, ไม่บังคับ)
    • grep: ตัวกรองสตริงย่อยแบบไม่คำนึงถึงตัวพิมพ์ใหญ่เล็กที่ใช้กับบรรทัดก่อนการตัดท้าย (สตริง, ไม่บังคับ)
  • get_publish_flows - ดึงโฟลว์การเผยแพร่ที่กำหนดค่าสำหรับโปรไฟล์การเผยแพร่ (ชื่อ, ID, เอกสาร YAML โฟลว์เต็ม)

    • ระดับการเข้าถึง: อ่าน
    • platform_type: ประเภทแพลตฟอร์ม ("ios" หรือ "android") (สตริง, จำเป็น)
    • profile_id: ID ของโปรไฟล์การเผยแพร่ (เช่น UUID) (สตริง, จำเป็น)
  • start_publish - ผลข้างเคียง: เริ่มการทำงานของโฟลว์การเผยแพร่ (หรือเริ่มใหม่จากขั้นตอนเฉพาะ) -- งานเผยแพร่จริง (เช่น อัปโหลดไปยัง App Store/Play Store/Intune) ลงทะเบียนโดยค่าเริ่มต้น; ตั้งค่า AC_MCP_ENABLE_WRITE_TOOLS=false เพื่อเลือกไม่ใช้

    • ระดับการเข้าถึง: เขียน
    • platform_type: ประเภทแพลตฟอร์ม ("ios" หรือ "android") (สตริง, จำเป็น)
    • profile_id: ID ของโปรไฟล์การเผยแพร่ (เช่น UUID) (สตริง, จำเป็น)
    • publish_id: ID ของการทำงานโฟลว์การเผยแพร่ (ฟิลด์ "id" จาก get_publish_details) (สตริง, จำเป็น)
    • step_id: ID ของขั้นตอนที่ต้องการเริ่มจากขั้นตอนนั้นแทนจุดเริ่มต้นของโฟลว์ (สตริง, ไม่บังคับ)
    • organization_pool_id: ID พูลขององค์กรตามต้องการ (เช่น UUID) เพื่อรัน (สตริง, ไม่บังคับ)
  • stop_publish - ผลข้างเคียง: ยกเลิกการทำงานของโฟลว์การเผยแพร่ที่กำลังรันอยู่ (งานจริงที่กำลังดำเนินอยู่จะหยุด; ไม่สามารถดำเนินการต่อได้) ลงทะเบียนโดยค่าเริ่มต้น; ตั้งค่า AC_MCP_ENABLE_WRITE_TOOLS=false เพื่อเลือกไม่ใช้

    • ระดับการเข้าถึง: เขียน
    • platform_type: ประเภทแพลตฟอร์ม ("ios" หรือ "android") (สตริง, จำเป็น)
    • profile_id: ID ของโปรไฟล์การเผยแพร่ (เช่น UUID) (สตริง, จำเป็น)
    • publish_id: ID ของการทำงานโฟลว์การเผยแพร่ (ฟิลด์ "id" จาก get_publish_details) (สตริง, จำเป็น)
    • step_id: ID ของขั้นตอนตามต้องการ (สตริง, ไม่บังคับ)
    • organization_pool_id: ID พูลขององค์กรตามต้องการ (เช่น UUID) (สตริง, ไม่บังคับ)
Enterprise App Store
  • get_store_profiles - ดึงโปรไฟล์ Enterprise App Store ขององค์กรปัจจุบัน (แบบแบ่งหน้า) ไม่รองรับการค้นหา แต่สามารถกรองตามแพลตฟอร์ม ประเภทการเผยแพร่ และการมองเห็นได้ และสามารถเรียงลำดับได้
    • ระดับการเข้าถึง: อ่าน
    • page: หมายเลขหน้า (เริ่มที่ 1) ค่าเริ่มต้น: 1 (ตัวเลข, ไม่บังคับ)
    • size: ขนาดหน้า (1-100) ค่าเริ่มต้น: 25, สูงสุด 100 (ตัวเลข, ไม่บังคับ)
    • platform_type: รายการรหัสแพลตฟอร์มที่ต้องการกรอง ค่าที่อนุญาต: 1=iOS, 2=Android (รายการตัวเลข, ไม่บังคับ)
    • publish_type: รายการรหัสประเภทการเผยแพร่ที่ต้องการกรอง ค่าที่อนุญาต: 1=เผยแพร่เป็น Beta, 2=เผยแพร่เป็น Live (รายการตัวเลข, ไม่บังคับ)
    • visibility: ตัวกรองว่าโปรไฟล์ถูกแสดงต่อสาธารณะหรือไม่ (true=แสดง, false=ไม่แสดง) (บูลีน, ไม่บังคับ)
    • sort: รหัสฟิลด์การเรียงลำดับที่ต้องการ ค่าที่อนุญาต: 1=ชื่อแอป, 2=วันที่สร้าง, 3=จำนวนดาวน์โหลด, 4=วันที่รับไบนารี (ตัวเลข, ไม่บังคับ)
    • sort_direction: รหัสทิศทางการเรียงลำดับที่ต้องการ ค่าที่อนุญาต: 1=ASC, 2=DESC (ตัวเลข, ไม่บังคับ)
  • get_store_profile_details - รับโปรไฟล์แอปสโตร์องค์กรเดียวโดยใช้ ID (พร้อมการแบ่งหน้าของเวอร์ชันแอปแบบไม่บังคับ)
    • ระดับการเข้าถึง: read
    • profile_id: ID โปรไฟล์แอปสโตร์องค์กร (เช่น UUID) (string, จำเป็น)
    • page: หมายเลขหน้าสำหรับเวอร์ชันแอป (เริ่มที่ 1) ค่าเริ่มต้น: 1 (number, ไม่บังคับ)
    • size: ขนาดหน้าสำหรับเวอร์ชันแอป (1-100) ค่าเริ่มต้น: 25, สูงสุด 100 (number, ไม่บังคับ)
    • ฟิลด์ publishType ของแต่ละเวอร์ชันแอปเป็น int: 0=ไม่มี, 1=Beta, 2=Live
รายงาน
  • get_build_history_report - รับรายงานประวัติการบิลด์ โดยสามารถกรองตามช่วงวันที่ โปรไฟล์การบิลด์ และองค์กรได้ แบบแบ่งหน้า

    • ระดับการเข้าถึง: read
    • start_date: วันที่เริ่มต้น (YYYY-MM-DD) (string, ไม่บังคับ)
    • end_date: วันที่สิ้นสุด (YYYY-MM-DD) (string, ไม่บังคับ)
    • page: หมายเลขหน้า (ค่าเริ่มต้น: 1) (number, ไม่บังคับ)
    • size: จำนวนรายการต่อหน้า (1-100, ค่าเริ่มต้น: 50) (number, ไม่บังคับ)
    • build_profile_name: กรองตามชื่อโปรไฟล์การบิลด์ (string, ไม่บังคับ)
    • organization_id: กรองตาม UUID ขององค์กร (string, ไม่บังคับ)
  • get_build_queue_waiting_report - รับรายงานเวลารอคิวการบิลด์ โดยสามารถกรองตามช่วงวันที่ได้ แบบแบ่งหน้า หมายเหตุ: บน endpoint นี้ buildDuration หมายถึงเวลารอคิวเป็นนาที ไม่ใช่เวลาดำเนินการ (ต่างจาก get_build_history_report)

    • ระดับการเข้าถึง: read
    • start_date: วันที่เริ่มต้น (YYYY-MM-DD) ต้อง <= end_date หากระบุทั้งสอง (string, ไม่บังคับ)
    • end_date: วันที่สิ้นสุด (YYYY-MM-DD) (string, ไม่บังคับ)
    • page: หมายเลขหน้า (ค่าเริ่มต้น: 1) (number, ไม่บังคับ)
    • size: จำนวนรายการต่อหน้า (1-100, ค่าเริ่มต้น: 50) (number, ไม่บังคับ)
  • get_build_activity_log - รับบันทึกกิจกรรมการบิลด์ (การเปลี่ยนแปลงเวิร์กโฟลว์/โปรไฟล์, การเผยแพร่ CodePush ฯลฯ) โดยสามารถกรองตามช่วงวันที่และพารามิเตอร์อื่น ๆ ได้ แบบแบ่งหน้า

    • ระดับการเข้าถึง: read
    • start_date: วันที่เริ่มต้น (YYYY-MM-DD) ต้อง <= end_date หากระบุทั้งสอง (string, ไม่บังคับ)
    • end_date: วันที่สิ้นสุด (YYYY-MM-DD) (string, ไม่บังคับ)
    • page: หมายเลขหน้า (ค่าเริ่มต้น: 1) (number, ไม่บังคับ)
    • size: จำนวนรายการต่อหน้า (1-100, ค่าเริ่มต้น: 50) (number, ไม่บังคับ)
    • organization_id: กรองตาม UUID ขององค์กร (string, ไม่บังคับ)
    • platform: กรองตามประเภทแพลตฟอร์ม (รหัสจำนวนเต็ม เช่น 0=Android, 1=iOS) (number, ไม่บังคับ)
    • email: กรองตามอีเมลของผู้ใช้ที่ดำเนินการ (string, ไม่บังคับ)
    • profile_name: กรองตามชื่อโปรไฟล์การบิลด์ (string, ไม่บังคับ)
    • action: กรองตามรหัสการดำเนินการของกิจกรรม (จำนวนเต็ม; ดู BUILD_ACTIVITY_ACTIONS ในซอร์สเครื่องมือสำหรับการแมปทั้งหมด) (number, ไม่บังคับ)
  • get_build_insights_report - รับรายงานข้อมูลเชิงลึกการบิลด์ที่คำนวณแล้ว (ภาพรวมสุขภาพ + แนวโน้ม, สาเหตุต้นตอ, สุขภาพอาร์ติแฟกต์, คุณภาพเวิร์กโฟลว์, เวลารอคิว และการประเมินความพร้อม) จากประวัติการบิลด์ โดยรวมฝั่งเซิร์ฟเวอร์ ต่างจาก get_build_history_report ตรงที่เครื่องมือนี้ดึงทุกหน้าภายในและส่งคืนผลลัพธ์ที่รวมล่วงหน้าขนาดเล็กแทนเรกคอร์ดดิบ

    • ระดับการเข้าถึง: read
    • start_date: วันที่เริ่มต้น (YYYY-MM-DD) สำหรับช่วงเวลาปัจจุบัน ค่าเริ่มต้น: 30 วันที่ผ่านมา (string, ไม่บังคับ)
    • end_date: วันที่สิ้นสุด (YYYY-MM-DD) สำหรับช่วงเวลาปัจจุบัน (string, ไม่บังคับ)
    • sections: รายการส่วนที่ต้องการคำนวณ: health_snapshot, root_cause, artifact_health, workflow_quality, queue_time, maturity_assessment ค่าเริ่มต้น: ทั้งหกส่วน (array of strings, ไม่บังคับ)
    • include_sub_orgs: หากเป็น true ให้เก็บเรกคอร์ดการบิลด์ข้ามองค์กรในเมตริกที่มาจากประวัติแทนการกรองเฉพาะองค์กรของโทเค็น ค่าเริ่มต้น: false (boolean, ไม่บังคับ)
  • get_distribution_app_version_report - รับรายงานการใช้งานรายวันสำหรับเวอร์ชันแอปที่เผยแพร่ แบบแบ่งหน้า รองรับการกรองตามโปรไฟล์ OS องค์กร

    • ระดับการเข้าถึง: read
    • start_date: วันที่เริ่มต้น (YYYY-MM-DD) (string, ไม่บังคับ)
    • end_date: วันที่สิ้นสุด (YYYY-MM-DD) (string, ไม่บังคับ)
    • page: หมายเลขหน้า (ค่าเริ่มต้น: 1) (number, ไม่บังคับ)
    • size: จำนวนรายการต่อหน้า (1-100, ค่าเริ่มต้น: 50) (number, ไม่บังคับ)
    • profile_name: กรองตามชื่อโปรไฟล์การเผยแพร่ (string, ไม่บังคับ)
    • os: กรองตาม OS ("ios" หรือ "android") (string, ไม่บังคับ)
    • organization_id: กรองตาม UUID ขององค์กร (string, ไม่บังคับ)
  • get_distribution_sent_report - รับรายงานการใช้งานรายวันสำหรับการแชร์แอปที่เผยแพร่ แบบแบ่งหน้า รองรับการกรองตามโปรไฟล์ OS องค์กร

    • ระดับการเข้าถึง: read
    • start_date: วันที่เริ่มต้น (YYYY-MM-DD) (string, ไม่บังคับ)
    • end_date: วันที่สิ้นสุด (YYYY-MM-DD) (string, ไม่บังคับ)
    • page: หมายเลขหน้า (ค่าเริ่มต้น: 1) (number, ไม่บังคับ)
    • size: จำนวนรายการต่อหน้า (1-100, ค่าเริ่มต้น: 50) (number, ไม่บังคับ)
    • profile_name: กรองตามชื่อโปรไฟล์การเผยแพร่ (string, ไม่บังคับ)
    • os: กรองตาม OS ("ios" หรือ "android") (string, ไม่บังคับ)
    • organization_id: กรองตาม UUID ขององค์กร (string, ไม่บังคับ)
  • get_enterprise_app_store_app_usage_report - รับรายงานการใช้งานแอปสำหรับแอปสโตร์องค์กร ต้องระบุ start_date และ end_date แบบแบ่งหน้า

    • ระดับการเข้าถึง: read
    • start_date: วันที่เริ่มต้น (YYYY-MM-DD) (string, จำเป็น)
    • end_date: วันที่สิ้นสุด (YYYY-MM-DD) (string, จำเป็น)
    • page: หมายเลขหน้า (ค่าเริ่มต้น: 1) (number, ไม่บังคับ)
    • size: จำนวนรายการต่อหน้า (1-100, ค่าเริ่มต้น: 50) (number, ไม่บังคับ)
    • organization_id: กรองตาม UUID ขององค์กร (string, ไม่บังคับ)
  • get_publish_resign_report - รับรายงานการลงนามใหม่สำหรับการเผยแพร่ โดยสามารถกรองตามช่วงวันที่ ชื่อแอป องค์กร และสถานะได้ แบบแบ่งหน้า

    • ระดับการเข้าถึง: read
    • start_date: วันที่เริ่มต้น (YYYY-MM-DD) (string, ไม่บังคับ)
    • end_date: วันที่สิ้นสุด (YYYY-MM-DD) (string, ไม่บังคับ)
    • page: หมายเลขหน้า (ค่าเริ่มต้น: 1) (number, ไม่บังคับ)
    • size: จำนวนรายการต่อหน้า (1-100, ค่าเริ่มต้น: 50) (number, ไม่บังคับ)
    • app_name: กรองตามชื่อแอป (string, ไม่บังคับ)
    • organization_id: กรองตาม UUID ขององค์กร (string, ไม่บังคับ)
    • status: กรองตามสถานะการลงนามใหม่ (0=รอ, 1=กำลังประมวลผล, 2=สำเร็จ, 3=ล้มเหลว, 4=ยกเลิก, 5=หมดเวลา) (number, ไม่บังคับ)
  • get_publish_status_report - รับรายงานสถานะการเผยแพร่ โดยสามารถกรองตามช่วงวันที่ ชื่อแอป องค์กร และสถานะได้ แบบแบ่งหน้า

    • ระดับการเข้าถึง: read
    • start_date: วันที่เริ่มต้น (YYYY-MM-DD) (string, ไม่บังคับ)
    • end_date: วันที่สิ้นสุด (YYYY-MM-DD) (string, ไม่บังคับ)
    • page: หมายเลขหน้า (ค่าเริ่มต้น: 1) (number, ไม่บังคับ)
    • size: จำนวนรายการต่อหน้า (1-100, ค่าเริ่มต้น: 50) (number, ไม่บังคับ)
    • app_name: กรองตามชื่อแอป (string, ไม่บังคับ)
    • organization_id: กรองตาม UUID ขององค์กร (string, ไม่บังคับ)
    • status: กรองตามสถานะการเผยแพร่ (เช่น 0=สำเร็จ, 1=ล้มเหลว, 91=กำลังทำงาน) (number, ไม่บังคับ)
  • get_signing_report - รับรายงานการลงนาม โดยสามารถกรองตามช่วงวันที่ องค์กร OS และสถานะการบิลด์ได้ แบบแบ่งหน้า

    • ระดับการเข้าถึง: read
    • start_date: วันที่เริ่มต้น (YYYY-MM-DD) (string, ไม่บังคับ)
    • end_date: วันที่สิ้นสุด (YYYY-MM-DD) (string, ไม่บังคับ)
    • page: หมายเลขหน้า (ค่าเริ่มต้น: 1) (number, ไม่บังคับ)
    • size: จำนวนรายการต่อหน้า (1-100, ค่าเริ่มต้น: 50) (number, ไม่บังคับ)
    • organization_id: กรองตาม UUID ขององค์กร (string, ไม่บังคับ)
    • os: กรองตาม OS ("ios" หรือ "android") (string, ไม่บังคับ)
    • build_status: กรองตามสถานะการบิลด์ (เช่น 0=สำเร็จ, 1=ล้มเหลว, 91=กำลังทำงาน) (number, ไม่บังคับ)
  • get_signing_activity_log - รับบันทึกกิจกรรมการลงนาม (เช่น การแจ้งเตือนการหมดอายุของใบรับรอง/โปรไฟล์การจัดเตรียม/keystore) โดยสามารถกรองตามช่วงวันที่และพารามิเตอร์อื่น ๆ ได้ แบบแบ่งหน้า

    • ระดับการเข้าถึง: read
    • start_date: วันที่เริ่มต้น (YYYY-MM-DD) ต้อง <= end_date หากระบุทั้งสอง (string, ไม่บังคับ)
    • end_date: วันที่สิ้นสุด (YYYY-MM-DD) (string, ไม่บังคับ)
    • page: หมายเลขหน้า (ค่าเริ่มต้น: 1) (number, ไม่บังคับ)
    • size: จำนวนรายการต่อหน้า (1-100, ค่าเริ่มต้น: 50) (number, ไม่บังคับ)
    • organization_id: กรองตาม UUID ขององค์กร (string, ไม่บังคับ)
    • platform: กรองตามแพลตฟอร์ม (เช่น "iOS", "Android") (string, ไม่บังคับ)
    • email: กรองตามอีเมลของผู้ใช้ที่ดำเนินการ (string, ไม่บังคับ)
    • action: กรองตามรหัสการดำเนินการของกิจกรรม (จำนวนเต็ม; ดู SIGNING_ACTIVITY_ACTIONS ในซอร์สเครื่องมือสำหรับการแมปทั้งหมด) (number, ไม่บังคับ)
  • get_publish_activity_log - รับบันทึกกิจกรรมการเผยแพร่ (การลงนามใหม่, เหตุการณ์โฟลว์การเผยแพร่ ฯลฯ) โดยสามารถกรองตามช่วงวันที่และพารามิเตอร์อื่น ๆ ได้ แบบแบ่งหน้า

    • ระดับการเข้าถึง: read
    • start_date: วันที่เริ่มต้น (YYYY-MM-DD) ต้อง <= end_date หากระบุทั้งสอง (string, ไม่บังคับ)
    • end_date: วันที่สิ้นสุด (YYYY-MM-DD) (string, ไม่บังคับ)
    • page: หมายเลขหน้า (ค่าเริ่มต้น: 1) (number, ไม่บังคับ)
    • size: จำนวนรายการต่อหน้า (1-100, ค่าเริ่มต้น: 50) (number, ไม่บังคับ)
    • organization_id: กรองตาม UUID ขององค์กร (string, ไม่บังคับ)
    • platform: กรองตามแพลตฟอร์ม (เช่น "iOS", "Android") (string, ไม่บังคับ)
    • email: กรองตามอีเมลของผู้ใช้ที่ดำเนินการ (string, ไม่บังคับ)
    • profile_name: กรองตามชื่อโปรไฟล์การเผยแพร่ (string, ไม่บังคับ)
    • action: กรองตามรหัสการดำเนินการของกิจกรรม (จำนวนเต็ม; ดู PUBLISH_ACTIVITY_ACTIONS ในซอร์สเครื่องมือสำหรับการแมปทั้งหมด) (number, ไม่บังคับ)

การรันเซิร์ฟเวอร์

จากรากของรีโพ:

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

การทดสอบ

ติดตั้งพร้อม dependencies สำหรับพัฒนา:

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
  • พร้อม coverage: 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, ฯลฯ
  • ตาม marker: pytest -m integration -v (เมื่อรันจากรากของรีโพ; รวมเฉพาะการทดสอบการรวมระบบหากเก็บทั้งหน่วยและการรวมระบบ)

หากไม่ได้ตั้งค่า APPCIRCLE_ACCESS_TOKEN การทดสอบการรวมระบบจะถูก ข้าม (ไม่ล้มเหลว)

ตัวแปรสภาพแวดล้อมเพิ่มเติมสำหรับการทดสอบการรวมระบบ (เมื่อการค้นพบล้มเหลวหรือการทดสอบต้องการ ID จริง; ละเว้นเพื่อข้ามการทดสอบเหล่านั้น):

ตัวแปรคำอธิบาย
APPCIRCLE_TEST_ORGANIZATION_IDUUID ขององค์กร ใช้โดย test_with_organization_id (รายงานการใช้งานแอปแอปสโตร์องค์กร)
APPCIRCLE_TEST_BRANCH_IDUUID ของสาขา ใช้โดย get_commits_by_branch และการทดสอบที่เกี่ยวข้องเมื่อไม่สามารถค้นพบสาขาจาก API ได้
APPCIRCLE_TEST_COMMIT_IDUUID ของคอมมิต ใช้โดยการทดสอบ get_commit_details เมื่อไม่สามารถค้นพบคอมมิตจาก API ได้
การทดสอบการรวมระบบแบบเขียน/ดำเนินการ (trigger_build, cancel_build, ฯลฯ) ถูกทำเครื่องหมายเป็น integration_write และเป็น การเลือกใช้เพิ่มเติมจาก APPCIRCLE_ACCESS_TOKEN — การทดสอบเหล่านี้เปลี่ยนแปลงข้อมูลจริง (ทริกเกอร์บิลด์จริง ฯลฯ) ดังนั้นจึงไม่เคยทำงานเพียงแค่จาก pytest test/integration/ -v ตั้งค่า APPCIRCLE_RUN_WRITE_INTEGRATION_TESTS=true (ชี้ APPCIRCLE_ACCESS_TOKEN ไปที่ องค์กรทดสอบโดยเฉพาะ ไม่ใช่โปรดักชัน) เพื่อเปิดใช้งาน

ความปลอดภัย

โปรเจกต์นี้ขึ้นอยู่กับแพ็กเกจโอเพนซอร์สจากบุคคลที่สามที่ระบุไว้ใน pyproject.toml แม้ว่าเราจะกำหนดช่วงเวอร์ชันของ dependency และ จัดส่ง lockfile (uv.lock) พร้อมแฮชเข้ารหัส แต่แพ็กเกจเหล่านี้ ได้รับการดูแลอย่างอิสระและให้บริการ "ตามสภาพ" Appcircle ไม่รับประกัน เกี่ยวกับความปลอดภัยหรือความน่าเชื่อถือของ dependency จากบุคคลที่สาม

เราขอแนะนำให้ตรวจสอบแพ็กเกจที่ติดตั้งก่อนใช้งาน:

uv run pip-audit