Skip to main content
Glama
VantaInc

Vanta MCP Server

Official
by VantaInc
controls.ts4.04 kB
// 1. Imports import { CallToolResult, Tool, z, createConsolidatedSchema, createIdWithPaginationSchema, makeConsolidatedRequest, buildUrl, makeAuthenticatedRequest, handleApiResponse, CONTROL_ID_DESCRIPTION, } from "./common/imports.js"; // 2. Input Schemas const ControlsInput = createConsolidatedSchema( { paramName: "controlId", description: CONTROL_ID_DESCRIPTION, resourceName: "control", }, { frameworkMatchesAny: z .array(z.string()) .describe( "Filter controls by framework IDs. Returns controls that belong to any of the specified frameworks, e.g. ['soc2', 'iso27001', 'hipaa']", ) .optional(), }, ); const ListControlTestsInput = createIdWithPaginationSchema({ paramName: "controlId", description: CONTROL_ID_DESCRIPTION, }); const ListLibraryControlsInput = createIdWithPaginationSchema({ paramName: "controlId", description: CONTROL_ID_DESCRIPTION, }); const ListControlDocumentsInput = createIdWithPaginationSchema({ paramName: "controlId", description: CONTROL_ID_DESCRIPTION, }); // 3. Tool Definitions export const ControlsTool: Tool<typeof ControlsInput> = { name: "controls", description: "Access security controls in your Vanta account. Provide controlId to get a specific control, or omit to list all controls with optional framework filtering. Returns control names, descriptions, framework mappings, and implementation status.", parameters: ControlsInput, }; export const ListControlTestsTool: Tool<typeof ListControlTestsInput> = { name: "list_control_tests", description: "List control tests. Get all automated tests that validate a specific security control. Use this when you know a control ID and want to see which specific tests monitor compliance for that control.", parameters: ListControlTestsInput, }; export const ListLibraryControlsTool: Tool<typeof ListLibraryControlsInput> = { name: "list_library_controls", description: "List Vanta controls from the library. These are pre-built security controls available in Vanta's control library that can be added to your account.", parameters: ListLibraryControlsInput, }; export const ListControlDocumentsTool: Tool<typeof ListControlDocumentsInput> = { name: "list_control_documents", description: "List a control's documents. Get all documents that are associated with or provide evidence for a specific security control.", parameters: ListControlDocumentsInput, }; // 4. Implementation Functions export async function controls( args: z.infer<typeof ControlsInput>, ): Promise<CallToolResult> { return makeConsolidatedRequest("/v1/controls", args, "controlId"); } export async function listControlTests( args: z.infer<typeof ListControlTestsInput>, ): Promise<CallToolResult> { const { controlId, ...params } = args; const url = buildUrl(`/v1/controls/${String(controlId)}/tests`, params); const response = await makeAuthenticatedRequest(url); return handleApiResponse(response); } export async function listLibraryControls( args: z.infer<typeof ListLibraryControlsInput>, ): Promise<CallToolResult> { const { controlId, ...params } = args; const url = buildUrl(`/v1/library-controls/${String(controlId)}`, params); const response = await makeAuthenticatedRequest(url); return handleApiResponse(response); } export async function listControlDocuments( args: z.infer<typeof ListControlDocumentsInput>, ): Promise<CallToolResult> { const { controlId, ...params } = args; const url = buildUrl(`/v1/controls/${String(controlId)}/documents`, params); const response = await makeAuthenticatedRequest(url); return handleApiResponse(response); } // Registry export for automated tool registration export default { tools: [ { tool: ControlsTool, handler: controls }, { tool: ListControlTestsTool, handler: listControlTests }, { tool: ListLibraryControlsTool, handler: listLibraryControls }, { tool: ListControlDocumentsTool, handler: listControlDocuments }, ], };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/VantaInc/vanta-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server