@houmak/minerva-mcp-server
Version:
Minerva Model Context Protocol (MCP) Server for Microsoft 365 and Azure integrations
105 lines (104 loc) • 4.98 kB
JavaScript
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}`
};
}
});
}