UNPKG

@houmak/minerva-mcp-server

Version:

Minerva Model Context Protocol (MCP) Server for Microsoft 365 and Azure integrations

105 lines (104 loc) 4.98 kB
import { z } from "zod"; import { logger } from "./logger.js"; import { dirname } from "path"; import { fileURLToPath } from "url"; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); export function registerPnPTools(server, powershellExecutor) { console.error("Registering PnP PowerShell Sample tools..."); // Note: migrateSharePointList and getSiteInventory are already registered in migration-tools.ts and pnp-tools/index.ts // This function now only registers additional PnP-specific tools // Note: createSharePointSite is already registered in pnp-tools/index.ts // Bulk Create Lists Tool server.tool("bulkCreateLists", "Create multiple SharePoint lists from CSV file or array", { siteUrl: z.string().describe("URL of the SharePoint site"), csvPath: z.string().optional().describe("Path to CSV file with list definitions"), listNames: z.array(z.string()).optional().describe("Array of list names to create"), template: z.string().default("GenericList").describe("List template to use"), includeContentTypes: z.boolean().default(false).describe("Include content types in list creation") }, async ({ siteUrl, csvPath, listNames, template, includeContentTypes }) => { try { logger.info(`Starting bulk list creation for site: ${siteUrl}`); const result = await powershellExecutor.executeScript({ scriptPath: "New-BulkLists.ps1", parameters: { SiteUrl: siteUrl, CsvPath: csvPath || "", ListNames: listNames ? listNames.join(',') : "", Template: template, IncludeContentTypes: includeContentTypes } }); if (result.success) { logger.info(`✅ Bulk list creation completed successfully`); return { success: true, message: `Bulk list creation completed for site ${siteUrl}`, details: result.data }; } else { logger.error(`❌ Bulk list creation failed: ${result.error}`); return { success: false, error: `Bulk creation failed: ${result.error}`, details: result.stderr }; } } catch (error) { logger.error(`❌ Error during bulk list creation: ${error}`); return { success: false, error: `Unexpected error: ${error}` }; } }); // Note: getTeamsReport is already registered in pnp-tools/index.ts // Note: getAADUsersReport is already registered in pnp-tools/index.ts // Power Automate Flows Report Tool server.tool("getFlowsReport", "Generate comprehensive report of Power Automate flows", { environment: z.string().optional().describe("Power Platform environment name"), includeDetails: z.boolean().default(true).describe("Include flow details in report"), includeConnections: z.boolean().default(false).describe("Include connection details in report"), includeRuns: z.boolean().default(false).describe("Include run history in report"), outputPath: z.string().optional().describe("Path to save the report (CSV format)") }, async ({ environment, includeDetails, includeConnections, includeRuns, outputPath }) => { try { logger.info(`Generating Power Automate flows report`); const result = await powershellExecutor.executeScript({ scriptPath: "Get-FlowsReport.ps1", parameters: { Environment: environment || "", IncludeDetails: includeDetails, IncludeConnections: includeConnections, IncludeRuns: includeRuns, OutputPath: outputPath || "" } }); if (result.success) { logger.info(`✅ Power Automate flows report generated successfully`); return { success: true, message: `Power Automate flows report generated successfully`, details: result.data }; } else { logger.error(`❌ Power Automate flows report generation failed: ${result.error}`); return { success: false, error: `Report generation failed: ${result.error}`, details: result.stderr }; } } catch (error) { logger.error(`❌ Error during Power Automate flows report generation: ${error}`); return { success: false, error: `Unexpected error: ${error}` }; } }); }