Appcircle MCP Server

resmi

Appcircle'ın resmi MCP Sunucusu

Appcircle MCP ile neler yapabilirsiniz?

  • Derleme durumunu ve günlükleri izleget_build_status ve get_build_logs kullanarak pipeline çalıştırmalarını kontrol edin ve hataları ayıklayın.
  • Derlemeleri tetikle veya iptal ettrigger_build ve cancel_build kullanarak gerçek derleme çalıştırmalarını başlatın veya durdurun.
  • CI/CD sağlık içgörüleri üretget_build_insights_report kullanarak toplu sağlık anlık görüntüsü, eğilimler ve kök neden analizi elde edin.
  • Test dağıtımını yönetget_distribution_profiles ve send_app_version_to_testers kullanarak derlemeleri test kullanıcılarına gönderin.
  • İmzalama kimliklerini inceleget_certificates, get_keystores ve get_provisioning_profiles kullanarak imzalama kurulumunu gözden geçirin.
  • Mağaza yayınlamayı takip etget_publish_profiles ve get_publish_details kullanarak yayın akışı çalıştırmalarını izleyin.

Dokümantasyon

Appcircle MCP Server

Appcircle için MCP sunucusu: Build, İmzalama Kimlikleri, Test Dağıtımı, Kurumsal App Store, Mağazalara Yayınlama ve Raporlama araçlarını MCP destekli her istemciye (Claude Desktop, Cursor, VS Code vb.) sunar. Appcircle MCP Sunucusu, AI araçları ile Appcircle arasında köprü görevi görür; böylece AI ajanları, asistanlar ve sohbet robotları, yapılandırılmış, yönetilen ve görev düzeyindeki araçlar aracılığıyla Appcircle kaynaklarına güvenle erişebilir ve bunlarla etkileşime girebilir.

Kullanım Alanları

  • CI/CD ve İş Akışı Zekâsı: Pipeline çalıştırmalarını izleyin, sürüm durumunu takip edin ve mobil CI/CD iş akışlarınız hakkında içgörüler edinin.
  • Yapılandırma ve Ortam İçgörüleri: Bir projenin nasıl yapılandırıldığını ve sorunların nereden kaynaklanabileceğini anlamak için build yapılandırmalarını ve imzalama kurulumunu sorgulayın.
  • Raporlama ve Operasyonel İçgörüler: CI kararlılığı, tekrarlayan sorunlar, pipeline performansı ve genel CI/CD sağlığı hakkında özetler oluşturun.

Çalıştırma Modları

MCP sunucusunu dört şekilde kullanabilirsiniz:

