xcode-cloud-mcp
xcode-cloud-mcp
Минималистичный MCP-сервер для обнаружения продуктов Xcode Cloud, просмотра и редактирования workflows, отслеживания запусков сборок, а также получения проблем сборки, журналов, сводок тестов и артефактов UI-тестов через App Store Connect API.
Возможности
Возможность | Инструменты | Пример использования | Пример возвращаемого значения |
Обнаружение продуктов |
| «Покажи продукты Xcode Cloud, доступные в этой учётной записи.» |
|
Обнаружение workflows |
| «Список workflows для продукта |
|
Просмотр конфигурации workflow |
| «Покажи полные детали workflow |
|
Отслеживание текущих и недавних сборок |
| «Покажи выполняющиеся сборки для workflow |
|
Включение или отключение workflow |
| «Отключи workflow |
|
Обновление имени, описания или режима clean |
| «Переименуй workflow |
|
Явное обновление условий запуска |
| «Измени workflow | обновлённый |
Замена списка действий workflow |
| «Удали действие архивации из workflow |
|
Быстрая оценка состояния сборки |
| «Что пошло не так в последней падающей сборке для workflow |
|
Чтение компактных сводок журналов сборки |
| «Получи журналы сборки |
|
Материализация журналов для локального grep |
| «Скачай журналы сборки |
|
Сводка результатов тестов |
| «Обобщи результаты тестов для последней падающей сборки.» |
|
Переход сразу к упавшим тестам |
| «Какие тесты упали в сборке |
|
Получение артефактов UI-тестов |
| «Покажи скриншоты и видео из последнего падающего запуска UI-тестов.» |
|
Очистка локальных временных файлов |
| «Удали сохранённые журналы старше 24 часов.» |
|
Поиск сборок ограничен рамками workflow. Инструменты получения данных принимают либо прямой buildRunId, либо workflowId в сочетании с buildNumber, либо workflowId в сочетании с buildSelector: "latest" | "latestFailing".
list_products и list_workflows автоматически перебирают все результаты с помощью пагинации.
list_build_runs поддерживает status: "all" | "failed" | "succeeded" | "running" | "pending" и необязательный параметр limit, который по умолчанию равен 20, чтобы агенты могли опрашивать активные workflows без локальной постобработки каждого запуска и без раздувания размера ответа MCP.
Related MCP server: appstore-release-mcp
Требования
Node.js
20+Учётные данные App Store Connect API с доступом к Xcode Cloud
Переменные окружения
Основные имена:
APPSTORE_CONNECT_API_KEY_IDAPPSTORE_CONNECT_API_ISSUER_IDAPPSTORE_CONNECT_API_KEY_CONTENT
Псевдонимы для совместимости:
APP_STORE_KEY_IDAPP_STORE_ISSUER_IDAPP_STORE_PRIVATE_KEY
Приватный ключ можно передать как буквальное многострочное содержимое PEM или как строку с экранированными \n.
Настройка Claude
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
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Доступные инструменты
list_products()list_workflows(productId)get_workflow_details(workflowId)list_build_runs(workflowId, limit?, status?)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)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?)
Поведение при получении журналов
get_build_logs намеренно сохраняет компактность ответа MCP:
она скачивает и извлекает текстовые артефакты журналов сборки во временную локальную директорию
она возвращает
savedLogsDirectoryиsavedLogs, чтобы локальные агенты могли просматривать извлечённые файлы с помощьюrg,grepилиcatона возвращает компактную сводку
failedTests,highlightsи ограниченныйexcerptдаже если вызывающая сторона передаст очень большое значение
maxCharacters, встроенный excerpt ограничивается, чтобы избежать слишком больших ответов MCP
Рекомендуемый порядок действий агента:
Вызовите
get_failed_testsилиget_build_logs.Прочитайте
savedLogsDirectory.Используйте
rgвнутри этой директории, чтобы изучить конкретный упавший тест или проверку.При необходимости после завершения разбора вызовите
cleanup_saved_logs.
Временные журналы записываются в системную временную директорию по пути вида:
/tmp/xcode-cloud-mcp/build-logs/<buildRunId>В macOS это обычно соответствует пути внутри /var/folders/.../T/.
Политика очистки:
каждый новый вызов для одного и того же
buildRunIdсначала удаляет и заново создаёт временную директорию, относящуюся к этой сборкеболее старые директории сборок автоматически удаляются, когда они становятся старше 24 часов
вы также можете вызвать
cleanup_saved_logsнапрямую для одногоbuildRunIdили для всех директорий старше выбранного периода хранения
Примеры запросов
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
get_workflow_details возвращает актуальную конфигурацию workflow, предоставляемую App Store Connect, сгруппированную по разделам:
generalenvironmentstartConditionsactionspostActions
Примечания:
environmentвключает repository,xcodeVersionиmacOsVersion, когда App Store Connect возвращает их.actionsвключает тип действия, схему, платформу, назначение, статус required-to-pass и детали тест-плана, когда они присутствуют.postActionsв настоящее время возвращается как пустой массив с примечанием, поскольку полезная нагрузка workflow в App Store Connect не раскрывает отдельные post-actions в наблюдаемом ответе API.
Поведение при обновлении workflow
Инструменты обновления workflow намеренно явные:
set_workflow_enabledтолько переключаетisEnabledupdate_workflow_generalизменяет толькоname,descriptionиcleanupdate_workflow_start_conditionsизменяет только те объекты условий запуска, которые вы передаётеupdate_workflow_actionsзаменяет весь массивactions, поэтому вызывающей стороне следует сначала получить текущий workflow, а затем отправить итоговый желаемый список действий
Важное ограничение:
если в Xcode Cloud для workflow включён параметр
Restrict Editing, изменения могут завершаться ошибкой, даже если ключ App Store Connect API имеет доступApp Managerчтобы изменения через MCP работали надёжно, отключите флажок
Restrict Editingдля этого workflow перед использованием инструментов записиесли Apple по-прежнему отклоняет запрос после этого, используйте более сильную роль ключа API, например
Admin
Локальная разработка
Установка зависимостей:
npm installЗапуск тестов:
npm testСборка пакета:
npm run buildMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityFmaintenanceAn MCP server to communicate with the App Store Connect API for iOS Developers2582330MIT
- AlicenseAqualityBmaintenanceAn MCP server that drives the full App Store release cycle for iOS and macOS apps: version bump, archive + TestFlight upload, metadata, review submission, and status.8228MIT
- AlicenseNot gradedqualityAmaintenanceApp Store Connect MCP Server (Swift) that manages apps, builds, TestFlight, metadata, reviews natively on macOSMIT
- AlicenseNot gradedqualityAmaintenanceThis MCP server provides access to Apple's App Store Connect API. It allows users to inspect apps, versions, builds, TestFlight groups, sales, users, and optionally edit metadata and manage testers.566MIT
Related MCP Connectors
MCP server for Appcircle mobile CI/CD platform.
MCP server for interacting with the Supabase platform
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/thatfactory/xcode-cloud-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server