import { z } from "zod";
/**
* Register all system and security management tools with the MCP server
*/
export function registerSystemTools(server) {
// Get Site Health Tool
server.tool("get-site-health", "Check WordPress core health status and identify errors", {
includeTests: z.boolean().default(true).describe("Include detailed test results"),
includeInfo: z.boolean().default(false).describe("Include system information")
}, async ({ includeTests, includeInfo }) => {
try {
// TODO: Implement getSiteHealth in wordpress/api.js
// const result = await getSiteHealth(includeTests, includeInfo);
return {
content: [{
type: "text",
text: "⚠️ get-site-health tool not yet implemented. Please add getSiteHealth function to wordpress/api.js"
}],
isError: true
};
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
console.error("Error getting site health:", error);
return {
content: [{
type: "text",
text: `Error getting site health: ${errorMessage}`
}],
isError: true
};
}
});
// Check Core Updates Tool
server.tool("check-core-updates", "Check for available WordPress core updates", {
forceCheck: z.boolean().default(false).describe("Force check for updates (bypass cache)")
}, async ({ forceCheck }) => {
try {
// TODO: Implement checkCoreUpdates in wordpress/api.js
// const result = await checkCoreUpdates(forceCheck);
return {
content: [{
type: "text",
text: "⚠️ check-core-updates tool not yet implemented. Please add checkCoreUpdates function to wordpress/api.js"
}],
isError: true
};
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
console.error("Error checking core updates:", error);
return {
content: [{
type: "text",
text: `Error checking core updates: ${errorMessage}`
}],
isError: true
};
}
});
// Apply Core Update Tool
server.tool("apply-core-update", "Install available WordPress core updates", {
version: z.string().optional().describe("Specific version to update to (optional - uses latest if not specified)"),
backupFirst: z.boolean().default(true).describe("Create backup before updating"),
maintenanceMode: z.boolean().default(true).describe("Enable maintenance mode during update")
}, async ({ version, backupFirst, maintenanceMode }) => {
try {
// TODO: Implement applyCoreUpdate in wordpress/api.js
// const result = await applyCoreUpdate({ version, backupFirst, maintenanceMode });
return {
content: [{
type: "text",
text: "⚠️ apply-core-update tool not yet implemented. Please add applyCoreUpdate function to wordpress/api.js"
}],
isError: true
};
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
console.error("Error applying core update:", error);
return {
content: [{
type: "text",
text: `Error applying core update: ${errorMessage}`
}],
isError: true
};
}
});
// Scan for Malware Tool
server.tool("scan-for-malware", "Scan WordPress site for malware and security threats", {
deepScan: z.boolean().default(false).describe("Perform deep file system scan"),
scanCore: z.boolean().default(true).describe("Scan WordPress core files"),
scanPlugins: z.boolean().default(true).describe("Scan plugin files"),
scanThemes: z.boolean().default(true).describe("Scan theme files"),
scanUploads: z.boolean().default(false).describe("Scan uploaded files")
}, async ({ deepScan, scanCore, scanPlugins, scanThemes, scanUploads }) => {
try {
// TODO: Implement scanForMalware in wordpress/api.js
// const result = await scanForMalware({
// deepScan,
// scanCore,
// scanPlugins,
// scanThemes,
// scanUploads
// });
return {
content: [{
type: "text",
text: "⚠️ scan-for-malware tool not yet implemented. Please add scanForMalware function to wordpress/api.js"
}],
isError: true
};
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
console.error("Error scanning for malware:", error);
return {
content: [{
type: "text",
text: `Error scanning for malware: ${errorMessage}`
}],
isError: true
};
}
});
// Lock Site Tool
server.tool("lock-site", "Enable maintenance mode to lock the site", {
message: z.string().optional().describe("Custom maintenance message to display"),
allowedIPs: z.array(z.string()).optional().describe("IP addresses allowed to bypass maintenance mode"),
duration: z.number().optional().describe("Auto-unlock after specified minutes (optional)")
}, async ({ message, allowedIPs, duration }) => {
try {
// TODO: Implement lockSite in wordpress/api.js
// const result = await lockSite({
// message: message || "Site is temporarily unavailable for maintenance.",
// allowedIPs: allowedIPs || [],
// duration
// });
return {
content: [{
type: "text",
text: "⚠️ lock-site tool not yet implemented. Please add lockSite function to wordpress/api.js"
}],
isError: true
};
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
console.error("Error locking site:", error);
return {
content: [{
type: "text",
text: `Error locking site: ${errorMessage}`
}],
isError: true
};
}
});
// Unlock Site Tool
server.tool("unlock-site", "Disable maintenance mode to unlock the site", {}, async () => {
try {
// TODO: Implement unlockSite in wordpress/api.js
// const result = await unlockSite();
return {
content: [{
type: "text",
text: "⚠️ unlock-site tool not yet implemented. Please add unlockSite function to wordpress/api.js"
}],
isError: true
};
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
console.error("Error unlocking site:", error);
return {
content: [{
type: "text",
text: `Error unlocking site: ${errorMessage}`
}],
isError: true
};
}
});
// Clear Cache Tool
server.tool("clear-cache", "Purge various WordPress caches", {
cacheType: z.enum(["all", "object", "page", "database", "opcache"]).default("all").describe("Type of cache to clear"),
plugin: z.string().optional().describe("Specific caching plugin to target (e.g., 'wp-rocket', 'w3tc', 'wp-super-cache')")
}, async ({ cacheType, plugin }) => {
try {
// TODO: Implement clearCache in wordpress/api.js
// const result = await clearCache(cacheType, plugin);
return {
content: [{
type: "text",
text: "⚠️ clear-cache tool not yet implemented. Please add clearCache function to wordpress/api.js"
}],
isError: true
};
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
console.error("Error clearing cache:", error);
return {
content: [{
type: "text",
text: `Error clearing cache: ${errorMessage}`
}],
isError: true
};
}
});
// Backup Database Tool
server.tool("backup-database", "Create a database backup (requires compatible backup plugin)", {
backupName: z.string().optional().describe("Custom name for the backup"),
includeFiles: z.boolean().default(false).describe("Include WordPress files in backup"),
compressionLevel: z.enum(["none", "low", "medium", "high"]).default("medium").describe("Backup compression level"),
storageLocation: z.enum(["local", "cloud", "both"]).default("local").describe("Where to store the backup"),
plugin: z.string().optional().describe("Specific backup plugin to use (e.g., 'updraftplus', 'backwpup', 'duplicator')")
}, async ({ backupName, includeFiles, compressionLevel, storageLocation, plugin }) => {
try {
// TODO: Implement backupDatabase in wordpress/api.js
// const result = await backupDatabase({
// backupName: backupName || `backup_${new Date().toISOString().split('T')[0]}`,
// includeFiles,
// compressionLevel,
// storageLocation,
// plugin
// });
return {
content: [{
type: "text",
text: "⚠️ backup-database tool not yet implemented. Please add backupDatabase function to wordpress/api.js"
}],
isError: true
};
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
console.error("Error creating database backup:", error);
return {
content: [{
type: "text",
text: `Error creating database backup: ${errorMessage}`
}],
isError: true
};
}
});
// Get System Info Tool
server.tool("get-system-info", "Get comprehensive WordPress system information", {
includePlugins: z.boolean().default(true).describe("Include active plugins information"),
includeThemes: z.boolean().default(true).describe("Include installed themes information"),
includeServer: z.boolean().default(true).describe("Include server environment details")
}, async ({ includePlugins, includeThemes, includeServer }) => {
try {
// TODO: Implement getSiteInfo in wordpress/api.js
// const result = await getSiteInfo({
// includePlugins,
// includeThemes,
// includeServer
// });
return {
content: [{
type: "text",
text: "⚠️ get-system-info tool not yet implemented. Please add getSiteInfo function to wordpress/api.js"
}],
isError: true
};
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
console.error("Error getting system info:", error);
return {
content: [{
type: "text",
text: `Error getting system info: ${errorMessage}`
}],
isError: true
};
}
});
}