ModÖzet
1. Uzak ana bilgisayar (Remote host)https://mcp.appcircle.io. bağlanın; yerel kurulum gerekmez; istemciniz her istekte Appcircle token'ınızı (örn. Authorization: Bearer <token>) gönderir.
2. Yerel (stdio)Sunucuyu kaynak koddan çalıştırın: repoyu klonlayın, isteğe bağlı olarak bir venv kullanın, ardından appcircle-mcp çalıştırın (varsayılan taşıma stdio'dur). Python ve pip gerektirir. Ortamda APPCIRCLE_ACCESS_TOKEN ayarlayın. MCP istemciniz sunucuyu bir alt süreç olarak çalıştırır.
3. Yerel (streamable-http)Sunucuyu HTTP üzerinden yerel olarak çalıştırın: --transport streamable-http ve isteğe bağlı olarak --host / --port kullanın (örn. appcircle-mcp --transport streamable-http --host 127.0.0.1 --port 8000). İstemciler bu URL'ye bağlanır ve istekte token'larını gönderir.
4. Yerel (Docker)Resmi Docker imajını makinenizde çalıştırın. Docker gerektirir. İmajın varsayılan portunu kullanın veya --port ile geçersiz kılın; tam kullanım için imaj belgelerine bakın.

Ayrıntılı istemci yapılandırması (Cursor, Claude vb.) özel kurulum kılavuzlarında yer alır; bu bölüm yalnızca üst düzey bir özettir.

Kurulum

İstemciye özel kurulum kılavuzları:

Yapılandırma (Ortam Değişkenleri)

DeğişkenGerekliAçıklama
APPCIRCLE_ACCESS_TOKENEvet (yalnızca stdio)Appcircle API erişim token'ı. stdio taşıması kullanılırken gereklidir. streamable-http için her istemci kendi token'ını gönderir. Nasıl alınacağı için Token edinme bölümüne bakın.
APPCIRCLE_API_URLHayırAPI temel URL'si (varsayılan: https://api.appcircle.io; self-hosted kullanıcılar için farklı olabilir).
APPCIRCLE_MCP_ALLOWED_HOSTHayır (yalnızca streamable-http)MCP sunucusu için genel ana bilgisayar adı (örn. mcp.appcircle.io). Ters proxy arkasında dağıtım yaparken, sunucunun istemcilerden Host başlığını kabul etmesi için bunu ayarlayın. localhost için atlayın.
APPCIRCLE_MCP_PORTHayır (yalnızca streamable-http)HTTP sunucusu için bağlama portu (varsayılan: 8000). Sağlanırsa --port tarafından geçersiz kılınır. Belirli bir port gerektiğinde şirket içi veya Docker için kullanışlıdır.
LOG_LEVELHayırGünlük kaydı düzeyi, örn. DEBUG, INFO (varsayılan: INFO).
APPCIRCLE_EXCLUDED_TOOLSETSHayırHariç tutulacak virgülle ayrılmış araç setleri (örn. build_module,report). Aşağıdaki Araç Setleri bölümüne bakın.
AC_MCP_ENABLE_WRITE_TOOLSHayırYazma/eylem araçları (örn. trigger_build, cancel_build) varsayılan olarak kaydedilir. Bunları hiç kaydetmemek için false/0/no/off olarak ayarlayın (yalnızca çağrı zamanında devre dışı bırakmak değil).

Bunları kabuğunuzda veya MCP istemcinizin yapılandırmasında ayarlayın.

Araç Setleri

Kullanılabilir Araç Setleri

Aşağıdaki araç setleri mevcuttur:

Araç SetiAçıklama
build_moduleBuild profilleri, yapılandırmalar, iş akışları, commit'ler ve pipeline işlemleri
signing_identitiesİmzalama kimlikleri ve bundle tanımlayıcıları
testing_distributionTest dağıtım profilleri ve dağıtım ayrıntıları
publish_to_storesYayınlama profilleri ve mağaza yayınlama işlemleri
enterprise_app_storeKurumsal app store profilleri ve mağaza ayrıntıları
reportRaporlama: build geçmişi, dağıtım, imzalama, yayın durumu ve ilgili raporlar

Bir veya daha fazla araç setini hariç tutabilirsiniz; böylece araçları kaydedilmez. Hariç tutmalar CLI argümanları veya APPCIRCLE_EXCLUDED_TOOLSETS ortam değişkeni aracılığıyla ayarlanabilir; ikisi birleştirilir (birleşim).

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

Hariç tutmalarla örnek MCP yapılandırması (Cursor / Claude Desktop):

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

Araçlar

Araçlar MCP tools/list aracılığıyla sunulur. Aşağıdaki referans, tüm araçları araç setine göre listeler; yanıt biçimi ve örnekler için docs/tool_contract.md bölümüne bakın.

Build
  • get_build_profiles - Geçerli kuruluş için build profillerini alır (sayfalı). İsteğe bağlı olarak profil adına, platforma, son build durumuna ve depo kaynağına göre filtreleyin. İsteğe bağlı olarak sıralayın.

    • Erişim düzeyi: okuma
    • page: Sayfa numarası (1 tabanlı). Varsayılan: 1. (sayı, isteğe bağlı)
    • size: Sayfa boyutu (1-100). Varsayılan: 25. 100'ün üzerindeki değerler 100'de sınırlanır. (sayı, isteğe bağlı)
    • search: Profilleri filtrelemek için isteğe bağlı arama terimi (profil adında büyük/küçük harf duyarsız kısmi eşleşme; API'nin araması diğer profil alanlarıyla da eşleşebilir). (dize, isteğe bağlı)
    • platform: Filtrelemek için isteğe bağlı platform kodu listesi. İzin verilen değerler: 1=iOS, 2=Android. (sayı listesi, isteğe bağlı)
    • last_build_status: Filtrelemek için isteğe bağlı son build durum kodu listesi. İzin verilen değerler: 0=Başarılı, 1=Başarısız, 2=İptal Edildi, 3=Zaman Aşımı, 90=Bekliyor, 91=Çalışıyor. (sayı listesi, isteğe bağlı)
    • repository_source: Filtrelemek için isteğe bağlı depo kaynak kodu listesi. İzin verilen değerler: 1=GitHub, 2=Bitbucket, 3=GitLab, 4=Azure DevOps, 6=Genel Depo, 7=Özel Depo, 8=SSH. (sayı listesi, isteğe bağlı)
    • sort: İsteğe bağlı sıralama alanı kodu. İzin verilen değerler: 1=Profil Adı, 2=Oluşturma Tarihi, 3=Son Build Tarihi. (sayı, isteğe bağlı)
    • sort_direction: İsteğe bağlı sıralama yönü kodu. İzin verilen değerler: 1=ASC, 2=DESC. (sayı, isteğe bağlı)
  • get_build_profile_details - Kimliğe göre tek bir build profili alır; isteğe bağlı olarak build yapılandırmalarını da içerir.

    • Erişim düzeyi: okuma
    • profile_id: Build profil kimliği (örn. UUID). (dize, zorunlu)
    • configurations: true ise, profilin build yapılandırmalarını da getirir. Varsayılan: false. (boolean, isteğe bağlı)
  • get_build_configuration_details - Profil kimliği ve yapılandırma kimliğine göre tek bir build yapılandırması alır.

    • Erişim düzeyi: okuma
    • profile_id: Build profil kimliği (örn. UUID). (dize, zorunlu)
    • configuration_id: Build yapılandırma kimliği (örn. UUID). (dize, zorunlu)
  • get_build_profile_workflows - Profil kimliğine göre bir build profili için iş akışlarını alır.

    • Erişim düzeyi: okuma
    • profile_id: Build profil kimliği (örn. UUID). (dize, zorunlu)
  • get_workflow_detail - Build profil kimliği ve iş akışı kimliğine göre tek bir iş akışı alır.

    • Erişim düzeyi: okuma
    • profile_id: Build profil kimliği (örn. UUID). (dize, zorunlu)
    • workflow_id: İş akışı kimliği (örn. UUID). (dize, zorunlu)
  • get_commits_by_branch - Bir build dalı için commit'leri alır (sayfalı).

    • Erişim düzeyi: okuma
    • branch_id: Dal kimliği (örn. UUID). (dize, zorunlu)
    • page: Sayfa numarası (1 tabanlı). size ile birlikte verilirse sayfalamayı etkinleştirir. Varsayılan: 1. (sayı, isteğe bağlı)
    • size: Sayfa boyutu. page ile birlikte verilirse sayfalamayı etkinleştirir. Varsayılan: 25, maksimum 100. (sayı, isteğe bağlı)
  • get_commit_details - Commit kimliğine (UUID) veya commit hash'ine (git SHA) göre tek bir commit alır. commit_id veya commit_hash'ten yalnızca birini sağlayın, ikisini birden değil.

    • Erişim düzeyi: okuma
    • commit_id: Commit kimliği (UUID). (dize, isteğe bağlı)
    • commit_hash: Commit hash'i (git SHA). (dize, isteğe bağlı)
  • get_last_commit - Bir build dalındaki en son commit'i alır.

    • Erişim düzeyi: okuma
    • branch_id: Dal kimliği (örn. UUID). (dize, zorunlu)
  • get_build_status - Bir build'in durumunu alır (örn. 0=Başarılı, 1=Başarısız, 2=İptal Edildi, 3=Zaman Aşımı, 90=Bekliyor, 91=Çalışıyor, 92=Tamamlanıyor, 99=Bilinmiyor).

    • Erişim düzeyi: okuma
    • commit_id: Commit kimliği (UUID). (dize, zorunlu)
    • build_id: Build kimliği (UUID). (dize, zorunlu)
  • get_build_logs - Bir build'in günlüklerini alır; isteğe bağlı olarak tek bir adıma kapsamlandırılır. Modelin bağlamını doldurmamak için varsayılan olarak sondan kırpılmış bir görünüm kullanır.

    • Erişim düzeyi: okuma
    • commit_id: Commit kimliği (UUID). (dize, zorunlu)
    • build_id: Build kimliği (UUID). (dize, zorunlu)
    • step: Çıktıyı tek bir adımın günlük bloğuna kapsamlandırmak için isteğe bağlı tam adım adı (büyük/küçük harf duyarsız). (dize, isteğe bağlı)
    • full_log: true ise, varsayılan son kısım yerine tüm günlüğü döndürür. Yine de 256 KB ile sınırlıdır. Varsayılan: false. (boolean, isteğe bağlı)
    • tail_lines: full_log kullanılmadığında sondan korunacak satır sayısı. Varsayılan: 200, maksimum 1000. (sayı, isteğe bağlı)
    • grep: Kırpmadan önce satırlara uygulanan büyük/küçük harf duyarsız alt dize filtresi. (dize, isteğe bağlı)
  • get_variable_groups - Kuruluş için tüm build ortam değişkeni gruplarını, her grubun değişkenleri dahil (key, value, isSecret, isFile) alır. Gizli değerler API tarafından zaten karartılmıştır.

    • Erişim düzeyi: okuma
    • Parametre almaz.
  • trigger_build - YAN ETKİ: yeni bir gerçek build çalıştırması başlatır (gerçek bir build'i kuyruğa alır, build dakikalarını/kredilerini tüketir) bir dalda (en son senkronize edilen commit) veya belirli bir commit için. Varsayılan olarak kaydedilir; devre dışı bırakmak için AC_MCP_ENABLE_WRITE_TOOLS=false ayarlayın.

    • Erişim düzeyi: yazma
    • profile_id: Build profil kimliği (örn. UUID). Dal modunda zorunludur (commit_id verilmediğinde); commit modunda kullanılmaz. (dize, isteğe bağlı)
    • workflow_id: İş akışı kimliği (örn. UUID). Dal modunda zorunludur. Commit modunda isteğe bağlıdır (atlanırsa son kullanılan/varsayılan iş akışını kullanır). (dize, isteğe bağlı)
    • branch_name: İsteğe bağlı dal adı (örn. "main"). Yalnızca dal modu; atlanırsa profilin varsayılan dalına geri döner. commit_id ile birlikte verilmemelidir. (dize, isteğe bağlı)
    • commit_id: Bir dalda en son commit yerine belirli bir commit için build tetiklemek üzere commit'in kendi kimliği (git hash'i değil). branch_name ile birlikte verilmemelidir. (dize, isteğe bağlı)
    • configuration_id: Varsayılan yerine kullanılacak isteğe bağlı build yapılandırma kimliği (örn. UUID). (dize, isteğe bağlı)
  • cancel_build - YAN ETKİ: kuyruktaki veya çalışan bir build'i iptal eder (gerçek, devam eden iş durdurulur; sürdürülemez). Varsayılan olarak kaydedilir; devre dışı bırakmak için AC_MCP_ENABLE_WRITE_TOOLS=false ayarlayın.

    • Erişim düzeyi: yazma
    • task_id: Build'in görev kimliği (trigger_build tarafından döndürülen "taskId" alanı). (dize, zorunlu)
İmzalama Kimlikleri
  • get_bundle_identifiers - Kuruluş için tüm bundle tanımlayıcılarını alır (iOS/macOS uygulama bundle kimlikleri).

    • Erişim düzeyi: okuma
    • Parametre yok.
  • get_certificates - Kuruluş için tüm imzalama sertifikalarını alın. Hassas alanlar (p12Password, p12Binary, metaData, thumbprint) atlanır.

    • Erişim seviyesi: okuma
    • Parametre yok.
  • get_keystores - Kuruluş için tüm anahtar depolarını alın (ör. Android imzalama anahtar depoları). Hassas alanlar (password, aliasPassword, binary, checkSum, sha256FingerPrint) atlanır.

    • Erişim seviyesi: okuma
    • Parametre yok.
  • get_provisioning_profiles - Kuruluş için sağlama profillerini alın (ör. iOS/macOS). Hassas/büyük alanlar (binary, metaData, certificateThumbPrints, provisionedDevices, connectApiKeyId) atlanır. İsteğe bağlı olarak uygulama (paket) kimliğine göre filtreleyin.

    • Erişim seviyesi: okuma
    • app_id: Sağlama profillerini filtrelemek için isteğe bağlı uygulama (paket) kimliği (ör. com.example.app). (string, isteğe bağlı)
Test Dağıtımı
  • get_distribution_profiles - Geçerli kuruluş için test dağıtım profillerini alın (sayfalanmış). İsteğe bağlı olarak profil adına, platforma ve kimlik doğrulama türüne göre filtreleyin. İsteğe bağlı olarak sıralayın.

    • Erişim seviyesi: okuma
    • page: Sayfa numarası (1 tabanlı). Varsayılan: 1. (number, isteğe bağlı)
    • size: Sayfa boyutu (1-100). Varsayılan: 25, maksimum 100. (number, isteğe bağlı)
    • search: Profilleri filtrelemek için isteğe bağlı arama terimi (profil adında büyük/küçük harf duyarsız kısmi eşleşme; API'nin araması diğer profil alanlarını da eşleştirebilir). (string, isteğe bağlı)
    • platform: Filtrelemek için isteğe bağlı platform kodları listesi. İzin verilen değerler: 1=iOS, 2=Android. (sayı listesi, isteğe bağlı)
    • authentication_type: Filtrelemek için isteğe bağlı kimlik doğrulama türü kodları listesi. İzin verilen değerler: 1=Yok, 3=Statik Giriş, 4=LDAP, 5=SSO. (sayı listesi, isteğe bağlı)
    • sort: İsteğe bağlı sıralama alanı kodu. İzin verilen değerler: 1=Profil Adı, 2=Oluşturma Tarihi, 3=Son Yükleme Tarihi. (number, isteğe bağlı)
    • sort_direction: İsteğe bağlı sıralama yönü kodu. İzin verilen değerler: 1=ASC, 2=DESC. (number, isteğe bağlı)
  • get_distribution_profile_details - Kimliğe göre tek bir test dağıtım profili alın (isteğe bağlı uygulama sürümleri sayfalandırması ile).

    • Erişim seviyesi: okuma
    • profile_id: Dağıtım profili kimliği (ör. UUID). (string, zorunlu)
    • page: Uygulama sürümleri için sayfa numarası (1 tabanlı). Varsayılan: 1. (number, isteğe bağlı)
    • size: Uygulama sürümleri için sayfa boyutu (1-100). Varsayılan: 25, maksimum 100. (number, isteğe bağlı)
  • get_testing_groups - Kuruluş için tüm test dağıtım gruplarını alın; her grubun üye test kullanıcısı e-postaları ve grup türü dahil.

    • Erişim seviyesi: okuma
    • Parametre almaz.
  • update_app_version_release_notes - Yan etki: test kullanıcılarına gösterilen sürüm notlarını ("message") üzerine yazar bir dağıtım uygulama sürümü için. Güncellenmiş uygulama sürümü nesnesini döndürür (certThumbPrints hariç). Varsayılan olarak kayıtlıdır; devre dışı bırakmak için AC_MCP_ENABLE_WRITE_TOOLS=false ayarlayın.

    • Erişim seviyesi: yazma
    • profile_id: Dağıtım profili kimliği (ör. UUID). (string, zorunlu)
    • app_version_id: Uygulama sürümü kimliği (ör. UUID). (string, zorunlu)
    • message: Yeni sürüm notları metni. (string, zorunlu)
  • send_app_version_to_testers - Yan etki: gerçek bir bildirim gönderir test kullanıcılarına/bir test grubuna, belirli bir uygulama sürümü için bir dağıtım görevi başlatır. Varsayılan olarak kayıtlıdır; devre dışı bırakmak için AC_MCP_ENABLE_WRITE_TOOLS=false ayarlayın.

    • Erişim seviyesi: yazma
    • profile_id: Dağıtım profili kimliği (ör. UUID). (string, zorunlu)
    • app_version_id: Uygulama sürümü kimliği (ör. UUID). (string, zorunlu)
    • message: Test kullanıcılarına gösterilen bildirim mesajı. (string, zorunlu)
    • testers: Gönderilecek test kullanıcıları listesi. Her girdi bir test kullanıcısının e-posta adresi veya bir test grubu kimliğidir (get_testing_groups'tan gelen "id" alanı). (string listesi, zorunlu)
Mağazalara Yayınla
  • get_publish_profiles - Geçerli kuruluş için belirli bir platform türünde yayın profillerini alın (sayfalanmış). İsteğe bağlı olarak akış durumuna, hedef pazara, sürüm adayı ikili dosyası varlığına ve mağaza durumuna göre filtreleyin. İsteğe bağlı olarak sıralayın.

    • Erişim seviyesi: okuma
    • platform_type: Yayın profillerinin platform türü ("ios" veya "android"). (string, zorunlu)
    • page: Sayfa numarası (1 tabanlı). Varsayılan: 1. (number, isteğe bağlı)
    • size: Sayfa boyutu (1-100). Varsayılan: 25, maksimum 100. (number, isteğe bağlı)
    • flow_status: Filtrelemek için isteğe bağlı akış durumu kodu (ör. 0=Başarılı, 1=Başarısız, 91=Çalışıyor). (number, isteğe bağlı)
    • market_place_type: Filtrelemek için isteğe bağlı hedef pazar kodu listesi. İzin verilen değerler platform_type'a bağlıdır -- ios: 0=Kullanılamıyor, 1=App Store Connect, 4=Intune; android: 0=Kullanılamıyor, 2=Google Play, 3=AppGallery, 4=Intune. (sayı listesi, isteğe bağlı)
    • has_rc_binary: Profilin sürüm adayı ikili dosyasına sahip olup olmadığına göre isteğe bağlı filtre. (boolean, isteğe bağlı)
    • store_status: Filtrelemek için isteğe bağlı mağaza durumu kodu listesi. İzin verilen değerler platform_type'a bağlıdır (ios için android'den çok daha fazla kod vardır, ör. ios: "IN_REVIEW", "READY_FOR_SALE", "REJECTED"; android: "NOT_AVAILABLE", "DRAFT", "IN_PROGRESS", "HALTED", "COMPLETED"). (string listesi, isteğe bağlı)
    • sort: İsteğe bağlı sıralama alanı kodu. İzin verilen değerler: 1=Profil Adı, 2=Oluşturma Tarihi. (number, isteğe bağlı)
    • sort_direction: İsteğe bağlı sıralama yönü kodu. İzin verilen değerler: 1=ASC, 2=DESC. (number, isteğe bağlı)
  • get_publish_profile_details - Platform türüne ve kimliğe göre tek bir yayın profili alın (isteğe bağlı uygulama sürümleri sayfalandırması ile).

    • Erişim seviyesi: okuma
    • platform_type: Platform türü ("ios" veya "android"). (string, zorunlu)
    • profile_id: Yayın profili kimliği (ör. UUID). (string, zorunlu)
    • page: Uygulama sürümleri için sayfa numarası (1 tabanlı). Varsayılan: 1. (number, isteğe bağlı)
    • size: Uygulama sürümleri için sayfa boyutu (1-100). Varsayılan: 25, maksimum 100. (number, isteğe bağlı)
  • get_app_version_metadata - Tek bir uygulama sürümü için mağaza listeleme meta verilerini alın (uygulama inceleme bilgileri, yerel ayarlar, sürüm bilgileri, uygulama sürümü bilgileri). appReviewInformation.demoPassword hariçtir.

    • Erişim seviyesi: okuma
    • platform_type: Platform türü ("ios" veya "android"). (string, zorunlu)
    • profile_id: Yayın profili kimliği (ör. UUID). (string, zorunlu)
    • app_version_id: Uygulama sürümü kimliği (ör. UUID). (string, zorunlu)
  • get_metadata_locales - Tek bir uygulama sürümü için kullanılabilir mağaza meta verisi yerel ayarlarını alın (ad, kod, yerelleştirilmiş, isPrimary).

    • Erişim seviyesi: okuma
    • platform_type: Platform türü ("ios" veya "android"). (string, zorunlu)
    • profile_id: Yayın profili kimliği (ör. UUID). (string, zorunlu)
    • app_version_id: Uygulama sürümü kimliği (ör. UUID). (string, zorunlu)
  • get_intune_metadata - Tek bir uygulama sürümü için Microsoft Intune uygulama meta verilerini alın (görünen ad, yayıncı, paket kimliği, sürüm, yayınlama durumu, uygulanabilir cihaz türleri, kategoriler vb.).

    • Erişim seviyesi: okuma
    • platform_type: Platform türü ("ios" veya "android"). (string, zorunlu)
    • profile_id: Yayın profili kimliği (ör. UUID). (string, zorunlu)
    • app_version_id: Uygulama sürümü kimliği (ör. UUID). (string, zorunlu)
  • get_publish_metadata_lock_status - Bir yayın profilinin mağaza meta verilerinin düzenleme için kilitli olup olmadığını alın.

    • Erişim seviyesi: okuma
    • platform_type: Platform türü ("ios" veya "android"). (string, zorunlu)
    • profile_id: Yayın profili kimliği (ör. UUID). (string, zorunlu)
  • get_publish_details - Tek bir uygulama sürümü için yayın akışı çalıştırma ayrıntılarını alın (durum, zamanlama, çalıştırma geçmişi/yapıtlar/günlük kaynak kimlikleri ile sıralı adımlar).

    • Erişim seviyesi: okuma
    • platform_type: Platform türü ("ios" veya "android"). (string, zorunlu)
    • profile_id: Yayın profili kimliği (ör. UUID). (string, zorunlu)
    • app_version_id: Uygulama sürümü kimliği (ör. UUID). (string, zorunlu)
  • get_publish_step_logs - Bir yayın akışı çalıştırmasının günlüklerini alın, isteğe bağlı olarak tek bir adıma kapsamlandırılmış. Modelin bağlamını doldurmamak için varsayılan olarak sondan kırpılmış bir görünüm kullanır.

    • Erişim seviyesi: okuma
    • platform_type: Platform türü ("ios" veya "android"). (string, zorunlu)
    • profile_id: Yayın profili kimliği (ör. UUID). (string, zorunlu)
    • publish_id: Yayın akışı çalıştırma kimliği (get_publish_details'tan gelen "id" alanı). (string, zorunlu)
    • step_id: Adım kimliği (get_publish_details'ın adımlar listesindeki bir adımın "id" alanı). (string, zorunlu)
    • step: Çıktıyı tek bir adımın günlük bloğuna kapsamlandırmak için isteğe bağlı tam adım adı (büyük/küçük harf duyarsız). (string, isteğe bağlı)
    • full_log: true ise, varsayılan sondan kırpılmış görünüm yerine tüm günlüğü döndürür. Yine de 256 KB ile sınırlıdır. Varsayılan: false. (boolean, isteğe bağlı)
    • tail_lines: full_log kullanılmadığında sondan korunacak satır sayısı. Varsayılan: 200, maksimum 1000. (number, isteğe bağlı)
    • grep: Kırpmadan önce satırlara uygulanan büyük/küçük harf duyarsız alt dize filtresi. (string, isteğe bağlı)
  • get_publish_flows - Bir yayın profili için yapılandırılmış yayın akışlarını alın (ad, kimlik, tam akış belgesi YAML).

    • Erişim seviyesi: okuma
    • platform_type: Platform türü ("ios" veya "android"). (string, zorunlu)
    • profile_id: Yayın profili kimliği (ör. UUID). (string, zorunlu)
  • start_publish - Yan etki: bir yayın akışı çalıştırması başlatır (veya belirli bir adımdan yeniden başlatır) -- gerçek yayınlama işi (ör. App Store/Play Store/Intune'a yükleme). Varsayılan olarak kayıtlıdır; devre dışı bırakmak için AC_MCP_ENABLE_WRITE_TOOLS=false ayarlayın.

    • Erişim seviyesi: yazma
    • platform_type: Platform türü ("ios" veya "android"). (string, zorunlu)
    • profile_id: Yayın profili kimliği (ör. UUID). (string, zorunlu)
    • publish_id: Yayın akışı çalıştırma kimliği (get_publish_details'tan gelen "id" alanı). (string, zorunlu)
    • step_id: Akışın başlangıcı yerine o adımdan başlamak için isteğe bağlı adım kimliği. (string, isteğe bağlı)
    • organization_pool_id: Üzerinde çalıştırılacak isteğe bağlı kuruluş havuzu kimliği (ör. UUID). (string, isteğe bağlı)
  • stop_publish - Yan etki: çalışan bir yayın akışı çalıştırmasını iptal eder (gerçek, devam eden iş durdurulur; devam ettirilemez). Varsayılan olarak kayıtlıdır; devre dışı bırakmak için AC_MCP_ENABLE_WRITE_TOOLS=false ayarlayın.

    • Erişim seviyesi: yazma
    • platform_type: Platform türü ("ios" veya "android"). (string, zorunlu)
    • profile_id: Yayın profili kimliği (ör. UUID). (string, zorunlu)
    • publish_id: Yayın akışı çalıştırma kimliği (get_publish_details'tan gelen "id" alanı). (string, zorunlu)
    • step_id: İsteğe bağlı adım kimliği. (string, isteğe bağlı)
    • organization_pool_id: İsteğe bağlı kuruluş havuzu kimliği (ör. UUID). (string, isteğe bağlı)
Kurumsal Uygulama Mağazası
  • get_store_profiles - Geçerli kuruluş için kurumsal uygulama mağazası profillerini alın (sayfalanmış). Aramayı desteklemez, ancak platforma, yayın türüne ve görünürlüğe göre filtreleyebilir. İsteğe bağlı olarak sıralayın.
    • Erişim seviyesi: okuma
    • page: Sayfa numarası (1 tabanlı). Varsayılan: 1. (number, isteğe bağlı)
    • size: Sayfa boyutu (1-100). Varsayılan: 25, maksimum 100. (number, isteğe bağlı)
    • platform_type: Filtrelemek için isteğe bağlı platform kodları listesi. İzin verilen değerler: 1=iOS, 2=Android. (sayı listesi, isteğe bağlı)
    • publish_type: Filtrelemek için isteğe bağlı yayın türü kodları listesi. İzin verilen değerler: 1=Beta'ya Yayınlandı, 2=Canlıya Yayınlandı. (sayı listesi, isteğe bağlı)
    • visibility: Profilin herkese açık listelenip listelenmediğine göre isteğe bağlı filtre (true=Listelenmiş, false=Listelenmemiş). (boolean, isteğe bağlı)
    • sort: İsteğe bağlı sıralama alanı kodu. İzin verilen değerler: 1=Uygulama Adı, 2=Oluşturma Tarihi, 3=İndirme Sayısı, 4=İkili Dosya Alma Tarihi. (number, isteğe bağlı)
    • sort_direction: İsteğe bağlı sıralama yönü kodu. İzin verilen değerler: 1=ASC, 2=DESC. (number, isteğe bağlı)
  • get_store_profile_details - Tek bir kurumsal uygulama mağazası profilini kimliğe göre alın (isteğe bağlı uygulama sürümü sayfalama ile).
    • Erişim seviyesi: okuma
    • profile_id: Kurumsal uygulama mağazası profil kimliği (örn. UUID). (string, gerekli)
    • page: Uygulama sürümleri için sayfa numarası (1 tabanlı). Varsayılan: 1. (number, isteğe bağlı)
    • size: Uygulama sürümleri için sayfa boyutu (1-100). Varsayılan: 25, maksimum 100. (number, isteğe bağlı)
    • Her uygulama sürümünün publishType alanı bir tamsayıdır: 0=Yok, 1=Beta, 2=Canlı.
Rapor
  • get_build_history_report - Derleme geçmişi raporu alın; isteğe bağlı olarak tarih aralığı, derleme profili ve kuruluşa göre filtrelenebilir. Sayfalı.

    • Erişim seviyesi: okuma
    • start_date: İsteğe bağlı başlangıç tarihi (YYYY-AA-GG). (string, isteğe bağlı)
    • end_date: İsteğe bağlı bitiş tarihi (YYYY-AA-GG). (string, isteğe bağlı)
    • page: Sayfa numarası (varsayılan: 1). (number, isteğe bağlı)
    • size: Sayfa başına öğe (1-100, varsayılan: 50). (number, isteğe bağlı)
    • build_profile_name: Derleme profili adına göre filtrele. (string, isteğe bağlı)
    • organization_id: Kuruluş UUID'sine göre filtrele. (string, isteğe bağlı)
  • get_build_queue_waiting_report - Derleme kuyruğu bekleme raporu alın; isteğe bağlı olarak tarih aralığına göre filtrelenebilir. Sayfalı. Not: bu uç noktada, buildDuration kuyruk bekleme süresini dakika cinsinden ifade eder, yürütme süresini değil (get_build_history_report'tan farklı olarak).

    • Erişim seviyesi: okuma
    • start_date: İsteğe bağlı başlangıç tarihi (YYYY-AA-GG). Her ikisi de verilmişse end_date'den küçük veya eşit olmalıdır. (string, isteğe bağlı)
    • end_date: İsteğe bağlı bitiş tarihi (YYYY-AA-GG). (string, isteğe bağlı)
    • page: Sayfa numarası (varsayılan: 1). (number, isteğe bağlı)
    • size: Sayfa başına öğe (1-100, varsayılan: 50). (number, isteğe bağlı)
  • get_build_activity_log - Derleme etkinlik günlüğünü alın (iş akışı/profil değişiklikleri, CodePush sürümleri vb.); isteğe bağlı olarak tarih aralığına ve diğer parametrelere göre filtrelenebilir. Sayfalı.

    • Erişim seviyesi: okuma
    • start_date: İsteğe bağlı başlangıç tarihi (YYYY-AA-GG). Her ikisi de verilmişse end_date'den küçük veya eşit olmalıdır. (string, isteğe bağlı)
    • end_date: İsteğe bağlı bitiş tarihi (YYYY-AA-GG). (string, isteğe bağlı)
    • page: Sayfa numarası (varsayılan: 1). (number, isteğe bağlı)
    • size: Sayfa başına öğe (1-100, varsayılan: 50). (number, isteğe bağlı)
    • organization_id: Kuruluş UUID'sine göre filtrele. (string, isteğe bağlı)
    • platform: Platform türüne göre filtrele (tamsayı kodu, örn. 0=Android, 1=iOS). (number, isteğe bağlı)
    • email: İşlemi yapan kullanıcının e-postasına göre filtrele. (string, isteğe bağlı)
    • profile_name: Derleme profili adına göre filtrele. (string, isteğe bağlı)
    • action: Etkinlik eylem koduna göre filtrele (tamsayı; tam eşleme için araç kaynağındaki BUILD_ACTIVITY_ACTIONS'e bakın). (number, isteğe bağlı)
  • get_build_insights_report - Derleme geçmişi üzerinden hesaplanan bir Build Insights Raporu (Sağlık Anlık Görüntüsü + Eğilimler, Kök Neden, Ürün Sağlığı, İş Akışı Kalitesi, Kuyruk Süresi ve Olgunluk Değerlendirmesi analizi) alın; sunucu tarafında toplanır. get_build_history_report'tan farklı olarak, bu uç nokta dahili olarak her sayfayı getirir ve ham kayıtlar yerine küçük önceden toplanmış sonuçlar döndürür.

    • Erişim seviyesi: okuma
    • start_date: Geçerli dönem için isteğe bağlı başlangıç tarihi (YYYY-AA-GG). Varsayılan: son 30 gün. (string, isteğe bağlı)
    • end_date: Geçerli dönem için isteğe bağlı bitiş tarihi (YYYY-AA-GG). (string, isteğe bağlı)
    • sections: Hesaplanacak bölümlerin isteğe bağlı listesi: health_snapshot, root_cause, artifact_health, workflow_quality, queue_time, maturity_assessment. Varsayılan: altısı da. (string dizisi, isteğe bağlı)
    • include_sub_orgs: True ise, geçmişten türetilen metriklerde kuruluşlar arası derleme kayıtlarını belirtecin kendi kuruluşuna filtrelemek yerine koru. Varsayılan: false. (boolean, isteğe bağlı)
  • get_distribution_app_version_report - Dağıtılan uygulama sürümleri için günlük kullanım raporu alın. Sayfalı; profil, işletim sistemi, kuruluş filtrelerini destekler.

    • Erişim seviyesi: okuma
    • start_date: İsteğe bağlı başlangıç tarihi (YYYY-AA-GG). (string, isteğe bağlı)
    • end_date: İsteğe bağlı bitiş tarihi (YYYY-AA-GG). (string, isteğe bağlı)
    • page: Sayfa numarası (varsayılan: 1). (number, isteğe bağlı)
    • size: Sayfa başına öğe (1-100, varsayılan: 50). (number, isteğe bağlı)
    • profile_name: Dağıtım profili adına göre filtrele. (string, isteğe bağlı)
    • os: İşletim sistemine göre filtrele ("ios" veya "android"). (string, isteğe bağlı)
    • organization_id: Kuruluş UUID'sine göre filtrele. (string, isteğe bağlı)
  • get_distribution_sent_report - Dağıtılan uygulama paylaşımı için günlük kullanım raporu alın. Sayfalı; profil, işletim sistemi, kuruluş filtrelerini destekler.

    • Erişim seviyesi: okuma
    • start_date: İsteğe bağlı başlangıç tarihi (YYYY-AA-GG). (string, isteğe bağlı)
    • end_date: İsteğe bağlı bitiş tarihi (YYYY-AA-GG). (string, isteğe bağlı)
    • page: Sayfa numarası (varsayılan: 1). (number, isteğe bağlı)
    • size: Sayfa başına öğe (1-100, varsayılan: 50). (number, isteğe bağlı)
    • profile_name: Dağıtım profili adına göre filtrele. (string, isteğe bağlı)
    • os: İşletim sistemine göre filtrele ("ios" veya "android"). (string, isteğe bağlı)
    • organization_id: Kuruluş UUID'sine göre filtrele. (string, isteğe bağlı)
  • get_enterprise_app_store_app_usage_report - Kurumsal uygulama mağazası için uygulama kullanım raporu alın. start_date ve end_date gereklidir. Sayfalı.

    • Erişim seviyesi: okuma
    • start_date: Başlangıç tarihi (YYYY-AA-GG). (string, gerekli)
    • end_date: Bitiş tarihi (YYYY-AA-GG). (string, gerekli)
    • page: Sayfa numarası (varsayılan: 1). (number, isteğe bağlı)
    • size: Sayfa başına öğe (1-100, varsayılan: 50). (number, isteğe bağlı)
    • organization_id: Kuruluş UUID'sine göre isteğe bağlı filtre. (string, isteğe bağlı)
  • get_publish_resign_report - Yayınlama yeniden imzalama raporu alın; isteğe bağlı olarak tarih aralığı, uygulama adı, kuruluş ve duruma göre filtrelenebilir. Sayfalı.

    • Erişim seviyesi: okuma
    • start_date: İsteğe bağlı başlangıç tarihi (YYYY-AA-GG). (string, isteğe bağlı)
    • end_date: İsteğe bağlı bitiş tarihi (YYYY-AA-GG). (string, isteğe bağlı)
    • page: Sayfa numarası (varsayılan: 1). (number, isteğe bağlı)
    • size: Sayfa başına öğe (1-100, varsayılan: 50). (number, isteğe bağlı)
    • app_name: Uygulama adına göre filtrele. (string, isteğe bağlı)
    • organization_id: Kuruluş UUID'sine göre filtrele. (string, isteğe bağlı)
    • status: Yeniden imzalama durumuna göre filtrele (0=beklemede, 1=işleniyor, 2=başarılı, 3=başarısız, 4=iptal edildi, 5=zaman aşımı). (number, isteğe bağlı)
  • get_publish_status_report - Yayınlama durum raporu alın; isteğe bağlı olarak tarih aralığı, uygulama adı, kuruluş ve duruma göre filtrelenebilir. Sayfalı.

    • Erişim seviyesi: okuma
    • start_date: İsteğe bağlı başlangıç tarihi (YYYY-AA-GG). (string, isteğe bağlı)
    • end_date: İsteğe bağlı bitiş tarihi (YYYY-AA-GG). (string, isteğe bağlı)
    • page: Sayfa numarası (varsayılan: 1). (number, isteğe bağlı)
    • size: Sayfa başına öğe (1-100, varsayılan: 50). (number, isteğe bağlı)
    • app_name: Uygulama adına göre filtrele. (string, isteğe bağlı)
    • organization_id: Kuruluş UUID'sine göre filtrele. (string, isteğe bağlı)
    • status: Yayınlama durumuna göre filtrele (örn. 0=Başarılı, 1=Başarısız, 91=Çalışıyor). (number, isteğe bağlı)
  • get_signing_report - İmzalama raporu alın; isteğe bağlı olarak tarih aralığı, kuruluş, işletim sistemi ve derleme durumuna göre filtrelenebilir. Sayfalı.

    • Erişim seviyesi: okuma
    • start_date: İsteğe bağlı başlangıç tarihi (YYYY-AA-GG). (string, isteğe bağlı)
    • end_date: İsteğe bağlı bitiş tarihi (YYYY-AA-GG). (string, isteğe bağlı)
    • page: Sayfa numarası (varsayılan: 1). (number, isteğe bağlı)
    • size: Sayfa başına öğe (1-100, varsayılan: 50). (number, isteğe bağlı)
    • organization_id: Kuruluş UUID'sine göre filtrele. (string, isteğe bağlı)
    • os: İşletim sistemine göre filtrele ("ios" veya "android"). (string, isteğe bağlı)
    • build_status: Derleme durumuna göre filtrele (örn. 0=Başarılı, 1=Başarısız, 91=Çalışıyor). (number, isteğe bağlı)
  • get_signing_activity_log - İmzalama etkinlik günlüğünü alın (örn. sertifika/provizyon profili/keystore son kullanma bildirimleri); isteğe bağlı olarak tarih aralığına ve diğer parametrelere göre filtrelenebilir. Sayfalı.

    • Erişim seviyesi: okuma
    • start_date: İsteğe bağlı başlangıç tarihi (YYYY-AA-GG). Her ikisi de verilmişse end_date'den küçük veya eşit olmalıdır. (string, isteğe bağlı)
    • end_date: İsteğe bağlı bitiş tarihi (YYYY-AA-GG). (string, isteğe bağlı)
    • page: Sayfa numarası (varsayılan: 1). (number, isteğe bağlı)
    • size: Sayfa başına öğe (1-100, varsayılan: 50). (number, isteğe bağlı)
    • organization_id: Kuruluş UUID'sine göre filtrele. (string, isteğe bağlı)
    • platform: Platforma göre filtrele (örn. "iOS", "Android"). (string, isteğe bağlı)
    • email: İşlemi yapan kullanıcının e-postasına göre filtrele. (string, isteğe bağlı)
    • action: Etkinlik eylem koduna göre filtrele (tamsayı; tam eşleme için araç kaynağındaki SIGNING_ACTIVITY_ACTIONS'e bakın). (number, isteğe bağlı)
  • get_publish_activity_log - Yayınlama etkinlik günlüğünü alın (yeniden imzalama, yayınlama akışı olayları vb.); isteğe bağlı olarak tarih aralığına ve diğer parametrelere göre filtrelenebilir. Sayfalı.

    • Erişim seviyesi: okuma
    • start_date: İsteğe bağlı başlangıç tarihi (YYYY-AA-GG). Her ikisi de verilmişse end_date'den küçük veya eşit olmalıdır. (string, isteğe bağlı)
    • end_date: İsteğe bağlı bitiş tarihi (YYYY-AA-GG). (string, isteğe bağlı)
    • page: Sayfa numarası (varsayılan: 1). (number, isteğe bağlı)
    • size: Sayfa başına öğe (1-100, varsayılan: 50). (number, isteğe bağlı)
    • organization_id: Kuruluş UUID'sine göre filtrele. (string, isteğe bağlı)
    • platform: Platforma göre filtrele (örn. "iOS", "Android"). (string, isteğe bağlı)
    • email: İşlemi yapan kullanıcının e-postasına göre filtrele. (string, isteğe bağlı)
    • profile_name: Yayınlama profili adına göre filtrele. (string, isteğe bağlı)
    • action: Etkinlik eylem koduna göre filtrele (tamsayı; tam eşleme için araç kaynağındaki PUBLISH_ACTIVITY_ACTIONS'e bakın). (number, isteğe bağlı)

Sunucuyu çalıştırma

Depo kökünden:

python -m src.server

Veya pip install -e . sonrasında:

appcircle-mcp

Sunucu stdio üzerinden çalışır (veya istemcinizin nasıl başlattığına bağlı olarak SSE/HTTP).

Yanıt formatı

Her araç standart bir zarf döndürür:

  • Başarı: { "success": true, "data": <payload>, "meta": { ... } }
    data araç sonucudur; meta isteğe bağlıdır (örn. count, page, filters).
  • Hata: { "success": false, "error": { "tool", "type", "message", "details" } }
    Tüm araçlar için aynı yapı; istemciler hataları tutarlı şekilde ayrıştırabilir.

Tam belirtim: docs/tool_contract.md.

Test etme

Geliştirme bağımlılıklarıyla kurun:

pip install -e ".[dev]"

Birim testleri (varsayılan)

Mock bir API kullanır; APPCIRCLE_ACCESS_TOKEN gerekmez. Varsayılan pytest yalnızca bunları çalıştırır (pyproject.toml içindeki testpaths'e bakın):

pytest test/unit/ -v
  • Tek dosya: pytest test/unit/tools/build_module/test_get_build_profiles.py -v
  • Kapsama ile: pytest test/unit/ --cov=src --cov-report=term-missing

Entegrasyon testleri

Gerçek Appcircle API'sini çağırır. Ortamda APPCIRCLE_ACCESS_TOKEN değişkenini ayarlayın, ardından çalıştırın:

pytest test/integration/ -v
  • Tüm entegrasyon testleri: pytest test/integration/ -v
  • Araca göre: pytest test/integration/build_module/ -v, pytest test/integration/report/ -v vb.
  • İşarete göre: pytest -m integration -v (depo kökünden çalıştırırken; hem birim hem entegrasyon toplanırsa yalnızca entegrasyon testlerini içerir)

APPCIRCLE_ACCESS_TOKEN ayarlanmazsa, entegrasyon testleri atlanır (hata oluşmaz).

Entegrasyon testleri için isteğe bağlı ortam değişkenleri (keşif başarısız olduğunda veya testler gerçek kimlikler gerektirdiğinde; bu testleri atlamak için boş bırakın):

DeğişkenAçıklama
APPCIRCLE_TEST_ORGANIZATION_IDKuruluş UUID'si. test_with_organization_id tarafından kullanılır (kurumsal uygulama mağazası uygulama kullanım raporu).
APPCIRCLE_TEST_BRANCH_IDDal UUID'si. API'den dal keşfedilemediğinde get_commits_by_branch ve ilgili testler tarafından kullanılır.
APPCIRCLE_TEST_COMMIT_IDCommit UUID'si. API'den commit keşfedilemediğinde get_commit_details testleri tarafından kullanılır.
Yazma/eylem entegrasyon testleri (trigger_build, cancel_build, vb.) integration_write ile işaretlenmiştir ve APPCIRCLE_ACCESS_TOKEN üzerine isteğe bağlı olarak eklenir — bunlar gerçek verileri değiştirir (gerçek derlemeleri tetikler, vb.), bu yüzden yalnızca pytest test/integration/ -v ile asla çalışmazlar. Bunları etkinleştirmek için APPCIRCLE_RUN_WRITE_INTEGRATION_TESTS=true ayarını yapın (APPCIRCLE_ACCESS_TOKEN'u üretim yerine özel bir test organizasyonuna yönlendirin).

Güvenlik

Bu proje, pyproject.toml içinde listelenen üçüncü taraf açık kaynak paketlere bağımlıdır. Bağımlılık sürüm aralıklarını sabitliyor ve kriptografik karmalar içeren bir kilit dosyası (uv.lock) sunuyor olsak da, bu paketler bağımsız olarak bakımı yapılır ve "olduğu gibi" sağlanır. Appcircle, üçüncü taraf bağımlılıkların güvenliği veya güvenilirliği konusunda hiçbir garanti vermez.

Kullanmadan önce yüklü paketleri denetlemenizi öneririz:

uv run pip-audit