mcp-wordpress 2.2.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +503 -0
  2. package/dist/client/api.d.ts +90 -0
  3. package/dist/client/api.d.ts.map +1 -1
  4. package/dist/client/api.js +90 -0
  5. package/dist/client/api.js.map +1 -1
  6. package/dist/security/AISecurityScanner.d.ts +175 -0
  7. package/dist/security/AISecurityScanner.d.ts.map +1 -0
  8. package/dist/security/AISecurityScanner.js +645 -0
  9. package/dist/security/AISecurityScanner.js.map +1 -0
  10. package/dist/security/AutomatedRemediation.d.ts +145 -0
  11. package/dist/security/AutomatedRemediation.d.ts.map +1 -0
  12. package/dist/security/AutomatedRemediation.js +535 -0
  13. package/dist/security/AutomatedRemediation.js.map +1 -0
  14. package/dist/security/SecurityCIPipeline.d.ts +213 -0
  15. package/dist/security/SecurityCIPipeline.d.ts.map +1 -0
  16. package/dist/security/SecurityCIPipeline.js +684 -0
  17. package/dist/security/SecurityCIPipeline.js.map +1 -0
  18. package/dist/security/SecurityConfigManager.d.ts +294 -0
  19. package/dist/security/SecurityConfigManager.d.ts.map +1 -0
  20. package/dist/security/SecurityConfigManager.js +553 -0
  21. package/dist/security/SecurityConfigManager.js.map +1 -0
  22. package/dist/security/SecurityMonitoring.d.ts +245 -0
  23. package/dist/security/SecurityMonitoring.d.ts.map +1 -0
  24. package/dist/security/SecurityMonitoring.js +596 -0
  25. package/dist/security/SecurityMonitoring.js.map +1 -0
  26. package/dist/security/SecurityReviewer.d.ts +168 -0
  27. package/dist/security/SecurityReviewer.d.ts.map +1 -0
  28. package/dist/security/SecurityReviewer.js +683 -0
  29. package/dist/security/SecurityReviewer.js.map +1 -0
  30. package/dist/security/index.d.ts +182 -0
  31. package/dist/security/index.d.ts.map +1 -0
  32. package/dist/security/index.js +189 -0
  33. package/dist/security/index.js.map +1 -0
  34. package/dist/tools/media.d.ts +43 -4
  35. package/dist/tools/media.d.ts.map +1 -1
  36. package/dist/tools/media.js +43 -4
  37. package/dist/tools/media.js.map +1 -1
  38. package/dist/tools/posts.d.ts +225 -4
  39. package/dist/tools/posts.d.ts.map +1 -1
  40. package/dist/tools/posts.js +225 -4
  41. package/dist/tools/posts.js.map +1 -1
  42. package/docs/DOCKER_PUBLISHING_TROUBLESHOOTING.md +233 -0
  43. package/docs/PUBLISHING-TROUBLESHOOTING.md +227 -0
  44. package/docs/api/README.md +53 -11
  45. package/docs/api/openapi.json +10 -10
  46. package/docs/api/summary.json +1 -1
  47. package/docs/api/tools/wp_create_post.md +9 -3
  48. package/docs/api/tools/wp_delete_post.md +2 -3
  49. package/docs/api/tools/wp_get_current_user.md +7 -1
  50. package/docs/api/tools/wp_get_post.md +2 -3
  51. package/docs/api/tools/wp_get_post_revisions.md +1 -1
  52. package/docs/api/tools/wp_list_posts.md +10 -3
  53. package/docs/api/tools/wp_list_users.md +8 -1
  54. package/docs/api/tools/wp_search_site.md +8 -1
  55. package/docs/api/tools/wp_test_auth.md +8 -1
  56. package/docs/api/tools/wp_update_post.md +2 -3
  57. package/docs/examples/docker-production.md +801 -0
  58. package/docs/examples/multi-site-setup.md +575 -0
  59. package/docs/examples/single-site-setup.md +390 -0
  60. package/docs/examples/use-case-workflows.md +469 -0
  61. package/package.json +11 -3
  62. package/src/client/api.ts +90 -0
  63. package/src/security/AISecurityScanner.ts +780 -0
  64. package/src/security/AutomatedRemediation.ts +665 -0
  65. package/src/security/SecurityCIPipeline.ts +969 -0
  66. package/src/security/SecurityConfigManager.ts +829 -0
  67. package/src/security/SecurityMonitoring.ts +841 -0
  68. package/src/security/SecurityReviewer.ts +855 -0
  69. package/src/security/index.ts +249 -0
  70. package/src/tools/media.ts +43 -4
  71. package/src/tools/posts.ts +225 -4
