@brianveltman/sonatype-mcp
Version:
Model Context Protocol server for Sonatype Nexus Repository Manager
76 lines • 2.91 kB
JavaScript
import { formatMCPError } from '../../utils/errors.js';
import { z } from 'zod';
import { validateInput } from '../../utils/validation.js';
const getComponentVersionsSchema = z.object({
repository: z.string().min(1, 'Repository name is required'),
format: z.enum(['npm', 'maven2', 'nuget', 'pypi', 'docker', 'raw', 'yum', 'apt']),
group: z.string().min(1, 'Group is required'),
name: z.string().min(1, 'Component name is required')
}).strict();
export function createGetComponentVersionsTool(componentService) {
return {
name: 'nexus_get_component_versions',
description: 'Get all versions of a specific component',
inputSchema: {
type: 'object',
properties: {
repository: {
type: 'string',
description: 'Repository name',
minLength: 1
},
format: {
type: 'string',
description: 'Component format',
enum: ['npm', 'maven2', 'nuget', 'pypi', 'docker', 'raw', 'yum', 'apt']
},
group: {
type: 'string',
description: 'Component group/namespace',
minLength: 1
},
name: {
type: 'string',
description: 'Component name',
minLength: 1
}
},
required: ['repository', 'format', 'group', 'name'],
additionalProperties: false
},
handler: async (params) => {
try {
const { repository, format, group, name } = validateInput(getComponentVersionsSchema, params);
const versions = await componentService.getComponentVersions(repository, format, group, name);
return {
content: [
{
type: 'text',
text: JSON.stringify({
repository,
format,
group,
name,
versions,
count: versions.length
}, null, 2)
}
]
};
}
catch (error) {
const mcpError = formatMCPError(error);
return {
content: [
{
type: 'text',
text: `Error getting component versions: ${mcpError.message}`
}
],
isError: true
};
}
}
};
}
//# sourceMappingURL=get-component-versions.js.map