mcp-wordpress 2.4.2 → 2.5.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 (348) hide show
  1. package/README.md +114 -48
  2. package/dist/ajv-patch.js +34 -0
  3. package/dist/cache/CacheInvalidation.d.ts +3 -1
  4. package/dist/cache/CacheInvalidation.d.ts.map +1 -1
  5. package/dist/cache/CacheInvalidation.js +10 -4
  6. package/dist/cache/CacheInvalidation.js.map +1 -1
  7. package/dist/cache/CacheManager.d.ts +3 -2
  8. package/dist/cache/CacheManager.d.ts.map +1 -1
  9. package/dist/cache/CacheManager.js +11 -3
  10. package/dist/cache/CacheManager.js.map +1 -1
  11. package/dist/cache/HttpCacheWrapper.d.ts +7 -6
  12. package/dist/cache/HttpCacheWrapper.d.ts.map +1 -1
  13. package/dist/cache/HttpCacheWrapper.js +8 -5
  14. package/dist/cache/HttpCacheWrapper.js.map +1 -1
  15. package/dist/cache/__tests__/HttpCacheWrapper.test.js +6 -5
  16. package/dist/cache/__tests__/HttpCacheWrapper.test.js.map +1 -1
  17. package/dist/cache/index.d.ts +3 -3
  18. package/dist/cache/index.d.ts.map +1 -1
  19. package/dist/cache/index.js +1 -1
  20. package/dist/cache/index.js.map +1 -1
  21. package/dist/client/CachedWordPressClient.d.ts +23 -9
  22. package/dist/client/CachedWordPressClient.d.ts.map +1 -1
  23. package/dist/client/CachedWordPressClient.js +4 -1
  24. package/dist/client/CachedWordPressClient.js.map +1 -1
  25. package/dist/client/MockWordPressClient.d.ts +2 -1
  26. package/dist/client/MockWordPressClient.d.ts.map +1 -1
  27. package/dist/client/MockWordPressClient.js +3 -1
  28. package/dist/client/MockWordPressClient.js.map +1 -1
  29. package/dist/client/api.d.ts +17 -13
  30. package/dist/client/api.d.ts.map +1 -1
  31. package/dist/client/api.js +135 -30
  32. package/dist/client/api.js.map +1 -1
  33. package/dist/client/auth.d.ts.map +1 -1
  34. package/dist/client/auth.js +2 -3
  35. package/dist/client/auth.js.map +1 -1
  36. package/dist/client/managers/AuthenticationManager.d.ts +55 -2
  37. package/dist/client/managers/AuthenticationManager.d.ts.map +1 -1
  38. package/dist/client/managers/AuthenticationManager.js +269 -71
  39. package/dist/client/managers/AuthenticationManager.js.map +1 -1
  40. package/dist/client/managers/BaseManager.d.ts +3 -3
  41. package/dist/client/managers/BaseManager.d.ts.map +1 -1
  42. package/dist/client/managers/BaseManager.js +11 -5
  43. package/dist/client/managers/BaseManager.js.map +1 -1
  44. package/dist/client/managers/RequestManager.d.ts +2 -2
  45. package/dist/client/managers/RequestManager.d.ts.map +1 -1
  46. package/dist/client/managers/RequestManager.js +25 -12
  47. package/dist/client/managers/RequestManager.js.map +1 -1
  48. package/dist/config/Config.d.ts +155 -0
  49. package/dist/config/Config.d.ts.map +1 -0
  50. package/dist/config/Config.js +215 -0
  51. package/dist/config/Config.js.map +1 -0
  52. package/dist/config/ConfigurationSchema.d.ts +21 -21
  53. package/dist/config/ConfigurationSchema.d.ts.map +1 -1
  54. package/dist/config/ConfigurationSchema.js +19 -2
  55. package/dist/config/ConfigurationSchema.js.map +1 -1
  56. package/dist/config/ServerConfiguration.d.ts +2 -1
  57. package/dist/config/ServerConfiguration.d.ts.map +1 -1
  58. package/dist/config/ServerConfiguration.js +50 -41
  59. package/dist/config/ServerConfiguration.js.map +1 -1
  60. package/dist/docs/DocumentationGenerator.d.ts +9 -8
  61. package/dist/docs/DocumentationGenerator.d.ts.map +1 -1
  62. package/dist/docs/DocumentationGenerator.js +10 -7
  63. package/dist/docs/DocumentationGenerator.js.map +1 -1
  64. package/dist/docs/MarkdownFormatter.d.ts.map +1 -1
  65. package/dist/docs/MarkdownFormatter.js +3 -2
  66. package/dist/docs/MarkdownFormatter.js.map +1 -1
  67. package/dist/dxt-entry.cjs +81 -0
  68. package/dist/dxt-entry.js +15 -14
  69. package/dist/dxt-entry.js.map +1 -1
  70. package/dist/index.d.ts +3 -1
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +37 -21
  73. package/dist/index.js.map +1 -1
  74. package/dist/performance/MetricsCollector.d.ts +13 -7
  75. package/dist/performance/MetricsCollector.d.ts.map +1 -1
  76. package/dist/performance/MetricsCollector.js +69 -27
  77. package/dist/performance/MetricsCollector.js.map +1 -1
  78. package/dist/performance/PerformanceAnalytics.d.ts +8 -2
  79. package/dist/performance/PerformanceAnalytics.d.ts.map +1 -1
  80. package/dist/performance/PerformanceAnalytics.js +17 -47
  81. package/dist/performance/PerformanceAnalytics.js.map +1 -1
  82. package/dist/performance/PerformanceMonitor.d.ts +2 -1
  83. package/dist/performance/PerformanceMonitor.d.ts.map +1 -1
  84. package/dist/performance/PerformanceMonitor.js +12 -13
  85. package/dist/performance/PerformanceMonitor.js.map +1 -1
  86. package/dist/performance/index.d.ts +2 -2
  87. package/dist/performance/index.d.ts.map +1 -1
  88. package/dist/security/AISecurityScanner.d.ts +1 -0
  89. package/dist/security/AISecurityScanner.d.ts.map +1 -1
  90. package/dist/security/AISecurityScanner.js +22 -12
  91. package/dist/security/AISecurityScanner.js.map +1 -1
  92. package/dist/security/AutomatedRemediation.d.ts +4 -3
  93. package/dist/security/AutomatedRemediation.d.ts.map +1 -1
  94. package/dist/security/AutomatedRemediation.js +46 -15
  95. package/dist/security/AutomatedRemediation.js.map +1 -1
  96. package/dist/security/InputValidator.d.ts +13 -9
  97. package/dist/security/InputValidator.d.ts.map +1 -1
  98. package/dist/security/InputValidator.js +4 -2
  99. package/dist/security/InputValidator.js.map +1 -1
  100. package/dist/security/SecurityCIPipeline.d.ts +1 -1
  101. package/dist/security/SecurityCIPipeline.d.ts.map +1 -1
  102. package/dist/security/SecurityCIPipeline.js +38 -29
  103. package/dist/security/SecurityCIPipeline.js.map +1 -1
  104. package/dist/security/SecurityConfig.d.ts +3 -3
  105. package/dist/security/SecurityConfig.d.ts.map +1 -1
  106. package/dist/security/SecurityConfig.js +13 -9
  107. package/dist/security/SecurityConfig.js.map +1 -1
  108. package/dist/security/SecurityConfigManager.d.ts +2 -2
  109. package/dist/security/SecurityConfigManager.d.ts.map +1 -1
  110. package/dist/security/SecurityConfigManager.js +20 -15
  111. package/dist/security/SecurityConfigManager.js.map +1 -1
  112. package/dist/security/SecurityMonitoring.d.ts +2 -2
  113. package/dist/security/SecurityMonitoring.d.ts.map +1 -1
  114. package/dist/security/SecurityMonitoring.js +19 -17
  115. package/dist/security/SecurityMonitoring.js.map +1 -1
  116. package/dist/security/SecurityReviewer.d.ts.map +1 -1
  117. package/dist/security/SecurityReviewer.js +10 -7
  118. package/dist/security/SecurityReviewer.js.map +1 -1
  119. package/dist/security/index.d.ts +24 -23
  120. package/dist/security/index.d.ts.map +1 -1
  121. package/dist/security/index.js +52 -23
  122. package/dist/security/index.js.map +1 -1
  123. package/dist/server/ConnectionTester.d.ts +12 -4
  124. package/dist/server/ConnectionTester.d.ts.map +1 -1
  125. package/dist/server/ConnectionTester.js +96 -22
  126. package/dist/server/ConnectionTester.js.map +1 -1
  127. package/dist/server/ToolRegistry.d.ts +2 -2
  128. package/dist/server/ToolRegistry.d.ts.map +1 -1
  129. package/dist/server/ToolRegistry.js +10 -5
  130. package/dist/server/ToolRegistry.js.map +1 -1
  131. package/dist/tools/BaseToolManager.d.ts +47 -11
  132. package/dist/tools/BaseToolManager.d.ts.map +1 -1
  133. package/dist/tools/BaseToolManager.js +168 -29
  134. package/dist/tools/BaseToolManager.js.map +1 -1
  135. package/dist/tools/auth.d.ts +16 -10
  136. package/dist/tools/auth.d.ts.map +1 -1
  137. package/dist/tools/auth.js +3 -2
  138. package/dist/tools/auth.js.map +1 -1
  139. package/dist/tools/cache.d.ts +30 -30
  140. package/dist/tools/cache.d.ts.map +1 -1
  141. package/dist/tools/cache.js +1 -6
  142. package/dist/tools/cache.js.map +1 -1
  143. package/dist/tools/comments.d.ts +20 -20
  144. package/dist/tools/comments.d.ts.map +1 -1
  145. package/dist/tools/comments.js +16 -9
  146. package/dist/tools/comments.js.map +1 -1
  147. package/dist/tools/media.d.ts +18 -16
  148. package/dist/tools/media.d.ts.map +1 -1
  149. package/dist/tools/media.js +16 -15
  150. package/dist/tools/media.js.map +1 -1
  151. package/dist/tools/pages.d.ts +19 -17
  152. package/dist/tools/pages.d.ts.map +1 -1
  153. package/dist/tools/pages.js +16 -12
  154. package/dist/tools/pages.js.map +1 -1
  155. package/dist/tools/performance.d.ts +11 -1
  156. package/dist/tools/performance.d.ts.map +1 -1
  157. package/dist/tools/performance.js +67 -34
  158. package/dist/tools/performance.js.map +1 -1
  159. package/dist/tools/posts/PostHandlers.d.ts +46 -0
  160. package/dist/tools/posts/PostHandlers.d.ts.map +1 -0
  161. package/dist/tools/posts/PostHandlers.js +400 -0
  162. package/dist/tools/posts/PostHandlers.js.map +1 -0
  163. package/dist/tools/posts/PostToolDefinitions.d.ts +37 -0
  164. package/dist/tools/posts/PostToolDefinitions.d.ts.map +1 -0
  165. package/dist/tools/posts/PostToolDefinitions.js +236 -0
  166. package/dist/tools/posts/PostToolDefinitions.js.map +1 -0
  167. package/dist/tools/posts/index.d.ts +138 -0
  168. package/dist/tools/posts/index.d.ts.map +1 -0
  169. package/dist/tools/posts/index.js +163 -0
  170. package/dist/tools/posts/index.js.map +1 -0
  171. package/dist/tools/posts.d.ts +10 -246
  172. package/dist/tools/posts.d.ts.map +1 -1
  173. package/dist/tools/posts.js +11 -723
  174. package/dist/tools/posts.js.map +1 -1
  175. package/dist/tools/site.d.ts +19 -18
  176. package/dist/tools/site.d.ts.map +1 -1
  177. package/dist/tools/site.js +14 -10
  178. package/dist/tools/site.js.map +1 -1
  179. package/dist/tools/taxonomies.d.ts +23 -24
  180. package/dist/tools/taxonomies.d.ts.map +1 -1
  181. package/dist/tools/taxonomies.js +24 -18
  182. package/dist/tools/taxonomies.js.map +1 -1
  183. package/dist/tools/users.d.ts +20 -15
  184. package/dist/tools/users.d.ts.map +1 -1
  185. package/dist/tools/users.js +12 -8
  186. package/dist/tools/users.js.map +1 -1
  187. package/dist/types/client.d.ts +48 -41
  188. package/dist/types/client.d.ts.map +1 -1
  189. package/dist/types/client.js +30 -5
  190. package/dist/types/client.js.map +1 -1
  191. package/dist/types/enhanced.d.ts +237 -0
  192. package/dist/types/enhanced.d.ts.map +1 -0
  193. package/dist/types/enhanced.js +49 -0
  194. package/dist/types/enhanced.js.map +1 -0
  195. package/dist/types/index.d.ts +15 -12
  196. package/dist/types/index.d.ts.map +1 -1
  197. package/dist/types/index.js +2 -0
  198. package/dist/types/index.js.map +1 -1
  199. package/dist/types/mcp.d.ts +12 -12
  200. package/dist/types/mcp.d.ts.map +1 -1
  201. package/dist/types/requests.d.ts +322 -0
  202. package/dist/types/requests.d.ts.map +1 -0
  203. package/dist/types/requests.js +8 -0
  204. package/dist/types/requests.js.map +1 -0
  205. package/dist/types/tools.d.ts +506 -0
  206. package/dist/types/tools.d.ts.map +1 -0
  207. package/dist/types/tools.js +8 -0
  208. package/dist/types/tools.js.map +1 -0
  209. package/dist/types/wordpress.d.ts +43 -15
  210. package/dist/types/wordpress.d.ts.map +1 -1
  211. package/dist/types/wordpress.js +8 -1
  212. package/dist/types/wordpress.js.map +1 -1
  213. package/dist/utils/debug.d.ts +19 -11
  214. package/dist/utils/debug.d.ts.map +1 -1
  215. package/dist/utils/debug.js +46 -10
  216. package/dist/utils/debug.js.map +1 -1
  217. package/dist/utils/enhancedError.d.ts +8 -8
  218. package/dist/utils/enhancedError.d.ts.map +1 -1
  219. package/dist/utils/enhancedError.js.map +1 -1
  220. package/dist/utils/error.d.ts +2 -4
  221. package/dist/utils/error.d.ts.map +1 -1
  222. package/dist/utils/error.js +42 -5
  223. package/dist/utils/error.js.map +1 -1
  224. package/dist/utils/logger.d.ts +106 -0
  225. package/dist/utils/logger.d.ts.map +1 -0
  226. package/dist/utils/logger.js +280 -0
  227. package/dist/utils/logger.js.map +1 -0
  228. package/dist/utils/streaming.d.ts +9 -9
  229. package/dist/utils/streaming.d.ts.map +1 -1
  230. package/dist/utils/streaming.js +71 -52
  231. package/dist/utils/streaming.js.map +1 -1
  232. package/dist/utils/toolWrapper.d.ts +9 -7
  233. package/dist/utils/toolWrapper.d.ts.map +1 -1
  234. package/dist/utils/toolWrapper.js.map +1 -1
  235. package/dist/utils/validation/core.d.ts +21 -0
  236. package/dist/utils/validation/core.d.ts.map +1 -0
  237. package/dist/utils/validation/core.js +71 -0
  238. package/dist/utils/validation/core.js.map +1 -0
  239. package/dist/utils/validation/index.d.ts +25 -0
  240. package/dist/utils/validation/index.d.ts.map +1 -0
  241. package/dist/utils/validation/index.js +29 -0
  242. package/dist/utils/validation/index.js.map +1 -0
  243. package/dist/utils/validation/network.d.ts +19 -0
  244. package/dist/utils/validation/network.d.ts.map +1 -0
  245. package/dist/utils/validation/network.js +93 -0
  246. package/dist/utils/validation/network.js.map +1 -0
  247. package/dist/utils/validation/rateLimit.d.ts +21 -0
  248. package/dist/utils/validation/rateLimit.d.ts.map +1 -0
  249. package/dist/utils/validation/rateLimit.js +43 -0
  250. package/dist/utils/validation/rateLimit.js.map +1 -0
  251. package/dist/utils/validation/security.d.ts +29 -0
  252. package/dist/utils/validation/security.d.ts.map +1 -0
  253. package/dist/utils/validation/security.js +327 -0
  254. package/dist/utils/validation/security.js.map +1 -0
  255. package/dist/utils/validation/wordpress.d.ts +31 -0
  256. package/dist/utils/validation/wordpress.d.ts.map +1 -0
  257. package/dist/utils/validation/wordpress.js +146 -0
  258. package/dist/utils/validation/wordpress.js.map +1 -0
  259. package/dist/utils/validation.d.ts +13 -82
  260. package/dist/utils/validation.d.ts.map +1 -1
  261. package/dist/utils/validation.js +25 -343
  262. package/dist/utils/validation.js.map +1 -1
  263. package/docs/BADGE_UPDATES.md +132 -0
  264. package/docs/CI_CD_IMPROVEMENTS.md +191 -0
  265. package/docs/INCREMENTAL_COVERAGE.md +183 -0
  266. package/docs/api/README.md +3 -1
  267. package/docs/api/openapi.json +5 -1
  268. package/docs/api/summary.json +1 -1
  269. package/docs/api/tools/wp_create_post.md +12 -14
  270. package/docs/examples/claude-desktop-config.md +1 -1
  271. package/docs/examples/docker-production.md +100 -93
  272. package/docs/examples/multi-site-setup.md +5 -4
  273. package/docs/examples/single-site-setup.md +3 -4
  274. package/docs/examples/use-case-workflows.md +4 -5
  275. package/docs/integrations/claude-desktop.md +31 -31
  276. package/docs/integrations/cline.md +4 -4
  277. package/docs/integrations/vs-code.md +9 -8
  278. package/docs/user-guides/SMITHERY_SETUP.md +10 -10
  279. package/package.json +44 -25
  280. package/src/cache/CacheInvalidation.ts +12 -5
  281. package/src/cache/CacheManager.ts +18 -15
  282. package/src/cache/HttpCacheWrapper.ts +30 -59
  283. package/src/cache/__tests__/HttpCacheWrapper.test.ts +6 -5
  284. package/src/cache/index.ts +3 -14
  285. package/src/client/CachedWordPressClient.ts +32 -30
  286. package/src/client/MockWordPressClient.ts +4 -2
  287. package/src/client/api.ts +186 -64
  288. package/src/client/auth.ts +15 -40
  289. package/src/client/managers/AuthenticationManager.ts +337 -77
  290. package/src/client/managers/BaseManager.ts +18 -30
  291. package/src/client/managers/RequestManager.ts +39 -44
  292. package/src/config/Config.ts +308 -0
  293. package/src/config/ConfigurationSchema.ts +23 -2
  294. package/src/config/ServerConfiguration.ts +51 -47
  295. package/src/docs/DocumentationGenerator.ts +50 -39
  296. package/src/docs/MarkdownFormatter.ts +19 -29
  297. package/src/dxt-entry.cjs +26 -16
  298. package/src/dxt-entry.ts +17 -27
  299. package/src/index.ts +42 -28
  300. package/src/performance/MetricsCollector.ts +108 -86
  301. package/src/performance/PerformanceAnalytics.ts +69 -164
  302. package/src/performance/PerformanceMonitor.ts +32 -47
  303. package/src/performance/index.ts +2 -10
  304. package/src/security/AISecurityScanner.ts +22 -12
  305. package/src/security/AutomatedRemediation.ts +49 -18
  306. package/src/security/InputValidator.ts +9 -6
  307. package/src/security/SecurityCIPipeline.ts +53 -37
  308. package/src/security/SecurityConfig.ts +22 -22
  309. package/src/security/SecurityConfigManager.ts +23 -19
  310. package/src/security/SecurityMonitoring.ts +24 -21
  311. package/src/security/SecurityReviewer.ts +10 -7
  312. package/src/security/index.ts +64 -29
  313. package/src/server/ConnectionTester.ts +120 -31
  314. package/src/server/ToolRegistry.ts +31 -21
  315. package/src/tools/BaseToolManager.ts +286 -33
  316. package/src/tools/auth.ts +20 -8
  317. package/src/tools/cache.ts +5 -15
  318. package/src/tools/comments.ts +34 -48
  319. package/src/tools/media.ts +41 -53
  320. package/src/tools/pages.ts +32 -54
  321. package/src/tools/performance.ts +141 -176
  322. package/src/tools/posts/PostHandlers.ts +474 -0
  323. package/src/tools/posts/PostToolDefinitions.ts +250 -0
  324. package/src/tools/posts/index.ts +192 -0
  325. package/src/tools/posts.ts +24 -780
  326. package/src/tools/site.ts +34 -19
  327. package/src/tools/taxonomies.ts +41 -57
  328. package/src/tools/users.ts +28 -16
  329. package/src/types/client.ts +114 -138
  330. package/src/types/enhanced.ts +318 -0
  331. package/src/types/index.ts +51 -30
  332. package/src/types/mcp.ts +20 -42
  333. package/src/types/requests.ts +378 -0
  334. package/src/types/tools.ts +608 -0
  335. package/src/types/wordpress.ts +56 -34
  336. package/src/utils/debug.ts +77 -59
  337. package/src/utils/enhancedError.ts +8 -8
  338. package/src/utils/error.ts +53 -31
  339. package/src/utils/logger.ts +351 -0
  340. package/src/utils/streaming.ts +86 -68
  341. package/src/utils/toolWrapper.ts +10 -12
  342. package/src/utils/validation/core.ts +108 -0
  343. package/src/utils/validation/index.ts +36 -0
  344. package/src/utils/validation/network.ts +132 -0
  345. package/src/utils/validation/rateLimit.ts +54 -0
  346. package/src/utils/validation/security.ts +361 -0
  347. package/src/utils/validation/wordpress.ts +180 -0
  348. package/src/utils/validation.ts +47 -470
