xcode-cloud-mcp
xcode-cloud-mcp
Servidor MCP mínimo para descubrir productos de Xcode Cloud, inspeccionar y editar flujos de trabajo, supervisar ejecuciones de compilación y recuperar problemas de compilación, registros, resúmenes de pruebas y artefactos de pruebas de interfaz de usuario a través de la API de App Store Connect.
Características
Característica | Herramienta(s) | Ejemplo de uso | Ejemplo de retorno |
Descubrir productos |
| "Muéstrame los productos de Xcode Cloud disponibles en esta cuenta." |
|
Descubrir flujos de trabajo |
| "Enumera los flujos de trabajo del producto |
|
Inspeccionar configuración del flujo de trabajo |
| "Muéstrame los detalles completos del flujo de trabajo |
|
Supervisar compilaciones en ejecución o recientes |
| "Muéstrame las compilaciones en ejecución del flujo de trabajo |
|
Habilitar o deshabilitar un flujo de trabajo |
| "Deshabilita el flujo de trabajo |
|
Actualizar nombre, descripción o modo de limpieza |
| "Cambia el nombre del flujo de trabajo |
|
Actualizar condiciones de inicio explícitamente |
| "Cambia el flujo de trabajo |
|
Reemplazar la lista de acciones del flujo de trabajo |
| "Elimina la acción de archivo del flujo de trabajo |
|
Ver el estado de la compilación rápidamente |
| "¿Qué salió mal en la última compilación fallida del flujo de trabajo |
|
Leer resúmenes compactos de registros de compilación |
| "Recupera los registros de la compilación |
|
Materializar registros para grep local |
| "Descarga los registros de la compilación |
|
Resumir resultados de pruebas |
| "Resume los resultados de las pruebas de la última compilación fallida." |
|
Ir directamente a las pruebas fallidas |
| "¿Qué pruebas fallaron en la compilación |
|
Recuperar artefactos de pruebas de interfaz de usuario |
| "Muéstrame las capturas de pantalla y los vídeos de la última ejecución de pruebas de interfaz fallida." |
|
Limpiar archivos temporales locales |
| "Elimina los registros guardados de más de 24 horas." |
|
La búsqueda de compilaciones está limitada al flujo de trabajo. Las herramientas de recuperación aceptan un buildRunId directo, o un workflowId más buildNumber, o un workflowId más buildSelector: "latest" | "latestFailing".
list_products y list_workflows pagan automáticamente por todos los resultados.
list_build_runs admite status: "all" | "failed" | "succeeded" | "running" | "pending" y un limit opcional, que por defecto es 20, para que los agentes puedan consultar flujos de trabajo activos sin tener que procesar cada ejecución localmente ni aumentar el tamaño de la respuesta de MCP.
Related MCP server: appstore-release-mcp
Requisitos
Node.js
20+Credenciales de la API de App Store Connect con acceso a Xcode Cloud
Variables de Entorno
Nombres principales:
APPSTORE_CONNECT_API_KEY_IDAPPSTORE_CONNECT_API_ISSUER_IDAPPSTORE_CONNECT_API_KEY_CONTENT
Alias de compatibilidad:
APP_STORE_KEY_IDAPP_STORE_ISSUER_IDAPP_STORE_PRIVATE_KEY
La clave privada se puede pasar como contenido PEM literal de varias líneas o como una cadena con \n escapado.
Configuración de 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-mcpConfiguración de 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-mcpHerramientas Disponibles
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?)
Comportamiento de Recuperación de Registros
get_build_logs mantiene la respuesta de MCP compacta a propósito:
descarga y extrae los artefactos de registro de compilación de tipo texto a un directorio temporal local
devuelve
savedLogsDirectoryysavedLogspara que los agentes locales puedan inspeccionar los archivos extraídos conrg,grepocatdevuelve un resumen compacto de
failedTests,highlightsy unexcerptlimitadoincluso si el llamador pasa un
maxCharactersmuy grande, el extracto en línea se limita para evitar respuestas de MCP demasiado grandes
Flujo de trabajo recomendado para el agente:
Llama a
get_failed_testsoget_build_logs.Lee
savedLogsDirectory.Usa
rgen ese directorio para inspeccionar la prueba o aserción exacta que falla.Si es necesario, llama a
cleanup_saved_logscuando termines la investigación.
Los registros temporales se escriben en el directorio temporal del sistema en una ruta como:
/tmp/xcode-cloud-mcp/build-logs/<buildRunId>En macOS, normalmente se resuelve a una ruta en /var/folders/.../T/.
Política de limpieza:
cada nueva llamada para el mismo
buildRunIdelimina y vuelve a crear primero ese directorio temporal específico de la compilaciónlos directorios de compilación antiguos se eliminan automáticamente cuando tienen más de 24 horas
también puedes llamar a
cleanup_saved_logsdirectamente para unbuildRunIdo para todos los directorios más antiguos que el período de retención elegido
Ejemplos de 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.Comportamiento de Detalles del Flujo de Trabajo
get_workflow_details devuelve la configuración en vivo del flujo de trabajo expuesta por App Store Connect, agrupada en:
generalenvironmentstartConditionsactionspostActions
Notas:
environmentincluye el repositorio,xcodeVersionymacOsVersioncuando App Store Connect los devuelve.actionsincluye el tipo de acción, esquema, plataforma, destino, estado de requerido para pasar y detalles del plan de pruebas cuando estén presentes.postActionsactualmente se devuelve como una matriz vacía con una nota porque la carga útil del flujo de trabajo de App Store Connect no expone acciones posteriores separadas en la respuesta de API observada.
Comportamiento de Actualización del Flujo de Trabajo
Las herramientas de actualización del flujo de trabajo son intencionadamente explícitas:
set_workflow_enabledsolo alternaisEnabledupdate_workflow_generalsolo cambianame,descriptionycleanupdate_workflow_start_conditionssolo cambia los objetos de condición de inicio que pasesupdate_workflow_actionsreemplaza la matriz completa deactions, por lo que los llamadores deben obtener primero el flujo de trabajo actual y luego enviar la lista de acciones final deseada
Restricción importante:
si el flujo de trabajo tiene
Restrict Editinghabilitado en Xcode Cloud, las ediciones pueden fallar incluso si la clave de API de App Store Connect tiene acceso deApp Managerpara que las ediciones de MCP funcionen de forma fiable, desmarca la casilla
Restrict Editingde ese flujo de trabajo antes de usar las herramientas de escriturasi Apple sigue rechazando la solicitud después de eso, usa un rol de clave de API más potente, como
Admin
Desarrollo Local
Instala las dependencias:
npm installEjecuta las pruebas:
npm testCompila el paquete:
npm run buildAvailable Tools
15 toolscleanup_saved_logsA
Remove saved local log directories either for one build run or for all directories older than a retention window.
| Name | Required | Description | Default |
|---|---|---|---|
| buildRunId | No | ||
| maxAgeHours | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavioral traits. It mentions removal (destructive) but does not discuss reversibility, permissions, safety, or side effects (e.g., impact on other tools). Lacks transparency expected for a deletion tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 18 words, front-loaded with the verb 'Remove'. No extraneous information, highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 optional parameters and no output schema, the description covers the basic purpose and modes. However, it lacks detail on behavior when both parameters are provided, the meaning of 'local', and whether the operation is reversible. Adequate but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must add meaning. It explains that 'buildRunId' identifies a build run and 'maxAgeHours' sets a retention window, and implies an either/or usage. However, it does not clarify edge cases (e.g., both parameters provided) or constraints (e.g., maxAgeHours limits).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (remove) and the resource (saved local log directories), and distinguishes two modes of operation (by build run ID or by age). No sibling cleanup tools exist, so differentiation is not needed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides two explicit use cases (removing logs for a specific build run or by age), but gives no guidance on when not to use, prerequisites, or alternatives. The mutual exclusivity of parameters is implied but not clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_build_issuesC
Resolve a build and return build identity plus issue counts from Xcode Cloud.
| Name | Required | Description | Default |
|---|---|---|---|
| buildRunId | No | ||
| workflowId | No | ||
| buildNumber | No | ||
| buildSelector | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It uses 'Resolve' which could imply mutation, but doesn't clarify side effects, permissions, or state changes. No behavioral traits beyond the basic action are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks clarity due to the ambiguous term 'Resolve'. It could be more efficient by directly stating the function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 parameters, no output schema, and no annotations, the description is severely incomplete. It does not specify required parameters, return format, or usage context, leaving the agent without sufficient information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning to the four parameters (buildRunId, workflowId, buildNumber, buildSelector). It does not explain which parameters are needed or how they relate to 'resolve' or 'issue counts'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it resolves a build and returns identity plus issue counts, providing a specific verb and resource. However, it does not differentiate from sibling tools like get_build_logs or get_failed_tests, which also deal with build issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There are no prerequisites, exclusions, or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_build_logsC
Resolve a build, download text-like log artifacts, save them under a temporary local directory, and return a compact summary with failed tests, highlights, and saved log paths that local agents can inspect with grep or cat.
| Name | Required | Description | Default |
|---|---|---|---|
| buildRunId | No | ||
| workflowId | No | ||
| buildNumber | No | ||
| buildSelector | No | ||
| maxCharacters | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key actions: resolve, download, save, return summary. But with no annotations, it misses details on side effects (temp file lifecycle), permissions, or rate limits. The mention of 'temporary local directory' hints at cleanup but is ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence conveying multiple aspects efficiently. Could be broken into two for clarity, but no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite clear purpose, the description omits parameter semantics and return format details. For a tool with 5 optional parameters and no output schema, it is insufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Parameters (buildRunId, workflowId, buildNumber, buildSelector, maxCharacters) are undocumented in schema and description. The description adds zero information about how to specify the build or limit output, leaving the agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool resolves a build, downloads log artifacts, saves locally, and returns a summary with failures and paths. However, it does not explicitly differentiate from sibling tools like materialize_build_logs or get_failed_tests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies usage for local log inspection but lacks prerequisites, when-not-to-use, or comparisons to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_failed_testsC
Resolve a build, ensure logs are materialized locally, and return only the detected failed tests with their assertion messages when available.
| Name | Required | Description | Default |
|---|---|---|---|
| buildRunId | No | ||
| workflowId | No | ||
| buildNumber | No | ||
| buildSelector | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it resolves a build and materializes logs locally, which are behavioral traits beyond the read-only implication of the name. However, it is unclear if these are side effects or prerequisites, and without annotations, the transparency is incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, but it tries to convey multiple actions productively, making it dense and potentially confusing. It could be split into clearer statements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 parameters, no annotations, no output schema, and related sibling tools, the description is incomplete. It does not explain what the tool returns (beyond 'failed tests'), how to interpret parameters, or how it integrates with other tools for a complete workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 4 parameters with 0% description coverage, and the description adds no meaning or guidance on how to use them. Parameters like buildRunId, workflowId, buildNumber, buildSelector are not explained in the context of the tool's operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Resolve a build, ensure logs are materialized locally, and return only the detected failed tests...' which mixes multiple actions beyond just retrieving failed tests. It is vague about the primary function and does not clearly distinguish from sibling tools like get_build_logs, get_test_results, and materialize_build_logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as get_test_results or materialize_build_logs. The description does not mention prerequisites or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_test_artifactsC
Resolve a build and return metadata plus download URLs for UI test artifacts and result bundles.
| Name | Required | Description | Default |
|---|---|---|---|
| buildRunId | No | ||
| workflowId | No | ||
| buildNumber | No | ||
| buildSelector | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It indicates a read operation (return metadata and URLs) but does not disclose behavioral traits like authentication requirements, rate limits, error handling (e.g., what if build not found), or whether the operation is destructive. The description only gives high-level purpose without essential behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, 16 words, with no redundancy. It is front-loaded with the verb 'Resolve.' However, given the complexity of 4 parameters and no schema descriptions, the conciseness comes at the expense of completeness. It could be slightly longer to add parameter guidance without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 parameters, no output schema, no annotations, and 15 sibling tools, the description is insufficient. It does not specify inputs, output format, constraints, or usage context. For a tool that resolves builds and returns artifacts, important details like required parameter combinations, download URL structure, and metadata fields are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning no parameter descriptions in the schema. The tool description does not mention any parameters or explain how they identify the build. It does not clarify the role of buildRunId, workflowId, buildNumber, or buildSelector, nor does it explain the enum values for buildSelector. An agent cannot infer how to construct input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool resolves a build and returns metadata and download URLs for UI test artifacts and result bundles. The verb 'resolve' and 'return' combined with the specific resource (UI test artifacts and result bundles) gives a clear purpose. However, it does not differentiate from sibling tools like get_test_results or get_build_logs, which could also return test-related data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided. The description implies usage when needing test artifacts from a build, but there are many sibling tools with overlapping functionality (e.g., get_build_logs, get_test_results) and no alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_test_resultsC
Resolve a build and return build-level test summary information, saved local log paths, detected failed tests, and result bundle metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| buildRunId | No | ||
| workflowId | No | ||
| buildNumber | No | ||
| buildSelector | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description must cover behavioral traits. It only lists return content without mentioning side effects, authorization, rate limits, or error states. For a build-resolution tool, better transparency is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence listing multiple return types is concise but slightly run-on. No structural issues, but could be clearer with bullet points.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters with no descriptions and no output schema, the description fails to provide enough context for correct invocation. Missing parameter guidance and return format details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
0% schema description coverage means schema provides no parameter details. Description does not mention or clarify the meaning of buildRunId, workflowId, buildNumber, or buildSelector, leaving the agent blind on how to specify the build.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states the tool returns build-level test summary, log paths, failed tests, and bundle metadata. While clear, it does not explicitly differentiate from sibling tools like get_failed_tests or get_build_logs, but the broader scope is implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_failed_tests or get_build_logs. No prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflow_detailsA
Retrieve detailed Xcode Cloud workflow configuration, including environment, start conditions, actions, and enabled state.
| Name | Required | Description | Default |
|---|---|---|---|
| workflowId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool retrieves configuration details (read-only), but does not mention any behavioral traits like required permissions, idempotency, or error conditions. The verb 'Retrieve' implies safety, but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 15 words, immediately conveys purpose. No redundant or filler information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter and no output schema, the description adequately lists the included configuration aspects. However, it could mention potential error scenarios or prerequisites (e.g., workflow existence).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has one parameter (workflowId) with 0% description coverage. The tool description does not explain the parameter's format, source, or constraints, leaving the agent to infer its meaning from context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Retrieve' and resource 'detailed Xcode Cloud workflow configuration', listing specific included fields (environment, start conditions, actions, enabled state). This distinguishes it from sibling tools like list_workflows (listing summaries) and update_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use vs alternatives, but the description implies it is for retrieving detailed configuration of a specific workflow, contrasting with listing or update tools. Lacks explicit when-not-to-use or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_build_runsB
List recent build runs for a workflow, optionally filtered by outcome. Automatically paginates through build runs. Use limit to cap the number of results returned.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of build runs to return. Defaults to 20 if not specified. | |
| status | No | ||
| workflowId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description reveals automatic pagination and limit control, which are behavioral. However, it omits read-only nature (no annotations) and other traits like ordering, rate limits, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-loaded with purpose and key behaviors. No superfluous words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description covers listing, filtering, pagination, and limit. However, it lacks order details, result structure, and prerequisites, so it's not fully complete for a 3-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description explains the status parameter as filtering by outcome and the limit parameter as capping results, adding meaning beyond the schema (which only documents limit's range/default). This complements the 33% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool lists build runs for a workflow, with optional filtering by outcome. The verb 'list' and resource 'build runs' provide clear purpose, distinguishing it from siblings like get_build_issues or get_build_logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs. alternatives. It mentions filtering and pagination but doesn't contrast with sibling tools or specify prerequisites (e.g., workflow exists).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsA
List Xcode Cloud products available to the configured App Store Connect account. Automatically paginates through all results.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the behavioral detail of automatic pagination, which is helpful. However, it does not explicitly state that the operation is read-only or non-destructive, and no annotations are provided to clarify this. For a list operation, this is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no wasted words. The primary action is front-loaded in the first sentence, and a key behavioral detail follows in the second.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description covers the essential purpose and automatic pagination. It does not describe the structure of returned data, but given the tool's simplicity, this is acceptable. It could be improved by explicitly noting it is a read operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the input schema provides no information. The description compensates by explaining the purpose and pagination behavior, adding meaning beyond the schema. Baseline for no params is 4, and this description meets it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'Xcode Cloud products' within the context of the configured App Store Connect account. It naturally distinguishes itself from sibling tools which focus on builds, logs, and workflows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention when not to use it. However, given that no sibling tool lists products, the usage context is somewhat implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workflowsA
List workflows for a given Xcode Cloud product. Automatically paginates through all results.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses automatic pagination but omits read-only nature, authentication needs, data limits, or error behavior. Acceptable but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the core action, then add pagination detail. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 14 siblings, the description provides minimal context beyond the operation. Lacks details on response structure, output fields, or how 'workflows' are represented. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description only implies productId but does not explain its format, how to obtain it, or its role. No compensation for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'list' and resource 'workflows for a given Xcode Cloud product', with additional detail on automatic pagination. Distinguishes from sibling like get_workflow_details by implying listing all.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Specifies the context ('for a given Xcode Cloud product') but does not mention when to use this tool vs alternatives like get_workflow_details, nor any usage restrictions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
materialize_build_logsB
Resolve a build, download and extract text-like log artifacts into a local temporary directory, and return saved file paths for grep or cat based investigation.
| Name | Required | Description | Default |
|---|---|---|---|
| buildRunId | No | ||
| workflowId | No | ||
| buildNumber | No | ||
| buildSelector | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description outlines the process (resolve, download, extract, return paths) but omits side effects like temporary directory lifecycle and cleanup. With no annotations, the description carries the burden; it is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence covering the main action. It could be improved by front-loading the purpose and adding parameter hints, but it remains efficient without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 parameters, no output schema, and no annotations, the description lacks essential details like parameter purposes, output format, and prerequisites (e.g., build existence). It is insufficient for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the parameters (buildRunId, workflowId, buildNumber, buildSelector). It only vaguely mentions 'resolve a build' without clarifying how parameters affect behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool resolves a build, downloads and extracts text-like log artifacts, and returns file paths for investigation. It uses specific verbs and resources, and distinguishes from siblings like get_build_logs by emphasizing materialization to local files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as get_build_logs or cleanup_saved_logs. It mentions 'for grep or cat based investigation' but lacks explicit when-to-use or when-not-to-use criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_workflow_enabledB
Explicitly enable or disable one Xcode Cloud workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | ||
| workflowId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the mutation action without disclosing side effects, permissions, or idempotency. Minimal behavioral context given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action and resource, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple toggle tool, the description conveys the core action but lacks parameter details and any behavioral caveats. Given no output schema, it is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the parameters at all. It fails to add meaning to workflowId or enabled beyond their names and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool explicitly enables or disables an Xcode Cloud workflow, using a specific verb and resource. It distinguishes from sibling tools that handle other aspects like actions or general settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage but does not provide explicit guidance on when to use this tool versus alternatives like update_workflow_general, nor does it mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_workflow_actionsA
Explicitly replace the full workflow actions array. This should be used only when the caller intends to send the final desired action list.
| Name | Required | Description | Default |
|---|---|---|---|
| actions | Yes | ||
| workflowId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states 'replace the full workflow actions array', implying overwrite behavior, but does not discuss side effects, permissions, or error conditions. The description adds basic behavioral context but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, no unnecessary words. Every sentence serves a purpose: stating the action and specifying when to use it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two required parameters, no output schema, and no annotations, the description is minimal. It explains the core purpose but lacks details on parameter behavior, return values, or edge cases. It does not adequately compensate for the lack of structured information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description only mentions 'intends to send the final desired action list' without explaining the parameters 'workflowId' or the structure of 'actions'. The description does not compensate for the missing parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Explicitly replace the full workflow actions array.' It identifies the specific verb 'replace' and the resource 'workflow actions array'. Among sibling tools like 'update_workflow_general' and 'update_workflow_start_conditions', this tool is uniquely for actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'This should be used only when the caller intends to send the final desired action list.' It does not mention when not to use or provide alternative tools, but the sibling list shows no other action-specific tool, so the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_workflow_generalC
Explicitly update general workflow fields such as name, description, and clean build behavior.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| clean | No | ||
| workflowId | Yes | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates mutation ('update') but does not disclose side effects, required permissions, or behavioral nuances (e.g., whether other fields are reset). With no annotations, the description carries full burden but provides minimal insight beyond the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and to the point. It could be slightly more structured but wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and 4 parameters (one required), the description is too sparse. It lacks information on return values, error conditions, and dependencies, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions three of four parameters (name, description, clean) but omits the required workflowId. It does not explain what 'clean' means or any constraints. Partial but insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'update' and the resource 'workflow' with the qualifier 'general' fields, listing specific examples. It distinguishes from sibling tools like update_workflow_actions which update more specific fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., update_workflow_actions, update_workflow_start_conditions). The description does not mention prerequisites, limitations, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_workflow_start_conditionsC
Explicitly update workflow start conditions. Pass null to remove a condition.
| Name | Required | Description | Default |
|---|---|---|---|
| workflowId | Yes | ||
| tagStartCondition | No | ||
| branchStartCondition | No | ||
| manualTagStartCondition | No | ||
| scheduledStartCondition | No | ||
| pullRequestStartCondition | No | ||
| manualBranchStartCondition | No | ||
| manualPullRequestStartCondition | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that passing null removes a condition, which is useful behavioral information. However, it fails to disclose other important behaviors such as whether conditions are additive, what happens on errors, or the need for specific permissions, especially given the absence of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with two sentences and no fluff. It efficiently communicates the core action and a key detail (null removal). However, given the tool's complexity, it could benefit from slightly more structured detail without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with no output schema and no annotations, the description is woefully incomplete. It omits information about required condition object structures, the effect of combining conditions, and what the response indicates. The agent lacks enough context to use the tool reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain the meaning of any of the 8 parameters beyond the null removal behavior. With 0% schema description coverage, the agent must guess what each condition object represents (e.g., tag, branch, scheduled), which is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'update' and clearly identifies the resource as 'workflow start conditions'. It also distinguishes from sibling tools like update_workflow_actions and update_workflow_general by specifying a unique scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like update_workflow_general. It lacks context about prerequisites, use cases, or when not to use it, forcing the AI to infer from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
15 tool updates
v0.5.3- First observed
cleanup_saved_logs - First observed
get_build_issues - First observed
get_build_logs - First observed
get_failed_tests - First observed
get_test_artifacts - First observed
get_test_results - First observed
get_workflow_details - First observed
list_build_runs - First observed
list_products - First observed
list_workflows - First observed
materialize_build_logs - First observed
set_workflow_enabled - First observed
update_workflow_actions - First observed
update_workflow_general - First observed
update_workflow_start_conditions
TDQS
Several tools deal with builds, logs, and tests (get_build_logs, get_failed_tests, materialize_build_logs, etc.). While descriptions add some differentiation, there is overlap (e.g., get_build_logs and materialize_build_logs both save logs locally). Agents may struggle to pick the right tool for fine-grained needs.
All tool names follow a consistent verb_noun pattern in snake_case (cleanup_, get_, list_, materialize_, set_, update_). Verbs are descriptive and nouns match the resource. No mixed conventions.
15 tools is well-scoped for Xcode Cloud management. Each tool covers a distinct aspect (products, workflows, builds, logs, tests). Not too few to be trivial, not too many to overwhelm.
The set covers reading and updating workflows, fetching build/test details, and cleaning logs. Missing create/delete for workflows and products, and no tool to trigger builds. Some lifecycle operations are absent, which may leave gaps for automation.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Appcircle mobile CI/CD platform.
- SupabaseOAuthcom.supabase
MCP server for interacting with the Supabase platform
The official Planning Center MCP server for interacting with your ministry's data.
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
Related MCP Servers
- AlicenseBqualityFmaintenanceAn MCP server to communicate with the App Store Connect API for iOS Developers25123331MIT
- 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.850MIT
- 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.4341MIT
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