Skip to main content
Glama

get_build_logs

Retrieve step-by-step status summaries for Codemagic builds to monitor progress and identify issues. Filter results by success, failed, skipped, or canceled statuses.

Instructions

Get a step-by-step status summary of a Codemagic build.

Returns each build step with its name, ID, and status (✅ success, ❌ failed, ⏭ skipped).

Args: build_id: The Codemagic build ID. statuses: Optional list of statuses to filter by. Valid values: "success", "failed", "skipped", "canceled". If omitted, all steps are returned.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
build_idYes
statusesNo

Implementation Reference

  • The MCP tool registration for 'get_build_logs' which delegates to the CodemagicClient.
    async def get_build_logs(
        build_id: str,
        statuses: list[str] | None = None,
    ) -> Any:
        """Get a step-by-step status summary of a Codemagic build.
    
        Returns each build step with its name, ID, and status (✅ success, ❌ failed, ⏭ skipped).
    
        Args:
            build_id: The Codemagic build ID.
            statuses: Optional list of statuses to filter by. Valid values: "success", "failed", "skipped", "canceled".
                      If omitted, all steps are returned.
        """
        async with CodemagicClient() as client:
            return await client.get_build_logs(build_id, statuses=statuses)
  • The actual implementation of fetching and formatting the build logs.
    async def get_build_logs(self, build_id: str, statuses: list[str] | None = None) -> str:
        build_data = await self._get(f"/builds/{build_id}")
        actions = build_data.get("build", {}).get("buildActions", [])
        status_emoji = {
            "success": "✅",
            "failed": "❌",
            "skipped": "⏭",
            "canceled": "🚫",
        }
        lines = []
        for action in actions:
            status = action.get("status") or "unknown"
            if statuses and status not in statuses:
                continue
            emoji = status_emoji.get(status, "⏳")
            lines.append(f"{emoji}  {action.get('name')}")
            lines.append(f"    ID: {action.get('_id')}  status: {status}")
        return "\n".join(lines)

Latest Blog Posts

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/AgiMaulana/CodemagicMcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server