Skip to main content
Glama

Huawei AppGallery MCP

Huawei App Gallery MCP server

HuaweiAppGalleryMcp MCP server MCP Badge License: MIT

A Model Context Protocol (MCP) server for managing app publishing on Huawei AppGallery Connect. Integrates directly with Claude Desktop or any MCP-compatible client.

Features

  • Query and update app metadata (name, description, category, ratings, support contacts)

  • Manage localized store listings per language

  • Upload APK / AAB files with automatic chunked upload for large files (>4 GB)

  • Submit apps for full release, phased (grey) release, scheduled release, or open testing (channel_id=2)

  • Submit apps when the binary is hosted on your own server

  • Manage phased release lifecycle (state changes, percentage updates)

  • Query AAB compilation status

  • Update scheduled release time

  • Set GMS dependency flag

  • Obtain download/installation and install-failure report URLs

Related MCP server: 302AI Sandbox MCP Server

Installation

Claude Code:

claude mcp add --from-registry io.github.AgiMaulana/HuaweiAppGalleryMcp

Other MCP clients: Find it at registry.modelcontextprotocol.io — search for huawei-appgallery.

Manual installation

pip install huawei-app-gallery-mcp

Or with uv:

uv pip install huawei-app-gallery-mcp

Configuration

1. Get API credentials

  1. Go to AppGallery Connect

  2. Navigate to Users & Permissions → API key → Connect API

  3. Click Create and select the App manager role

  4. Copy the Client ID and Client Secret

These are Connect API credentials — different from HMS Core app credentials.

2. Set environment variables

Create a .env file in your working directory (the server loads it automatically):

HUAWEI_CLIENT_ID=your_connect_api_client_id
HUAWEI_CLIENT_SECRET=your_connect_api_client_secret

# Optional: set a default app ID so you don't have to pass it to every tool call
HUAWEI_APP_ID=your_app_id

3. Connect to your MCP client (manual install only)

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "huawei-appgallery": {
      "command": "huawei-app-gallery-mcp",
      "env": {
        "HUAWEI_CLIENT_ID": "your_client_id",
        "HUAWEI_CLIENT_SECRET": "your_client_secret",
        "HUAWEI_APP_ID": "your_app_id"
      }
    }
  }
}

Claude Code (machine-level, manual install only)

Create /Library/Application Support/ClaudeCode/managed-mcp.json (macOS) or /etc/claude-code/managed-mcp.json (Linux):

{
  "mcpServers": {
    "huawei-appgallery": {
      "type": "stdio",
      "command": "huawei-app-gallery-mcp",
      "env": {
        "HUAWEI_CLIENT_ID": "your_client_id",
        "HUAWEI_CLIENT_SECRET": "your_client_secret",
        "HUAWEI_APP_ID": "your_app_id"
      }
    }
  }
}

Tools

All tools accept an optional app_id argument. If omitted, HUAWEI_APP_ID from the environment is used as the default.

Tool

Description

query_app_info

Query current app metadata (name, description, category, ratings, etc.), optionally for a specific release channel via channel_id

update_app_info

Update app metadata in the AppGallery Connect draft

update_language_info

Add or update a localized store listing for a specific language

delete_language_info

Remove a localized store listing

get_upload_url

Obtain a pre-signed upload URL and auth code before uploading a file

upload_app_file

Upload an APK/AAB from local disk and attach it to the app draft (auto-chunked for >4 GB)

update_app_file_info

Manually attach already-uploaded files to the app draft

query_compile_status

Query AAB compilation status for one or more package IDs

submit_app

Submit the app for review and release (supports full, phased, scheduled, and open testing via channel_id=2)

submit_app_with_file

Submit when the binary is hosted on your own server

change_phased_release_state

Change phased release status: proceed, roll back, or stop

update_phased_release

Convert phased release to full release or update the rollout schedule/percentage

update_release_time

Update the scheduled release time (only when app is in Releasing state)

set_gms_dependency

Report whether the app depends on GMS

get_download_report_url

Get download URL for the app download & installation report (CSV/Excel, max 180 days)

get_install_failure_report_url

Get download URL for the installation failure report (CSV/Excel, max 180 days)

Usage Examples

Upload and release a new version:

Upload /path/to/app-release.aab (AAB, file type 5) then submit it for a full release.

Phased rollout:

Submit the app for a phased release to 20% of users.

Open testing:

Submit the app for open testing (channel_id=2).

Inspect open testing:

Query the app metadata for the open testing channel with query_app_info(channel_id=2).

Update release notes:

Update the English release notes to "Bug fixes and performance improvements".

Scheduled release:

Submit the app for release on March 20, 2026 at 10:00 UTC.

Download report:

Get the download and installation report URL for the last 30 days in English CSV format.

