Skip to main content
Glama
kutleloove

google-cloud-console-mcp

by kutleloove

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GOOGLE_CLOUD_PROJECTNoGoogle Cloud project ID
GOOGLE_MCP_TOOL_GROUPSNoComma-separated list of tool groups to enable (playconsole, cloudcore, firebase, storage)
GOOGLE_OAUTH_CLIENT_IDNoOAuth client ID for browser sign-in
GOOGLE_OAUTH_CLIENT_SECRETNoOAuth client secret for browser sign-in
GOOGLE_SERVICE_ACCOUNT_JSONNoService account key JSON, inline
GOOGLE_APPLICATION_CREDENTIALSNoPath to a service account key file

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
play_create_editA

Starts a new edit transaction for a Play Console app. Required before uploading a new bundle/APK or changing tracks, listings, or details. Returns an editId to pass to the other play_* tools, and must be finished with play_commit_edit (or discarded with play_delete_edit).

play_get_editB

Fetches the status of an existing edit (e.g. to check it hasn't expired).

play_validate_editA

Validates an edit without committing it — checks e.g. that uploaded bundles and track changes are consistent. Useful to sanity-check a release before play_commit_edit.

play_commit_editA

Commits an edit, making all changes made within it (new bundle, track updates, listing changes, ...) live on Google Play. This is the point of no return for a release.

play_delete_editA

Discards an in-progress edit without applying any of its changes.

play_upload_bundleA

Uploads a new Android App Bundle (.aab) file into an open edit. Provide a local file path. After uploading, assign the returned versionCode to a track with play_update_track and then play_commit_edit to publish it.

play_upload_apkA

Uploads a new APK file into an open edit. Prefer play_upload_bundle (.aab) for new apps — Google Play requires App Bundles for new apps as of Aug 2021 — APK upload remains for existing APK-based apps.

play_list_bundlesB

Lists all App Bundles present in an edit, with their versionCode and sha256.

play_list_apksC

Lists all APKs present in an edit.

play_upload_deobfuscation_fileA

Uploads a ProGuard/R8 mapping file (or native debug symbols) for a given APK/bundle versionCode, so Play Console can de-obfuscate crash stack traces.

play_list_tracksA

Lists all release tracks (internal, alpha, beta, production, and any custom tracks) for an app within an edit, including which versionCodes are on each and their rollout status.

play_get_trackC

Fetches the current releases on a single track (e.g. "production").

play_update_trackA

Replaces the full set of releases on a track. This is how you publish a new version to a track, change rollout percentage, halt a rollout, or remove a version (by omitting its versionCode from the releases array). Must be followed by play_commit_edit to go live. For a simple 'add this new version to this track' use play_release_to_track instead.

play_release_to_trackA

High-level helper for the common 'ship this build' workflow: creates an edit, sets the given track's release to exactly the given versionCode(s) with the given status/rollout, and commits. Use this instead of manually chaining play_create_edit + play_update_track + play_commit_edit unless you need finer control (e.g. multiple simultaneous releases on a track, or editing other things in the same edit first).

play_remove_version_from_trackA

Removes one versionCode from a track's active releases (e.g. to pull a bad build off production) by fetching the track, filtering it out, and committing. Note this only unpublishes the version from that track — it does not delete the uploaded artifact itself (Google Play does not support deleting uploaded bundles/APKs).

play_list_listingsB

Lists the store listing (title, descriptions, ...) for every localized language.

play_get_listingB

Fetches the store listing (title, short/full description, video URL) for one language.

play_update_listingA

Updates the store listing text for one language (title, short description, full description, promo video). Only provided fields are sent; omit a field to leave it server-side unless the underlying API requires full replacement (it does — fetch with play_get_listing first if you need to preserve untouched fields).

play_delete_listingC

Removes the store listing for one localized language entirely.

play_list_imagesB

Lists uploaded images of a given type (screenshots, icon, feature graphic, ...) for a language.

play_upload_imageC

Uploads one image (PNG/JPEG) into a store listing image slot for a language.

play_delete_imageB

Deletes a single uploaded image by its imageId (from play_list_images).

play_delete_all_imagesB

Deletes every image in a given image slot for a language (e.g. clear all phoneScreenshots).

play_get_app_detailsB

Fetches app-wide details: default language and developer contact info (email, phone, website).

play_update_app_detailsC

Updates app-wide default language and/or developer contact info.

play_list_reviewsC

Lists user reviews for an app, optionally filtered and paginated.

play_get_reviewC

Fetches one review by id.

play_reply_reviewA

Posts (or updates) the developer reply to a user review. There can only be one developer reply per review — calling this again replaces the previous reply.

play_get_testersC

Fetches the tester list (individual emails, and/or Google Groups) configured for a testing track.

play_update_testersA

Replaces the full tester list for a track. Provide googleGroups (Google Group email addresses) and/or googleGroups-managed testers per the Play API — most projects manage testers via a Google Group, so pass that group's email in googleGroups.

play_list_inapp_productsB

Lists all managed in-app products (non-subscription) for an app.

play_get_inapp_productC

Fetches one in-app product by SKU.

play_create_inapp_productC

Creates a new managed in-app product (one-time purchase).

play_update_inapp_productA

Updates an existing in-app product's status/price/listing. Pass allowMissing:true to upsert (create if it doesn't exist yet).