package/src/dxt-entry.cjs CHANGED
@@ -8,37 +8,45 @@
8
8
  try {
9
9
  require('./ajv-patch.js');
10
10
  } catch (error) {
11
- console.error("DEBUG: AJV patch failed to load:", error.message);
11
+ // Use stderr to avoid interfering with STDIO
12
+ process.stderr.write(`[DXT] AJV patch failed to load: ${error.message}\n`);
12
13
  }
13
14
 
14
- console.error("DEBUG: DXT CommonJS entry point starting...");
15
- console.error(`DEBUG: Current working directory: ${process.cwd()}`);
16
- console.error(`DEBUG: __dirname: ${__dirname}`);
17
- console.error(`DEBUG: Node version: ${process.version}`);
15
+ // Use stderr for debug output to avoid interfering with STDIO
16
+ const debug = (message) => {
17
+ if (process.env.DEBUG || process.env.NODE_ENV === 'development') {
18
+ process.stderr.write(`[DXT] ${message}\n`);
19
+ }
20
+ };
21
+
22
+ debug("CommonJS entry point starting...");
23
+ debug(`Current working directory: ${process.cwd()}`);
24
+ debug(`__dirname: ${__dirname}`);
25
+ debug(`Node version: ${process.version}`);
18
26
 
19
27
  // Set DXT mode environment variable