Publishing Workflow

Update app info  →  Update language info  →  Upload APK/AAB  →  Submit app
  1. Use update_app_info / update_language_info to set metadata and release notes

  2. Use upload_app_file to upload the binary (handles chunking automatically)

  3. Use submit_app to trigger review and release

Package Release Workflow

For package release instructions, see docs/RELEASE.md.

API Reference

This server wraps the AppGallery Connect Publishing API.

License

MIT

Available Tools

17 tools
change_phased_release_stateB

Proceed, roll back, or stop a phased (grey) release.

Inputs: state (required), app_id, phased_release_start_time, phased_release_end_time, +1 more.

delete_language_infoB

Remove a localized store listing from the app draft.

Inputs: lang (required), app_id.

get_download_report_urlA

Get download URL for app download/install report (CSV or Excel). Max 180-day range.

Inputs: language (required), start_time (required), end_time (required), app_id, +2 more.

get_install_failure_report_urlB

Get download URL for installation failure report (CSV or Excel). Max 180-day range.

Inputs: language (required), start_time (required), end_time (required), app_id, +2 more.

get_upload_urlB

Get a pre-signed upload URL and authCode for an APK/AAB/asset file. Returns uploadUrl, chunkUploadUrl, authCode.

Inputs: suffix (required), app_id, file_name, release_type.

query_app_infoA

Query app metadata (name, description, category, content rating) from AppGallery Connect. Optionally scope to a release channel with channel_id=2 for open testing.

Inputs: app_id, release_type, channel_id.

query_compile_statusA

Query AAB compilation status for package IDs returned after upload.

Inputs: pkg_ids (required), app_id.

set_gms_dependencyA

Declare whether the app depends on GMS (Google Mobile Services).

Inputs: need_gms (required), app_id.

submit_appA

Submit app for review/release. Supports full, phased, scheduled, channel releases, and open testing (channel_id=2). Save all info first.

Inputs: app_id, release_type, release_percent, release_time, +6 more.

submit_app_with_fileB

Submit app for release using a file hosted on your server (Huawei downloads via HTTPS during review).

Inputs: file_type (required), files (required), app_id, release_type, +3 more.

update_app_file_infoA

Attach already-uploaded files to the app draft. Use after get_upload_url + manual upload.

Inputs: file_type (required), files (required), app_id.

update_app_infoA

Update app metadata in the AppGallery Connect draft (name, description, category, ratings, support contacts, privacy policy).

Inputs: app_id, default_lang, app_name, app_desc, +9 more.

update_language_infoB

Add or update localized store listing (name, description, release notes) for a language.

Inputs: lang (required), app_id, app_name, app_desc, +2 more.

update_phased_releaseC

Convert phased release to full, or update its schedule/percentage.

Inputs: state (required), app_id, phased_release_start_time, phased_release_end_time, +2 more.

update_release_timeB

Update scheduled release time. Only valid when app is in Releasing state.

Inputs: change_type (required), app_id, release_time, release_type.

upload_app_fileA

Upload APK/AAB from local disk to AppGallery (get URL → upload, auto-chunked >4 GB → attach to draft).

Inputs: file_path (required), file_type (required), app_id.

upload_fileA

Upload a file to AppGallery using a pre-signed URL (Step 2 of upload flow). Returns fileDestUrl for use in update_app_file_info.

Inputs: file_path (required), upload_url (required), auth_code (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 17 tools

    Disambiguation3/5

    Most tools map to distinct resources and actions, but the upload flow has three overlapping tools (upload_file, upload_app_file, update_app_file_info) and submit_app vs submit_app_with_file are easy to confuse. Descriptions help, but an agent could still pick the wrong step in the upload/release workflow.

    Naming Consistency4/5

    Naming follows a clear verb_noun snake_case pattern throughout, using query_, update_, delete_, get_, upload_, and submit_ consistently. Minor inconsistencies like query vs get, change_phased_release_state vs update_phased_release, and upload_file vs upload_app_file prevent a perfect score.

    Tool Count4/5

    At 17 tools, the set is slightly above the ideal 3-15 range but reasonable for an app publishing console covering metadata, localization, upload, release management, and reports. No tool feels completely redundant, though the set is on the heavier side.

    Completeness3/5

    The core release workflow is covered: metadata, localization, upload/attach, submission, phased/scheduled releases, and reports. However, there is no way to query current submission/review/release status, list existing localized listings, or see uploaded files, which creates a notable gap for agents managing the full lifecycle.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      A Model Context Protocol (MCP) server that connects Cursor, Claude Desktop, and other MCP clients to the official App Store Connect API—so you can manage iOS/macOS apps, TestFlight, in-app subscriptions, and store metadata via chat or automated tool calls.
      69
      104 npm
      14
      MIT