play_delete_inapp_productC

Deletes an in-app product by SKU.

play_list_subscriptionsC

Lists all subscription products for an app (Play Subscriptions API v2).

play_get_subscriptionB

Fetches one subscription product by product id.

gcp_list_projectsB

Lists GCP projects visible to the authenticated identity. Supports Cloud Resource Manager filter syntax, e.g. filter: "state:ACTIVE" or "parent.id:1234567890".

gcp_get_projectB

Fetches details of a single GCP project.

gcp_create_projectB

Creates a new GCP project. The caller's credentials need resourcemanager.projects.create permission (typically requires org/folder-level access, not just a service account scoped to one existing project).

gcp_delete_projectA

Requests deletion of a GCP project (soft delete — Google retains it for ~30 days and it can be restored with gcp_undelete_project within that window).

gcp_undelete_projectA

Restores a project that was recently soft-deleted (within the ~30 day retention window).

gcp_get_project_iam_policyB

Fetches the full IAM policy (role bindings) for a project.

gcp_set_project_iam_policyA

Replaces the entire IAM policy for a project. Prefer gcp_add_project_iam_binding / gcp_remove_project_iam_binding for a single role change — this overwrites everything, so fetch with gcp_get_project_iam_policy first if you need to preserve existing bindings.

gcp_add_project_iam_bindingA

Grants one role to one member on a project, preserving all existing bindings (read-modify-write against the current policy).

gcp_remove_project_iam_bindingA

Revokes one role from one member on a project, preserving all other bindings.

gcp_list_service_accountsC

Lists all service accounts in a project.

gcp_get_service_accountB

Fetches one service account by email or by projects/{p}/serviceAccounts/{id} name.

gcp_create_service_accountC

Creates a new service account in a project.

gcp_delete_service_accountC

Deletes a service account. This is not immediately reversible after ~30 days.

gcp_list_service_account_keysA

Lists key ids for a service account (never returns private key material for existing keys).

gcp_create_service_account_keyA

Creates a new JSON key for a service account and returns the private key material base64-encoded (privateKeyData in the response) — save it immediately, Google does not let you retrieve it again after this call. Treat the output as a secret.

gcp_delete_service_account_keyC

Revokes a service account key by its key id.

gcp_list_enabled_apisC

Lists all APIs/services currently enabled for a project.

gcp_search_available_apisA

Lists/searches Google APIs available to enable on a project (enabled or not). Use this to find the exact service name to pass to gcp_enable_api.

gcp_enable_apiC

Enables a Google API for a project, e.g. "androidpublisher.googleapis.com".

gcp_disable_apiB

Disables a Google API for a project. Dependent services may stop working.

gcp_get_api_statusB

Checks whether a specific API is enabled for a project.

firebase_list_projectsB

Lists Firebase projects the authenticated identity can access.

firebase_get_projectA

Fetches Firebase-specific metadata for a project (this requires Firebase to already be enabled on the GCP project — see firebase_add_firebase).

firebase_add_firebaseA

Enables Firebase on an existing GCP project, turning it into a Firebase project. This is a long-running operation; the response is an Operation resource — check its done field or poll it.

firebase_list_android_appsB

Lists the Android apps registered under a Firebase project.

firebase_create_android_appC

Registers a new Android app (by package name) under a Firebase project.

firebase_list_ios_appsC

Lists the iOS apps registered under a Firebase project.

firebase_create_ios_appC

Registers a new iOS app (by bundle id) under a Firebase project.

firebase_list_web_appsC

