mcp-wordpress 1.1.7 → 1.2.2
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.
- package/README.md +388 -66
- package/dist/cache/CacheInvalidation.d.ts +118 -0
- package/dist/cache/CacheInvalidation.d.ts.map +1 -0
- package/dist/cache/CacheInvalidation.js +349 -0
- package/dist/cache/CacheInvalidation.js.map +1 -0
- package/dist/cache/CacheManager.d.ts +143 -0
- package/dist/cache/CacheManager.d.ts.map +1 -0
- package/dist/cache/CacheManager.js +308 -0
- package/dist/cache/CacheManager.js.map +1 -0
- package/dist/cache/HttpCacheWrapper.d.ts +121 -0
- package/dist/cache/HttpCacheWrapper.d.ts.map +1 -0
- package/dist/cache/HttpCacheWrapper.js +280 -0
- package/dist/cache/HttpCacheWrapper.js.map +1 -0
- package/dist/cache/__tests__/CacheInvalidation.test.d.ts +5 -0
- package/dist/cache/__tests__/CacheInvalidation.test.d.ts.map +1 -0
- package/dist/cache/__tests__/CacheInvalidation.test.js +236 -0
- package/dist/cache/__tests__/CacheInvalidation.test.js.map +1 -0
- package/dist/cache/__tests__/CacheManager.test.d.ts +5 -0
- package/dist/cache/__tests__/CacheManager.test.d.ts.map +1 -0
- package/dist/cache/__tests__/CacheManager.test.js +233 -0
- package/dist/cache/__tests__/CacheManager.test.js.map +1 -0
- package/dist/cache/__tests__/CachedWordPressClient.test.d.ts +5 -0
- package/dist/cache/__tests__/CachedWordPressClient.test.d.ts.map +1 -0
- package/dist/cache/__tests__/CachedWordPressClient.test.js +228 -0
- package/dist/cache/__tests__/CachedWordPressClient.test.js.map +1 -0
- package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts +5 -0
- package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts.map +1 -0
- package/dist/cache/__tests__/HttpCacheWrapper.test.js +296 -0
- package/dist/cache/__tests__/HttpCacheWrapper.test.js.map +1 -0
- package/dist/cache/index.d.ts +12 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +9 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/client/CachedWordPressClient.d.ts +160 -0
- package/dist/client/CachedWordPressClient.d.ts.map +1 -0
- package/dist/client/CachedWordPressClient.js +338 -0
- package/dist/client/CachedWordPressClient.js.map +1 -0
- package/dist/client/WordPressClient.d.ts +81 -0
- package/dist/client/WordPressClient.d.ts.map +1 -0
- package/dist/client/WordPressClient.js +354 -0
- package/dist/client/WordPressClient.js.map +1 -0
- package/dist/config/ConfigurationSchema.d.ts +281 -0
- package/dist/config/ConfigurationSchema.d.ts.map +1 -0
- package/dist/config/ConfigurationSchema.js +205 -0
- package/dist/config/ConfigurationSchema.js.map +1 -0
- package/dist/config/ServerConfiguration.d.ts +38 -0
- package/dist/config/ServerConfiguration.d.ts.map +1 -0
- package/dist/config/ServerConfiguration.js +158 -0
- package/dist/config/ServerConfiguration.js.map +1 -0
- package/dist/docs/DocumentationGenerator.d.ts +184 -0
- package/dist/docs/DocumentationGenerator.d.ts.map +1 -0
- package/dist/docs/DocumentationGenerator.js +735 -0
- package/dist/docs/DocumentationGenerator.js.map +1 -0
- package/dist/docs/MarkdownFormatter.d.ts +84 -0
- package/dist/docs/MarkdownFormatter.d.ts.map +1 -0
- package/dist/docs/MarkdownFormatter.js +448 -0
- package/dist/docs/MarkdownFormatter.js.map +1 -0
- package/dist/docs/index.d.ts +8 -0
- package/dist/docs/index.d.ts.map +1 -0
- package/dist/docs/index.js +7 -0
- package/dist/docs/index.js.map +1 -0
- package/dist/index.d.ts +1 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -212
- package/dist/index.js.map +1 -1
- package/dist/performance/AnomalyDetector.d.ts +63 -0
- package/dist/performance/AnomalyDetector.d.ts.map +1 -0
- package/dist/performance/AnomalyDetector.js +222 -0
- package/dist/performance/AnomalyDetector.js.map +1 -0
- package/dist/performance/BenchmarkAnalyzer.d.ts +67 -0
- package/dist/performance/BenchmarkAnalyzer.d.ts.map +1 -0
- package/dist/performance/BenchmarkAnalyzer.js +301 -0
- package/dist/performance/BenchmarkAnalyzer.js.map +1 -0
- package/dist/performance/MetricsCollector.d.ts +139 -0
- package/dist/performance/MetricsCollector.d.ts.map +1 -0
- package/dist/performance/MetricsCollector.js +320 -0
- package/dist/performance/MetricsCollector.js.map +1 -0
- package/dist/performance/PerformanceAnalytics.d.ts +162 -0
- package/dist/performance/PerformanceAnalytics.d.ts.map +1 -0
- package/dist/performance/PerformanceAnalytics.js +554 -0
- package/dist/performance/PerformanceAnalytics.js.map +1 -0
- package/dist/performance/PerformanceMonitor.d.ts +202 -0
- package/dist/performance/PerformanceMonitor.d.ts.map +1 -0
- package/dist/performance/PerformanceMonitor.js +478 -0
- package/dist/performance/PerformanceMonitor.js.map +1 -0
- package/dist/performance/TrendAnalyzer.d.ts +69 -0
- package/dist/performance/TrendAnalyzer.d.ts.map +1 -0
- package/dist/performance/TrendAnalyzer.js +203 -0
- package/dist/performance/TrendAnalyzer.js.map +1 -0
- package/dist/performance/index.d.ts +11 -0
- package/dist/performance/index.d.ts.map +1 -0
- package/dist/performance/index.js +8 -0
- package/dist/performance/index.js.map +1 -0
- package/dist/security/InputValidator.d.ts +215 -0
- package/dist/security/InputValidator.d.ts.map +1 -0
- package/dist/security/InputValidator.js +278 -0
- package/dist/security/InputValidator.js.map +1 -0
- package/dist/security/SecurityConfig.d.ts +129 -0
- package/dist/security/SecurityConfig.d.ts.map +1 -0
- package/dist/security/SecurityConfig.js +262 -0
- package/dist/security/SecurityConfig.js.map +1 -0
- package/dist/server/ConnectionTester.d.ts +24 -0
- package/dist/server/ConnectionTester.d.ts.map +1 -0
- package/dist/server/ConnectionTester.js +61 -0
- package/dist/server/ConnectionTester.js.map +1 -0
- package/dist/server/ToolRegistry.d.ts +46 -0
- package/dist/server/ToolRegistry.d.ts.map +1 -0
- package/dist/server/ToolRegistry.js +148 -0
- package/dist/server/ToolRegistry.js.map +1 -0
- package/dist/tools/BaseToolClass.d.ts +76 -0
- package/dist/tools/BaseToolClass.d.ts.map +1 -0
- package/dist/tools/BaseToolClass.js +104 -0
- package/dist/tools/BaseToolClass.js.map +1 -0
- package/dist/tools/BaseToolManager.d.ts +26 -0
- package/dist/tools/BaseToolManager.d.ts.map +1 -0
- package/dist/tools/BaseToolManager.js +56 -0
- package/dist/tools/BaseToolManager.js.map +1 -0
- package/dist/tools/base.d.ts +37 -0
- package/dist/tools/base.d.ts.map +1 -0
- package/dist/tools/base.js +60 -0
- package/dist/tools/base.js.map +1 -0
- package/dist/tools/cache.d.ts +260 -0
- package/dist/tools/cache.d.ts.map +1 -0
- package/dist/tools/cache.js +237 -0
- package/dist/tools/cache.js.map +1 -0
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/performance.d.ts +63 -0
- package/dist/tools/performance.d.ts.map +1 -0
- package/dist/tools/performance.js +865 -0
- package/dist/tools/performance.js.map +1 -0
- package/dist/types/client.d.ts +1 -0
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/client.js.map +1 -1
- package/dist/utils/toolWrapper.d.ts +4 -0
- package/dist/utils/toolWrapper.d.ts.map +1 -1
- package/dist/utils/toolWrapper.js +11 -0
- package/dist/utils/toolWrapper.js.map +1 -1
- package/dist/utils/validation.d.ts +68 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +185 -0
- package/dist/utils/validation.js.map +1 -0
- package/docs/CACHING.md +340 -0
- package/docs/DOCKER.md +451 -0
- package/docs/PERFORMANCE_MONITORING.md +471 -0
- package/docs/SECURITY_TESTING.md +393 -0
- package/docs/api/README.md +200 -0
- package/docs/api/categories/auth.md +40 -0
- package/docs/api/categories/cache.md +41 -0
- package/docs/api/categories/comment.md +44 -0
- package/docs/api/categories/media.md +43 -0
- package/docs/api/categories/page.md +43 -0
- package/docs/api/categories/performance.md +44 -0
- package/docs/api/categories/post.md +43 -0
- package/docs/api/categories/site.md +43 -0
- package/docs/api/categories/taxonomy.md +47 -0
- package/docs/api/categories/user.md +43 -0
- package/docs/api/openapi.json +3305 -0
- package/docs/api/summary.json +12 -0
- package/docs/api/tools/wp_approve_comment.md +98 -0
- package/docs/api/tools/wp_cache_clear.md +120 -0
- package/docs/api/tools/wp_cache_info.md +119 -0
- package/docs/api/tools/wp_cache_stats.md +119 -0
- package/docs/api/tools/wp_cache_warm.md +119 -0
- package/docs/api/tools/wp_create_application_password.md +102 -0
- package/docs/api/tools/wp_create_category.md +102 -0
- package/docs/api/tools/wp_create_comment.md +128 -0
- package/docs/api/tools/wp_create_page.md +135 -0
- package/docs/api/tools/wp_create_post.md +147 -0
- package/docs/api/tools/wp_create_tag.md +101 -0
- package/docs/api/tools/wp_create_user.md +135 -0
- package/docs/api/tools/wp_delete_application_password.md +101 -0
- package/docs/api/tools/wp_delete_category.md +100 -0
- package/docs/api/tools/wp_delete_comment.md +101 -0
- package/docs/api/tools/wp_delete_media.md +108 -0
- package/docs/api/tools/wp_delete_page.md +108 -0
- package/docs/api/tools/wp_delete_post.md +117 -0
- package/docs/api/tools/wp_delete_tag.md +100 -0
- package/docs/api/tools/wp_delete_user.md +108 -0
- package/docs/api/tools/wp_get_application_passwords.md +103 -0
- package/docs/api/tools/wp_get_auth_status.md +101 -0
- package/docs/api/tools/wp_get_category.md +103 -0
- package/docs/api/tools/wp_get_comment.md +103 -0
- package/docs/api/tools/wp_get_current_user.md +101 -0
- package/docs/api/tools/wp_get_media.md +103 -0
- package/docs/api/tools/wp_get_page.md +103 -0
- package/docs/api/tools/wp_get_page_revisions.md +103 -0
- package/docs/api/tools/wp_get_post.md +112 -0
- package/docs/api/tools/wp_get_post_revisions.md +103 -0
- package/docs/api/tools/wp_get_site_settings.md +108 -0
- package/docs/api/tools/wp_get_tag.md +103 -0
- package/docs/api/tools/wp_get_user.md +103 -0
- package/docs/api/tools/wp_list_categories.md +111 -0
- package/docs/api/tools/wp_list_comments.md +111 -0
- package/docs/api/tools/wp_list_media.md +145 -0
- package/docs/api/tools/wp_list_pages.md +145 -0
- package/docs/api/tools/wp_list_posts.md +156 -0
- package/docs/api/tools/wp_list_tags.md +110 -0
- package/docs/api/tools/wp_list_users.md +111 -0
- package/docs/api/tools/wp_performance_alerts.md +162 -0
- package/docs/api/tools/wp_performance_benchmark.md +160 -0
- package/docs/api/tools/wp_performance_export.md +162 -0
- package/docs/api/tools/wp_performance_history.md +161 -0
- package/docs/api/tools/wp_performance_optimize.md +162 -0
- package/docs/api/tools/wp_performance_stats.md +160 -0
- package/docs/api/tools/wp_search_site.md +99 -0
- package/docs/api/tools/wp_spam_comment.md +98 -0
- package/docs/api/tools/wp_switch_auth_method.md +122 -0
- package/docs/api/tools/wp_test_auth.md +96 -0
- package/docs/api/tools/wp_update_category.md +102 -0
- package/docs/api/tools/wp_update_comment.md +127 -0
- package/docs/api/tools/wp_update_media.md +129 -0
- package/docs/api/tools/wp_update_page.md +135 -0
- package/docs/api/tools/wp_update_post.md +144 -0
- package/docs/api/tools/wp_update_site_settings.md +127 -0
- package/docs/api/tools/wp_update_tag.md +102 -0
- package/docs/api/tools/wp_update_user.md +134 -0
- package/docs/api/tools/wp_upload_media.md +131 -0
- package/docs/api/types/WordPressPost.md +39 -0
- package/docs/contract-testing.md +183 -0
- package/docs/developer/NPM_AUTH_SETUP.md +3 -3
- package/docs/wordpress-rest-api-authentication-troubleshooting.md +218 -0
- package/package.json +84 -64
- package/src/cache/CacheInvalidation.ts +421 -0
- package/src/cache/CacheManager.ts +391 -0
- package/src/cache/HttpCacheWrapper.ts +372 -0
- package/src/cache/__tests__/CacheInvalidation.test.ts +299 -0
- package/src/cache/__tests__/CacheManager.test.ts +300 -0
- package/src/cache/__tests__/CachedWordPressClient.test.ts +304 -0
- package/src/cache/__tests__/HttpCacheWrapper.test.ts +359 -0
- package/src/cache/index.ts +26 -0
- package/src/client/CachedWordPressClient.ts +442 -0
- package/src/config/ConfigurationSchema.ts +246 -0
- package/src/config/ServerConfiguration.ts +215 -0
- package/src/docs/DocumentationGenerator.ts +952 -0
- package/src/docs/MarkdownFormatter.ts +494 -0
- package/src/docs/index.ts +21 -0
- package/src/index.ts +14 -274
- package/src/performance/MetricsCollector.ts +447 -0
- package/src/performance/PerformanceAnalytics.ts +762 -0
- package/src/performance/PerformanceMonitor.ts +649 -0
- package/src/performance/index.ts +28 -0
- package/src/security/InputValidator.ts +319 -0
- package/src/security/SecurityConfig.ts +301 -0
- package/src/server/ConnectionTester.ts +74 -0
- package/src/server/ToolRegistry.ts +194 -0
- package/src/tools/BaseToolManager.ts +66 -0
- package/src/tools/cache.ts +259 -0
- package/src/tools/index.ts +2 -0
- package/src/tools/performance.ts +948 -0
- package/src/types/client.ts +1 -0
- package/src/utils/toolWrapper.ts +11 -0
- package/src/utils/validation.ts +259 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import dotenv from 'dotenv';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
import { WordPressClient } from '../client/api.js';
|
|
6
|
+
import { CachedWordPressClient } from '../client/CachedWordPressClient.js';
|
|
7
|
+
import { WordPressClientConfig } from '../types/client.js';
|
|
8
|
+
import { getErrorMessage } from '../utils/error.js';
|
|
9
|
+
import {
|
|
10
|
+
ConfigurationValidator,
|
|
11
|
+
type SiteType as SiteConfig,
|
|
12
|
+
type MultiSiteConfigType as MultiSiteConfig,
|
|
13
|
+
type McpConfigType
|
|
14
|
+
} from './ConfigurationSchema.js';
|
|
15
|
+
|
|
16
|
+
// Re-export types from schema for backward compatibility
|
|
17
|
+
export type { SiteConfig, MultiSiteConfig };
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Configuration loader for MCP WordPress Server
|
|
21
|
+
* Handles both single-site (environment variables) and multi-site (JSON config) modes
|
|
22
|
+
*/
|
|
23
|
+
export class ServerConfiguration {
|
|
24
|
+
private static instance: ServerConfiguration;
|
|
25
|
+
private rootDir: string;
|
|
26
|
+
private envPath: string;
|
|
27
|
+
|
|
28
|
+
constructor() {
|
|
29
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
30
|
+
const __dirname = path.dirname(__filename);
|
|
31
|
+
this.rootDir = path.resolve(__dirname, '../..');
|
|
32
|
+
this.envPath = path.resolve(this.rootDir, '.env');
|
|
33
|
+
|
|
34
|
+
// Load environment variables
|
|
35
|
+
dotenv.config({ path: this.envPath });
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Get singleton instance of ServerConfiguration
|
|
40
|
+
*/
|
|
41
|
+
public static getInstance(): ServerConfiguration {
|
|
42
|
+
if (!ServerConfiguration.instance) {
|
|
43
|
+
ServerConfiguration.instance = new ServerConfiguration();
|
|
44
|
+
}
|
|
45
|
+
return ServerConfiguration.instance;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Load WordPress client configurations
|
|
50
|
+
* Returns a Map of site ID to WordPressClient instances
|
|
51
|
+
*/
|
|
52
|
+
public loadClientConfigurations(mcpConfig?: McpConfigType): {
|
|
53
|
+
clients: Map<string, WordPressClient>;
|
|
54
|
+
configs: SiteConfig[];
|
|
55
|
+
} {
|
|
56
|
+
const configPath = path.resolve(this.rootDir, 'mcp-wordpress.config.json');
|
|
57
|
+
|
|
58
|
+
if (fs.existsSync(configPath)) {
|
|
59
|
+
if (process.env.NODE_ENV !== 'test') {
|
|
60
|
+
console.error(
|
|
61
|
+
'INFO: Found mcp-wordpress.config.json, loading multi-site configuration.'
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
return this.loadMultiSiteConfig(configPath);
|
|
65
|
+
} else {
|
|
66
|
+
if (process.env.NODE_ENV !== 'test') {
|
|
67
|
+
console.error(
|
|
68
|
+
'INFO: mcp-wordpress.config.json not found, falling back to environment variables for single-site mode.'
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
return this.loadSingleSiteFromEnv(mcpConfig);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Load multi-site configuration from JSON file
|
|
77
|
+
*/
|
|
78
|
+
private loadMultiSiteConfig(configPath: string): {
|
|
79
|
+
clients: Map<string, WordPressClient>;
|
|
80
|
+
configs: SiteConfig[];
|
|
81
|
+
} {
|
|
82
|
+
try {
|
|
83
|
+
const configFile = fs.readFileSync(configPath, 'utf-8');
|
|
84
|
+
const rawConfig = JSON.parse(configFile);
|
|
85
|
+
|
|
86
|
+
// Validate configuration using Zod schema
|
|
87
|
+
const config = ConfigurationValidator.validateMultiSiteConfig(rawConfig);
|
|
88
|
+
|
|
89
|
+
const clients = new Map<string, WordPressClient>();
|
|
90
|
+
const validConfigs: SiteConfig[] = [];
|
|
91
|
+
|
|
92
|
+
for (const site of config.sites) {
|
|
93
|
+
const clientConfig: WordPressClientConfig = {
|
|
94
|
+
baseUrl: site.config.WORDPRESS_SITE_URL,
|
|
95
|
+
auth: {
|
|
96
|
+
method: site.config.WORDPRESS_AUTH_METHOD || 'app-password',
|
|
97
|
+
username: site.config.WORDPRESS_USERNAME,
|
|
98
|
+
appPassword: site.config.WORDPRESS_APP_PASSWORD
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// Use cached client for better performance
|
|
103
|
+
const client =
|
|
104
|
+
process.env.DISABLE_CACHE === 'true'
|
|
105
|
+
? new WordPressClient(clientConfig)
|
|
106
|
+
: new CachedWordPressClient(clientConfig, site.id);
|
|
107
|
+
clients.set(site.id, client);
|
|
108
|
+
validConfigs.push(site);
|
|
109
|
+
|
|
110
|
+
if (process.env.NODE_ENV !== 'test') {
|
|
111
|
+
console.error(
|
|
112
|
+
`INFO: Initialized client for site: ${site.name} (ID: ${site.id})`
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
return { clients, configs: validConfigs };
|
|
118
|
+
} catch (error) {
|
|
119
|
+
console.error(
|
|
120
|
+
`FATAL: Error reading or parsing mcp-wordpress.config.json: ${getErrorMessage(error)}`
|
|
121
|
+
);
|
|
122
|
+
process.exit(1);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Load single-site configuration from environment variables
|
|
128
|
+
*/
|
|
129
|
+
private loadSingleSiteFromEnv(mcpConfig?: McpConfigType): {
|
|
130
|
+
clients: Map<string, WordPressClient>;
|
|
131
|
+
configs: SiteConfig[];
|
|
132
|
+
} {
|
|
133
|
+
try {
|
|
134
|
+
// Validate MCP config if provided
|
|
135
|
+
const validatedMcpConfig = mcpConfig
|
|
136
|
+
? ConfigurationValidator.validateMcpConfig(mcpConfig)
|
|
137
|
+
: undefined;
|
|
138
|
+
|
|
139
|
+
// Prepare environment configuration for validation
|
|
140
|
+
const envConfig = {
|
|
141
|
+
WORDPRESS_SITE_URL:
|
|
142
|
+
validatedMcpConfig?.wordpressSiteUrl ||
|
|
143
|
+
process.env.WORDPRESS_SITE_URL,
|
|
144
|
+
WORDPRESS_USERNAME:
|
|
145
|
+
validatedMcpConfig?.wordpressUsername ||
|
|
146
|
+
process.env.WORDPRESS_USERNAME,
|
|
147
|
+
WORDPRESS_APP_PASSWORD:
|
|
148
|
+
validatedMcpConfig?.wordpressAppPassword ||
|
|
149
|
+
process.env.WORDPRESS_APP_PASSWORD,
|
|
150
|
+
WORDPRESS_AUTH_METHOD:
|
|
151
|
+
validatedMcpConfig?.wordpressAuthMethod ||
|
|
152
|
+
process.env.WORDPRESS_AUTH_METHOD ||
|
|
153
|
+
'app-password',
|
|
154
|
+
NODE_ENV: process.env.NODE_ENV,
|
|
155
|
+
DEBUG: process.env.DEBUG,
|
|
156
|
+
DISABLE_CACHE: process.env.DISABLE_CACHE,
|
|
157
|
+
LOG_LEVEL: process.env.LOG_LEVEL
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
// Validate environment configuration using Zod schema
|
|
161
|
+
const validatedConfig =
|
|
162
|
+
ConfigurationValidator.validateEnvironmentConfig(envConfig);
|
|
163
|
+
|
|
164
|
+
const clientConfig: WordPressClientConfig = {
|
|
165
|
+
baseUrl: validatedConfig.WORDPRESS_SITE_URL,
|
|
166
|
+
auth: {
|
|
167
|
+
method: validatedConfig.WORDPRESS_AUTH_METHOD,
|
|
168
|
+
username: validatedConfig.WORDPRESS_USERNAME,
|
|
169
|
+
appPassword: validatedConfig.WORDPRESS_APP_PASSWORD
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
// Use cached client for better performance
|
|
174
|
+
const client =
|
|
175
|
+
process.env.DISABLE_CACHE === 'true'
|
|
176
|
+
? new WordPressClient(clientConfig)
|
|
177
|
+
: new CachedWordPressClient(clientConfig, 'default');
|
|
178
|
+
const clients = new Map<string, WordPressClient>();
|
|
179
|
+
clients.set('default', client);
|
|
180
|
+
|
|
181
|
+
const siteConfig: SiteConfig = {
|
|
182
|
+
id: 'default',
|
|
183
|
+
name: 'Default Site',
|
|
184
|
+
config: {
|
|
185
|
+
WORDPRESS_SITE_URL: validatedConfig.WORDPRESS_SITE_URL,
|
|
186
|
+
WORDPRESS_USERNAME: validatedConfig.WORDPRESS_USERNAME,
|
|
187
|
+
WORDPRESS_APP_PASSWORD: validatedConfig.WORDPRESS_APP_PASSWORD,
|
|
188
|
+
WORDPRESS_AUTH_METHOD: validatedConfig.WORDPRESS_AUTH_METHOD
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
console.error(
|
|
193
|
+
'INFO: Initialized client for default site in single-site mode.'
|
|
194
|
+
);
|
|
195
|
+
|
|
196
|
+
return { clients, configs: [siteConfig] };
|
|
197
|
+
} catch (error) {
|
|
198
|
+
console.error(
|
|
199
|
+
'ERROR: Configuration validation failed for single-site mode.'
|
|
200
|
+
);
|
|
201
|
+
console.error(`Details: ${getErrorMessage(error)}`);
|
|
202
|
+
console.error(
|
|
203
|
+
'Please check your environment variables or MCP configuration.'
|
|
204
|
+
);
|
|
205
|
+
return { clients: new Map(), configs: [] };
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Get root directory path
|
|
211
|
+
*/
|
|
212
|
+
public getRootDir(): string {
|
|
213
|
+
return this.rootDir;
|
|
214
|
+
}
|
|
215
|
+
}
|