@brianveltman/sonatype-mcp
Version:
Model Context Protocol server for Sonatype Nexus Repository Manager
74 lines • 3.94 kB
JavaScript
import { FirewallClient } from '../services/firewall-client.js';
import { RepositoryService } from '../services/repositories.js';
import { ComponentService } from '../services/components.js';
import { AdminService } from '../services/admin.js';
import { QuarantineService } from '../services/quarantine.js';
import { isToolEnabled } from '../utils/validation.js';
import { createListRepositoriesTool } from './repository/list-repositories.js';
import { createGetRepositoryTool } from './repository/get-repository.js';
import { createDeleteRepositoryTool } from './repository/delete-repository.js';
import { createCreateRepositoryTool } from './repository/create-repository.js';
import { createUpdateRepositoryTool } from './repository/update-repository.js';
import { createSearchComponentsTool } from './components/search-components.js';
import { createGetComponentTool } from './components/get-component.js';
import { createDeleteComponentTool } from './components/delete-component.js';
import { createGetComponentVersionsTool } from './components/get-component-versions.js';
import { createUploadComponentTool } from './components/upload-component.js';
import { createUploadMultipleAssetsTool } from './components/upload-multiple-assets.js';
import { createUploadAssetTool } from './assets/upload-asset.js';
import { createGetSystemStatusTool } from './admin/get-system-status.js';
import { createListBlobStoresTool } from './admin/list-blob-stores.js';
import { createListTasksTool } from './admin/list-tasks.js';
import { createGetUsageMetricsTool } from './admin/get-usage-metrics.js';
import { createGenerateSupportZipTool } from './admin/generate-support-zip.js';
import { createGetQuarantinedComponentsTool } from './firewall/get-quarantined-components.js';
import { createReleaseFromQuarantineTool } from './firewall/release-from-quarantine.js';
export function createTools(nexusClient, config) {
const repositoryService = new RepositoryService(nexusClient);
const componentService = new ComponentService(nexusClient);
const adminService = new AdminService(nexusClient);
let quarantineService = null;
if (config.firewall) {
try {
const firewallClient = new FirewallClient(config);
quarantineService = new QuarantineService(firewallClient);
}
catch (error) {
console.warn('Firewall client initialization failed:', error.message);
}
}
const allTools = [
createListRepositoriesTool(repositoryService),
createGetRepositoryTool(repositoryService),
createDeleteRepositoryTool(repositoryService),
createCreateRepositoryTool(repositoryService),
createUpdateRepositoryTool(repositoryService),
createSearchComponentsTool(componentService),
createGetComponentTool(componentService),
createDeleteComponentTool(componentService),
createGetComponentVersionsTool(componentService),
createUploadComponentTool(componentService),
createUploadMultipleAssetsTool(componentService),
createUploadAssetTool(componentService),
createGetSystemStatusTool(adminService),
createListBlobStoresTool(adminService),
createListTasksTool(adminService),
createGetUsageMetricsTool(adminService),
createGenerateSupportZipTool(adminService)
];
if (quarantineService) {
allTools.push(createGetQuarantinedComponentsTool(quarantineService), createReleaseFromQuarantineTool(quarantineService));
}
const enabledTools = config.features.enabledTools;
if (enabledTools.length === 0) {
return allTools;
}
return allTools.filter(tool => isToolEnabled(tool.name, enabledTools));
}
export function getToolByName(tools, name) {
return tools.find(tool => tool.name === name);
}
export function getAvailableToolNames(tools) {
return tools.map(tool => tool.name);
}
//# sourceMappingURL=index.js.map