20
28
  process.env.NODE_ENV = "dxt";
21
29
 
22
- console.error("DEBUG: Environment variables passed from DXT:");
23
- console.error(` WORDPRESS_SITE_URL: ${process.env.WORDPRESS_SITE_URL ? 'SET' : 'NOT SET'}`);
24
- console.error(` WORDPRESS_USERNAME: ${process.env.WORDPRESS_USERNAME ? 'SET' : 'NOT SET'}`);
25
- console.error(` WORDPRESS_APP_PASSWORD: ${process.env.WORDPRESS_APP_PASSWORD ? 'SET' : 'NOT SET'}`);
30
+ debug("Environment variables passed from DXT:");
31
+ debug(` WORDPRESS_SITE_URL: ${process.env.WORDPRESS_SITE_URL ? 'SET' : 'NOT SET'}`);
32
+ debug(` WORDPRESS_USERNAME: ${process.env.WORDPRESS_USERNAME ? 'SET' : 'NOT SET'}`);
33
+ debug(` WORDPRESS_APP_PASSWORD: ${process.env.WORDPRESS_APP_PASSWORD ? 'SET' : 'NOT SET'}`);
26
34
 
27
35
  // Import and run the main server using dynamic import
28
36
  async function startDXTServer() {
29
37
  try {
30
- console.error("DEBUG: Attempting to import ES module...");
38
+ debug("Attempting to import ES module...");
31
39
  const { MCPWordPressServer } = await import("./index.js");
32
40
 
33
- console.error("DEBUG: Creating MCPWordPressServer instance from DXT entry point...");
41
+ debug("Creating MCPWordPressServer instance from DXT entry point...");
34
42
  const server = new MCPWordPressServer();
35
43
 
36
- console.error("DEBUG: Starting server (DXT mode - fast startup)...");
44
+ debug("Starting server (DXT mode - fast startup)...");
37
45
  await server.run();
38
46
 
39
47
  // Handle graceful shutdown
40
48
  const shutdown = async () => {
41
- console.error("DEBUG: Received shutdown signal in DXT entry point");
49
+ debug("Received shutdown signal in DXT entry point");
42
50
  await server.shutdown();
43
51
  process.exit(0);
44
52
  };
@@ -47,12 +55,14 @@ async function startDXTServer() {
47
55
  process.on("SIGTERM", shutdown);
48
56
 
49
57
  } catch (error) {
50
- console.error(`FATAL: DXT server failed to start: ${error instanceof Error ? error.message : String(error)}`);
51
- console.error(`FATAL: Stack trace: ${error instanceof Error ? error.stack : 'No stack trace available'}`);
58
+ process.stderr.write(`[DXT] FATAL: Server failed to start: ${error instanceof Error ? error.message : String(error)}\n`);
59
+ if (error instanceof Error && error.stack) {
60
+ process.stderr.write(`[DXT] Stack trace: ${error.stack}\n`);
61
+ }
52
62
  process.exit(1);
53
63
  }
54
64
  }
55
65
 
56
66
  // Always run when loaded as DXT entry point
57
- console.error("DEBUG: Calling startDXTServer...");
67
+ debug("Calling startDXTServer...");
58
68
  startDXTServer();
package/src/dxt-entry.ts CHANGED
@@ -4,35 +4,29 @@
4
4
  * Entry point for DXT package - ensures proper initialization when run through Claude Desktop
5
5
  */
6
6
 
7
- console.error("DEBUG: DXT entry point starting...");
8
- console.error(`DEBUG: Current working directory: ${process.cwd()}`);
9
- console.error(`DEBUG: __dirname equivalent: ${import.meta.url}`);
10
- console.error("DEBUG: Environment variables passed from DXT:");
11
- console.error(
12
- ` WORDPRESS_SITE_URL: ${process.env.WORDPRESS_SITE_URL ? "SET" : "NOT SET"}`,
13
- );
14
- console.error(
15
- ` WORDPRESS_USERNAME: ${process.env.WORDPRESS_USERNAME ? "SET" : "NOT SET"}`,
16
- );
17
- console.error(
18
- ` WORDPRESS_APP_PASSWORD: ${process.env.WORDPRESS_APP_PASSWORD ? "SET" : "NOT SET"}`,
19
- );
20
-
21
- // Import and run the main server
7
+ import { LoggerFactory } from "./utils/logger.js";
22
8
  import { MCPWordPressServer } from "./index.js";
23
9
 
10
+ const logger = LoggerFactory.server();
11
+
12
+ logger.debug("DXT entry point starting...");
13
+ logger.debug(`Current working directory: ${process.cwd()}`);
14
+ logger.debug(`__dirname equivalent: ${import.meta.url}`);
15
+ logger.debug("Environment variables passed from DXT:");
16
+ logger.debug(` WORDPRESS_SITE_URL: ${process.env.WORDPRESS_SITE_URL ? "SET" : "NOT SET"}`);
17
+ logger.debug(` WORDPRESS_USERNAME: ${process.env.WORDPRESS_USERNAME ? "SET" : "NOT SET"}`);
18
+ logger.debug(` WORDPRESS_APP_PASSWORD: ${process.env.WORDPRESS_APP_PASSWORD ? "SET" : "NOT SET"}`);
19
+
24
20
  async function startDXTServer() {
25
21
  try {
26
- console.error(
27
- "DEBUG: Creating MCPWordPressServer instance from DXT entry point...",
28
- );
22
+ logger.debug("Creating MCPWordPressServer instance from DXT entry point...");
29
23
  const server = new MCPWordPressServer();
30
- console.error("DEBUG: Starting server...");
24
+ logger.debug("Starting server...");
31
25
  await server.run();
32
26
 
33
27
  // Handle graceful shutdown
34
28
  const shutdown = async () => {
35
- console.error("DEBUG: Received shutdown signal in DXT entry point");
29
+ logger.debug("Received shutdown signal in DXT entry point");
36
30
  await server.shutdown();
37
31
  process.exit(0);
38
32
  };
@@ -40,16 +34,12 @@ async function startDXTServer() {
40
34
  process.on("SIGINT", shutdown);
41
35
  process.on("SIGTERM", shutdown);
42
36
  } catch (error) {
43
- console.error(
44
- `FATAL: DXT server failed to start: ${error instanceof Error ? error.message : String(error)}`,
45
- );
46
- console.error(
47
- `FATAL: Stack trace: ${error instanceof Error ? error.stack : "No stack trace available"}`,
48
- );
37
+ logger.fatal(`DXT server failed to start: ${error instanceof Error ? error.message : String(error)}`);
38
+ logger.fatal(`Stack trace: ${error instanceof Error ? error.stack : "No stack trace available"}`);
49
39
  process.exit(1);
50
40
  }
51
41
  }
52
42
 
53
43
  // Always run when loaded as DXT entry point
54
- console.error("DEBUG: Calling startDXTServer...");
44
+ logger.debug("Calling startDXTServer...");
55
45
  startDXTServer();
package/src/index.ts CHANGED
@@ -6,6 +6,9 @@ import { ServerConfiguration, SiteConfig } from "./config/ServerConfiguration.js
6
6
  import { ToolRegistry } from "./server/ToolRegistry.js";
7
7
  import { ConnectionTester } from "./server/ConnectionTester.js";
8
8
  import { getErrorMessage } from "./utils/error.js";
9
+ import { LoggerFactory } from "./utils/logger.js";
10
+ import { ConfigHelpers } from "./config/Config.js";
11
+ import { McpConfigType } from "./config/ServerConfiguration.js";
9
12
 
10
13
  // --- Constants ---
11
14
  const SERVER_VERSION = "1.1.8"; // Technical debt resolution and modular architecture
@@ -17,28 +20,25 @@ class MCPWordPressServer {
17
20
  private initialized: boolean = false;
18
21
  private siteConfigs: SiteConfig[] = [];
19
22
  private toolRegistry: ToolRegistry;
23
+ private logger = LoggerFactory.server();
20
24
 
21
- constructor(mcpConfig?: any) {
25
+ constructor(mcpConfig?: McpConfigType) {
22
26
  this.loadConfiguration(mcpConfig);
23
27
 
24
28
  if (this.wordpressClients.size === 0) {
25
29
  // In test environments, don't exit the process
26
- if (
27
- process.env.NODE_ENV === "test" ||
28
- process.env.CI === "true" ||
29
- (globalThis as any).__EXECUTION_CONTEXT__ === "jest"
30
- ) {
31
- console.error("WARNING: No WordPress sites configured in test environment");
30
+ if (ConfigHelpers.isCI() || ConfigHelpers.isTest() || (globalThis as Record<string, unknown>).__EXECUTION_CONTEXT__ === "jest") {
31
+ this.logger.warn("No WordPress sites configured in test environment");
32
32
  // Create a dummy client for testing
33
- this.wordpressClients.set("test", {} as any);
33
+ this.wordpressClients.set("test", {} as WordPressClient);
34
34
  } else {
35
- console.error(
36
- "ERROR: No WordPress sites were configured. Please check that environment variables are set correctly.",
37
- );
38
- console.error("Expected environment variables:");
39
- console.error(" - WORDPRESS_SITE_URL");
40
- console.error(" - WORDPRESS_USERNAME");
41
- console.error(" - WORDPRESS_APP_PASSWORD");
35
+ this.logger.fatal("No WordPress sites configured. Server cannot start.", {
36
+ expectedEnvVars: [
37
+ "WORDPRESS_SITE_URL",
38
+ "WORDPRESS_USERNAME",
39
+ "WORDPRESS_APP_PASSWORD"
40
+ ]
41
+ });
42
42
  process.exit(1);
43
43
  }
44
44
  }
@@ -52,7 +52,7 @@ class MCPWordPressServer {
52
52
  this.setupTools();
53
53
  }
54
54
 
55
- private loadConfiguration(mcpConfig?: any) {
55
+ private loadConfiguration(mcpConfig?: McpConfigType) {
56
56
  const serverConfig = ServerConfiguration.getInstance();
57
57
  const { clients, configs } = serverConfig.loadClientConfigurations(mcpConfig);
58
58
 
@@ -65,35 +65,45 @@ class MCPWordPressServer {
65
65
  }
66
66
 
67
67
  private async testClientConnections(): Promise<void> {
68
- await ConnectionTester.testClientConnections(this.wordpressClients);
68
+ // Use optimized connection testing with timeouts and concurrency control
69
+ await ConnectionTester.testClientConnections(this.wordpressClients, {
70
+ timeout: ConfigHelpers.getTimeout("test"),
71
+ maxConcurrent: ConfigHelpers.isCI() ? 2 : 3 // Reduce concurrency in CI
72
+ });
69
73
  this.initialized = true;
70
74
  }
71
75
 
72
76
  async run() {
73
77
  // Skip connection testing in DXT environment to prevent timeouts
74
- const isDXTMode = process.env.NODE_ENV === "dxt" || process.argv[0]?.includes("dxt-entry");
78
+ const isDXTMode = ConfigHelpers.isDXT() || process.argv[0]?.includes("dxt-entry");
75
79
 
76
80
  if (!this.initialized && !isDXTMode) {
77
- console.error("INFO: Testing connections to configured WordPress sites...");
81
+ this.logger.info("Testing connections to configured WordPress sites...", {
82
+ siteCount: this.wordpressClients.size
83
+ });
78
84
  try {
79
85
  await this.testClientConnections();
80
86
  } catch (error) {
81
- console.error(`WARNING: Connection test failed: ${getErrorMessage(error)}`);
82
- console.error("INFO: Continuing with server startup. Tools will be available but connections may fail.");
87
+ this.logger.warn("Connection test failed - continuing with server startup", {
88
+ error: getErrorMessage(error)
89
+ });
83
90
  }
84
91
  } else if (isDXTMode) {
85
- console.error("INFO: DXT mode detected - skipping connection tests for faster startup");
92
+ this.logger.info("DXT mode detected - skipping connection tests for faster startup");
86
93
  this.initialized = true;
87
94
  }
88
95
 
89
- console.error("INFO: Starting MCP WordPress Server...");
96
+ this.logger.info("Starting MCP WordPress Server...", {
97
+ version: SERVER_VERSION,
98
+ sites: this.wordpressClients.size
99
+ });
90
100
 
91
101
  // Connect to stdio transport with timeout
92
102
  const transport = new StdioServerTransport();
93
103
 
94
104
  // Add timeout protection for server connection
95
105
  const connectionTimeout = setTimeout(() => {
96
- console.error("ERROR: Server connection timed out after 30 seconds");
106
+ this.logger.fatal("Server connection timed out", { timeoutMs: 30000 });
97
107
  process.exit(1);
98
108
  }, 30000);
99
109
 
@@ -101,7 +111,9 @@ class MCPWordPressServer {
101
111
  await this.server.connect(transport);
102
112
  clearTimeout(connectionTimeout);
103
113
 
104
- console.error(`INFO: Server started and connected. Tools available for ${this.wordpressClients.size} site(s).`);
114
+ this.logger.info("Server started and connected successfully", {
115
+ sites: this.wordpressClients.size
116
+ });
105
117
 
106
118
  // Keep the process alive
107
119
  process.stdin.resume();
@@ -112,14 +124,16 @@ class MCPWordPressServer {
112
124
  }
113
125
 
114
126
  async shutdown() {
115
- console.error("INFO: Shutting down MCP WordPress Server...");
127
+ this.logger.info("Shutting down MCP WordPress Server...");
116
128
  await this.server.close();
117
- console.error("INFO: Server stopped.");
129
+ this.logger.info("Server stopped");
118
130
  }
119
131
  }
120
132
 
121
133
  // --- Main Execution ---
122
134
  async function main() {
135
+ const mainLogger = LoggerFactory.server();
136
+
123
137
  try {
124
138
  const mcpServer = new MCPWordPressServer();
125
139
  await mcpServer.run();
@@ -132,7 +146,7 @@ async function main() {
132
146
  process.on("SIGINT", shutdown);
133
147
  process.on("SIGTERM", shutdown);
134
148
  } catch (error) {
135
- console.error(`FATAL: Failed to start server: ${getErrorMessage(error)}`);
149
+ mainLogger.fatal("Failed to start server", { error: getErrorMessage(error) });
136
150
  process.exit(1);
137
151
  }
138
152
  }