Skip to main content
Glama
krzko

Google Cloud MCP Server

by krzko

gcp-iam-list-deployment-services

List Google Cloud Platform services that have predefined deployment permission sets to manage access control for deployment tasks.

Instructions

List all GCP services with pre-defined deployment permission sets

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Inline handler function that lists all GCP deployment services with their permission sets. It formats a detailed markdown response including service keys, descriptions, permission counts, and usage examples. Uses getAllDeploymentPermissionSets() helper.
    async () => { try { const permissionSets = getAllDeploymentPermissionSets(); let result = `# Available Deployment Services\n\n`; result += `The following GCP services have pre-defined permission sets for deployment validation:\n\n`; permissionSets.forEach((set) => { // Get the service key from the original keys const serviceKey = Object.keys(DEPLOYMENT_PERMISSION_SETS).find( (key) => DEPLOYMENT_PERMISSION_SETS[key] === set, ) || set.service.toLowerCase().replace(/\s+/g, "-"); result += `## ${set.service}\n\n`; result += `**Service Key:** \`${serviceKey}\`\n`; result += `**Description:** ${set.description}\n`; result += `**Required Permissions:** ${set.requiredPermissions.length}\n`; result += `**Optional Permissions:** ${set.optionalPermissions?.length || 0}\n\n`; }); result += `## Usage\n\n`; result += `Use the \`validate-deployment-permissions\` tool with the service key to check your permissions for deploying to any of these services.\n\n`; result += `**Example:** \`validate-deployment-permissions\` with service="cloud-run"\n`; return { content: [ { type: "text", text: result, }, ], }; } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : "Unknown error"; logger.error(`Error listing deployment services: ${errorMessage}`); return { content: [ { type: "text", text: `# Error Listing Deployment Services\n\nFailed to list deployment services: ${errorMessage}`, }, ], isError: true, }; } }, );
  • Registration of the 'gcp-iam-list-deployment-services' tool via server.registerTool call within registerIamTools function. Includes title, description, empty input schema, and inline handler.
    "gcp-iam-list-deployment-services", { title: "List Available Deployment Services", description: "List all GCP services with pre-defined deployment permission sets", inputSchema: {}, }, async () => { try { const permissionSets = getAllDeploymentPermissionSets(); let result = `# Available Deployment Services\n\n`; result += `The following GCP services have pre-defined permission sets for deployment validation:\n\n`; permissionSets.forEach((set) => { // Get the service key from the original keys const serviceKey = Object.keys(DEPLOYMENT_PERMISSION_SETS).find( (key) => DEPLOYMENT_PERMISSION_SETS[key] === set, ) || set.service.toLowerCase().replace(/\s+/g, "-"); result += `## ${set.service}\n\n`; result += `**Service Key:** \`${serviceKey}\`\n`; result += `**Description:** ${set.description}\n`; result += `**Required Permissions:** ${set.requiredPermissions.length}\n`; result += `**Optional Permissions:** ${set.optionalPermissions?.length || 0}\n\n`; }); result += `## Usage\n\n`; result += `Use the \`validate-deployment-permissions\` tool with the service key to check your permissions for deploying to any of these services.\n\n`; result += `**Example:** \`validate-deployment-permissions\` with service="cloud-run"\n`; return { content: [ { type: "text", text: result, }, ], }; } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : "Unknown error"; logger.error(`Error listing deployment services: ${errorMessage}`); return { content: [ { type: "text", text: `# Error Listing Deployment Services\n\nFailed to list deployment services: ${errorMessage}`, }, ], isError: true, }; } }, );
  • Helper function called by the tool handler to retrieve all DeploymentPermissionSet objects from the DEPLOYMENT_PERMISSION_SETS constant.
    export function getAllDeploymentPermissionSets(): DeploymentPermissionSet[] { return Object.values(DEPLOYMENT_PERMISSION_SETS); }
  • Constant data structure defining permission sets for multiple GCP services (Cloud Run, GKE, Compute Engine, etc.). Each entry includes service details, required/optional permissions, and common resources. Used by getAllDeploymentPermissionSets().
    export const DEPLOYMENT_PERMISSION_SETS: Record< string, DeploymentPermissionSet > = { "cloud-run": { service: "Cloud Run", description: "Deploy and manage Cloud Run services", requiredPermissions: [ "run.services.create", "run.services.update", "run.services.get", "run.services.list", "run.services.delete", "run.revisions.get", "run.revisions.list", "iam.serviceAccounts.actAs", ], optionalPermissions: [ "run.services.setIamPolicy", "run.services.getIamPolicy", "cloudsql.instances.connect", "secretmanager.versions.access", ], commonResources: [ "projects/{project}/locations/{location}/services/{service}", ], }, gke: { service: "Google Kubernetes Engine", description: "Deploy and manage GKE clusters and workloads", requiredPermissions: [ "container.clusters.create", "container.clusters.update", "container.clusters.get", "container.clusters.list", "container.clusters.delete", "container.operations.get", "container.operations.list", "compute.instances.get", "compute.instances.list", "iam.serviceAccounts.actAs", ], optionalPermissions: [ "container.clusters.getCredentials", "compute.networks.get", "compute.subnetworks.get", "logging.logEntries.create", "monitoring.metricDescriptors.create", ], commonResources: [ "projects/{project}/locations/{location}/clusters/{cluster}", ], }, "compute-engine": { service: "Compute Engine", description: "Deploy and manage Compute Engine instances", requiredPermissions: [ "compute.instances.create", "compute.instances.delete", "compute.instances.get", "compute.instances.list", "compute.instances.start", "compute.instances.stop", "compute.disks.create", "compute.disks.use", "compute.networks.use", "compute.subnetworks.use", "iam.serviceAccounts.actAs", ], optionalPermissions: [ "compute.instances.setMetadata", "compute.instances.setTags", "compute.firewalls.create", "compute.addresses.create", ], commonResources: ["projects/{project}/zones/{zone}/instances/{instance}"], }, "cloud-functions": { service: "Cloud Functions", description: "Deploy and manage Cloud Functions", requiredPermissions: [ "cloudfunctions.functions.create", "cloudfunctions.functions.update", "cloudfunctions.functions.get", "cloudfunctions.functions.list", "cloudfunctions.functions.delete", "cloudfunctions.operations.get", "iam.serviceAccounts.actAs", ], optionalPermissions: [ "cloudfunctions.functions.setIamPolicy", "cloudfunctions.functions.getIamPolicy", "storage.buckets.get", "storage.objects.create", ], commonResources: [ "projects/{project}/locations/{location}/functions/{function}", ], }, "app-engine": { service: "App Engine", description: "Deploy and manage App Engine applications", requiredPermissions: [ "appengine.applications.create", "appengine.applications.update", "appengine.applications.get", "appengine.versions.create", "appengine.versions.update", "appengine.versions.get", "appengine.versions.list", "appengine.services.get", "appengine.services.list", ], optionalPermissions: [ "appengine.versions.delete", "appengine.instances.get", "appengine.instances.list", "storage.buckets.get", "storage.objects.create", ], commonResources: [ "projects/{project}/services/{service}/versions/{version}", ], }, "cloud-storage": { service: "Cloud Storage", description: "Manage Cloud Storage buckets and objects", requiredPermissions: [ "storage.buckets.create", "storage.buckets.get", "storage.buckets.list", "storage.objects.create", "storage.objects.get", "storage.objects.list", ], optionalPermissions: [ "storage.buckets.delete", "storage.objects.delete", "storage.buckets.setIamPolicy", "storage.buckets.getIamPolicy", ], commonResources: ["projects/{project}/buckets/{bucket}"], }, "cloud-sql": { service: "Cloud SQL", description: "Deploy and manage Cloud SQL instances", requiredPermissions: [ "cloudsql.instances.create", "cloudsql.instances.update", "cloudsql.instances.get", "cloudsql.instances.list", "cloudsql.instances.connect", "cloudsql.databases.create", "cloudsql.databases.get", "cloudsql.databases.list", ], optionalPermissions: [ "cloudsql.instances.delete", "cloudsql.users.create", "cloudsql.users.list", "cloudsql.backupRuns.create", ], commonResources: ["projects/{project}/instances/{instance}"], }, };
  • src/index.ts:202-202 (registration)
    Invocation of registerIamTools(server) in the main server startup, which triggers registration of IAM tools including 'gcp-iam-list-deployment-services'.
    registerIamTools(server);

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/krzko/google-cloud-mcp'

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