@@ -0,0 +1,553 @@
1
+ /**
2
+ * Security Configuration Management System
3
+ * Provides centralized security policy and configuration management
4
+ */
5
+ import * as fs from "fs/promises";
6
+ import * as path from "path";
7
+ import { z } from "zod";
8
+ import { SecurityUtils } from "./SecurityConfig";
9
+ import { SecurityValidationError } from "./InputValidator";
10
+ /**
11
+ * Security Configuration Schema Validation
12
+ */
13
+ const SecurityPolicySchema = z.object({
14
+ id: z.string().min(1),
15
+ name: z.string().min(1),
16
+ version: z.string().regex(/^\d+\.\d+\.\d+$/),
17
+ description: z.string().min(1),
18
+ enabled: z.boolean(),
19
+ scope: z.enum(["global", "environment", "application", "endpoint"]),
20
+ rules: z.array(z.object({
21
+ id: z.string().min(1),
22
+ name: z.string().min(1),
23
+ type: z.enum([
24
+ "authentication",
25
+ "authorization",
26
+ "input-validation",
27
+ "crypto",
28
+ "session",
29
+ "logging",
30
+ "monitoring",
31
+ ]),
32
+ action: z.enum(["enforce", "warn", "log", "block"]),
33
+ conditions: z.object({
34
+ environments: z.array(z.string()).optional(),
35
+ methods: z.array(z.string()).optional(),
36
+ paths: z.array(z.string()).optional(),
37
+ userRoles: z.array(z.string()).optional(),
38
+ }),
39
+ parameters: z.record(z.any()),
40
+ exceptions: z.array(z.string()),
41
+ })),
42
+ compliance: z.object({
43
+ frameworks: z.array(z.string()),
44
+ requirements: z.array(z.string()),
45
+ }),
46
+ metadata: z.object({
47
+ created: z.date(),
48
+ updated: z.date(),
49
+ author: z.string(),
50
+ approved: z.boolean(),
51
+ }),
52
+ });
53
+ /**
54
+ * Security Configuration Manager
55
+ */
56
+ export class SecurityConfigManager {
57
+ configurations = new Map();
58
+ policies = new Map();
59
+ configPath;
60
+ constructor(configPath = "security-config") {
61
+ this.configPath = configPath;
62
+ }
63
+ /**
64
+ * Initialize security configuration manager
65
+ */
66
+ async initialize() {
67
+ console.log("[Security Config] Initializing security configuration manager");
68
+ await this.ensureConfigDirectory();
69
+ await this.loadConfigurations();
70
+ await this.loadPolicies();
71
+ console.log(`[Security Config] Loaded ${this.configurations.size} configurations and ${this.policies.size} policies`);
72
+ }
73
+ /**
74
+ * Create a new security policy
75
+ */
76
+ async createPolicy(policyData) {
77
+ const policy = {
78
+ ...policyData,
79
+ id: SecurityUtils.generateSecureToken(16),
80
+ metadata: {
81
+ created: new Date(),
82
+ updated: new Date(),
83
+ author: "system",
84
+ approved: false,
85
+ },
86
+ };
87
+ // Validate policy
88
+ try {
89
+ SecurityPolicySchema.parse(policy);
90
+ }
91
+ catch (error) {
92
+ throw new SecurityValidationError("Invalid security policy", [{ message: String(error) }]);
93
+ }
94
+ this.policies.set(policy.id, policy);
95
+ await this.savePolicyToFile(policy);
96
+ console.log(`[Security Config] Created policy: ${policy.name} (${policy.id})`);
97
+ return policy;
98
+ }
99
+ /**
100
+ * Update an existing security policy
101
+ */
102
+ async updatePolicy(policyId, updates) {
103
+ const existingPolicy = this.policies.get(policyId);
104
+ if (!existingPolicy) {
105
+ throw new SecurityValidationError("Policy not found", [{ message: `Policy ${policyId} not found` }]);
106
+ }
107
+ const updatedPolicy = {
108
+ ...existingPolicy,
109
+ ...updates,
110
+ id: policyId, // Ensure ID doesn't change
111
+ metadata: {
112
+ ...existingPolicy.metadata,
113
+ updated: new Date(),
114
+ },
115
+ };
116
+ // Validate updated policy
117
+ try {
118
+ SecurityPolicySchema.parse(updatedPolicy);
119
+ }
120
+ catch (error) {
121
+ throw new SecurityValidationError("Invalid policy update", [{ message: String(error) }]);
122
+ }
123
+ this.policies.set(policyId, updatedPolicy);
124
+ await this.savePolicyToFile(updatedPolicy);
125
+ console.log(`[Security Config] Updated policy: ${updatedPolicy.name} (${policyId})`);
126
+ return updatedPolicy;
127
+ }
128
+ /**
129
+ * Create a new security configuration
130
+ */
131
+ async createConfiguration(environment, configData) {
132
+ const config = {
133
+ configId: SecurityUtils.generateSecureToken(16),
134
+ version: "1.0.0",
135
+ environment,
136
+ policies: [],
137
+ settings: configData.settings || this.getDefaultSettings(),
138
+ overrides: configData.overrides || {},
139
+ metadata: {
140
+ lastUpdated: new Date(),
141
+ checksum: "",
142
+ },
143
+ };
144
+ // Calculate checksum
145
+ config.metadata.checksum = await this.calculateChecksum(config);
146
+ this.configurations.set(environment, config);
147
+ await this.saveConfigurationToFile(config);
148
+ console.log(`[Security Config] Created configuration for environment: ${environment}`);
149
+ return config;
150
+ }
151
+ /**
152
+ * Get configuration for environment
153
+ */
154
+ getConfiguration(environment) {
155
+ return this.configurations.get(environment) || null;
156
+ }
157
+ /**
158
+ * Get all configurations
159
+ */
160
+ getAllConfigurations() {
161
+ return Array.from(this.configurations.values());
162
+ }
163
+ /**
164
+ * Apply policies to configuration
165
+ */
166
+ async applyPoliciesToConfiguration(environment, policyIds) {
167
+ const config = this.configurations.get(environment);
168
+ if (!config) {
169
+ throw new SecurityValidationError("Configuration not found", [
170
+ { message: `Environment ${environment} not found` },
171
+ ]);
172
+ }
173
+ const policies = [];
174
+ for (const policyId of policyIds) {
175
+ const policy = this.policies.get(policyId);
176
+ if (!policy) {
177
+ throw new SecurityValidationError("Policy not found", [{ message: `Policy ${policyId} not found` }]);
178
+ }
179
+ if (!policy.enabled) {
180
+ console.warn(`[Security Config] Skipping disabled policy: ${policy.name}`);
181
+ continue;
182
+ }
183
+ policies.push(policy);
184
+ }
185
+ config.policies = policies;
186
+ config.metadata.lastUpdated = new Date();
187
+ config.metadata.checksum = await this.calculateChecksum(config);
188
+ this.configurations.set(environment, config);
189
+ await this.saveConfigurationToFile(config);
190
+ console.log(`[Security Config] Applied ${policies.length} policies to ${environment}`);
191
+ return config;
192
+ }
193
+ /**
194
+ * Validate configuration compliance
195
+ */
196
+ async validateCompliance(environment) {
197
+ const config = this.configurations.get(environment);
198
+ if (!config) {
199
+ throw new SecurityValidationError("Configuration not found", [
200
+ { message: `Environment ${environment} not found` },
201
+ ]);
202
+ }
203
+ const violations = [];
204
+ const recommendations = [];
205
+ // Check password policy compliance
206
+ if (config.settings.authentication.passwordPolicy.minLength < 8) {
207
+ violations.push("Password minimum length below recommended 8 characters");
208
+ }
209
+ // Check encryption compliance
210
+ if (!["AES-256-GCM", "ChaCha20-Poly1305"].includes(config.settings.cryptography.encryption.algorithm)) {
211
+ violations.push("Weak encryption algorithm detected");
212
+ }
213
+ // Check session security
214
+ if (!config.settings.session.security.httpOnly || !config.settings.session.security.secure) {
215
+ violations.push("Insecure session configuration");
216
+ }
217
+ // Check HTTPS enforcement
218
+ if (!config.settings.cryptography.tls.hsts.enabled) {
219
+ recommendations.push("Enable HSTS for enhanced security");
220
+ }
221
+ // Check MFA configuration
222
+ if (!config.settings.authentication.mfa.enabled) {
223
+ recommendations.push("Consider enabling multi-factor authentication");
224
+ }
225
+ // Check compliance frameworks
226
+ const requiredFrameworks = ["OWASP", "CWE"];
227
+ const configuredFrameworks = config.policies.flatMap((p) => p.compliance.frameworks);
228
+ for (const framework of requiredFrameworks) {
229
+ if (!configuredFrameworks.includes(framework)) {
230
+ recommendations.push(`Add ${framework} compliance policies`);
231
+ }
232
+ }
233
+ return {
234
+ compliant: violations.length === 0,
235
+ violations,
236
+ recommendations,
237
+ };
238
+ }
239
+ /**
240
+ * Generate default security settings
241
+ */
242
+ getDefaultSettings() {
243
+ return {
244
+ authentication: {
245
+ methods: ["password", "jwt"],
246
+ passwordPolicy: {
247
+ minLength: 8,
248
+ requireUppercase: true,
249
+ requireLowercase: true,
250
+ requireNumbers: true,
251
+ requireSpecialChars: true,
252
+ maxAge: 90,
253
+ preventReuse: 5,
254
+ },
255
+ jwtSettings: {
256
+ algorithm: "HS256",
257
+ expiresIn: "1h",
258
+ issuer: "mcp-wordpress",
259
+ audience: "mcp-wordpress-users",
260
+ },
261
+ rateLimiting: {
262
+ maxAttempts: 5,
263
+ windowMs: 900000, // 15 minutes
264
+ blockDuration: 3600000, // 1 hour
265
+ },
266
+ mfa: {
267
+ enabled: false,
268
+ methods: ["totp", "sms"],
269
+ required: false,
270
+ },
271
+ },
272
+ authorization: {
273
+ rbac: {
274
+ enabled: true,
275
+ defaultRole: "user",
276
+ roleHierarchy: {
277
+ admin: ["editor", "user"],
278
+ editor: ["user"],
279
+ user: [],
280
+ },
281
+ },
282
+ permissions: {
283
+ strict: true,
284
+ defaultDeny: true,
285
+ inheritance: true,
286
+ },
287
+ sessionTimeout: 3600, // 1 hour
288
+ resourceAccess: {
289
+ checkOrigin: true,
290
+ allowedOrigins: [],
291
+ csrfProtection: true,
292
+ },
293
+ },
294
+ inputValidation: {
295
+ sanitization: {
296
+ enabled: true,
297
+ htmlStripping: true,
298
+ sqlEscaping: true,
299
+ jsEscaping: true,
300
+ },
301
+ validation: {
302
+ strict: true,
303
+ maxStringLength: 10000,
304
+ maxFileSize: 10485760, // 10MB
305
+ allowedFileTypes: ["image/jpeg", "image/png", "application/pdf"],
306
+ blockedPatterns: ["<script>", "javascript:", "vbscript:"],
307
+ },
308
+ xssProtection: {
309
+ enabled: true,
310
+ mode: "block",
311
+ reportUri: "/security/xss-report",
312
+ },
313
+ },
314
+ cryptography: {
315
+ encryption: {
316
+ algorithm: "AES-256-GCM",
317
+ keyDerivation: "PBKDF2",
318
+ keyRotation: {
319
+ enabled: true,
320
+ intervalDays: 90,
321
+ },
322
+ },
323
+ hashing: {
324
+ algorithm: "bcrypt",
325
+ saltRounds: 12,
326
+ },
327
+ tls: {
328
+ minVersion: "1.2",
329
+ cipherSuites: ["ECDHE-RSA-AES256-GCM-SHA384", "ECDHE-RSA-AES128-GCM-SHA256", "ECDHE-RSA-AES256-SHA384"],
330
+ hsts: {
331
+ enabled: true,
332
+ maxAge: 31536000, // 1 year
333
+ includeSubDomains: true,
334
+ },
335
+ },
336
+ },
337
+ session: {
338
+ storage: "memory",
339
+ security: {
340
+ httpOnly: true,
341
+ secure: true,
342
+ sameSite: "strict",
343
+ },
344
+ timeout: {
345
+ idle: 1800, // 30 minutes
346
+ absolute: 28800, // 8 hours
347
+ },
348
+ regeneration: {
349
+ onLogin: true,
350
+ onPrivilegeChange: true,
351
+ interval: 3600, // 1 hour
352
+ },
353
+ },
354
+ logging: {
355
+ level: "info",
356
+ security: {
357
+ logFailedAuth: true,
358
+ logPrivilegeEscalation: true,
359
+ logDataAccess: true,
360
+ logConfigChanges: true,
361
+ },
362
+ retention: {
363
+ days: 90,
364
+ compression: true,
365
+ encryption: true,
366
+ },
367
+ alerting: {
368
+ enabled: true,
369
+ thresholds: {
370
+ failedLogins: 10,
371
+ privilegeEscalation: 1,
372
+ dataAccess: 100,
373
+ },
374
+ channels: ["email", "webhook"],
375
+ },
376
+ },
377
+ monitoring: {
378
+ realTime: {
379
+ enabled: true,
380
+ metrics: ["requests", "errors", "latency", "security_events"],
381
+ alertThresholds: {
382
+ errorRate: 0.05,
383
+ latencyP99: 1000,
384
+ securityEvents: 10,
385
+ },
386
+ },
387
+ anomalyDetection: {
388
+ enabled: true,
389
+ sensitivity: "medium",
390
+ models: ["statistical", "ml"],
391
+ },
392
+ compliance: {
393
+ enabled: true,
394
+ frameworks: ["OWASP", "CWE"],
395
+ reportingSchedule: "daily",
396
+ },
397
+ },
398
+ };
399
+ }
400
+ /**
401
+ * Load configurations from files
402
+ */
403
+ async loadConfigurations() {
404
+ try {
405
+ const configDir = path.join(this.configPath, "configurations");
406
+ await fs.access(configDir);
407
+ const files = await fs.readdir(configDir);
408
+ for (const file of files) {
409
+ if (file.endsWith(".json")) {
410
+ const filePath = path.join(configDir, file);
411
+ const content = await fs.readFile(filePath, "utf-8");
412
+ const config = JSON.parse(content);
413
+ // Convert date strings back to Date objects
414
+ config.metadata.lastUpdated = new Date(config.metadata.lastUpdated);
415
+ this.configurations.set(config.environment, config);
416
+ }
417
+ }
418
+ }
419
+ catch (_error) {
420
+ console.log("[Security Config] No existing configurations found, will create new ones");
421
+ }
422
+ }
423
+ /**
424
+ * Load policies from files
425
+ */
426
+ async loadPolicies() {
427
+ try {
428
+ const policiesDir = path.join(this.configPath, "policies");
429
+ await fs.access(policiesDir);
430
+ const files = await fs.readdir(policiesDir);
431
+ for (const file of files) {
432
+ if (file.endsWith(".json")) {
433
+ const filePath = path.join(policiesDir, file);
434
+ const content = await fs.readFile(filePath, "utf-8");
435
+ const policy = JSON.parse(content);
436
+ // Convert date strings back to Date objects
437
+ policy.metadata.created = new Date(policy.metadata.created);
438
+ policy.metadata.updated = new Date(policy.metadata.updated);
439
+ this.policies.set(policy.id, policy);
440
+ }
441
+ }
442
+ }
443
+ catch (_error) {
444
+ console.log("[Security Config] No existing policies found");
445
+ }
446
+ }
447
+ /**
448
+ * Save configuration to file
449
+ */
450
+ async saveConfigurationToFile(config) {
451
+ const configDir = path.join(this.configPath, "configurations");
452
+ await fs.mkdir(configDir, { recursive: true });
453
+ const filePath = path.join(configDir, `${config.environment}.json`);
454
+ await fs.writeFile(filePath, JSON.stringify(config, null, 2), "utf-8");
455
+ }
456
+ /**
457
+ * Save policy to file
458
+ */
459
+ async savePolicyToFile(policy) {
460
+ const policiesDir = path.join(this.configPath, "policies");
461
+ await fs.mkdir(policiesDir, { recursive: true });
462
+ const filePath = path.join(policiesDir, `${policy.id}.json`);
463
+ await fs.writeFile(filePath, JSON.stringify(policy, null, 2), "utf-8");
464
+ }
465
+ /**
466
+ * Ensure config directory exists
467
+ */
468
+ async ensureConfigDirectory() {
469
+ await fs.mkdir(this.configPath, { recursive: true });
470
+ await fs.mkdir(path.join(this.configPath, "configurations"), { recursive: true });
471
+ await fs.mkdir(path.join(this.configPath, "policies"), { recursive: true });
472
+ }
473
+ /**
474
+ * Calculate configuration checksum
475
+ */
476
+ async calculateChecksum(config) {
477
+ const configForHash = {
478
+ ...config,
479
+ metadata: {
480
+ ...config.metadata,
481
+ checksum: "", // Exclude checksum from hash calculation
482
+ },
483
+ };
484
+ const _configString = JSON.stringify(configForHash, Object.keys(configForHash).sort());
485
+ return SecurityUtils.generateSecureToken(32);
486
+ }
487
+ /**
488
+ * Get all policies
489
+ */
490
+ getAllPolicies() {
491
+ return Array.from(this.policies.values());
492
+ }
493
+ /**
494
+ * Get policy by ID
495
+ */
496
+ getPolicy(policyId) {
497
+ return this.policies.get(policyId) || null;
498
+ }
499
+ /**
500
+ * Delete policy
501
+ */
502
+ async deletePolicy(policyId) {
503
+ const policy = this.policies.get(policyId);
504
+ if (!policy) {
505
+ return false;
506
+ }
507
+ this.policies.delete(policyId);
508
+ try {
509
+ const filePath = path.join(this.configPath, "policies", `${policyId}.json`);
510
+ await fs.unlink(filePath);
511
+ console.log(`[Security Config] Deleted policy: ${policy.name} (${policyId})`);
512
+ return true;
513
+ }
514
+ catch (error) {
515
+ console.warn(`[Security Config] Failed to delete policy file: ${error}`);
516
+ return false;
517
+ }
518
+ }
519
+ /**
520
+ * Export configuration
521
+ */
522
+ async exportConfiguration(environment) {
523
+ const config = this.configurations.get(environment);
524
+ if (!config) {
525
+ throw new SecurityValidationError("Configuration not found", [
526
+ { message: `Environment ${environment} not found` },
527
+ ]);
528
+ }
529
+ return JSON.stringify(config, null, 2);
530
+ }
531
+ /**
532
+ * Import configuration
533
+ */
534
+ async importConfiguration(configData) {
535
+ try {
536
+ const config = JSON.parse(configData);
537
+ // Validate configuration structure
538
+ if (!config.configId || !config.environment) {
539
+ throw new Error("Invalid configuration format");
540
+ }
541
+ // Convert date strings to Date objects
542
+ config.metadata.lastUpdated = new Date(config.metadata.lastUpdated);
543
+ this.configurations.set(config.environment, config);
544
+ await this.saveConfigurationToFile(config);
545
+ console.log(`[Security Config] Imported configuration for environment: ${config.environment}`);
546
+ return config;
547
+ }
548
+ catch (error) {
549
+ throw new SecurityValidationError("Failed to import configuration", [{ message: String(error) }]);
550
+ }
551
+ }
552
+ }
553
+ //# sourceMappingURL=SecurityConfigManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecurityConfigManager.js","sourceRoot":"","sources":["../../src/security/SecurityConfigManager.ts"],"names":[],"mappings":"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"}