Appcircle MCP Server

resmi

Server MCP resmi Appcircle

Apa yang bisa Anda lakukan dengan Appcircle MCP?

  • Pantau status dan log build — Gunakan get_build_status dan get_build_logs untuk memeriksa jalannya pipeline dan men-debug kegagalan.
  • Picu atau batalkan build — Gunakan trigger_build dan cancel_build untuk memulai atau menghentikan proses build yang sebenarnya.
  • Hasilkan wawasan kesehatan CI/CD — Gunakan get_build_insights_report untuk mendapatkan gambaran kesehatan agregat, tren, dan analisis akar masalah.
  • Kelola distribusi pengujian — Gunakan get_distribution_profiles dan send_app_version_to_testers untuk mengirim build ke penguji.
  • Periksa identitas penandatanganan — Gunakan get_certificates, get_keystores, dan get_provisioning_profiles untuk meninjau pengaturan penandatanganan.
  • Lacak penerbitan ke toko — Gunakan get_publish_profiles dan get_publish_details untuk memantau proses penerbitan.

Dokumentasi

Appcircle MCP Server

Server MCP untuk Appcircle: mengekspos alat Build, Signing Identities, Testing Distribution, Enterprise App Store, Publish to Stores, dan Reporting ke klien mana pun yang mendukung MCP (Claude Desktop, Cursor, VS Code, dll.). Appcircle MCP Server bertindak sebagai jembatan antara alat AI dan Appcircle; dengan demikian, agen AI, asisten, dan chatbot dapat mengakses dan berinteraksi dengan sumber daya Appcircle secara aman melalui alat terstruktur, terkelola, dan berbasis tugas.

Kasus Penggunaan

  • Intelijen CI/CD dan Workflow: Pantau proses pipeline, lacak status rilis, dan dapatkan wawasan tentang workflow CI/CD seluler Anda.
  • Wawasan Konfigurasi dan Lingkungan: Kueri konfigurasi build dan pengaturan penandatanganan untuk memahami bagaimana sebuah proyek dikonfigurasi dan dari mana masalah mungkin berasal.
  • Pelaporan dan Wawasan Operasional: Hasilkan ringkasan stabilitas CI, masalah yang berulang, kinerja pipeline, dan kesehatan CI/CD secara keseluruhan.

Mode Menjalankan

Anda dapat menggunakan server MCP dengan empat cara:

ModeRingkasan
1. Host jarak jauhHubungkan ke https://mcp.appcircle.io. Tanpa instalasi lokal; klien Anda mengirim token Appcircle Anda (mis. Authorization: Bearer <token>) pada setiap permintaan.
2. Lokal (stdio)Jalankan server dari sumber: klon repo, opsional gunakan venv, lalu jalankan appcircle-mcp (transport default adalah stdio). Memerlukan Python dan pip. Setel APPCIRCLE_ACCESS_TOKEN di lingkungan. Klien MCP Anda menjalankan server sebagai subproses.
3. Lokal (streamable-http)Jalankan server secara lokal melalui HTTP: gunakan --transport streamable-http dan opsional --host / --port (mis. appcircle-mcp --transport streamable-http --host 127.0.0.1 --port 8000). Klien terhubung ke URL tersebut dan mengirim token mereka dalam permintaan.
4. Lokal (Docker)Jalankan image Docker resmi di mesin Anda. Memerlukan Docker. Gunakan port default image atau timpa dengan --port; lihat dokumentasi image untuk penggunaan yang tepat.

Konfigurasi klien terperinci (Cursor, Claude, dll.) tersedia di panduan instalasi khusus; bagian ini hanya ringkasan tingkat tinggi.

Instalasi

Panduan pengaturan khusus klien:

Konfigurasi (Variabel Lingkungan)

