UNPKG

@vantasdk/vanta-mcp-server

Version:

Model Context Protocol server for Vanta's security compliance platform

65 lines (64 loc) 2.69 kB
import { getEnabledToolNames, hasEnabledToolFilter, isToolEnabled, } from "./config.js"; // Helper function to register a single tool export function registerTool(server, tool, handler) { if (!isToolEnabled(tool.name)) { console.error(`⚪️ Skipping tool not in enabled list: ${tool.name}`); return false; } const parameters = tool.parameters; server.tool(tool.name, tool.description, parameters.shape, handler); return true; } // Helper function to register all tools from a module export function registerOperationModule(server, operationModule) { let registered = 0; let skipped = 0; operationModule.tools.forEach(({ tool, handler }) => { const wasRegistered = registerTool(server, tool, handler); if (wasRegistered) { registered += 1; } else { skipped += 1; } }); return { registered, skipped }; } // Auto-discovery and registration of all operations export async function registerAllOperations(server) { // Import all operation modules const operations = [ import("./operations/tests.js"), import("./operations/frameworks.js"), import("./operations/controls.js"), import("./operations/risks.js"), import("./operations/integrations.js"), import("./operations/vendors.js"), import("./operations/documents.js"), import("./operations/policies.js"), import("./operations/discovered-vendors.js"), import("./operations/groups.js"), import("./operations/people.js"), import("./operations/vulnerabilities.js"), import("./operations/vulnerability-remediations.js"), import("./operations/vulnerable-assets.js"), import("./operations/monitored-computers.js"), import("./operations/vendor-risk-attributes.js"), import("./operations/trust-centers.js"), ]; // Load all modules and register their tools const modules = await Promise.all(operations); let totalTools = 0; let skippedTools = 0; modules.forEach(module => { const operationModule = module.default; const { registered, skipped } = registerOperationModule(server, operationModule); totalTools += registered; skippedTools += skipped; }); console.error(`✅ Registered ${String(totalTools)} tools from ${String(modules.length)} operation modules successfully`); if (skippedTools > 0 && hasEnabledToolFilter) { const enabledList = getEnabledToolNames().join(", "); console.error(`⚠️ Tools skipped because they are not enabled: ${String(skippedTools)} (enabled list: ${enabledList})`); } }