Appcircle MCP Server

chính thức

Máy chủ MCP chính thức của Appcircle

Bạn có thể làm gì với Appcircle MCP?

  • Theo dõi trạng thái và nhật ký bản dựng — Dùng get_build_statusget_build_logs để kiểm tra các lần chạy pipeline và gỡ lỗi sự cố.
  • Kích hoạt hoặc hủy bản dựng — Dùng trigger_buildcancel_build để bắt đầu hoặc dừng các lần chạy bản dựng thực tế.
  • Tạo thông tin chi tiết về sức khỏe CI/CD — Dùng get_build_insights_report để lấy ảnh chụp nhanh tổng hợp về sức khỏe, xu hướng và phân tích nguyên nhân gốc rễ.
  • Quản lý phân phối thử nghiệm — Dùng get_distribution_profilessend_app_version_to_testers để gửi bản dựng cho người thử nghiệm.
  • Kiểm tra danh tính ký — Dùng get_certificates, get_keystoresget_provisioning_profiles để xem lại thiết lập ký.
  • Theo dõi xuất bản lên cửa hàng — Dùng get_publish_profilesget_publish_details để giám sát các lần chạy luồng xuất bản.

Tài liệu

Máy chủ MCP cho Appcircle: cung cấp các công cụ Build, Signing Identities, Testing Distribution, Enterprise App Store, Publish to Stores và Reporting cho mọi ứng dụng khách hỗ trợ MCP (Claude Desktop, Cursor, VS Code, v.v.). Appcircle MCP Server đóng vai trò là cầu nối giữa các công cụ AI và Appcircle; nhờ đó, các tác tử AI, trợ lý và chatbot có thể truy cập và tương tác an toàn với các tài nguyên của Appcircle thông qua các công cụ có cấu trúc, được quản lý và theo cấp tác vụ.

Use Cases

  • CI/CD và Workflow Intelligence: Giám sát các lần chạy pipeline, theo dõi trạng thái phát hành và nhận thông tin chi tiết về quy trình CI/CD di động của bạn.
  • Configuration và Environment Insights: Truy vấn cấu hình build và thiết lập ký để hiểu cách dự án được cấu hình cũng như nơi có thể phát sinh sự cố.
  • Reporting và Operational Insights: Tạo bản tóm tắt về độ ổn định của CI, các sự cố tái diễn, hiệu suất pipeline và tình trạng tổng thể của CI/CD.

Running Modes

Bạn có thể sử dụng MCP server theo bốn cách:

ModeSummary
1. Remote hostKết nối đến https://mcp.appcircle.io. Không cần cài đặt cục bộ; ứng dụng khách của bạn gửi mã thông báo Appcircle (ví dụ: Authorization: Bearer <token>) trong mỗi yêu cầu.
2. Local (stdio)Chạy server từ mã nguồn: clone repo, tùy chọn dùng venv, sau đó chạy appcircle-mcp (giao thức vận chuyển mặc định là stdio). Yêu cầu Python và pip. Đặt APPCIRCLE_ACCESS_TOKEN trong môi trường. Ứng dụng khách MCP của bạn chạy server dưới dạng tiến trình con.
3. Local (streamable-http)Chạy server cục bộ qua HTTP: dùng --transport streamable-http và tùy chọn --host / --port (ví dụ: appcircle-mcp --transport streamable-http --host 127.0.0.1 --port 8000). Ứng dụng khách kết nối đến URL đó và gửi mã thông báo của họ trong yêu cầu.
4. Local (Docker)Chạy image Docker chính thức trên máy của bạn. Yêu cầu Docker. Dùng cổng mặc định của image hoặc ghi đè bằng --port; xem tài liệu image để biết cách sử dụng chính xác.

Cấu hình chi tiết cho ứng dụng khách (Cursor, Claude, v.v.) nằm trong hướng dẫn cài đặt chuyên biệt; phần này chỉ là tóm tắt tổng quan.

Installation

Hướng dẫn cài đặt theo từng ứng dụng khách:

Configuration (Environment Variables)