VariabelWajibDeskripsi
APPCIRCLE_ACCESS_TOKENYa (hanya stdio)Token akses API Appcircle. Diperlukan saat menggunakan transport stdio. Untuk streamable-http, setiap klien mengirim tokennya sendiri. Lihat Memperoleh token untuk cara mendapatkannya.
APPCIRCLE_API_URLTidakURL dasar API (default: https://api.appcircle.io mungkin berbeda untuk pengguna self-hosted).
APPCIRCLE_MCP_ALLOWED_HOSTTidak (hanya streamable-http)Nama host publik untuk server MCP (mis. mcp.appcircle.io). Setel ini saat men-deploy di belakang reverse proxy agar server menerima header Host dari klien. Hapus untuk localhost.
APPCIRCLE_MCP_PORTTidak (hanya streamable-http)Port bind untuk server HTTP (default: 8000). Ditimpa oleh --port jika disediakan. Berguna untuk on-prem atau Docker saat port tertentu diperlukan.
LOG_LEVELTidakTingkat logging, mis. DEBUG, INFO (default: INFO).
APPCIRCLE_EXCLUDED_TOOLSETSTidakToolset yang dipisahkan koma untuk dikecualikan (mis. build_module,report). Lihat Toolsets di bawah.
AC_MCP_ENABLE_WRITE_TOOLSTidakAlat tulis/aksi (mis. trigger_build, cancel_build) terdaftar secara default. Setel ke false/0/no/off untuk memilih keluar dan tidak mendaftarkannya sama sekali (bukan hanya menonaktifkan saat pemanggilan).

Setel ini di shell Anda atau di konfigurasi klien MCP Anda.

Toolset

Toolset yang Tersedia

Kumpulan alat berikut tersedia:

ToolsetDeskripsi
build_moduleProfil build, konfigurasi, workflow, commit, dan operasi pipeline
signing_identitiesIdentitas penandatanganan dan pengidentifikasi bundle
testing_distributionProfil distribusi pengujian dan detail distribusi
publish_to_storesProfil publish dan operasi publish ke store
enterprise_app_storeProfil enterprise app store dan detail store
reportPelaporan: riwayat build, distribusi, penandatanganan, status publish, dan laporan terkait

Anda dapat mengecualikan satu atau lebih toolset sehingga alatnya tidak terdaftar. Pengecualian dapat diatur melalui argumen CLI atau variabel lingkungan APPCIRCLE_EXCLUDED_TOOLSETS; keduanya digabungkan (union).

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

Contoh konfigurasi MCP (Cursor / Claude Desktop) dengan pengecualian:

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

Alat

Alat diekspos melalui MCP tools/list. Referensi di bawah mencantumkan semua alat berdasarkan toolset; untuk bentuk respons dan contoh lihat docs/tool_contract.md.

Build
  • get_build_profiles - Dapatkan profil build untuk organisasi saat ini (dipaginasi). Opsional filter berdasarkan nama profil, platform, status build terakhir, dan sumber repositori. Opsional urutkan.

    • Tingkat akses: baca
    • page: Nomor halaman (berbasis 1). Default: 1. (angka, opsional)
    • size: Ukuran halaman (1-100). Default: 25. Nilai di atas 100 dibatasi hingga 100. (angka, opsional)
    • search: Istilah pencarian opsional untuk memfilter profil (pencocokan parsial tidak peka huruf besar/kecil pada nama profil; pencarian API juga dapat mencocokkan bidang profil lainnya). (string, opsional)
    • platform: Daftar opsional kode platform untuk difilter. Nilai yang diizinkan: 1=iOS, 2=Android. (daftar angka, opsional)
    • last_build_status: Daftar opsional kode status build terakhir untuk difilter. Nilai yang diizinkan: 0=Sukses, 1=Gagal, 2=Dibatalkan, 3=Waktu habis, 90=Menunggu, 91=Berjalan. (daftar angka, opsional)
    • repository_source: Daftar opsional kode sumber repositori untuk difilter. Nilai yang diizinkan: 1=GitHub, 2=Bitbucket, 3=GitLab, 4=Azure DevOps, 6=Repositori Publik, 7=Repositori Privat, 8=SSH. (daftar angka, opsional)
    • sort: Kode bidang pengurutan opsional. Nilai yang diizinkan: 1=Nama Profil, 2=Tanggal Dibuat, 3=Tanggal Build Terakhir. (angka, opsional)
    • sort_direction: Kode arah pengurutan opsional. Nilai yang diizinkan: 1=ASC, 2=DESC. (angka, opsional)
  • get_build_profile_details - Dapatkan satu profil build berdasarkan ID, opsional termasuk konfigurasi build-nya.

    • Tingkat akses: baca
    • profile_id: ID profil build (mis. UUID). (string, wajib)
    • configurations: Jika true, juga ambil konfigurasi build profil. Default: false. (boolean, opsional)
  • get_build_configuration_details - Dapatkan satu konfigurasi build berdasarkan ID profil dan ID konfigurasi.

    • Tingkat akses: baca
    • profile_id: ID profil build (mis. UUID). (string, wajib)
    • configuration_id: ID konfigurasi build (mis. UUID). (string, wajib)
  • get_build_profile_workflows - Dapatkan workflow untuk profil build berdasarkan ID profil.

    • Tingkat akses: baca
    • profile_id: ID profil build (mis. UUID). (string, wajib)
  • get_workflow_detail - Dapatkan satu workflow berdasarkan ID profil build dan ID workflow.

    • Tingkat akses: baca
    • profile_id: ID profil build (mis. UUID). (string, wajib)
    • workflow_id: ID workflow (mis. UUID). (string, wajib)
  • get_commits_by_branch - Dapatkan commit untuk cabang build (dipaginasi).

    • Tingkat akses: baca
    • branch_id: ID cabang (mis. UUID). (string, wajib)
    • page: Nomor halaman (berbasis 1). Jika disediakan dengan ukuran, mengaktifkan paginasi. Default: 1. (angka, opsional)
    • size: Ukuran halaman. Jika disediakan dengan halaman, mengaktifkan paginasi. Default: 25, maks 100. (angka, opsional)
  • get_commit_details - Dapatkan satu commit berdasarkan ID commit (UUID) atau hash commit (git SHA). Berikan commit_id atau commit_hash, bukan keduanya.

    • Tingkat akses: baca
    • commit_id: ID commit (UUID). (string, opsional)
    • commit_hash: Hash commit (git SHA). (string, opsional)
  • get_last_commit - Dapatkan commit terbaru pada cabang build.

    • Tingkat akses: baca
    • branch_id: ID cabang (mis. UUID). (string, wajib)
  • get_build_status - Dapatkan status build (mis. 0=Sukses, 1=Gagal, 2=Dibatalkan, 3=Waktu habis, 90=Menunggu, 91=Berjalan, 92=Menyelesaikan, 99=Tidak diketahui).

    • Tingkat akses: baca
    • commit_id: ID commit (UUID). (string, wajib)
    • build_id: ID build (UUID). (string, wajib)
  • get_build_logs - Dapatkan log untuk build, opsional dibatasi ke satu langkah. Defaultnya adalah tampilan terpotong di bagian akhir untuk menghindari membanjiri konteks model.

    • Tingkat akses: baca
    • commit_id: ID commit (UUID). (string, wajib)
    • build_id: ID build (UUID). (string, wajib)
    • step: Nama langkah persis opsional (tidak peka huruf besar/kecil) untuk membatasi output ke blok log satu langkah. (string, opsional)
    • full_log: Jika true, kembalikan seluruh log alih-alih bagian akhir default. Tetap dibatasi 256 KB. Default: false. (boolean, opsional)
    • tail_lines: Jumlah baris yang dipertahankan dari akhir saat tidak menggunakan full_log. Default: 200, maks 1000. (angka, opsional)
    • grep: Filter substring tidak peka huruf besar/kecil yang diterapkan pada baris sebelum pemotongan. (string, opsional)
  • get_variable_groups - Dapatkan semua grup variabel lingkungan build untuk organisasi, termasuk variabel setiap grup (key, value, isSecret, isFile). Nilai rahasia sudah disunting oleh API.

    • Tingkat akses: baca
    • Tidak menerima parameter.
  • trigger_build - EFEK SAMPING: memulai proses build nyata baru (mengantrekan build aktual, menghabiskan menit/kredit build) baik pada cabang (commit tersinkron terbaru) atau untuk satu commit tertentu. Terdaftar secara default; setel AC_MCP_ENABLE_WRITE_TOOLS=false untuk memilih keluar.

    • Tingkat akses: tulis
    • profile_id: ID profil build (mis. UUID). Wajib dalam mode cabang (commit_id tidak diberikan); tidak digunakan dalam mode commit. (string, opsional)
    • workflow_id: ID workflow (mis. UUID). Wajib dalam mode cabang. Opsional dalam mode commit (menggunakan workflow terakhir yang digunakan/default jika dihilangkan). (string, opsional)
    • branch_name: Nama cabang opsional (mis. "main"). Hanya mode cabang; kembali ke cabang default profil jika dihilangkan. Tidak boleh diberikan bersama commit_id. (string, opsional)
    • commit_id: ID commit itu sendiri (bukan hash git-nya) untuk memicu build untuk commit tertentu alih-alih yang terbaru pada cabang. Tidak boleh diberikan bersama branch_name. (string, opsional)
    • configuration_id: ID konfigurasi build opsional (mis. UUID) untuk digunakan alih-alih default. (string, opsional)
  • cancel_build - EFEK SAMPING: membatalkan build yang diantrekan atau sedang berjalan (pekerjaan nyata yang sedang berlangsung dihentikan; tidak dapat dilanjutkan). Terdaftar secara default; setel AC_MCP_ENABLE_WRITE_TOOLS=false untuk memilih keluar.

    • Tingkat akses: tulis
    • task_id: ID tugas build (bidang "taskId" yang dikembalikan oleh trigger_build). (string, wajib)
Signing Identities
  • get_bundle_identifiers - Dapatkan semua pengidentifikasi bundle untuk organisasi (ID bundle aplikasi iOS/macOS).

    • Tingkat akses: baca
    • Tidak ada parameter.
  • get_certificates - Mendapatkan semua sertifikat penandatanganan untuk organisasi. Bidang sensitif (p12Password, p12Binary, metaData, thumbprint) dihilangkan.

    • Tingkat akses: baca
    • Tidak ada parameter.
  • get_keystores - Mendapatkan semua keystore untuk organisasi (mis. keystore penandatanganan Android). Bidang sensitif (password, aliasPassword, binary, checkSum, sha256FingerPrint) dihilangkan.

    • Tingkat akses: baca
    • Tidak ada parameter.
  • get_provisioning_profiles - Mendapatkan profil provisioning untuk organisasi (mis. iOS/macOS). Bidang sensitif/berukuran besar (binary, metaData, certificateThumbPrints, provisionedDevices, connectApiKeyId) dihilangkan. Opsional dapat difilter berdasarkan ID aplikasi (bundle).

    • Tingkat akses: baca
    • app_id: ID aplikasi (bundle) opsional untuk memfilter profil provisioning (mis. com.example.app). (string, opsional)
Distribusi Pengujian
  • get_distribution_profiles - Mendapatkan profil distribusi pengujian untuk organisasi saat ini (dengan paginasi). Opsional dapat difilter berdasarkan nama profil, platform, dan jenis autentikasi. Opsional dapat diurutkan.

    • Tingkat akses: baca
    • page: Nomor halaman (berbasis 1). Default: 1. (angka, opsional)
    • size: Ukuran halaman (1-100). Default: 25, maks 100. (angka, opsional)
    • search: Istilah pencarian opsional untuk memfilter profil (pencocokan parsial tidak peka huruf besar/kecil pada nama profil; pencarian API mungkin juga mencocokkan bidang profil lainnya). (string, opsional)
    • platform: Daftar kode platform opsional untuk difilter. Nilai yang diizinkan: 1=iOS, 2=Android. (daftar angka, opsional)
    • authentication_type: Daftar kode jenis autentikasi opsional untuk difilter. Nilai yang diizinkan: 1=None, 3=Static Login, 4=LDAP, 5=SSO. (daftar angka, opsional)
    • sort: Kode bidang pengurutan opsional. Nilai yang diizinkan: 1=Nama Profil, 2=Tanggal Dibuat, 3=Tanggal Unggahan Terakhir. (angka, opsional)
    • sort_direction: Kode arah pengurutan opsional. Nilai yang diizinkan: 1=ASC, 2=DESC. (angka, opsional)
  • get_distribution_profile_details - Mendapatkan satu profil distribusi pengujian berdasarkan ID (dengan paginasi versi aplikasi opsional).

    • Tingkat akses: baca
    • profile_id: ID profil distribusi (mis. UUID). (string, wajib)
    • page: Nomor halaman untuk versi aplikasi (berbasis 1). Default: 1. (angka, opsional)
    • size: Ukuran halaman untuk versi aplikasi (1-100). Default: 25, maks 100. (angka, opsional)
  • get_testing_groups - Mendapatkan semua grup distribusi pengujian untuk organisasi, termasuk email penguji anggota setiap grup dan jenis grup.

    • Tingkat akses: baca
    • Tidak menerima parameter.
  • update_app_version_release_notes - EFEK SAMPING: menimpa catatan rilis ("message") yang ditampilkan kepada penguji untuk versi aplikasi distribusi. Mengembalikan objek versi aplikasi yang diperbarui (mengecualikan certThumbPrints). Terdaftar secara default; atur AC_MCP_ENABLE_WRITE_TOOLS=false untuk memilih keluar.

    • Tingkat akses: tulis
    • profile_id: ID profil distribusi (mis. UUID). (string, wajib)
    • app_version_id: ID versi aplikasi (mis. UUID). (string, wajib)
    • message: Teks catatan rilis baru. (string, wajib)
  • send_app_version_to_testers - EFEK SAMPING: mengirim notifikasi nyata kepada penguji/grup pengujian, mengirimkan tugas distribusi untuk versi aplikasi tertentu. Terdaftar secara default; atur AC_MCP_ENABLE_WRITE_TOOLS=false untuk memilih keluar.

    • Tingkat akses: tulis
    • profile_id: ID profil distribusi (mis. UUID). (string, wajib)
    • app_version_id: ID versi aplikasi (mis. UUID). (string, wajib)
    • message: Pesan notifikasi yang ditampilkan kepada penguji. (string, wajib)
    • testers: Daftar penguji yang akan dikirimi. Setiap entri adalah alamat email penguji atau ID grup pengujian (bidang "id" dari get_testing_groups). (daftar string, wajib)
Publikasikan ke Toko
  • get_publish_profiles - Mendapatkan profil publikasi untuk organisasi saat ini untuk jenis platform tertentu (dengan paginasi). Opsional dapat difilter berdasarkan status alur, marketplace target, keberadaan biner kandidat rilis, dan status toko. Opsional dapat diurutkan.

    • Tingkat akses: baca
    • platform_type: Jenis platform profil publikasi ("ios" atau "android"). (string, wajib)
    • page: Nomor halaman (berbasis 1). Default: 1. (angka, opsional)
    • size: Ukuran halaman (1-100). Default: 25, maks 100. (angka, opsional)
    • flow_status: Kode status alur opsional untuk difilter (mis. 0=Sukses, 1=Gagal, 91=Berjalan). (angka, opsional)
    • market_place_type: Daftar kode marketplace target opsional untuk difilter. Nilai yang diizinkan bergantung pada platform_type -- ios: 0=Tidak Tersedia, 1=App Store Connect, 4=Intune; android: 0=Tidak Tersedia, 2=Google Play, 3=AppGallery, 4=Intune. (daftar angka, opsional)
    • has_rc_binary: Filter opsional untuk apakah profil memiliki biner kandidat rilis. (boolean, opsional)
    • store_status: Daftar kode status toko opsional untuk difilter. Nilai yang diizinkan bergantung pada platform_type (lebih banyak kode untuk ios daripada android, mis. ios: "IN_REVIEW", "READY_FOR_SALE", "REJECTED"; android: "NOT_AVAILABLE", "DRAFT", "IN_PROGRESS", "HALTED", "COMPLETED"). (daftar string, opsional)
    • sort: Kode bidang pengurutan opsional. Nilai yang diizinkan: 1=Nama Profil, 2=Tanggal Dibuat. (angka, opsional)
    • sort_direction: Kode arah pengurutan opsional. Nilai yang diizinkan: 1=ASC, 2=DESC. (angka, opsional)
  • get_publish_profile_details - Mendapatkan satu profil publikasi berdasarkan jenis platform dan ID (dengan paginasi versi aplikasi opsional).

    • Tingkat akses: baca
    • platform_type: Jenis platform ("ios" atau "android"). (string, wajib)
    • profile_id: ID profil publikasi (mis. UUID). (string, wajib)
    • page: Nomor halaman untuk versi aplikasi (berbasis 1). Default: 1. (angka, opsional)
    • size: Ukuran halaman untuk versi aplikasi (1-100). Default: 25, maks 100. (angka, opsional)
  • get_app_version_metadata - Mendapatkan metadata daftar toko untuk satu versi aplikasi (informasi tinjauan aplikasi, lokalisasi, informasi rilis, informasi versi aplikasi). appReviewInformation.demoPassword dikecualikan.

    • Tingkat akses: baca
    • platform_type: Jenis platform ("ios" atau "android"). (string, wajib)
    • profile_id: ID profil publikasi (mis. UUID). (string, wajib)
    • app_version_id: ID versi aplikasi (mis. UUID). (string, wajib)
  • get_metadata_locales - Mendapatkan lokalisasi metadata toko yang tersedia untuk satu versi aplikasi (nama, kode, terlokalisasi, isPrimary).

    • Tingkat akses: baca
    • platform_type: Jenis platform ("ios" atau "android"). (string, wajib)
    • profile_id: ID profil publikasi (mis. UUID). (string, wajib)
    • app_version_id: ID versi aplikasi (mis. UUID). (string, wajib)
  • get_intune_metadata - Mendapatkan metadata aplikasi Microsoft Intune untuk satu versi aplikasi (nama tampilan, penerbit, ID bundle, versi, status publikasi, jenis perangkat yang berlaku, kategori, dll.).

    • Tingkat akses: baca
    • platform_type: Jenis platform ("ios" atau "android"). (string, wajib)
    • profile_id: ID profil publikasi (mis. UUID). (string, wajib)
    • app_version_id: ID versi aplikasi (mis. UUID). (string, wajib)
  • get_publish_metadata_lock_status - Mendapatkan apakah metadata toko profil publikasi terkunci untuk pengeditan.

    • Tingkat akses: baca
    • platform_type: Jenis platform ("ios" atau "android"). (string, wajib)
    • profile_id: ID profil publikasi (mis. UUID). (string, wajib)
  • get_publish_details - Mendapatkan detail jalannya alur publikasi untuk satu versi aplikasi (status, waktu, langkah terurut dengan riwayat berjalan/artefak/ID sumber daya log).

    • Tingkat akses: baca
    • platform_type: Jenis platform ("ios" atau "android"). (string, wajib)
    • profile_id: ID profil publikasi (mis. UUID). (string, wajib)
    • app_version_id: ID versi aplikasi (mis. UUID). (string, wajib)
  • get_publish_step_logs - Mendapatkan log untuk jalannya alur publikasi, opsional dibatasi ke satu langkah. Defaultnya adalah tampilan terpotong di bagian akhir untuk menghindari membanjiri konteks model.

    • Tingkat akses: baca
    • platform_type: Jenis platform ("ios" atau "android"). (string, wajib)
    • profile_id: ID profil publikasi (mis. UUID). (string, wajib)
    • publish_id: ID jalannya alur publikasi (bidang "id" dari get_publish_details). (string, wajib)
    • step_id: ID langkah (bidang "id" dari daftar langkah get_publish_details). (string, wajib)
    • step: Nama langkah tepat opsional (tidak peka huruf besar/kecil) untuk membatasi keluaran ke blok log satu langkah. (string, opsional)
    • full_log: Jika true, kembalikan seluruh log alih-alih bagian akhir default. Tetap dibatasi 256 KB. Default: false. (boolean, opsional)
    • tail_lines: Jumlah baris yang dipertahankan dari akhir saat tidak menggunakan full_log. Default: 200, maks 1000. (angka, opsional)
    • grep: Filter substring tidak peka huruf besar/kecil yang diterapkan pada baris sebelum pemotongan. (string, opsional)
  • get_publish_flows - Mendapatkan alur publikasi yang dikonfigurasi untuk profil publikasi (nama, ID, dokumen YAML alur lengkap).

    • Tingkat akses: baca
    • platform_type: Jenis platform ("ios" atau "android"). (string, wajib)
    • profile_id: ID profil publikasi (mis. UUID). (string, wajib)
  • start_publish - EFEK SAMPING: memulai jalannya alur publikasi (atau memulai ulang dari langkah tertentu) -- pekerjaan publikasi nyata (mis. mengunggah ke App Store/Play Store/Intune). Terdaftar secara default; atur AC_MCP_ENABLE_WRITE_TOOLS=false untuk memilih keluar.

    • Tingkat akses: tulis
    • platform_type: Jenis platform ("ios" atau "android"). (string, wajib)
    • profile_id: ID profil publikasi (mis. UUID). (string, wajib)
    • publish_id: ID jalannya alur publikasi (bidang "id" dari get_publish_details). (string, wajib)
    • step_id: ID langkah opsional untuk memulai dari langkah tersebut alih-alih dari awal alur. (string, opsional)
    • organization_pool_id: ID kumpulan organisasi opsional (mis. UUID) untuk dijalankan. (string, opsional)
  • stop_publish - EFEK SAMPING: membatalkan jalannya alur publikasi yang sedang berjalan (pekerjaan nyata yang sedang berlangsung dihentikan; tidak dapat dilanjutkan). Terdaftar secara default; atur AC_MCP_ENABLE_WRITE_TOOLS=false untuk memilih keluar.

    • Tingkat akses: tulis
    • platform_type: Jenis platform ("ios" atau "android"). (string, wajib)
    • profile_id: ID profil publikasi (mis. UUID). (string, wajib)
    • publish_id: ID jalannya alur publikasi (bidang "id" dari get_publish_details). (string, wajib)
    • step_id: ID langkah opsional. (string, opsional)
    • organization_pool_id: ID kumpulan organisasi opsional (mis. UUID). (string, opsional)
Toko Aplikasi Perusahaan
  • get_store_profiles - Mendapatkan profil toko aplikasi perusahaan untuk organisasi saat ini (dengan paginasi). Tidak mendukung pencarian, tetapi dapat difilter berdasarkan platform, jenis publikasi, dan visibilitas. Opsional dapat diurutkan.
    • Tingkat akses: baca
    • page: Nomor halaman (berbasis 1). Default: 1. (angka, opsional)
    • size: Ukuran halaman (1-100). Default: 25, maks 100. (angka, opsional)
    • platform_type: Daftar kode platform opsional untuk difilter. Nilai yang diizinkan: 1=iOS, 2=Android. (daftar angka, opsional)
    • publish_type: Daftar kode jenis publikasi opsional untuk difilter. Nilai yang diizinkan: 1=Dipublikasikan ke Beta, 2=Dipublikasikan ke Live. (daftar angka, opsional)
    • visibility: Filter opsional untuk apakah profil terdaftar secara publik (true=Terdaftar, false=Tidak terdaftar). (boolean, opsional)
    • sort: Kode bidang pengurutan opsional. Nilai yang diizinkan: 1=Nama Aplikasi, 2=Tanggal Dibuat, 3=Jumlah Unduhan, 4=Tanggal Penerimaan Biner. (angka, opsional)
    • sort_direction: Kode arah pengurutan opsional. Nilai yang diizinkan: 1=ASC, 2=DESC. (angka, opsional)
  • get_store_profile_details - Mendapatkan profil toko aplikasi enterprise tunggal berdasarkan ID (dengan paginasi versi aplikasi opsional).
    • Tingkat akses: baca
    • profile_id: ID profil toko aplikasi enterprise (mis. UUID). (string, wajib)
    • page: Nomor halaman untuk versi aplikasi (berbasis 1). Default: 1. (number, opsional)
    • size: Ukuran halaman untuk versi aplikasi (1-100). Default: 25, maks 100. (number, opsional)
    • Setiap field publishType pada versi aplikasi adalah int: 0=None, 1=Beta, 2=Live.
Report
  • get_build_history_report - Mendapatkan laporan riwayat build, opsional difilter berdasarkan rentang tanggal, profil build, dan organisasi. Dengan paginasi.

    • Tingkat akses: baca
    • start_date: Tanggal mulai opsional (YYYY-MM-DD). (string, opsional)
    • end_date: Tanggal akhir opsional (YYYY-MM-DD). (string, opsional)
    • page: Nomor halaman (default: 1). (number, opsional)
    • size: Item per halaman (1-100, default: 50). (number, opsional)
    • build_profile_name: Filter berdasarkan nama profil build. (string, opsional)
    • organization_id: Filter berdasarkan UUID organisasi. (string, opsional)
  • get_build_queue_waiting_report - Mendapatkan laporan waktu tunggu antrean build, opsional difilter berdasarkan rentang tanggal. Dengan paginasi. Catatan: pada endpoint ini, buildDuration berarti waktu tunggu antrean dalam menit, bukan waktu eksekusi (tidak seperti get_build_history_report).

    • Tingkat akses: baca
    • start_date: Tanggal mulai opsional (YYYY-MM-DD). Harus <= end_date jika keduanya diberikan. (string, opsional)
    • end_date: Tanggal akhir opsional (YYYY-MM-DD). (string, opsional)
    • page: Nomor halaman (default: 1). (number, opsional)
    • size: Item per halaman (1-100, default: 50). (number, opsional)
  • get_build_activity_log - Mendapatkan log aktivitas build (perubahan workflow/profil, rilis CodePush, dll.), opsional difilter berdasarkan rentang tanggal dan parameter lainnya. Dengan paginasi.

    • Tingkat akses: baca
    • start_date: Tanggal mulai opsional (YYYY-MM-DD). Harus <= end_date jika keduanya diberikan. (string, opsional)
    • end_date: Tanggal akhir opsional (YYYY-MM-DD). (string, opsional)
    • page: Nomor halaman (default: 1). (number, opsional)
    • size: Item per halaman (1-100, default: 50). (number, opsional)
    • organization_id: Filter berdasarkan UUID organisasi. (string, opsional)
    • platform: Filter berdasarkan jenis platform (kode integer, mis. 0=Android, 1=iOS). (number, opsional)
    • email: Filter berdasarkan email pengguna yang bertindak. (string, opsional)
    • profile_name: Filter berdasarkan nama profil build. (string, opsional)
    • action: Filter berdasarkan kode aksi aktivitas (integer; lihat BUILD_ACTIVITY_ACTIONS di sumber alat untuk pemetaan lengkap). (number, opsional)
  • get_build_insights_report - Mendapatkan Laporan Wawasan Build yang dihitung (Snapshot Kesehatan + Tren, Akar Masalah, Kesehatan Artefak, Kualitas Workflow, Waktu Antrean, dan analisis Penilaian Kematangan) dari riwayat build, diagregasi di sisi server. Tidak seperti get_build_history_report, ini mengambil setiap halaman secara internal dan mengembalikan hasil pra-agregat kecil alih-alih catatan mentah.

    • Tingkat akses: baca
    • start_date: Tanggal mulai opsional (YYYY-MM-DD) untuk periode saat ini. Default: 30 hari terakhir. (string, opsional)
    • end_date: Tanggal akhir opsional (YYYY-MM-DD) untuk periode saat ini. (string, opsional)
    • sections: Daftar opsional bagian yang akan dihitung: health_snapshot, root_cause, artifact_health, workflow_quality, queue_time, maturity_assessment. Default: keenamnya. (array of strings, opsional)
    • include_sub_orgs: Jika true, pertahankan catatan build lintas organisasi dalam metrik turunan riwayat alih-alih memfilter ke organisasi token itu sendiri. Default: false. (boolean, opsional)
  • get_distribution_app_version_report - Mendapatkan laporan penggunaan harian untuk versi aplikasi yang didistribusikan. Dengan paginasi; mendukung filter berdasarkan profil, OS, organisasi.

    • Tingkat akses: baca
    • start_date: Tanggal mulai opsional (YYYY-MM-DD). (string, opsional)
    • end_date: Tanggal akhir opsional (YYYY-MM-DD). (string, opsional)
    • page: Nomor halaman (default: 1). (number, opsional)
    • size: Item per halaman (1-100, default: 50). (number, opsional)
    • profile_name: Filter berdasarkan nama profil distribusi. (string, opsional)
    • os: Filter berdasarkan OS ("ios" atau "android"). (string, opsional)
    • organization_id: Filter berdasarkan UUID organisasi. (string, opsional)
  • get_distribution_sent_report - Mendapatkan laporan penggunaan harian untuk berbagi aplikasi yang didistribusikan. Dengan paginasi; mendukung filter berdasarkan profil, OS, organisasi.

    • Tingkat akses: baca
    • start_date: Tanggal mulai opsional (YYYY-MM-DD). (string, opsional)
    • end_date: Tanggal akhir opsional (YYYY-MM-DD). (string, opsional)
    • page: Nomor halaman (default: 1). (number, opsional)
    • size: Item per halaman (1-100, default: 50). (number, opsional)
    • profile_name: Filter berdasarkan nama profil distribusi. (string, opsional)
    • os: Filter berdasarkan OS ("ios" atau "android"). (string, opsional)
    • organization_id: Filter berdasarkan UUID organisasi. (string, opsional)
  • get_enterprise_app_store_app_usage_report - Mendapatkan laporan penggunaan aplikasi untuk toko aplikasi enterprise. start_date dan end_date wajib diisi. Dengan paginasi.

    • Tingkat akses: baca
    • start_date: Tanggal mulai (YYYY-MM-DD). (string, wajib)
    • end_date: Tanggal akhir (YYYY-MM-DD). (string, wajib)
    • page: Nomor halaman (default: 1). (number, opsional)
    • size: Item per halaman (1-100, default: 50). (number, opsional)
    • organization_id: Filter opsional berdasarkan UUID organisasi. (string, opsional)
  • get_publish_resign_report - Mendapatkan laporan penandatanganan ulang publikasi, opsional difilter berdasarkan rentang tanggal, nama aplikasi, organisasi, dan status. Dengan paginasi.

    • Tingkat akses: baca
    • start_date: Tanggal mulai opsional (YYYY-MM-DD). (string, opsional)
    • end_date: Tanggal akhir opsional (YYYY-MM-DD). (string, opsional)
    • page: Nomor halaman (default: 1). (number, opsional)
    • size: Item per halaman (1-100, default: 50). (number, opsional)
    • app_name: Filter berdasarkan nama aplikasi. (string, opsional)
    • organization_id: Filter berdasarkan UUID organisasi. (string, opsional)
    • status: Filter berdasarkan status penandatanganan ulang (0=menunggu, 1=memproses, 2=berhasil, 3=gagal, 4=dibatalkan, 5=waktu habis). (number, opsional)
  • get_publish_status_report - Mendapatkan laporan status publikasi, opsional difilter berdasarkan rentang tanggal, nama aplikasi, organisasi, dan status. Dengan paginasi.

    • Tingkat akses: baca
    • start_date: Tanggal mulai opsional (YYYY-MM-DD). (string, opsional)
    • end_date: Tanggal akhir opsional (YYYY-MM-DD). (string, opsional)
    • page: Nomor halaman (default: 1). (number, opsional)
    • size: Item per halaman (1-100, default: 50). (number, opsional)
    • app_name: Filter berdasarkan nama aplikasi. (string, opsional)
    • organization_id: Filter berdasarkan UUID organisasi. (string, opsional)
    • status: Filter berdasarkan status publikasi (mis. 0=Sukses, 1=Gagal, 91=Berjalan). (number, opsional)
  • get_signing_report - Mendapatkan laporan penandatanganan, opsional difilter berdasarkan rentang tanggal, organisasi, OS, dan status build. Dengan paginasi.

    • Tingkat akses: baca
    • start_date: Tanggal mulai opsional (YYYY-MM-DD). (string, opsional)
    • end_date: Tanggal akhir opsional (YYYY-MM-DD). (string, opsional)
    • page: Nomor halaman (default: 1). (number, opsional)
    • size: Item per halaman (1-100, default: 50). (number, opsional)
    • organization_id: Filter berdasarkan UUID organisasi. (string, opsional)
    • os: Filter berdasarkan OS ("ios" atau "android"). (string, opsional)
    • build_status: Filter berdasarkan status build (mis. 0=Sukses, 1=Gagal, 91=Berjalan). (number, opsional)
  • get_signing_activity_log - Mendapatkan log aktivitas penandatanganan (mis. pemberitahuan kedaluwarsa sertifikat/profil provisi/keystore), opsional difilter berdasarkan rentang tanggal dan parameter lainnya. Dengan paginasi.

    • Tingkat akses: baca
    • start_date: Tanggal mulai opsional (YYYY-MM-DD). Harus <= end_date jika keduanya diberikan. (string, opsional)
    • end_date: Tanggal akhir opsional (YYYY-MM-DD). (string, opsional)
    • page: Nomor halaman (default: 1). (number, opsional)
    • size: Item per halaman (1-100, default: 50). (number, opsional)
    • organization_id: Filter berdasarkan UUID organisasi. (string, opsional)
    • platform: Filter berdasarkan platform (mis. "iOS", "Android"). (string, opsional)
    • email: Filter berdasarkan email pengguna yang bertindak. (string, opsional)
    • action: Filter berdasarkan kode aksi aktivitas (integer; lihat SIGNING_ACTIVITY_ACTIONS di sumber alat untuk pemetaan lengkap). (number, opsional)
  • get_publish_activity_log - Mendapatkan log aktivitas publikasi (penandatanganan ulang, peristiwa alur publikasi, dll.), opsional difilter berdasarkan rentang tanggal dan parameter lainnya. Dengan paginasi.

    • Tingkat akses: baca
    • start_date: Tanggal mulai opsional (YYYY-MM-DD). Harus <= end_date jika keduanya diberikan. (string, opsional)
    • end_date: Tanggal akhir opsional (YYYY-MM-DD). (string, opsional)
    • page: Nomor halaman (default: 1). (number, opsional)
    • size: Item per halaman (1-100, default: 50). (number, opsional)
    • organization_id: Filter berdasarkan UUID organisasi. (string, opsional)
    • platform: Filter berdasarkan platform (mis. "iOS", "Android"). (string, opsional)
    • email: Filter berdasarkan email pengguna yang bertindak. (string, opsional)
    • profile_name: Filter berdasarkan nama profil publikasi. (string, opsional)
    • action: Filter berdasarkan kode aksi aktivitas (integer; lihat PUBLISH_ACTIVITY_ACTIONS di sumber alat untuk pemetaan lengkap). (number, opsional)

Menjalankan server

Dari root repositori:

python -m src.server

Atau setelah pip install -e .:

appcircle-mcp

Server berjalan melalui stdio (atau SSE/HTTP tergantung bagaimana klien Anda memulainya).

Format respons

Setiap alat mengembalikan amplop standar:

  • Sukses: { "success": true, "data": <payload>, "meta": { ... } }
    data adalah hasil alat; meta bersifat opsional (mis. count, page, filters).
  • Kesalahan: { "success": false, "error": { "tool", "type", "message", "details" } }
    Bentuk yang sama untuk semua alat sehingga klien dapat mengurai kesalahan secara konsisten.

Spesifikasi lengkap: docs/tool_contract.md.

Pengujian

Instal dengan dependensi pengembangan:

pip install -e ".[dev]"

Pengujian unit (default)

Gunakan API tiruan; tidak perlu APPCIRCLE_ACCESS_TOKEN. Default pytest hanya menjalankan ini (lihat testpaths di pyproject.toml):

pytest test/unit/ -v
  • File tunggal: pytest test/unit/tools/build_module/test_get_build_profiles.py -v
  • Dengan cakupan: pytest test/unit/ --cov=src --cov-report=term-missing

Pengujian integrasi

Panggil API Appcircle asli. Setel APPCIRCLE_ACCESS_TOKEN di lingkungan, lalu jalankan:

pytest test/integration/ -v
  • Semua pengujian integrasi: pytest test/integration/ -v
  • Berdasarkan alat: pytest test/integration/build_module/ -v, pytest test/integration/report/ -v, dll.
  • Berdasarkan penanda: pytest -m integration -v (saat dijalankan dari root repositori; hanya mencakup pengujian integrasi jika unit dan integrasi dikumpulkan)

Jika APPCIRCLE_ACCESS_TOKEN tidak disetel, pengujian integrasi dilewati (tidak gagal).

Variabel env opsional untuk pengujian integrasi (saat penemuan gagal atau pengujian memerlukan ID asli; abaikan untuk melewati pengujian tersebut):

VariableDeskripsi
APPCIRCLE_TEST_ORGANIZATION_IDUUID organisasi. Digunakan oleh test_with_organization_id (laporan penggunaan aplikasi toko aplikasi enterprise).
APPCIRCLE_TEST_BRANCH_IDUUID cabang. Digunakan oleh get_commits_by_branch dan pengujian terkait ketika tidak ada cabang yang dapat ditemukan dari API.
APPCIRCLE_TEST_COMMIT_IDUUID commit. Digunakan oleh pengujian get_commit_details ketika tidak ada commit yang dapat ditemukan dari API.
Tes integrasi tulis/aksi (trigger_build, cancel_build, dll.) ditandai integration_write dan opsional di atas APPCIRCLE_ACCESS_TOKEN — mereka mengubah data nyata (memicu build nyata, dll.), sehingga tidak pernah berjalan hanya dari pytest test/integration/ -v. Atur APPCIRCLE_RUN_WRITE_INTEGRATION_TESTS=true (menunjuk APPCIRCLE_ACCESS_TOKEN ke org uji khusus, bukan produksi) untuk mengaktifkannya.

Keamanan

Proyek ini bergantung pada paket sumber terbuka pihak ketiga yang tercantum di pyproject.toml. Meskipun kami mengunci rentang versi dependensi dan menyertakan file kunci (uv.lock) dengan hash kriptografi, paket-paket ini dipelihara secara independen dan disediakan "sebagaimana adanya." Appcircle tidak memberikan jaminan mengenai keamanan atau keandalan dependensi pihak ketiga.

Kami merekomendasikan untuk mengaudit paket yang terinstal sebelum digunakan:

uv run pip-audit