Lists the web apps registered under a Firebase project.

firebase_create_web_appC

Registers a new web app under a Firebase project.

firebase_appdistribution_upload_releaseA

Uploads a build (.apk/.aab for Android, .ipa for iOS) to Firebase App Distribution. This creates a new release (or updates an existing one if the binary is identical). Returns a long-running Operation — the release resource name is in the operation response once done. Follow up with firebase_appdistribution_distribute_release to notify testers.

firebase_appdistribution_list_releasesC

Lists releases uploaded for a Firebase app, newest first by default.

firebase_appdistribution_get_releaseB

Fetches one release by its full resource name.

firebase_appdistribution_distribute_releaseA

Grants testers/groups access to an already-uploaded release and emails them. Creates testers that don't exist yet from testerEmails.

firebase_appdistribution_delete_releasesC

Deletes up to 100 releases at once, by their full resource names.

firebase_appdistribution_list_groupsC

Lists tester groups for a Firebase project.

firebase_appdistribution_create_groupC

Creates a new tester group under a Firebase project.

firebase_appdistribution_delete_groupA

Deletes a tester group by its full resource name.

firebase_appdistribution_add_testers_to_groupB

Adds tester emails to a group, creating tester resources for any that don't exist yet.

firebase_appdistribution_remove_testers_from_groupA

Removes tester emails from a group (they lose access to releases shared with that group).

firebase_appdistribution_list_testersC

Lists testers for a Firebase project.

firebase_appdistribution_add_testersB

Creates tester resources for the given emails at the project level (not tied to a group).

firebase_appdistribution_remove_testersB

Deletes tester resources for the given emails from a project entirely.

gcs_list_bucketsC

Lists all Cloud Storage buckets in a project.

gcs_get_bucketA

Fetches metadata (location, storage class, versioning, etc.) for a bucket.

gcs_create_bucketC

Creates a new Cloud Storage bucket. Bucket names are globally unique across all of GCS.

gcs_delete_bucketA

Deletes an empty bucket. Delete all objects in it first with gcs_delete_object.

gcs_list_objectsC

Lists objects in a bucket, optionally filtered by prefix (folder-like path).

gcs_get_object_metadataA

Fetches metadata for one object (size, contentType, md5Hash, generation, ...) without downloading its content.

gcs_upload_objectC

Uploads a local file to a bucket at the given object path/key.

gcs_download_objectC

Downloads an object's content to a local file path.

gcs_delete_objectC

Deletes one object from a bucket.

ar_list_repositoriesC

Lists Artifact Registry repositories in a project/location.

ar_create_repositoryC

Creates a new Artifact Registry repository (docker, maven, npm, python, apt, yum, go, generic, ...).

ar_delete_repositoryA

Deletes a repository and all packages/versions inside it.

ar_list_packagesC

Lists packages (e.g. Docker image names) within a repository.

ar_list_versionsB

Lists versions (e.g. image tags/digests) of one package.

ar_delete_versionB

Deletes one version of a package (e.g. an old Docker image tag/digest) to free up storage.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3/5.0

Scored across 95 tools

Disambiguation3/5

Tools are generally distinguishable by resource and action, but there are multiple high-level helpers (gcp_add_project_iam_binding vs gcp_set_project_iam_policy, play_update_track vs play_release_to_track vs play_remove_version_from_track) with overlapping intent that could confuse an agent about which to use. The descriptions do provide guidance, but the overlaps remain significant.

Naming Consistency3/5

Most tool names follow a consistent gcp_/firebase_/gcs_/ar_/play_ prefix and verb_noun pattern, which is good. However, play_ tools use verbs like 'commit', 'validate', 'release', 'reply' that break the strict verb_noun convention, and firebase_appdistribution_* has very long multi-word names, creating mixed readability.

Tool Count2/5

95 tools is extremely heavy for a single MCP server, spanning GCP, Firebase, GCS, Artifact Registry, and Play Console. This likely overwhelms an agent's selection process and indicates the server conflates multiple distinct domains into one surface.

Completeness4/5

Coverage across the stated domains is broad: GCP projects/APIs/IAM/service accounts, Firebase apps and App Distribution, GCS buckets/objects, Artifact Registry repos, and Play Console releases/listings/testers/products. Minor gaps exist (e.g., no gcp_list_orgs or firebase_delete_app), but core CRUD and lifecycle operations are well represented.

Maintenance

ActivityMaintained
ResponsivenessNo issues