VariableRequiredDescription
APPCIRCLE_ACCESS_TOKENCó (chỉ stdio)Mã thông báo truy cập API Appcircle. Bắt buộc khi dùng giao thức vận chuyển stdio. Với streamable-http, mỗi ứng dụng khách tự gửi mã thông báo của mình. Xem Lấy mã thông báo để biết cách lấy.
APPCIRCLE_API_URLKhôngURL gốc API (mặc định: https://api.appcircle.io có thể khác với người dùng self-hosted).
APPCIRCLE_MCP_ALLOWED_HOSTKhông (chỉ streamable-http)Tên máy chủ công khai cho MCP server (ví dụ: mcp.appcircle.io). Đặt giá trị này khi triển khai sau reverse proxy để server chấp nhận header Host từ ứng dụng khách. Bỏ trống khi dùng localhost.
APPCIRCLE_MCP_PORTKhông (chỉ streamable-http)Cổng bind cho HTTP server (mặc định: 8000). Bị ghi đè bởi --port nếu được cung cấp. Hữu ích cho on-prem hoặc Docker khi cần một cổng cụ thể.
LOG_LEVELKhôngMức ghi log, ví dụ: DEBUG, INFO (mặc định: INFO).
APPCIRCLE_EXCLUDED_TOOLSETSKhôngDanh sách toolset được phân tách bằng dấu phẩy để loại trừ (ví dụ: build_module,report). Xem Toolsets bên dưới.
AC_MCP_ENABLE_WRITE_TOOLSKhôngCác công cụ ghi/hành động (ví dụ: trigger_build, cancel_build) được đăng ký theo mặc định. Đặt thành false/0/no/off để từ chối và không đăng ký chúng (không chỉ vô hiệu hóa khi gọi).

Đặt các biến này trong shell hoặc trong cấu hình ứng dụng khách MCP của bạn.

Toolsets

Available Toolsets

Các tập công cụ sau đây có sẵn:

ToolsetDescription
build_moduleHồ sơ build, cấu hình, workflow, commit và các thao tác pipeline
signing_identitiesDanh tính ký và mã định danh bundle
testing_distributionHồ sơ phân phối thử nghiệm và chi tiết phân phối
publish_to_storesHồ sơ xuất bản và các thao tác xuất bản lên cửa hàng
enterprise_app_storeHồ sơ cửa hàng ứng dụng doanh nghiệp và chi tiết cửa hàng
reportBáo cáo: lịch sử build, phân phối, ký, trạng thái xuất bản và các báo cáo liên quan

Bạn có thể loại trừ một hoặc nhiều toolset để các công cụ của chúng không được đăng ký. Việc loại trừ có thể được đặt qua đối số CLI hoặc biến môi trường APPCIRCLE_EXCLUDED_TOOLSETS; cả hai được hợp nhất (union).

  • CLI: --exclude toolset1 toolset2 hoặc --exclude-toolsets toolset1,toolset2
  • Env: APPCIRCLE_EXCLUDED_TOOLSETS=build_module,report

Ví dụ cấu hình MCP (Cursor / Claude Desktop) có loại trừ:

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

Tools

Các công cụ được hiển thị qua MCP tools/list. Danh sách tham chiếu dưới đây liệt kê tất cả công cụ theo toolset; để biết định dạng phản hồi và ví dụ, xem docs/tool_contract.md.

Build
  • get_build_profiles - Lấy hồ sơ build cho tổ chức hiện tại (phân trang). Tùy chọn lọc theo tên hồ sơ, nền tảng, trạng thái build gần nhất và nguồn repository. Tùy chọn sắp xếp.

    • Mức truy cập: read
    • page: Số trang (bắt đầu từ 1). Mặc định: 1. (number, optional)
    • size: Kích thước trang (1-100). Mặc định: 25. Giá trị trên 100 bị giới hạn ở 100. (number, optional)
    • search: Từ khóa tìm kiếm tùy chọn để lọc hồ sơ (khớp một phần không phân biệt hoa thường theo tên hồ sơ; API tìm kiếm có thể khớp cả các trường hồ sơ khác). (string, optional)
    • platform: Danh sách mã nền tảng tùy chọn để lọc. Giá trị cho phép: 1=iOS, 2=Android. (list of numbers, optional)
    • last_build_status: Danh sách mã trạng thái build gần nhất tùy chọn để lọc. Giá trị cho phép: 0=Success, 1=Failed, 2=Canceled, 3=Timeout, 90=Waiting, 91=Running. (list of numbers, optional)
    • repository_source: Danh sách mã nguồn repository tùy chọn để lọc. Giá trị cho phép: 1=GitHub, 2=Bitbucket, 3=GitLab, 4=Azure DevOps, 6=Public Repository, 7=Private Repository, 8=SSH. (list of numbers, optional)
    • sort: Mã trường sắp xếp tùy chọn. Giá trị cho phép: 1=Profile Name, 2=Create Date, 3=Last Build Date. (number, optional)
    • sort_direction: Mã hướng sắp xếp tùy chọn. Giá trị cho phép: 1=ASC, 2=DESC. (number, optional)
  • get_build_profile_details - Lấy một hồ sơ build theo ID, tùy chọn bao gồm cả cấu hình build của hồ sơ đó.

    • Mức truy cập: read
    • profile_id: ID hồ sơ build (ví dụ: UUID). (string, required)
    • configurations: Nếu true, cũng lấy các cấu hình build của hồ sơ. Mặc định: false. (boolean, optional)
  • get_build_configuration_details - Lấy một cấu hình build theo ID hồ sơ và ID cấu hình.

    • Mức truy cập: read
    • profile_id: ID hồ sơ build (ví dụ: UUID). (string, required)
    • configuration_id: ID cấu hình build (ví dụ: UUID). (string, required)
  • get_build_profile_workflows - Lấy workflow cho một hồ sơ build theo ID hồ sơ.

    • Mức truy cập: read
    • profile_id: ID hồ sơ build (ví dụ: UUID). (string, required)
  • get_workflow_detail - Lấy một workflow theo ID hồ sơ build và ID workflow.

    • Mức truy cập: read
    • profile_id: ID hồ sơ build (ví dụ: UUID). (string, required)
    • workflow_id: ID workflow (ví dụ: UUID). (string, required)
  • get_commits_by_branch - Lấy commit cho một nhánh build (phân trang).

    • Mức truy cập: read
    • branch_id: ID nhánh (ví dụ: UUID). (string, required)
    • page: Số trang (bắt đầu từ 1). Nếu cung cấp kèm size, bật phân trang. Mặc định: 1. (number, optional)
    • size: Kích thước trang. Nếu cung cấp kèm page, bật phân trang. Mặc định: 25, tối đa 100. (number, optional)
  • get_commit_details - Lấy một commit theo ID commit (UUID) hoặc theo hash commit (git SHA). Cung cấp commit_id hoặc commit_hash, không cung cấp cả hai.

    • Mức truy cập: read
    • commit_id: ID commit (UUID). (string, optional)
    • commit_hash: Hash commit (git SHA). (string, optional)
  • get_last_commit - Lấy commit gần nhất trên một nhánh build.

    • Mức truy cập: read
    • branch_id: ID nhánh (ví dụ: UUID). (string, required)
  • get_build_status - Lấy trạng thái của một build (ví dụ: 0=Success, 1=Failed, 2=Canceled, 3=Timeout, 90=Waiting, 91=Running, 92=Completing, 99=Unknown).

    • Mức truy cập: read
    • commit_id: ID commit (UUID). (string, required)
    • build_id: ID build (UUID). (string, required)
  • get_build_logs - Lấy nhật ký của một build, tùy chọn giới hạn ở một bước. Mặc định hiển thị dạng cắt bớt phần cuối để tránh làm tràn ngữ cảnh của mô hình.

    • Mức truy cập: read
    • commit_id: ID commit (UUID). (string, required)
    • build_id: ID build (UUID). (string, required)
    • step: Tên bước chính xác tùy chọn (không phân biệt hoa thường) để giới hạn đầu ra ở khối nhật ký của một bước. (string, optional)
    • full_log: Nếu true, trả về toàn bộ nhật ký thay vì phần cuối mặc định. Vẫn giới hạn ở 256 KB. Mặc định: false. (boolean, optional)
    • tail_lines: Số dòng giữ lại từ cuối khi không dùng full_log. Mặc định: 200, tối đa 1000. (number, optional)
    • grep: Bộ lọc chuỗi con không phân biệt hoa thường áp dụng cho các dòng trước khi cắt bớt. (string, optional)
  • get_variable_groups - Lấy tất cả nhóm biến môi trường build của tổ chức, bao gồm biến của từng nhóm (key, value, isSecret, isFile). Giá trị bí mật đã được API làm mờ.

    • Mức truy cập: read
    • Không có tham số.
  • trigger_build - SIDE EFFECT: bắt đầu một lần chạy build thực mới (xếp hàng một build thực, tiêu tốn phút/tín dụng build) trên một nhánh (commit đồng bộ mới nhất) hoặc cho một commit cụ thể. Được đăng ký theo mặc định; đặt AC_MCP_ENABLE_WRITE_TOOLS=false để từ chối.

    • Mức truy cập: write
    • profile_id: ID hồ sơ build (ví dụ: UUID). Bắt buộc ở chế độ branch (không có commit_id); không dùng ở chế độ commit. (string, optional)
    • workflow_id: ID workflow (ví dụ: UUID). Bắt buộc ở chế độ branch. Tùy chọn ở chế độ commit (dùng workflow cuối/dùng mặc định nếu bỏ trống). (string, optional)
    • branch_name: Tên nhánh tùy chọn (ví dụ: "main"). Chỉ dùng ở chế độ branch; fallback về nhánh mặc định của hồ sơ nếu bỏ trống. Không được cung cấp cùng với commit_id. (string, optional)
    • commit_id: ID riêng của commit (không phải git hash) để kích hoạt build cho một commit cụ thể thay vì commit mới nhất trên nhánh. Không được cung cấp cùng với branch_name. (string, optional)
    • configuration_id: ID cấu hình build tùy chọn (ví dụ: UUID) để dùng thay cho cấu hình mặc định. (string, optional)
  • cancel_build - SIDE EFFECT: hủy một build đang xếp hàng hoặc đang chạy (công việc thực đang tiến hành sẽ bị dừng; không thể tiếp tục). Được đăng ký theo mặc định; đặt AC_MCP_ENABLE_WRITE_TOOLS=false để từ chối.

    • Mức truy cập: write
    • task_id: ID tác vụ của build (trường "taskId" do trigger_build trả về). (string, required)
Signing Identities
  • get_bundle_identifiers - Lấy tất cả mã định danh bundle của tổ chức (ID bundle ứng dụng iOS/macOS).
    • Mức truy cập: read
    • Không có tham số. Dưới đây là bản dịch tiếng Việt cho phần 2/4 của tài liệu, giữ nguyên toàn bộ placeholder và cấu trúc Markdown.

  • get_certificates - Lấy tất cả chứng chỉ ký cho tổ chức. Các trường nhạy cảm (p12Password, p12Binary, metaData, thumbprint) được bỏ qua.

    • Mức truy cập: read
    • Không có tham số.
  • get_keystores - Lấy tất cả keystores cho tổ chức (ví dụ: keystores ký Android). Các trường nhạy cảm (password, aliasPassword, binary, checkSum, sha256FingerPrint) được bỏ qua.

    • Mức truy cập: read
    • Không có tham số.
  • get_provisioning_profiles - Lấy các hồ sơ cung cấp (provisioning profiles) cho tổ chức (ví dụ: iOS/macOS). Các trường nhạy cảm/lớn (binary, metaData, certificateThumbPrints, provisionedDevices, connectApiKeyId) được bỏ qua. Có thể lọc tùy chọn theo ID ứng dụng (bundle).

    • Mức truy cập: read
    • app_id: ID ứng dụng (bundle) tùy chọn để lọc hồ sơ cung cấp (ví dụ com.example.app). (string, optional)
Phân phối thử nghiệm
  • get_distribution_profiles - Lấy các hồ sơ phân phối thử nghiệm cho tổ chức hiện tại (phân trang). Có thể lọc tùy chọn theo tên hồ sơ, nền tảng và loại xác thực. Có thể sắp xếp tùy chọn.

    • Mức truy cập: read
    • page: Số trang (bắt đầu từ 1). Mặc định: 1. (number, optional)
    • size: Kích thước trang (1-100). Mặc định: 25, tối đa 100. (number, optional)
    • search: Từ khóa tìm kiếm tùy chọn để lọc hồ sơ (khớp một phần không phân biệt hoa thường trên tên hồ sơ; tìm kiếm của API cũng có thể khớp các trường khác của hồ sơ). (string, optional)
    • platform: Danh sách mã nền tảng tùy chọn để lọc. Giá trị cho phép: 1=iOS, 2=Android. (list of numbers, optional)
    • authentication_type: Danh sách mã loại xác thực tùy chọn để lọc. Giá trị cho phép: 1=Không có, 3=Đăng nhập tĩnh, 4=LDAP, 5=SSO. (list of numbers, optional)
    • sort: Mã trường sắp xếp tùy chọn. Giá trị cho phép: 1=Tên hồ sơ, 2=Ngày tạo, 3=Ngày tải lên cuối. (number, optional)
    • sort_direction: Mã hướng sắp xếp tùy chọn. Giá trị cho phép: 1=TĂNG DẦN, 2=GIẢM DẦN. (number, optional)
  • get_distribution_profile_details - Lấy một hồ sơ phân phối thử nghiệm cụ thể theo ID (có phân trang phiên bản ứng dụng tùy chọn).

    • Mức truy cập: read
    • profile_id: ID hồ sơ phân phối (ví dụ UUID). (string, required)
    • page: Số trang cho các phiên bản ứng dụng (bắt đầu từ 1). Mặc định: 1. (number, optional)
    • size: Kích thước trang cho các phiên bản ứng dụng (1-100). Mặc định: 25, tối đa 100. (number, optional)
  • get_testing_groups - Lấy tất cả nhóm phân phối thử nghiệm cho tổ chức, bao gồm email của từng tester thành viên và loại nhóm.

    • Mức truy cập: read
    • Không có tham số.
  • update_app_version_release_notes - TÁC ĐỘNG PHỤ: ghi đè ghi chú phát hành ("message") hiển thị cho tester của một phiên bản ứng dụng phân phối. Trả về đối tượng phiên bản ứng dụng đã cập nhật (loại trừ certThumbPrints). Được đăng ký mặc định; đặt AC_MCP_ENABLE_WRITE_TOOLS=false để chọn không tham gia.

    • Mức truy cập: write
    • profile_id: ID hồ sơ phân phối (ví dụ UUID). (string, required)
    • app_version_id: ID phiên bản ứng dụng (ví dụ UUID). (string, required)
    • message: Nội dung ghi chú phát hành mới. (string, required)
  • send_app_version_to_testers - TÁC ĐỘNG PHỤ: gửi thông báo thực sự đến tester/nhóm thử nghiệm, triển khai tác vụ phân phối cho một phiên bản ứng dụng cụ thể. Được đăng ký mặc định; đặt AC_MCP_ENABLE_WRITE_TOOLS=false để chọn không tham gia.

    • Mức truy cập: write
    • profile_id: ID hồ sơ phân phối (ví dụ UUID). (string, required)
    • app_version_id: ID phiên bản ứng dụng (ví dụ UUID). (string, required)
    • message: Thông báo hiển thị cho tester. (string, required)
    • testers: Danh sách tester để gửi. Mỗi mục là một địa chỉ email của tester hoặc ID nhóm thử nghiệm (trường "id" từ get_testing_groups). (list of strings, required)
Xuất bản lên cửa hàng
  • get_publish_profiles - Lấy các hồ sơ xuất bản cho tổ chức hiện tại theo một loại nền tảng nhất định (phân trang). Có thể lọc tùy chọn theo trạng thái luồng, chợ ứng dụng mục tiêu, sự hiện diện của bản nhị phân ứng viên phát hành và trạng thái cửa hàng. Có thể sắp xếp tùy chọn.

    • Mức truy cập: read
    • platform_type: Loại nền tảng của hồ sơ xuất bản ("ios" hoặc "android"). (string, required)
    • page: Số trang (bắt đầu từ 1). Mặc định: 1. (number, optional)
    • size: Kích thước trang (1-100). Mặc định: 25, tối đa 100. (number, optional)
    • flow_status: Mã trạng thái luồng tùy chọn để lọc (ví dụ 0=Thành công, 1=Thất bại, 91=Đang chạy). (number, optional)
    • market_place_type: Danh sách mã chợ ứng dụng mục tiêu tùy chọn để lọc. Giá trị cho phép phụ thuộc vào platform_type -- ios: 0=Không khả dụng, 1=App Store Connect, 4=Intune; android: 0=Không khả dụng, 2=Google Play, 3=AppGallery, 4=Intune. (list of numbers, optional)
    • has_rc_binary: Bộ lọc tùy chọn cho việc hồ sơ có bản nhị phân ứng viên phát hành hay không. (boolean, optional)
    • store_status: Danh sách mã trạng thái cửa hàng tùy chọn để lọc. Giá trị cho phép phụ thuộc vào platform_type (nhiều mã hơn cho ios so với android, ví dụ: ios: "IN_REVIEW", "READY_FOR_SALE", "REJECTED"; android: "NOT_AVAILABLE", "DRAFT", "IN_PROGRESS", "HALTED", "COMPLETED"). (list of strings, optional)
    • sort: Mã trường sắp xếp tùy chọn. Giá trị cho phép: 1=Tên hồ sơ, 2=Ngày tạo. (number, optional)
    • sort_direction: Mã hướng sắp xếp tùy chọn. Giá trị cho phép: 1=TĂNG DẦN, 2=GIẢM DẦN. (number, optional)
  • get_publish_profile_details - Lấy một hồ sơ xuất bản cụ thể theo loại nền tảng và ID (có phân trang phiên bản ứng dụng tùy chọn).

    • Mức truy cập: read
    • platform_type: Loại nền tảng ("ios" hoặc "android"). (string, required)
    • profile_id: ID hồ sơ xuất bản (ví dụ UUID). (string, required)
    • page: Số trang cho các phiên bản ứng dụng (bắt đầu từ 1). Mặc định: 1. (number, optional)
    • size: Kích thước trang cho các phiên bản ứng dụng (1-100). Mặc định: 25, tối đa 100. (number, optional)
  • get_app_version_metadata - Lấy siêu dữ liệu danh sách cửa hàng cho một phiên bản ứng dụng (thông tin đánh giá ứng dụng, bản địa hóa, thông tin phát hành, thông tin phiên bản ứng dụng). appReviewInformation.demoPassword bị loại trừ.

    • Mức truy cập: read
    • platform_type: Loại nền tảng ("ios" hoặc "android"). (string, required)
    • profile_id: ID hồ sơ xuất bản (ví dụ UUID). (string, required)
    • app_version_id: ID phiên bản ứng dụng (ví dụ UUID). (string, required)
  • get_metadata_locales - Lấy các locale siêu dữ liệu cửa hàng khả dụng cho một phiên bản ứng dụng (tên, mã, được bản địa hóa, isPrimary).

    • Mức truy cập: read
    • platform_type: Loại nền tảng ("ios" hoặc "android"). (string, required)
    • profile_id: ID hồ sơ xuất bản (ví dụ UUID). (string, required)
    • app_version_id: ID phiên bản ứng dụng (ví dụ UUID). (string, required)
  • get_intune_metadata - Lấy siêu dữ liệu ứng dụng Microsoft Intune cho một phiên bản ứng dụng (tên hiển thị, nhà xuất bản, bundle ID, phiên bản, trạng thái xuất bản, loại thiết bị áp dụng, danh mục, v.v.).

    • Mức truy cập: read
    • platform_type: Loại nền tảng ("ios" hoặc "android"). (string, required)
    • profile_id: ID hồ sơ xuất bản (ví dụ UUID). (string, required)
    • app_version_id: ID phiên bản ứng dụng (ví dụ UUID). (string, required)
  • get_publish_metadata_lock_status - Kiểm tra xem siêu dữ liệu cửa hàng của hồ sơ xuất bản có bị khóa chỉnh sửa hay không.

    • Mức truy cập: read
    • platform_type: Loại nền tảng ("ios" hoặc "android"). (string, required)
    • profile_id: ID hồ sơ xuất bản (ví dụ UUID). (string, required)
  • get_publish_details - Lấy chi tiết luồng xuất bản cho một phiên bản ứng dụng (trạng thái, thời gian, các bước có thứ tự với lịch sử chạy/artifact/ID tài nguyên log).

    • Mức truy cập: read
    • platform_type: Loại nền tảng ("ios" hoặc "android"). (string, required)
    • profile_id: ID hồ sơ xuất bản (ví dụ UUID). (string, required)
    • app_version_id: ID phiên bản ứng dụng (ví dụ UUID). (string, required)
  • get_publish_step_logs - Lấy log cho một luồng xuất bản, có thể giới hạn trong một bước cụ thể. Mặc định hiển thị dạng cắt bớt phần cuối để tránh tràn ngập ngữ cảnh của mô hình.

    • Mức truy cập: read
    • platform_type: Loại nền tảng ("ios" hoặc "android"). (string, required)
    • profile_id: ID hồ sơ xuất bản (ví dụ UUID). (string, required)
    • publish_id: ID luồng xuất bản (trường "id" từ get_publish_details). (string, required)
    • step_id: ID bước (trường "id" của bước từ danh sách steps của get_publish_details). (string, required)
    • step: Tên bước chính xác tùy chọn (không phân biệt hoa thường) để giới hạn đầu ra vào khối log của một bước. (string, optional)
    • full_log: Nếu true, trả về toàn bộ log thay vì phần cuối mặc định. Vẫn giới hạn ở 256 KB. Mặc định: false. (boolean, optional)
    • tail_lines: Số dòng giữ lại từ cuối khi không dùng full_log. Mặc định: 200, tối đa 1000. (number, optional)
    • grep: Bộ lọc chuỗi con không phân biệt hoa thường áp dụng cho các dòng trước khi cắt bớt. (string, optional)
  • get_publish_flows - Lấy các luồng xuất bản được cấu hình cho một hồ sơ xuất bản (tên, ID, toàn bộ tài liệu luồng YAML).

    • Mức truy cập: read
    • platform_type: Loại nền tảng ("ios" hoặc "android"). (string, required)
    • profile_id: ID hồ sơ xuất bản (ví dụ UUID). (string, required)
  • start_publish - TÁC ĐỘNG PHỤ: bắt đầu một luồng xuất bản (hoặc khởi động lại từ một bước cụ thể) -- thực hiện công việc xuất bản thực sự (ví dụ: tải lên App Store/Play Store/Intune). Được đăng ký mặc định; đặt AC_MCP_ENABLE_WRITE_TOOLS=false để chọn không tham gia.

    • Mức truy cập: write
    • platform_type: Loại nền tảng ("ios" hoặc "android"). (string, required)
    • profile_id: ID hồ sơ xuất bản (ví dụ UUID). (string, required)
    • publish_id: ID luồng xuất bản (trường "id" từ get_publish_details). (string, required)
    • step_id: ID bước tùy chọn để bắt đầu từ bước đó thay vì đầu luồng. (string, optional)
    • organization_pool_id: ID nhóm tổ chức tùy chọn (ví dụ UUID) để chạy. (string, optional)
  • stop_publish - TÁC ĐỘNG PHỤ: hủy một luồng xuất bản đang chạy (công việc thực tế đang diễn ra bị dừng; không thể tiếp tục). Được đăng ký mặc định; đặt AC_MCP_ENABLE_WRITE_TOOLS=false để chọn không tham gia.

    • Mức truy cập: write
    • platform_type: Loại nền tảng ("ios" hoặc "android"). (string, required)
    • profile_id: ID hồ sơ xuất bản (ví dụ UUID). (string, required)
    • publish_id: ID luồng xuất bản (trường "id" từ get_publish_details). (string, required)
    • step_id: ID bước tùy chọn. (string, optional)
    • organization_pool_id: ID nhóm tổ chức tùy chọn (ví dụ UUID). (string, optional)
Enterprise App Store
  • get_store_profiles - Lấy các hồ sơ cửa hàng ứng dụng doanh nghiệp cho tổ chức hiện tại (phân trang). Không hỗ trợ tìm kiếm, nhưng có thể lọc theo nền tảng, loại xuất bản và mức hiển thị. Có thể sắp xếp tùy chọn.
    • Mức truy cập: read
    • page: Số trang (bắt đầu từ 1). Mặc định: 1. (number, optional)
    • size: Kích thước trang (1-100). Mặc định: 25, tối đa 100. (number, optional)
    • platform_type: Danh sách mã nền tảng tùy chọn để lọc. Giá trị cho phép: 1=iOS, 2=Android. (list of numbers, optional)
    • publish_type: Danh sách mã loại xuất bản tùy chọn để lọc. Giá trị cho phép: 1=Xuất bản Beta, 2=Xuất bản Live. (list of numbers, optional)
    • visibility: Bộ lọc tùy chọn cho việc hồ sơ được liệt kê công khai (true=Đã liệt kê, false=Không liệt kê). (boolean, optional)
    • sort: Mã trường sắp xếp tùy chọn. Giá trị cho phép: 1=Tên ứng dụng, 2=Ngày tạo, 3=Số lượt tải, 4=Ngày nhận binary. (number, optional)
    • sort_direction: Mã hướng sắp xếp tùy chọn. Giá trị cho phép: 1=TĂNG DẦN, 2=GIẢM DẦN. (number, optional)
  • get_store_profile_details - Lấy thông tin chi tiết một hồ sơ cửa hàng ứng dụng doanh nghiệp theo ID (có phân trang tùy chọn cho các phiên bản ứng dụng).
    • Mức truy cập: read
    • profile_id: ID hồ sơ cửa hàng ứng dụng doanh nghiệp (ví dụ: UUID). (string, bắt buộc)
    • page: Số trang cho các phiên bản ứng dụng (bắt đầu từ 1). Mặc định: 1. (number, tùy chọn)
    • size: Kích thước trang cho các phiên bản ứng dụng (1-100). Mặc định: 25, tối đa 100. (number, tùy chọn)
    • Trường publishType của mỗi phiên bản ứng dụng là một số nguyên: 0=Không có, 1=Beta, 2=Live.
Báo cáo
  • get_build_history_report - Lấy báo cáo lịch sử build, có thể lọc theo khoảng ngày, hồ sơ build và tổ chức. Có phân trang.

    • Mức truy cập: read
    • start_date: Ngày bắt đầu tùy chọn (YYYY-MM-DD). (string, tùy chọn)
    • end_date: Ngày kết thúc tùy chọn (YYYY-MM-DD). (string, tùy chọn)
    • page: Số trang (mặc định: 1). (number, tùy chọn)
    • size: Số mục trên mỗi trang (1-100, mặc định: 50). (number, tùy chọn)
    • build_profile_name: Lọc theo tên hồ sơ build. (string, tùy chọn)
    • organization_id: Lọc theo UUID của tổ chức. (string, tùy chọn)
  • get_build_queue_waiting_report - Lấy báo cáo thời gian chờ trong hàng đợi build, có thể lọc theo khoảng ngày. Có phân trang. Lưu ý: trên endpoint này, buildDuration nghĩa là thời gian chờ trong hàng đợi tính bằng phút, không phải thời gian thực thi (khác với get_build_history_report).

    • Mức truy cập: read
    • start_date: Ngày bắt đầu tùy chọn (YYYY-MM-DD). Phải <= end_date nếu cả hai được cung cấp. (string, tùy chọn)
    • end_date: Ngày kết thúc tùy chọn (YYYY-MM-DD). (string, tùy chọn)
    • page: Số trang (mặc định: 1). (number, tùy chọn)
    • size: Số mục trên mỗi trang (1-100, mặc định: 50). (number, tùy chọn)
  • get_build_activity_log - Lấy nhật ký hoạt động build (thay đổi workflow/hồ sơ, bản phát hành CodePush, v.v.), có thể lọc theo khoảng ngày và các tham số khác. Có phân trang.

    • Mức truy cập: read
    • start_date: Ngày bắt đầu tùy chọn (YYYY-MM-DD). Phải <= end_date nếu cả hai được cung cấp. (string, tùy chọn)
    • end_date: Ngày kết thúc tùy chọn (YYYY-MM-DD). (string, tùy chọn)
    • page: Số trang (mặc định: 1). (number, tùy chọn)
    • size: Số mục trên mỗi trang (1-100, mặc định: 50). (number, tùy chọn)
    • organization_id: Lọc theo UUID của tổ chức. (string, tùy chọn)
    • platform: Lọc theo loại nền tảng (mã số nguyên, ví dụ: 0=Android, 1=iOS). (number, tùy chọn)
    • email: Lọc theo email của người dùng thực hiện. (string, tùy chọn)
    • profile_name: Lọc theo tên hồ sơ build. (string, tùy chọn)
    • action: Lọc theo mã hành động hoạt động (số nguyên; xem BUILD_ACTIVITY_ACTIONS trong mã nguồn công cụ để biết ánh xạ đầy đủ). (number, tùy chọn)
  • get_build_insights_report - Lấy Báo cáo Thông tin chi tiết về Build đã được tính toán (Ảnh chụp Tình trạng Sức khỏe + Xu hướng, Nguyên nhân gốc, Sức khỏe Artifact, Chất lượng Workflow, Thời gian chờ trong hàng đợi và phân tích Đánh giá Mức độ Trưởng thành) dựa trên lịch sử build, được tổng hợp phía máy chủ. Khác với get_build_history_report, báo cáo này tự động lấy từng trang bên trong và trả về các kết quả được tổng hợp trước nhỏ thay vì các bản ghi thô.

    • Mức truy cập: read
    • start_date: Ngày bắt đầu tùy chọn (YYYY-MM-DD) cho giai đoạn hiện tại. Mặc định: 30 ngày gần nhất. (string, tùy chọn)
    • end_date: Ngày kết thúc tùy chọn (YYYY-MM-DD) cho giai đoạn hiện tại. (string, tùy chọn)
    • sections: Danh sách tùy chọn các phần cần tính toán: health_snapshot, root_cause, artifact_health, workflow_quality, queue_time, maturity_assessment. Mặc định: tất cả sáu phần. (array of strings, tùy chọn)
    • include_sub_orgs: Nếu true, giữ các bản ghi build đa tổ chức trong các chỉ số dựa trên lịch sử thay vì lọc theo tổ chức của token. Mặc định: false. (boolean, tùy chọn)
  • get_distribution_app_version_report - Lấy báo cáo sử dụng hàng ngày cho các phiên bản ứng dụng được phân phối. Có phân trang; hỗ trợ lọc theo hồ sơ, hệ điều hành, tổ chức.

    • Mức truy cập: read
    • start_date: Ngày bắt đầu tùy chọn (YYYY-MM-DD). (string, tùy chọn)
    • end_date: Ngày kết thúc tùy chọn (YYYY-MM-DD). (string, tùy chọn)
    • page: Số trang (mặc định: 1). (number, tùy chọn)
    • size: Số mục trên mỗi trang (1-100, mặc định: 50). (number, tùy chọn)
    • profile_name: Lọc theo tên hồ sơ phân phối. (string, tùy chọn)
    • os: Lọc theo hệ điều hành ("ios" hoặc "android"). (string, tùy chọn)
    • organization_id: Lọc theo UUID của tổ chức. (string, tùy chọn)
  • get_distribution_sent_report - Lấy báo cáo sử dụng hàng ngày cho việc chia sẻ ứng dụng được phân phối. Có phân trang; hỗ trợ lọc theo hồ sơ, hệ điều hành, tổ chức.

    • Mức truy cập: read
    • start_date: Ngày bắt đầu tùy chọn (YYYY-MM-DD). (string, tùy chọn)
    • end_date: Ngày kết thúc tùy chọn (YYYY-MM-DD). (string, tùy chọn)
    • page: Số trang (mặc định: 1). (number, tùy chọn)
    • size: Số mục trên mỗi trang (1-100, mặc định: 50). (number, tùy chọn)
    • profile_name: Lọc theo tên hồ sơ phân phối. (string, tùy chọn)
    • os: Lọc theo hệ điều hành ("ios" hoặc "android"). (string, tùy chọn)
    • organization_id: Lọc theo UUID của tổ chức. (string, tùy chọn)
  • get_enterprise_app_store_app_usage_report - Lấy báo cáo sử dụng ứng dụng cho cửa hàng ứng dụng doanh nghiệp. start_date và end_date là bắt buộc. Có phân trang.

    • Mức truy cập: read
    • start_date: Ngày bắt đầu (YYYY-MM-DD). (string, bắt buộc)
    • end_date: Ngày kết thúc (YYYY-MM-DD). (string, bắt buộc)
    • page: Số trang (mặc định: 1). (number, tùy chọn)
    • size: Số mục trên mỗi trang (1-100, mặc định: 50). (number, tùy chọn)
    • organization_id: Bộ lọc tùy chọn theo UUID của tổ chức. (string, tùy chọn)
  • get_publish_resign_report - Lấy báo cáo ký lại khi phát hành, có thể lọc theo khoảng ngày, tên ứng dụng, tổ chức và trạng thái. Có phân trang.

    • Mức truy cập: read
    • start_date: Ngày bắt đầu tùy chọn (YYYY-MM-DD). (string, tùy chọn)
    • end_date: Ngày kết thúc tùy chọn (YYYY-MM-DD). (string, tùy chọn)
    • page: Số trang (mặc định: 1). (number, tùy chọn)
    • size: Số mục trên mỗi trang (1-100, mặc định: 50). (number, tùy chọn)
    • app_name: Lọc theo tên ứng dụng. (string, tùy chọn)
    • organization_id: Lọc theo UUID của tổ chức. (string, tùy chọn)
    • status: Lọc theo trạng thái ký lại (0=đang chờ, 1=đang xử lý, 2=thành công, 3=thất bại, 4=đã hủy, 5=hết thời gian). (number, tùy chọn)
  • get_publish_status_report - Lấy báo cáo trạng thái phát hành, có thể lọc theo khoảng ngày, tên ứng dụng, tổ chức và trạng thái. Có phân trang.

    • Mức truy cập: read
    • start_date: Ngày bắt đầu tùy chọn (YYYY-MM-DD). (string, tùy chọn)
    • end_date: Ngày kết thúc tùy chọn (YYYY-MM-DD). (string, tùy chọn)
    • page: Số trang (mặc định: 1). (number, tùy chọn)
    • size: Số mục trên mỗi trang (1-100, mặc định: 50). (number, tùy chọn)
    • app_name: Lọc theo tên ứng dụng. (string, tùy chọn)
    • organization_id: Lọc theo UUID của tổ chức. (string, tùy chọn)
    • status: Lọc theo trạng thái phát hành (ví dụ: 0=Thành công, 1=Thất bại, 91=Đang chạy). (number, tùy chọn)
  • get_signing_report - Lấy báo cáo ký, có thể lọc theo khoảng ngày, tổ chức, hệ điều hành và trạng thái build. Có phân trang.

    • Mức truy cập: read
    • start_date: Ngày bắt đầu tùy chọn (YYYY-MM-DD). (string, tùy chọn)
    • end_date: Ngày kết thúc tùy chọn (YYYY-MM-DD). (string, tùy chọn)
    • page: Số trang (mặc định: 1). (number, tùy chọn)
    • size: Số mục trên mỗi trang (1-100, mặc định: 50). (number, tùy chọn)
    • organization_id: Lọc theo UUID của tổ chức. (string, tùy chọn)
    • os: Lọc theo hệ điều hành ("ios" hoặc "android"). (string, tùy chọn)
    • build_status: Lọc theo trạng thái build (ví dụ: 0=Thành công, 1=Thất bại, 91=Đang chạy). (number, tùy chọn)
  • get_signing_activity_log - Lấy nhật ký hoạt động ký (ví dụ: thông báo hết hạn chứng chỉ/hồ sơ cấp phép/keystore), có thể lọc theo khoảng ngày và các tham số khác. Có phân trang.

    • Mức truy cập: read
    • start_date: Ngày bắt đầu tùy chọn (YYYY-MM-DD). Phải <= end_date nếu cả hai được cung cấp. (string, tùy chọn)
    • end_date: Ngày kết thúc tùy chọn (YYYY-MM-DD). (string, tùy chọn)
    • page: Số trang (mặc định: 1). (number, tùy chọn)
    • size: Số mục trên mỗi trang (1-100, mặc định: 50). (number, tùy chọn)
    • organization_id: Lọc theo UUID của tổ chức. (string, tùy chọn)
    • platform: Lọc theo nền tảng (ví dụ: "iOS", "Android"). (string, tùy chọn)
    • email: Lọc theo email của người dùng thực hiện. (string, tùy chọn)
    • action: Lọc theo mã hành động hoạt động (số nguyên; xem SIGNING_ACTIVITY_ACTIONS trong mã nguồn công cụ để biết ánh xạ đầy đủ). (number, tùy chọn)
  • get_publish_activity_log - Lấy nhật ký hoạt động phát hành (ký lại, sự kiện luồng phát hành, v.v.), có thể lọc theo khoảng ngày và các tham số khác. Có phân trang.

    • Mức truy cập: read
    • start_date: Ngày bắt đầu tùy chọn (YYYY-MM-DD). Phải <= end_date nếu cả hai được cung cấp. (string, tùy chọn)
    • end_date: Ngày kết thúc tùy chọn (YYYY-MM-DD). (string, tùy chọn)
    • page: Số trang (mặc định: 1). (number, tùy chọn)
    • size: Số mục trên mỗi trang (1-100, mặc định: 50). (number, tùy chọn)
    • organization_id: Lọc theo UUID của tổ chức. (string, tùy chọn)
    • platform: Lọc theo nền tảng (ví dụ: "iOS", "Android"). (string, tùy chọn)
    • email: Lọc theo email của người dùng thực hiện. (string, tùy chọn)
    • profile_name: Lọc theo tên hồ sơ phát hành. (string, tùy chọn)
    • action: Lọc theo mã hành động hoạt động (số nguyên; xem PUBLISH_ACTIVITY_ACTIONS trong mã nguồn công cụ để biết ánh xạ đầy đủ). (number, tùy chọn)

Chạy máy chủ

Từ thư mục gốc của repo:

python -m src.server

Hoặc sau khi pip install -e .:

appcircle-mcp

Máy chủ chạy qua stdio (hoặc SSE/HTTP tùy thuộc vào cách máy khách của bạn khởi động nó).

Định dạng phản hồi

Mọi công cụ đều trả về một phong bì tiêu chuẩn:

  • Thành công: { "success": true, "data": <payload>, "meta": { ... } }
    data là kết quả của công cụ; meta là tùy chọn (ví dụ: count, page, filters).
  • Lỗi: { "success": false, "error": { "tool", "type", "message", "details" } }
    Cấu trúc giống nhau cho tất cả các công cụ để máy khách có thể phân tích lỗi một cách nhất quán.

Đặc tả đầy đủ: docs/tool_contract.md.

Kiểm thử

Cài đặt với các phụ thuộc phát triển:

pip install -e ".[dev]"

Kiểm thử đơn vị (mặc định)

Sử dụng API mô phỏng; không cần APPCIRCLE_ACCESS_TOKEN. pytest mặc định chỉ chạy các kiểm thử này (xem testpaths trong pyproject.toml):

pytest test/unit/ -v
  • Tệp đơn lẻ: pytest test/unit/tools/build_module/test_get_build_profiles.py -v
  • Với mức độ bao phủ: pytest test/unit/ --cov=src --cov-report=term-missing

Kiểm thử tích hợp

Gọi Appcircle API thực tế. Đặt APPCIRCLE_ACCESS_TOKEN trong môi trường, sau đó chạy:

pytest test/integration/ -v
  • Tất cả kiểm thử tích hợp: pytest test/integration/ -v
  • Theo công cụ: pytest test/integration/build_module/ -v, pytest test/integration/report/ -v, v.v.
  • Theo marker: pytest -m integration -v (khi chạy từ thư mục gốc của repo; chỉ bao gồm kiểm thử tích hợp nếu cả kiểm thử đơn vị và tích hợp đều được thu thập)

Nếu APPCIRCLE_ACCESS_TOKEN không được đặt, các kiểm thử tích hợp sẽ bị bỏ qua (không gây lỗi).

Các biến môi trường tùy chọn cho kiểm thử tích hợp (khi việc phát hiện không thành công hoặc kiểm thử cần ID thực tế; bỏ qua các biến này để bỏ qua những kiểm thử đó):

BiếnMô tả
APPCIRCLE_TEST_ORGANIZATION_IDUUID của tổ chức. Được sử dụng bởi test_with_organization_id (báo cáo sử dụng ứng dụng cửa hàng ứng dụng doanh nghiệp).
APPCIRCLE_TEST_BRANCH_IDUUID của nhánh. Được sử dụng bởi get_commits_by_branch và các kiểm thử liên quan khi không thể phát hiện nhánh nào từ API.
APPCIRCLE_TEST_COMMIT_IDUUID của commit. Được sử dụng bởi các kiểm thử get_commit_details khi không thể phát hiện commit nào từ API.
Các bài kiểm tra tích hợp ghi/hành động (trigger_build, cancel_build, v.v.) được đánh dấu integration_writetùy chọn tham gia nằm trên nền APPCIRCLE_ACCESS_TOKEN — chúng làm thay đổi dữ liệu thực (kích hoạt các bản build thực, v.v.), vì vậy chúng không bao giờ chạy chỉ từ pytest test/integration/ -v. Đặt APPCIRCLE_RUN_WRITE_INTEGRATION_TESTS=true (trỏ APPCIRCLE_ACCESS_TOKEN tới một org kiểm thử chuyên dụng, không phải production) để bật chúng.

Bảo mật

Dự án này phụ thuộc vào các gói mã nguồn mở của bên thứ ba được liệt kê trong pyproject.toml. Mặc dù chúng tôi khóa chặt các phạm vi phiên bản phụ thuộc và cung cấp một lockfile (uv.lock) có băm mật mã, các gói này được duy trì độc lập và được cung cấp "nguyên trạng." Appcircle không đưa ra bất kỳ đảm bảo nào về bảo mật hoặc độ tin cậy của các phụ thuộc bên thứ ba.

Chúng tôi khuyên bạn nên kiểm tra các gói đã cài đặt trước khi sử dụng:

uv run pip-audit