@edjl/gcloud-mcp
Version:
Google Cloud Platform tools for MCP (Model Context Protocol)
69 lines • 2.72 kB
JavaScript
import { z } from 'zod';
import { executeGCloudCommand, parseGCloudJson } from '../../utils/gcloud.js';
const inputSchema = z.object({
project: z.string().optional().describe('GCP project ID (uses current project if not specified)'),
region: z.string().optional().describe('Filter by region'),
limit: z.number().optional().default(50).describe('Maximum number of clusters to return')
});
const gcloudClustersListTool = {
name: 'clusters_list',
description: 'List all GKE clusters in the project',
category: 'kubernetes',
subcategory: 'clusters',
version: '1.0.0',
inputSchema,
handler: async (input) => {
const params = inputSchema.parse(input);
let command = 'gcloud container clusters list --format=json';
if (params.project) {
command += ` --project=${params.project}`;
}
if (params.region) {
command += ` --region=${params.region}`;
}
if (params.limit) {
command += ` --limit=${params.limit}`;
}
const result = await executeGCloudCommand(command);
if (result.exitCode !== 0) {
return {
content: [{
type: 'text',
text: `Error listing clusters: ${result.stderr}`
}],
isError: true
};
}
const clusters = parseGCloudJson(result.stdout);
if (!clusters || clusters.length === 0) {
return {
content: [{
type: 'text',
text: 'No GKE clusters found in the project'
}]
};
}
let output = `Found ${clusters.length} GKE cluster${clusters.length !== 1 ? 's' : ''}:\n\n`;
clusters.forEach(cluster => {
output += `Cluster: ${cluster.name}\n`;
output += ` Location: ${cluster.location}\n`;
output += ` Status: ${cluster.status}\n`;
output += ` Master Version: ${cluster.currentMasterVersion}\n`;
output += ` Node Version: ${cluster.currentNodeVersion}\n`;
if (cluster.nodeConfig?.machineType) {
output += ` Machine Type: ${cluster.nodeConfig.machineType}\n`;
}
output += ` Node Count: ${cluster.currentNodeCount}\n`;
output += ` Created: ${new Date(cluster.createTime).toLocaleString()}\n`;
output += '\n';
});
return {
content: [{
type: 'text',
text: output.trim()
}]
};
}
};
export default gcloudClustersListTool;
//# sourceMappingURL=clusters-list.js.map