Skip to main content
Glama

create_release

Create or replace app releases on Google Play Console tracks (internal, alpha, beta, production) with version codes, rollout percentages, and release notes.

Instructions

Create or replace a release on a track.

NOTE: With Managed Publishing enabled, the edit is held pending approval. Call publish_managed_release to send live.

Args: package_name: Package name, e.g. com.example.myapp track: "internal", "alpha", "beta", or "production". version_codes: Version codes to include, e.g. [1234]. rollout_percentage: Rollout % when status is "inProgress". Default 10%. status: "draft" (default), "inProgress" (staged), "halted", or "completed". release_name: Optional human-readable name. release_notes: Optional {lang: text} dict, e.g. {"en-US": "Bug fixes"}. country_codes: Optional ISO 3166-1 alpha-2 codes. Empty list removes restrictions.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
package_nameYes
trackYes
version_codesYes
rollout_percentageNo
statusNodraft
release_nameNo
release_notesNo
country_codesNo

Implementation Reference

  • The create_release function is defined and decorated as an MCP tool, handling the logic to create or replace a release on a given track via the PublisherClient.
    def create_release(
        package_name: str,
        track: str,
        version_codes: list[int],
        rollout_percentage: float = 10.0,
        status: str = "draft",
        release_name: str = "",
        release_notes: Optional[dict] = None,
        country_codes: Optional[list[str]] = None,
    ) -> str:
        """Create or replace a release on a track.
    
        NOTE: With Managed Publishing enabled, the edit is held pending approval.
        Call publish_managed_release to send live.
    
        Args:
            package_name: Package name, e.g. com.example.myapp
            track: "internal", "alpha", "beta", or "production".
            version_codes: Version codes to include, e.g. [1234].
            rollout_percentage: Rollout % when status is "inProgress". Default 10%.
            status: "draft" (default), "inProgress" (staged), "halted", or "completed".
            release_name: Optional human-readable name.
            release_notes: Optional {lang: text} dict, e.g. {"en-US": "Bug fixes"}.
            country_codes: Optional ISO 3166-1 alpha-2 codes. Empty list removes restrictions.
        """
        try:
            notes = _notes_from_dict(release_notes)
            result = _publisher().create_release(
                package_name=package_name,
                track=track,
                version_codes=version_codes,
                rollout_percentage=rollout_percentage,
                release_name=release_name or None,
                release_notes=notes,
                status=status,
                country_codes=country_codes,
            )
            return json.dumps(
                {
                    "success": True,
                    "message": (
                        f"Release created on '{track}' track with status '{status}'."
                    ),
                    "track": _format_track(result["track"]),
                    "editId": result.get("commit", {}).get("editId"),
                },
                indent=2,
            )
        except Exception as exc:
            return json.dumps({"success": False, "error": str(exc)}, indent=2)
  • Registration of the create_release tool using the @mcp.tool decorator.
    # Tool: create_release
    # ---------------------------------------------------------------------------
    
    @mcp.tool()

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/GooglePlayConsoleMcp'

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