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
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | ||
| track | Yes | ||
| version_codes | Yes | ||
| rollout_percentage | No | ||
| status | No | draft | |
| release_name | No | ||
| release_notes | No | ||
| country_codes | No |
Implementation Reference
- src/google_play_mcp/server.py:177-226 (handler)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) - src/google_play_mcp/server.py:173-176 (registration)Registration of the create_release tool using the @mcp.tool decorator.
# Tool: create_release # --------------------------------------------------------------------------- @mcp.tool()