UNPKG

@brianveltman/sonatype-mcp

Version:

Model Context Protocol server for Sonatype Nexus Repository Manager

74 lines 3.94 kB
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