@edjl/gcloud-mcp
Version:
Google Cloud Platform tools for MCP (Model Context Protocol)
76 lines • 3.13 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)'),
location: z.string().optional().describe('Filter by location (e.g., us-central1, us, europe)'),
limit: z.number().optional().default(50).describe('Maximum number of repositories to return')
});
const gcloudArtifactsRepositoriesListTool = {
name: 'artifacts_repositories_list',
description: 'List all Artifact Registry repositories in the project',
category: 'artifacts',
subcategory: 'repositories',
version: '1.0.0',
inputSchema,
handler: async (input) => {
const params = inputSchema.parse(input);
let command = 'gcloud artifacts repositories list --format=json';
if (params.project) {
command += ` --project=${params.project}`;
}
if (params.location) {
command += ` --location=${params.location}`;
}
if (params.limit) {
command += ` --limit=${params.limit}`;
}
const result = await executeGCloudCommand(command);
if (result.exitCode !== 0) {
return {
content: [{
type: 'text',
text: `Error listing artifact repositories: ${result.stderr}`
}],
isError: true
};
}
const repositories = parseGCloudJson(result.stdout);
if (!repositories || repositories.length === 0) {
return {
content: [{
type: 'text',
text: 'No artifact repositories found in the project'
}]
};
}
let output = `Found ${repositories.length} artifact repositor${repositories.length !== 1 ? 'ies' : 'y'}:\n\n`;
repositories.forEach(repo => {
// Extract repository details from the full name
const parts = repo.name.split('/');
const location = parts[3];
const repoName = parts[5];
output += `Repository: ${repoName}\n`;
output += ` Location: ${location}\n`;
output += ` Format: ${repo.format}\n`;
output += ` Mode: ${repo.mode}\n`;
if (repo.description) {
output += ` Description: ${repo.description}\n`;
}
if (repo.sizeBytes) {
const sizeMB = (parseInt(repo.sizeBytes) / 1024 / 1024).toFixed(2);
output += ` Size: ${sizeMB} MB\n`;
}
output += ` Created: ${new Date(repo.createTime).toLocaleString()}\n`;
output += ` Updated: ${new Date(repo.updateTime).toLocaleString()}\n`;
output += '\n';
});
return {
content: [{
type: 'text',
text: output.trim()
}]
};
}
};
export default gcloudArtifactsRepositoriesListTool;
//# sourceMappingURL=repositories-list.js.map