xcode-cloud MCP sunucusu
Commit 6 Kas 2026Bir AI istemcisinin Xcode Cloud ürünlerini keşfetmesine, iş akışlarını yönetmesine, derlemeleri başlatmasına ve günlükleri, test sonuçlarını ve UI test çıktılarını almasına olanak tanır.
Ayrıca bilinen adı thatfactory/xcode-cloud-mcp
- Yıldızlar
- 1
- Araçlar
- 17
- İndirmeler, 30 gün
- —
- En son sürüm
- —
- Son commit
- 6 Kas 2026
- Lisans
- MIT
xcode-cloud MCP nedir?
xcode-cloud bir MCP sunucusudur. Bir AI istemcisinin Xcode Cloud ürünlerini keşfetmesine, iş akışlarını yönetmesine, derlemeleri başlatmasına ve günlükleri, test sonuçlarını ve UI test çıktılarını almasına olanak tanır. 17 araç sunar; örneğin list_products, list_workflows, get_workflow_details.
Özet, projenin README dosyasından oluşturuldu
xcode-cloud MCP sunucusu hakkında
Bu sunucu, mobil geliştiricilerin iOS CI/CD süreçlerini bir AI istemcisi üzerinden yönetmesini sağlar. Agent'ların Xcode Cloud ürünlerini keşfetmesine, iş akışı yapılandırmalarını incelemesine ve derleme süreçlerini izlemesine olanak tanımak için App Store Connect API'sine bağlanır. Kullanıcılar yeni derlemeler tetikleyebilir, belirli iş akışlarını etkinleştirebilir veya devre dışı bırakabilir ve başlangıç koşulları veya eylem listeleri gibi ayarları değiştirebilir.
Entegrasyon için Node.js 20 veya üzeri bir sürüm ile birlikte key ID, issuer ID ve özel anahtar içeriği dahil olmak üzere geçerli App Store Connect API kimlik bilgileri gereklidir. Sunucu, karmaşık görevleri yerine getirmek için özelleşmiş araçlar sunarak Claude veya Codex gibi istemcilerle birlikte çalışır. Özellikle hata ayıklama (debugging) süreçleri için kullanışlıdır; çünkü inceleme için derleme günlüklerini yerel bir dizine kaydedebilir ve ekran görüntüleri ile videolar gibi UI test çıktılarını alabilir.
Sunucu, sadece metin özetleri sunmak yerine, yerel araçlarla aranabilecek günlükleri indirerek geliştiricilerin hataları araştırmasına yardımcı olur. Yerel depolama alanının düzenli kalmasını sağlamak için bu geçici dosyaların yaşam döngüsünü bir temizleme komutuyla yönetir.
Neler yapabilirsiniz
- 1Hatalı CI derlemelerini hata ayıklamaBir AI, belirli bir derlemenin neden başarısız olduğunu belirlemek için günlükleri ve başarısız test ayrıntılarını alabilir.
- 2CI iş akışlarını değiştirmeGeliştiriciler, bir agent'a iş akışı ayarlarını değiştirmesi veya etkin durumlarını değiştirmesi talimatını verebilir.
- 3UI test hatalarını incelemeSunucu, bir agent'ın başarısız olan UI testlerinden görsel kanıtlar çekmesine olanak tanır.
- 4Derleme ilerlemesini izlemeBir agent, belirli bir iş akışı içindeki aktif veya yakın zamandaki derlemelerin durumunu takip edebilir.
Projenin README dosyasından alınmıştır. Her kullanım durumu, oradaki bir alıntı ile kontrol edilir.
xcode-cloud MCP araçları 17
README dosyasından algılandılist_productslist_workflowsget_workflow_detailslist_build_runsstart_buildset_workflow_enabledupdate_workflow_generalupdate_workflow_start_conditionsupdate_workflow_actionsconfigure_manual_release_candidateget_build_issuesget_build_logs
| list_products | — | |
| list_workflows | — | |
| get_workflow_details | — | |
| list_build_runs | — | |
| start_build | — | |
| set_workflow_enabled | — | |
| update_workflow_general | — | |
| update_workflow_start_conditions | — | |
| update_workflow_actions | — | |
| configure_manual_release_candidate | — | |
| get_build_issues | — | |
| get_build_logs | — |
17 aracın tümünü gösterDaha az araç göster
materialize_build_logsget_test_resultsget_failed_testsget_test_artifactscleanup_saved_logs
| materialize_build_logs | — | |
| get_test_results | — | |
| get_failed_tests | — | |
| get_test_artifacts | — | |
| cleanup_saved_logs | — |
Otomatik kontroller
Çalıştırıldı 14 Kas 2026Tam rapor →Henüz doğrulanmadı. Bir sunucunun 80 puana, ciddi bir bulgu olmamasına ve kontrol edebilmemiz için yeterli veriye ihtiyacı vardır. Kontroller nasıl çalışır · Daha fazla puan için nelerin düzeltileceği
- Kaynak deposu bağlantılı ve erişilebilirthatfactory/xcode-cloud-mcp is public and reachablegithub.com/thatfactory/xcode-cloud-mcp ↗Geçti
- Paket, bu depoyu kaynağı olarak gösteriyorKontrol edilmedi
- Derleme kökeni (Sigstore onayı)Kontrol edilmedi
- Açık kaynak lisansı (OSI)MITspdx.org/licenses/MIT.html ↗Geçti
- Son bir yıl içinde commit veya sürüm mevcutLast commit or release 2026-11-06github.com/thatfactory/xcode-cloud-mcp ↗Geçti
- OpenSSF ScorecardKontrol edilmedi
- Paket adı popüler bir pakete yakın değilKontrol edilmedi
- Pakette veya bağımlılıklarında kritik uyarı yokKontrol edilmedi
- Modele yönelik gizli talimat yok17 tool descriptions and the README read; no override phrases, credential paths or hidden charactersGeçti
- Yıkıcı araçlar etiketlenmişNo tool named like delete, drop or execGeçti
- Uzak uç nokta MCP el sıkışmasına yanıt veriyorKontrol edilmedi
xcode-cloud-mcp
MCP server for discovering Xcode Cloud products, inspecting and editing workflows, starting and monitoring build runs, and retrieving build issues, logs, test summaries, and UI test artifacts through the App Store Connect API.
Features
| Feature | Tool(s) | Example use | Example return |
|---|---|---|---|
| Discover products | list_products |
"Show me the Xcode Cloud products available in this account." | Demo App, productType: APP, createdDate: 2026-03-30T10:00:00Z |
| Discover workflows | list_workflows |
"List the workflows for product def456." |
Feature Branch, description, isEnabled: true, containerFilePath: Chauffeur.xcodeproj |
| Inspect workflow configuration | get_workflow_details |
"Show me the full workflow details for abc123, including environment and actions." |
general, environment, startConditions, actions, postActions |
| Monitor running or recent builds | list_build_runs |
"Show me the running builds for workflow abc123 so I can monitor them." |
number: 93, executionProgress: RUNNING, completionStatus: null, startedDate: ... |
| Start an Xcode Cloud build | start_build |
"Start one build for workflow abc123." |
newly created build-run ID, number, and execution state |
| Enable or disable a workflow | set_workflow_enabled |
"Disable workflow abc123 while we are testing new settings." |
operation.type: set_workflow_enabled, workflow.general.isEnabled: false |
| Update name, description, or clean mode | update_workflow_general |
"Rename workflow abc123 to Feature Branch v2 and adjust its description." |
changedFields: [name, description], updated workflow.general |
| Update start conditions explicitly | update_workflow_start_conditions |
"Change workflow abc123 so pull-request builds no longer auto-cancel." |
updated workflow.startConditions.pullRequest.autoCancel: false |
| Replace the workflow action list | update_workflow_actions |
"Remove the archive action from workflow abc123, then add it back once the experiment is done." |
actionCount: 4 after removal, then actionCount: 5 after restore |
| See build health quickly | get_build_issues |
"What went wrong in the latest failing build for workflow abc123?" |
issueCounts: { errors: 1, testFailures: 3, warnings: 2 } |
| Read compact build log summaries | get_build_logs |
"Retrieve logs of build 81 and summarize the failure." |
failedTests, highlights, excerpt, savedLogsDirectory |
| Materialize logs for local grep | materialize_build_logs |
"Download the logs for build 81 so I can grep them locally." |
savedLogsDirectory: /var/folders/..., savedLogs: [...] |
| Summarize test outcomes | get_test_results |
"Summarize the test results for the latest failing build." | testFailures, issueCounts, summary |
| Jump straight to failed tests | get_failed_tests |
"What tests failed in build 81?" |
displayExpiryDateReturnsFormattedDateWhenExpiryDateExists(), assertion message, saved log paths |
| Retrieve UI test artifacts | get_test_artifacts |
"Show me the screenshots and videos from the latest failing UI test run." | screenshots, videos, resultBundles, downloadUrl |
| Clean up local temp files | cleanup_saved_logs |
"Remove saved logs older than 24 hours." | removedDirectories: [...], retainedDirectories: [...] |
Build lookup is workflow-scoped. Retrieval tools accept a direct buildRunId, or a workflowId plus buildNumber, or a workflowId plus buildSelector: "latest" | "latestFailing".
list_products and list_workflows automatically paginate through all results.
list_build_runs supports status: "all" | "failed" | "succeeded" | "running" | "pending" and an optional limit, which defaults to 20, so agents can poll active workflows without post-processing every run locally or inflating MCP response size.
Build Start Behavior
start_build starts exactly one build run through Apple's public POST /v1/ciBuildRuns endpoint. workflowId is required. The optional sourceBranchOrTagId and pullRequestId values are App Store Connect resource IDs, not branch names, tag names, or pull-request numbers; buildRunId may be a bare resource ID or an xcode-cloud://build-run/... URI. The optional clean value applies only to the new run and does not modify the workflow.
The operation is externally side-effecting and non-idempotent: repeating the same invocation can create another build. The server sends one POST and does not automatically retry an ambiguous failure; inspect list_build_runs before deciding whether to try again.
Apple's public App Store Connect API does not expose an operation for canceling an individual Xcode Cloud build run. This server therefore provides no cancellation tool and does not disable or otherwise mutate a workflow as a cancellation surrogate.
Requirements
- Node.js
20+ - App Store Connect API credentials with access to Xcode Cloud
Environment Variables
Primary names:
APPSTORE_CONNECT_API_KEY_IDAPPSTORE_CONNECT_API_ISSUER_IDAPPSTORE_CONNECT_API_KEY_CONTENT
Compatibility aliases:
APP_STORE_KEY_IDAPP_STORE_ISSUER_IDAPP_STORE_PRIVATE_KEY
The private key can be passed as literal multi-line PEM content or as a string with escaped \n.
Claude Setup
claude mcp add xcode-cloud \
--env APPSTORE_CONNECT_API_KEY_ID="$APPSTORE_CONNECT_API_KEY_ID" \
--env APPSTORE_CONNECT_API_ISSUER_ID="$APPSTORE_CONNECT_API_ISSUER_ID" \
--env APPSTORE_CONNECT_API_KEY_CONTENT="$APPSTORE_CONNECT_API_KEY_CONTENT" \
-- npx -y @thatfactory/xcode-cloud-mcp
Codex Setup
codex mcp add xcode-cloud \
--env APPSTORE_CONNECT_API_KEY_ID="$APPSTORE_CONNECT_API_KEY_ID" \
--env APPSTORE_CONNECT_API_ISSUER_ID="$APPSTORE_CONNECT_API_ISSUER_ID" \
--env APPSTORE_CONNECT_API_KEY_CONTENT="$APPSTORE_CONNECT_API_KEY_CONTENT" \
-- npx -y @thatfactory/xcode-cloud-mcp
Available Tools
list_products()list_workflows(productId)get_workflow_details(workflowId)list_build_runs(workflowId, limit?, status?)start_build(workflowId, clean?, sourceBranchOrTagId?, pullRequestId?, buildRunId?)set_workflow_enabled(workflowId, enabled)update_workflow_general(workflowId, name?, description?, clean?)update_workflow_start_conditions(workflowId, branchStartCondition?, manualBranchStartCondition?, pullRequestStartCondition?, manualPullRequestStartCondition?, scheduledStartCondition?, tagStartCondition?, manualTagStartCondition?)update_workflow_actions(workflowId, actions)configure_manual_release_candidate(workflowId, scheme, branch, buildDistributionAudience)get_build_issues(buildRunId? workflowId? buildNumber? buildSelector?)get_build_logs(buildRunId? workflowId? buildNumber? buildSelector?, maxCharacters?)materialize_build_logs(buildRunId? workflowId? buildNumber? buildSelector?)get_test_results(buildRunId? workflowId? buildNumber? buildSelector?)get_failed_tests(buildRunId? workflowId? buildNumber? buildSelector?)get_test_artifacts(buildRunId? workflowId? buildNumber? buildSelector?)cleanup_saved_logs(buildRunId?, maxAgeHours?)
Log Retrieval Behavior
get_build_logs keeps the MCP response compact on purpose:
- it downloads and extracts text-like build log artifacts to a temporary local directory
- it returns
savedLogsDirectoryandsavedLogsso local agents can inspect the extracted files withrg,grep, orcat - it returns a compact
failedTestssummary,highlights, and a cappedexcerpt - even if a caller passes a very large
maxCharacters, the inline excerpt is clamped to avoid oversized MCP responses
Recommended agent workflow:
- Call
get_failed_testsorget_build_logs. - Read
savedLogsDirectory. - Use
rginside that directory to inspect the exact failing test or assertion. - If needed, call
cleanup_saved_logswhen the investigation is done.
Temporary logs are written under the system temp directory in a path like:
/tmp/xcode-cloud-mcp/build-logs/<buildRunId>
On macOS this typically resolves to a path under /var/folders/.../T/.
Cleanup policy:
- each new call for the same
buildRunIddeletes and recreates that build-specific temp directory first - older build directories are pruned automatically when they are older than 24 hours
- you can also call
cleanup_saved_logsdirectly for onebuildRunIdor for all directories older than a chosen retention window
Example Prompts
Retrieve logs of the latest failing build for workflow abc123.
Retrieve logs of build 81, then inspect the returned savedLogsDirectory and grep for Expectation failed.
Get the failed tests for build 81, then open the saved logs directory and inspect the failing test in context.
Retrieve logs of build number 42 for workflow abc123.
Show me the latest failing UI test artifacts for workflow abc123.
List the workflows for product def456 and then summarize the latest build.
Show me the full workflow details for workflow abc123, including environment, start conditions, actions, and whether it is enabled.
Disable workflow abc123, remove the archive action, then restore the original action list after the experiment.
Workflow Details Behavior
get_workflow_details returns the live workflow configuration exposed by App Store Connect, grouped into:
generalenvironmentstartConditionsactionspostActions
Notes:
environmentincludes repository,xcodeVersion, andmacOsVersionwhen App Store Connect returns them.actionsincludes action type, scheme, platform, destination, required-to-pass state, and test-plan details when present.postActionsis currently returned as an empty array with a note because Apple does not expose workflow post-actions in its public API. This does not mean no post-actions are configured;testFlightDistributionreportsUNSUPPORTED_BY_APPLE_APIand an actionable next step.
Workflow Update Behavior
The workflow update tools are intentionally explicit:
set_workflow_enabledonly togglesisEnabledupdate_workflow_generalonly changesname,description, andcleanupdate_workflow_start_conditionsonly changes the start-condition objects you passupdate_workflow_actionsreplaces the fullactionsarray, so callers should fetch the current workflow first and then send the final desired action list
Important restriction:
- if the workflow has
Restrict Editingenabled in Xcode Cloud, edits can fail even when the App Store Connect API key hasApp Manageraccess - for MCP edits to work reliably, disable the
Restrict Editingcheckbox for that workflow before using the write tools - if Apple still rejects the request after that, use a stronger API key role such as
Admin
Local Development
Install dependencies:
npm install
Run tests:
npm test
Build the package:
npm run build
Manual TestFlight release candidates
configure_manual_release_candidate converts an existing workflow to one macOS archive action (ARCHIVE, MACOS, ANY_MAC) with manual starts from an exact branch. It replaces the entire action list and all seven start conditions in one PATCH, clearing automatic branch, pull-request, tag, and scheduled starts plus manual tag and pull-request starts. Fetch get_workflow_details first if you need to retain the original configuration. The preset preserves the workflow's enabled state, name, environment, and clean-build setting; enable a disabled workflow separately when ready.
{
"workflowId": "abc123",
"scheme": "Headroom",
"branch": "main",
"buildDistributionAudience": "APP_STORE_ELIGIBLE"
}
The audience is required and cannot be null in this preset:
APP_STORE_ELIGIBLE: Deployment Preparation = TestFlight and App Store.INTERNAL_ONLY: Deployment Preparation = TestFlight internal testing only.
The general update_workflow_actions tool accepts only these two audience values or null/omission (Deployment Preparation = None). Use the preset when requesting a TestFlight release candidate: null/omission is rejected before any API mutation. Workflow details retain the raw buildDistributionAudience and add the human-readable deploymentPreparation value for each action.
Creating an archive, making it eligible for TestFlight, and assigning its processed build to tester groups are separate steps. This preset configures eligibility; it does not itself start a build, guarantee successful upload/processing, or assign testers. Call start_build explicitly to create a build run. To distribute automatically, edit the workflow in Xcode or App Store Connect, add a TestFlight Internal Testing post-action, and select the internal group.
Apple's OpenAPI specification, version 4.4.1, inspected on 2026-09-07, exposes no post-action field or relationship in CiWorkflow, CiWorkflowCreateRequest, or CiWorkflowUpdateRequest, and no workflow post-action endpoint. Consequently, workflow responses explicitly report testFlightDistribution.status: "UNSUPPORTED_BY_APPLE_API" and group assignment as UNKNOWN; the legacy empty postActions array is not evidence that no post-actions exist. See Apple's BuildAudienceType and TestFlight distribution guide.
Waiting for completion, TestFlight processing, beta-group assignment, and broader release orchestration remain outside this server's current scope and would not be native Xcode Cloud post-actions.
xcode-cloud MCP soruları
xcode-cloud MCP hangi araçları sunar?
17 araç sunar; bunlar arasında list_products, list_workflows, get_workflow_details, list_build_runs, start_build yer alır.
Bu sunucuyu kullanarak bir Xcode Cloud derleme çalışmasını iptal edebilir miyim?
Hayır, Apple'ın halka açık App Store Connect API'si bireysel derleme çalışmalarını iptal etme işlemi sunmadığı için sunucu bir iptal aracı sağlamaz.
Bu sunucu ile büyük derleme günlüklerini nasıl yönetebilirim?
Sunucu, günlükleri yerel bir dizine indirip bir dizin yoluyla birlikte özet döndürerek yanıtları kompakt tutar; bu da agent'ların yerel olarak grep gibi araçlar kullanmasına olanak tanır.
İş akışı güncellemelerim neden başarısız olabilir?
Eğer bir iş akışı için Xcode Cloud üzerinde 'Restrict Editing' seçeneği etkinleştirilmişse, App Manager erişiminiz olsa bile düzenlemeler başarısız olabilir; güvenilir MCP düzenlemeleri için bu seçeneği devre dışı bırakmalısınız.