mcp-wordpress 1.2.2 → 1.3.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.
- package/README.md +210 -182
- package/dist/cache/CacheInvalidation.d.ts +3 -3
- package/dist/cache/CacheInvalidation.d.ts.map +1 -1
- package/dist/cache/CacheInvalidation.js +119 -119
- package/dist/cache/CacheInvalidation.js.map +1 -1
- package/dist/cache/CacheManager.d.ts +5 -0
- package/dist/cache/CacheManager.d.ts.map +1 -1
- package/dist/cache/CacheManager.js +26 -16
- package/dist/cache/CacheManager.js.map +1 -1
- package/dist/cache/HttpCacheWrapper.d.ts +1 -1
- package/dist/cache/HttpCacheWrapper.d.ts.map +1 -1
- package/dist/cache/HttpCacheWrapper.js +29 -29
- package/dist/cache/HttpCacheWrapper.js.map +1 -1
- package/dist/cache/__tests__/CacheInvalidation.test.js +96 -94
- package/dist/cache/__tests__/CacheInvalidation.test.js.map +1 -1
- package/dist/cache/__tests__/CacheManager.test.js +113 -113
- package/dist/cache/__tests__/CacheManager.test.js.map +1 -1
- package/dist/cache/__tests__/CachedWordPressClient.test.js +102 -99
- package/dist/cache/__tests__/CachedWordPressClient.test.js.map +1 -1
- package/dist/cache/__tests__/HttpCacheWrapper.test.js +98 -95
- package/dist/cache/__tests__/HttpCacheWrapper.test.js.map +1 -1
- package/dist/cache/index.d.ts +7 -7
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +4 -4
- package/dist/cache/index.js.map +1 -1
- package/dist/client/CachedWordPressClient.d.ts +4 -4
- package/dist/client/CachedWordPressClient.d.ts.map +1 -1
- package/dist/client/CachedWordPressClient.js +55 -51
- package/dist/client/CachedWordPressClient.js.map +1 -1
- package/dist/client/api.d.ts +10 -10
- package/dist/client/api.js +158 -158
- package/dist/client/api.js.map +1 -1
- package/dist/client/auth.d.ts +2 -2
- package/dist/client/auth.js +72 -72
- package/dist/client/managers/AuthenticationManager.d.ts +2 -2
- package/dist/client/managers/AuthenticationManager.js +46 -46
- package/dist/client/managers/BaseManager.d.ts +1 -1
- package/dist/client/managers/BaseManager.js +9 -9
- package/dist/client/managers/RequestManager.d.ts +5 -3
- package/dist/client/managers/RequestManager.d.ts.map +1 -1
- package/dist/client/managers/RequestManager.js +39 -19
- package/dist/client/managers/RequestManager.js.map +1 -1
- package/dist/client/managers/index.d.ts +3 -3
- package/dist/client/managers/index.js +3 -3
- package/dist/config/ConfigurationSchema.d.ts +2 -2
- package/dist/config/ConfigurationSchema.d.ts.map +1 -1
- package/dist/config/ConfigurationSchema.js +40 -40
- package/dist/config/ConfigurationSchema.js.map +1 -1
- package/dist/config/ServerConfiguration.d.ts +2 -2
- package/dist/config/ServerConfiguration.js +35 -35
- package/dist/config/ServerConfiguration.js.map +1 -1
- package/dist/docs/DocumentationGenerator.d.ts.map +1 -1
- package/dist/docs/DocumentationGenerator.js +296 -255
- package/dist/docs/DocumentationGenerator.js.map +1 -1
- package/dist/docs/MarkdownFormatter.d.ts +1 -1
- package/dist/docs/MarkdownFormatter.d.ts.map +1 -1
- package/dist/docs/MarkdownFormatter.js +60 -51
- package/dist/docs/MarkdownFormatter.js.map +1 -1
- package/dist/docs/index.d.ts +3 -3
- package/dist/docs/index.d.ts.map +1 -1
- package/dist/docs/index.js +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -16
- package/dist/index.js.map +1 -1
- package/dist/mcp-wordpress-1.3.0.tgz +0 -0
- package/dist/performance/MetricsCollector.d.ts +3 -3
- package/dist/performance/MetricsCollector.d.ts.map +1 -1
- package/dist/performance/MetricsCollector.js +33 -27
- package/dist/performance/MetricsCollector.js.map +1 -1
- package/dist/performance/PerformanceAnalytics.d.ts +12 -12
- package/dist/performance/PerformanceAnalytics.d.ts.map +1 -1
- package/dist/performance/PerformanceAnalytics.js +200 -154
- package/dist/performance/PerformanceAnalytics.js.map +1 -1
- package/dist/performance/PerformanceMonitor.d.ts +5 -5
- package/dist/performance/PerformanceMonitor.d.ts.map +1 -1
- package/dist/performance/PerformanceMonitor.js +53 -52
- package/dist/performance/PerformanceMonitor.js.map +1 -1
- package/dist/performance/index.d.ts +6 -6
- package/dist/performance/index.d.ts.map +1 -1
- package/dist/performance/index.js +3 -3
- package/dist/security/InputValidator.d.ts +1 -1
- package/dist/security/InputValidator.d.ts.map +1 -1
- package/dist/security/InputValidator.js +111 -88
- package/dist/security/InputValidator.js.map +1 -1
- package/dist/security/SecurityConfig.d.ts +5 -5
- package/dist/security/SecurityConfig.js +92 -92
- package/dist/security/SecurityConfig.js.map +1 -1
- package/dist/server/ConnectionTester.d.ts +1 -1
- package/dist/server/ConnectionTester.d.ts.map +1 -1
- package/dist/server/ConnectionTester.js +4 -4
- package/dist/server/ConnectionTester.js.map +1 -1
- package/dist/server/ToolRegistry.d.ts +2 -2
- package/dist/server/ToolRegistry.d.ts.map +1 -1
- package/dist/server/ToolRegistry.js +35 -32
- package/dist/server/ToolRegistry.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.js +2 -2
- package/dist/tools/BaseToolManager.js +5 -5
- package/dist/tools/auth.d.ts +2 -2
- package/dist/tools/auth.d.ts.map +1 -1
- package/dist/tools/auth.js +32 -31
- package/dist/tools/auth.js.map +1 -1
- package/dist/tools/cache.d.ts +1 -1
- package/dist/tools/cache.d.ts.map +1 -1
- package/dist/tools/cache.js +71 -71
- package/dist/tools/cache.js.map +1 -1
- package/dist/tools/comments.d.ts +2 -2
- package/dist/tools/comments.d.ts.map +1 -1
- package/dist/tools/comments.js +79 -79
- package/dist/tools/comments.js.map +1 -1
- package/dist/tools/index.d.ts +10 -10
- package/dist/tools/index.js +10 -10
- package/dist/tools/media.d.ts +2 -2
- package/dist/tools/media.js +80 -80
- package/dist/tools/pages.d.ts +2 -2
- package/dist/tools/pages.d.ts.map +1 -1
- package/dist/tools/pages.js +75 -75
- package/dist/tools/pages.js.map +1 -1
- package/dist/tools/performance.d.ts +1 -1
- package/dist/tools/performance.d.ts.map +1 -1
- package/dist/tools/performance.js +311 -287
- package/dist/tools/performance.js.map +1 -1
- package/dist/tools/posts.d.ts +2 -2
- package/dist/tools/posts.d.ts.map +1 -1
- package/dist/tools/posts.js +94 -94
- package/dist/tools/posts.js.map +1 -1
- package/dist/tools/site.d.ts +2 -2
- package/dist/tools/site.d.ts.map +1 -1
- package/dist/tools/site.js +60 -60
- package/dist/tools/site.js.map +1 -1
- package/dist/tools/taxonomies.d.ts +2 -2
- package/dist/tools/taxonomies.js +89 -89
- package/dist/tools/users.d.ts +2 -2
- package/dist/tools/users.js +68 -68
- package/dist/tools/users.js.map +1 -1
- package/dist/types/client.d.ts +13 -13
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/client.js +12 -12
- package/dist/types/client.js.map +1 -1
- package/dist/types/index.d.ts +19 -19
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -3
- package/dist/types/mcp.d.ts +7 -7
- package/dist/types/wordpress.d.ts +21 -21
- package/dist/types/wordpress.d.ts.map +1 -1
- package/dist/utils/debug.d.ts +2 -2
- package/dist/utils/debug.js +28 -28
- package/dist/utils/error.d.ts.map +1 -1
- package/dist/utils/error.js +13 -13
- package/dist/utils/error.js.map +1 -1
- package/dist/utils/toolWrapper.d.ts.map +1 -1
- package/dist/utils/toolWrapper.js +5 -5
- package/dist/utils/toolWrapper.js.map +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +41 -31
- package/dist/utils/validation.js.map +1 -1
- package/docs/CACHING.md +36 -2
- package/docs/DOCKER.md +24 -18
- package/docs/PERFORMANCE_MONITORING.md +49 -1
- package/docs/SECURITY_TESTING.md +30 -1
- package/docs/api/README.md +9 -1
- package/docs/api/summary.json +1 -1
- package/docs/contract-testing.md +24 -3
- package/docs/developer/GITHUB_ACTIONS_SETUP.md +8 -2
- package/docs/developer/MAINTENANCE.md +29 -3
- package/docs/developer/MIGRATION_GUIDE.md +13 -1
- package/docs/developer/NPM_AUTH_SETUP.md +13 -2
- package/docs/developer/REFACTORING.md +31 -1
- package/docs/releases/COMMUNITY_ANNOUNCEMENT_v1.1.2.md +18 -7
- package/docs/releases/RELEASE_NOTES_v1.1.2.md +31 -5
- package/docs/user-guides/DOCKER_SETUP.md +264 -0
- package/docs/user-guides/DTX_SETUP.md +327 -0
- package/docs/user-guides/NPM_SETUP.md +109 -0
- package/docs/user-guides/NPX_SETUP.md +281 -0
- package/docs/wordpress-rest-api-authentication-troubleshooting.md +13 -2
- package/package.json +27 -8
- package/src/cache/CacheInvalidation.ts +140 -132
- package/src/cache/CacheManager.ts +40 -29
- package/src/cache/HttpCacheWrapper.ts +105 -68
- package/src/cache/__tests__/CacheInvalidation.test.ts +123 -118
- package/src/cache/__tests__/CacheManager.test.ts +156 -152
- package/src/cache/__tests__/CachedWordPressClient.test.ts +131 -116
- package/src/cache/__tests__/HttpCacheWrapper.test.ts +118 -115
- package/src/cache/index.ts +13 -13
- package/src/client/CachedWordPressClient.ts +90 -80
- package/src/client/api.ts +205 -205
- package/src/client/auth.ts +80 -80
- package/src/client/managers/AuthenticationManager.ts +61 -61
- package/src/client/managers/BaseManager.ts +11 -11
- package/src/client/managers/RequestManager.ts +79 -47
- package/src/client/managers/index.ts +3 -3
- package/src/config/ConfigurationSchema.ts +44 -44
- package/src/config/ServerConfiguration.ts +39 -39
- package/src/docs/DocumentationGenerator.ts +402 -295
- package/src/docs/MarkdownFormatter.ts +94 -69
- package/src/docs/index.ts +4 -4
- package/src/index.ts +24 -21
- package/src/performance/MetricsCollector.ts +90 -58
- package/src/performance/PerformanceAnalytics.ts +386 -262
- package/src/performance/PerformanceMonitor.ts +152 -118
- package/src/performance/index.ts +9 -9
- package/src/security/InputValidator.ts +148 -91
- package/src/security/SecurityConfig.ts +94 -94
- package/src/server/ConnectionTester.ts +21 -15
- package/src/server/ToolRegistry.ts +64 -51
- package/src/server.ts +2 -2
- package/src/tools/BaseToolManager.ts +6 -6
- package/src/tools/auth.ts +42 -37
- package/src/tools/cache.ts +85 -81
- package/src/tools/comments.ts +93 -91
- package/src/tools/index.ts +10 -10
- package/src/tools/media.ts +89 -89
- package/src/tools/pages.ts +89 -87
- package/src/tools/performance.ts +443 -352
- package/src/tools/posts.ts +109 -107
- package/src/tools/site.ts +86 -77
- package/src/tools/taxonomies.ts +102 -102
- package/src/tools/users.ts +77 -77
- package/src/types/client.ts +157 -60
- package/src/types/index.ts +49 -27
- package/src/types/mcp.ts +15 -15
- package/src/types/wordpress.ts +57 -29
- package/src/utils/debug.ts +37 -37
- package/src/utils/error.ts +47 -25
- package/src/utils/toolWrapper.ts +12 -8
- package/src/utils/validation.ts +116 -65
- package/dist/client/WordPressClient.d.ts +0 -81
- package/dist/client/WordPressClient.d.ts.map +0 -1
- package/dist/client/WordPressClient.js +0 -354
- package/dist/client/WordPressClient.js.map +0 -1
- package/dist/performance/AnomalyDetector.d.ts +0 -63
- package/dist/performance/AnomalyDetector.d.ts.map +0 -1
- package/dist/performance/AnomalyDetector.js +0 -222
- package/dist/performance/AnomalyDetector.js.map +0 -1
- package/dist/performance/BenchmarkAnalyzer.d.ts +0 -67
- package/dist/performance/BenchmarkAnalyzer.d.ts.map +0 -1
- package/dist/performance/BenchmarkAnalyzer.js +0 -301
- package/dist/performance/BenchmarkAnalyzer.js.map +0 -1
- package/dist/performance/TrendAnalyzer.d.ts +0 -69
- package/dist/performance/TrendAnalyzer.d.ts.map +0 -1
- package/dist/performance/TrendAnalyzer.js +0 -203
- package/dist/performance/TrendAnalyzer.js.map +0 -1
- package/dist/tools/BaseToolClass.d.ts +0 -76
- package/dist/tools/BaseToolClass.d.ts.map +0 -1
- package/dist/tools/BaseToolClass.js +0 -104
- package/dist/tools/BaseToolClass.js.map +0 -1
- package/dist/tools/base.d.ts +0 -37
- package/dist/tools/base.d.ts.map +0 -1
- package/dist/tools/base.js +0 -60
- package/dist/tools/base.js.map +0 -1
- package/docs/user-guides/CLAUDE_DESKTOP_SETUP.md +0 -187
|
@@ -3,23 +3,22 @@
|
|
|
3
3
|
* Converts documentation objects to well-formatted markdown files
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type {
|
|
7
|
-
ToolDocumentation,
|
|
8
|
-
CategoryDocumentation,
|
|
9
|
-
TypeDocumentation,
|
|
6
|
+
import type {
|
|
7
|
+
ToolDocumentation,
|
|
8
|
+
CategoryDocumentation,
|
|
9
|
+
TypeDocumentation,
|
|
10
10
|
DocumentationOutput,
|
|
11
11
|
ExampleUsage,
|
|
12
|
-
ParameterDocumentation
|
|
13
|
-
} from
|
|
12
|
+
ParameterDocumentation,
|
|
13
|
+
} from "./DocumentationGenerator.js";
|
|
14
14
|
|
|
15
15
|
export class MarkdownFormatter {
|
|
16
|
-
|
|
17
16
|
/**
|
|
18
17
|
* Generate main API overview documentation
|
|
19
18
|
*/
|
|
20
19
|
generateApiOverview(output: DocumentationOutput): string {
|
|
21
20
|
const { tools, categories, summary } = output;
|
|
22
|
-
|
|
21
|
+
|
|
23
22
|
return `# WordPress MCP Server - API Documentation
|
|
24
23
|
|
|
25
24
|
${this.generateBadges()}
|
|
@@ -165,9 +164,9 @@ ${this.generateParametersTable(tool.parameters)}
|
|
|
165
164
|
|
|
166
165
|
${this.generateExamples(tool.examples)}
|
|
167
166
|
|
|
168
|
-
${tool.wordpressEndpoint ? this.generateWordPressMapping(tool.wordpressEndpoint) :
|
|
167
|
+
${tool.wordpressEndpoint ? this.generateWordPressMapping(tool.wordpressEndpoint) : ""}
|
|
169
168
|
|
|
170
|
-
${tool.requiredPermissions ? this.generatePermissions(tool.requiredPermissions) :
|
|
169
|
+
${tool.requiredPermissions ? this.generatePermissions(tool.requiredPermissions) : ""}
|
|
171
170
|
|
|
172
171
|
## Response Format
|
|
173
172
|
|
|
@@ -179,7 +178,7 @@ ${this.generateResponseExample(tool)}
|
|
|
179
178
|
|
|
180
179
|
${this.generateErrorDocumentation(tool.errorCodes)}
|
|
181
180
|
|
|
182
|
-
${tool.relatedTools.length > 0 ? this.generateRelatedTools(tool.relatedTools) :
|
|
181
|
+
${tool.relatedTools.length > 0 ? this.generateRelatedTools(tool.relatedTools) : ""}
|
|
183
182
|
|
|
184
183
|
---
|
|
185
184
|
|
|
@@ -199,11 +198,11 @@ ${category.description}
|
|
|
199
198
|
|
|
200
199
|
## Available Tools
|
|
201
200
|
|
|
202
|
-
${category.tools.map(tool => `- [\`${tool}\`](./tools/${tool}.md)`).join(
|
|
201
|
+
${category.tools.map((tool) => `- [\`${tool}\`](./tools/${tool}.md)`).join("\n")}
|
|
203
202
|
|
|
204
203
|
## Common Usage Patterns
|
|
205
204
|
|
|
206
|
-
${category.usagePatterns.map(pattern => `- ${pattern}`).join(
|
|
205
|
+
${category.usagePatterns.map((pattern) => `- ${pattern}`).join("\n")}
|
|
207
206
|
|
|
208
207
|
## Examples
|
|
209
208
|
|
|
@@ -238,7 +237,7 @@ wp_list_${category.name.toLowerCase()} --site=staging --limit=50
|
|
|
238
237
|
|
|
239
238
|
${type.description}
|
|
240
239
|
|
|
241
|
-
${type.wordpressSource ? `**WordPress Source:** \`${type.wordpressSource}\`` :
|
|
240
|
+
${type.wordpressSource ? `**WordPress Source:** \`${type.wordpressSource}\`` : ""}
|
|
242
241
|
|
|
243
242
|
## Properties
|
|
244
243
|
|
|
@@ -250,30 +249,38 @@ ${this.generateTypePropertiesTable(type.properties)}
|
|
|
250
249
|
${JSON.stringify(type.examples[0] || {}, null, 2)}
|
|
251
250
|
\`\`\`
|
|
252
251
|
|
|
253
|
-
${type.examples.length > 1 ? this.generateAdditionalExamples(type.examples.slice(1)) :
|
|
252
|
+
${type.examples.length > 1 ? this.generateAdditionalExamples(type.examples.slice(1)) : ""}
|
|
254
253
|
`;
|
|
255
254
|
}
|
|
256
255
|
|
|
257
256
|
/**
|
|
258
257
|
* Generate parameters table
|
|
259
258
|
*/
|
|
260
|
-
private generateParametersTable(
|
|
259
|
+
private generateParametersTable(
|
|
260
|
+
parameters: ParameterDocumentation[],
|
|
261
|
+
): string {
|
|
261
262
|
if (parameters.length === 0) {
|
|
262
|
-
return
|
|
263
|
+
return "*No parameters required.*";
|
|
263
264
|
}
|
|
264
265
|
|
|
265
|
-
const headers =
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
const
|
|
272
|
-
|
|
273
|
-
|
|
266
|
+
const headers =
|
|
267
|
+
"| Parameter | Type | Required | Description | Default | Examples |";
|
|
268
|
+
const separator =
|
|
269
|
+
"|-----------|------|----------|-------------|---------|----------|";
|
|
270
|
+
|
|
271
|
+
const rows = parameters.map((param) => {
|
|
272
|
+
const examples = param.examples
|
|
273
|
+
.slice(0, 2)
|
|
274
|
+
.map((ex) => `\`${ex}\``)
|
|
275
|
+
.join(", ");
|
|
276
|
+
const defaultVal =
|
|
277
|
+
param.defaultValue !== undefined ? `\`${param.defaultValue}\`` : "-";
|
|
278
|
+
const required = param.required ? "✅" : "❌";
|
|
279
|
+
|
|
280
|
+
return `| \`${param.name}\` | \`${param.type}\` | ${required} | ${param.description} | ${defaultVal} | ${examples || "-"} |`;
|
|
274
281
|
});
|
|
275
282
|
|
|
276
|
-
return [headers, separator, ...rows].join(
|
|
283
|
+
return [headers, separator, ...rows].join("\n");
|
|
277
284
|
}
|
|
278
285
|
|
|
279
286
|
/**
|
|
@@ -281,10 +288,12 @@ ${type.examples.length > 1 ? this.generateAdditionalExamples(type.examples.slice
|
|
|
281
288
|
*/
|
|
282
289
|
private generateExamples(examples: ExampleUsage[]): string {
|
|
283
290
|
if (examples.length === 0) {
|
|
284
|
-
return
|
|
291
|
+
return "*No examples available.*";
|
|
285
292
|
}
|
|
286
293
|
|
|
287
|
-
return examples
|
|
294
|
+
return examples
|
|
295
|
+
.map(
|
|
296
|
+
(example) => `### ${example.title}
|
|
288
297
|
|
|
289
298
|
${example.description}
|
|
290
299
|
|
|
@@ -298,14 +307,19 @@ ${example.command} ${this.formatParameters(example.parameters)}
|
|
|
298
307
|
${JSON.stringify(example.expectedResponse, null, 2)}
|
|
299
308
|
\`\`\`
|
|
300
309
|
|
|
301
|
-
${example.errorExample ? this.generateErrorExample(example.errorExample) :
|
|
302
|
-
|
|
310
|
+
${example.errorExample ? this.generateErrorExample(example.errorExample) : ""}
|
|
311
|
+
`,
|
|
312
|
+
)
|
|
313
|
+
.join("\n\n");
|
|
303
314
|
}
|
|
304
315
|
|
|
305
316
|
/**
|
|
306
317
|
* Generate error example
|
|
307
318
|
*/
|
|
308
|
-
private generateErrorExample(errorExample: {
|
|
319
|
+
private generateErrorExample(errorExample: {
|
|
320
|
+
scenario: string;
|
|
321
|
+
error: any;
|
|
322
|
+
}): string {
|
|
309
323
|
return `**Error Example (${errorExample.scenario}):**
|
|
310
324
|
\`\`\`json
|
|
311
325
|
${JSON.stringify(errorExample.error, null, 2)}
|
|
@@ -336,7 +350,7 @@ This tool directly interfaces with the WordPress REST API endpoint above. The re
|
|
|
336
350
|
|
|
337
351
|
This tool requires the following WordPress user capabilities:
|
|
338
352
|
|
|
339
|
-
${permissions.map(perm => `- \`${perm}\``).join(
|
|
353
|
+
${permissions.map((perm) => `- \`${perm}\``).join("\n")}
|
|
340
354
|
|
|
341
355
|
**Note:** The authenticated user must have these capabilities to successfully execute this tool.
|
|
342
356
|
`;
|
|
@@ -376,12 +390,16 @@ ${permissions.map(perm => `- \`${perm}\``).join('\n')}
|
|
|
376
390
|
See [Error Handling Guide](../error-handling.md) for complete error reference.`;
|
|
377
391
|
}
|
|
378
392
|
|
|
379
|
-
return errorCodes
|
|
393
|
+
return errorCodes
|
|
394
|
+
.map(
|
|
395
|
+
(error) => `### ${error.code}
|
|
380
396
|
|
|
381
397
|
**Message:** ${error.message}
|
|
382
398
|
**Description:** ${error.description}
|
|
383
399
|
**Resolution:** ${error.resolution}
|
|
384
|
-
|
|
400
|
+
`,
|
|
401
|
+
)
|
|
402
|
+
.join("\n\n");
|
|
385
403
|
}
|
|
386
404
|
|
|
387
405
|
/**
|
|
@@ -390,7 +408,7 @@ See [Error Handling Guide](../error-handling.md) for complete error reference.`;
|
|
|
390
408
|
private generateRelatedTools(relatedTools: string[]): string {
|
|
391
409
|
return `## Related Tools
|
|
392
410
|
|
|
393
|
-
${relatedTools.map(tool => `- [\`${tool}\`](./${tool}.md)`).join(
|
|
411
|
+
${relatedTools.map((tool) => `- [\`${tool}\`](./${tool}.md)`).join("\n")}
|
|
394
412
|
`;
|
|
395
413
|
}
|
|
396
414
|
|
|
@@ -398,43 +416,45 @@ ${relatedTools.map(tool => `- [\`${tool}\`](./${tool}.md)`).join('\n')}
|
|
|
398
416
|
* Generate categories table
|
|
399
417
|
*/
|
|
400
418
|
private generateCategoriesTable(categories: CategoryDocumentation[]): string {
|
|
401
|
-
const headers =
|
|
402
|
-
const separator =
|
|
403
|
-
|
|
404
|
-
const rows = categories.map(
|
|
405
|
-
|
|
419
|
+
const headers = "| Category | Tools | Description |";
|
|
420
|
+
const separator = "|----------|-------|-------------|";
|
|
421
|
+
|
|
422
|
+
const rows = categories.map(
|
|
423
|
+
(cat) =>
|
|
424
|
+
`| [${cat.name}](./categories/${cat.name.toLowerCase()}.md) | ${cat.toolCount} | ${cat.description} |`,
|
|
406
425
|
);
|
|
407
426
|
|
|
408
|
-
return [headers, separator, ...rows].join(
|
|
427
|
+
return [headers, separator, ...rows].join("\n");
|
|
409
428
|
}
|
|
410
429
|
|
|
411
430
|
/**
|
|
412
431
|
* Generate tools table
|
|
413
432
|
*/
|
|
414
433
|
private generateToolsTable(tools: ToolDocumentation[]): string {
|
|
415
|
-
const headers =
|
|
416
|
-
const separator =
|
|
417
|
-
|
|
418
|
-
const rows = tools.map(
|
|
419
|
-
|
|
434
|
+
const headers = "| Tool | Category | Description |";
|
|
435
|
+
const separator = "|------|----------|-------------|";
|
|
436
|
+
|
|
437
|
+
const rows = tools.map(
|
|
438
|
+
(tool) =>
|
|
439
|
+
`| [\`${tool.name}\`](./tools/${tool.name}.md) | ${tool.category} | ${tool.description} |`,
|
|
420
440
|
);
|
|
421
441
|
|
|
422
|
-
return [headers, separator, ...rows].join(
|
|
442
|
+
return [headers, separator, ...rows].join("\n");
|
|
423
443
|
}
|
|
424
444
|
|
|
425
445
|
/**
|
|
426
446
|
* Generate type properties table
|
|
427
447
|
*/
|
|
428
448
|
private generateTypePropertiesTable(properties: any[]): string {
|
|
429
|
-
const headers =
|
|
430
|
-
const separator =
|
|
431
|
-
|
|
432
|
-
const rows = properties.map(prop => {
|
|
433
|
-
const required = prop.required ?
|
|
449
|
+
const headers = "| Property | Type | Required | Description |";
|
|
450
|
+
const separator = "|----------|------|----------|-------------|";
|
|
451
|
+
|
|
452
|
+
const rows = properties.map((prop) => {
|
|
453
|
+
const required = prop.required ? "✅" : "❌";
|
|
434
454
|
return `| \`${prop.name}\` | \`${prop.type}\` | ${required} | ${prop.description} |`;
|
|
435
455
|
});
|
|
436
456
|
|
|
437
|
-
return [headers, separator, ...rows].join(
|
|
457
|
+
return [headers, separator, ...rows].join("\n");
|
|
438
458
|
}
|
|
439
459
|
|
|
440
460
|
/**
|
|
@@ -454,19 +474,20 @@ ${relatedTools.map(tool => `- [\`${tool}\`](./${tool}.md)`).join('\n')}
|
|
|
454
474
|
*/
|
|
455
475
|
private generateToolBadge(category: string): string {
|
|
456
476
|
const colors = {
|
|
457
|
-
posts:
|
|
458
|
-
pages:
|
|
459
|
-
media:
|
|
460
|
-
users:
|
|
461
|
-
comments:
|
|
462
|
-
taxonomies:
|
|
463
|
-
site:
|
|
464
|
-
auth:
|
|
465
|
-
cache:
|
|
466
|
-
performance:
|
|
477
|
+
posts: "blue",
|
|
478
|
+
pages: "green",
|
|
479
|
+
media: "purple",
|
|
480
|
+
users: "orange",
|
|
481
|
+
comments: "red",
|
|
482
|
+
taxonomies: "yellow",
|
|
483
|
+
site: "lightblue",
|
|
484
|
+
auth: "darkblue",
|
|
485
|
+
cache: "grey",
|
|
486
|
+
performance: "brightgreen",
|
|
467
487
|
};
|
|
468
|
-
|
|
469
|
-
const color =
|
|
488
|
+
|
|
489
|
+
const color =
|
|
490
|
+
colors[category.toLowerCase() as keyof typeof colors] || "lightgrey";
|
|
470
491
|
return ``;
|
|
471
492
|
}
|
|
472
493
|
|
|
@@ -476,7 +497,7 @@ ${relatedTools.map(tool => `- [\`${tool}\`](./${tool}.md)`).join('\n')}
|
|
|
476
497
|
private formatParameters(params: Record<string, any>): string {
|
|
477
498
|
return Object.entries(params)
|
|
478
499
|
.map(([key, value]) => `--${key}="${value}"`)
|
|
479
|
-
.join(
|
|
500
|
+
.join(" ");
|
|
480
501
|
}
|
|
481
502
|
|
|
482
503
|
/**
|
|
@@ -485,10 +506,14 @@ ${relatedTools.map(tool => `- [\`${tool}\`](./${tool}.md)`).join('\n')}
|
|
|
485
506
|
private generateAdditionalExamples(examples: any[]): string {
|
|
486
507
|
return `## Additional Examples
|
|
487
508
|
|
|
488
|
-
${examples
|
|
509
|
+
${examples
|
|
510
|
+
.map(
|
|
511
|
+
(example, index) => `### Example ${index + 2}
|
|
489
512
|
\`\`\`json
|
|
490
513
|
${JSON.stringify(example, null, 2)}
|
|
491
514
|
\`\`\`
|
|
492
|
-
|
|
515
|
+
`,
|
|
516
|
+
)
|
|
517
|
+
.join("\n")}`;
|
|
493
518
|
}
|
|
494
519
|
}
|
package/src/docs/index.ts
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Exports all documentation generation components
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
export { DocumentationGenerator } from
|
|
7
|
-
export { MarkdownFormatter } from
|
|
6
|
+
export { DocumentationGenerator } from "./DocumentationGenerator.js";
|
|
7
|
+
export { MarkdownFormatter } from "./MarkdownFormatter.js";
|
|
8
8
|
|
|
9
9
|
export type {
|
|
10
10
|
DocumentationConfig,
|
|
@@ -17,5 +17,5 @@ export type {
|
|
|
17
17
|
TypeDocumentation,
|
|
18
18
|
PropertyDocumentation,
|
|
19
19
|
OpenAPISpecification,
|
|
20
|
-
DocumentationSummary
|
|
21
|
-
} from
|
|
20
|
+
DocumentationSummary,
|
|
21
|
+
} from "./DocumentationGenerator.js";
|
package/src/index.ts
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import { McpServer } from
|
|
2
|
-
import { StdioServerTransport } from
|
|
3
|
-
import { fileURLToPath } from
|
|
4
|
-
import { WordPressClient } from
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
|
+
import { fileURLToPath } from "url";
|
|
4
|
+
import { WordPressClient } from "./client/api.js";
|
|
5
|
+
import {
|
|
6
|
+
ServerConfiguration,
|
|
7
|
+
SiteConfig,
|
|
8
|
+
} from "./config/ServerConfiguration.js";
|
|
9
|
+
import { ToolRegistry } from "./server/ToolRegistry.js";
|
|
10
|
+
import { ConnectionTester } from "./server/ConnectionTester.js";
|
|
11
|
+
import { getErrorMessage } from "./utils/error.js";
|
|
9
12
|
|
|
10
13
|
// --- Constants ---
|
|
11
|
-
const SERVER_VERSION =
|
|
14
|
+
const SERVER_VERSION = "1.1.8"; // Technical debt resolution and modular architecture
|
|
12
15
|
|
|
13
16
|
// --- Main Server Class ---
|
|
14
17
|
class MCPWordPressServer {
|
|
@@ -23,14 +26,14 @@ class MCPWordPressServer {
|
|
|
23
26
|
|
|
24
27
|
if (this.wordpressClients.size === 0) {
|
|
25
28
|
console.error(
|
|
26
|
-
|
|
29
|
+
"No WordPress sites were configured. Please create mcp-wordpress.config.json or set environment variables.",
|
|
27
30
|
);
|
|
28
31
|
process.exit(1);
|
|
29
32
|
}
|
|
30
33
|
|
|
31
34
|
this.server = new McpServer({
|
|
32
|
-
name:
|
|
33
|
-
version: SERVER_VERSION
|
|
35
|
+
name: "mcp-wordpress",
|
|
36
|
+
version: SERVER_VERSION,
|
|
34
37
|
});
|
|
35
38
|
|
|
36
39
|
this.toolRegistry = new ToolRegistry(this.server, this.wordpressClients);
|
|
@@ -39,8 +42,9 @@ class MCPWordPressServer {
|
|
|
39
42
|
|
|
40
43
|
private loadConfiguration(mcpConfig?: any) {
|
|
41
44
|
const serverConfig = ServerConfiguration.getInstance();
|
|
42
|
-
const { clients, configs } =
|
|
43
|
-
|
|
45
|
+
const { clients, configs } =
|
|
46
|
+
serverConfig.loadClientConfigurations(mcpConfig);
|
|
47
|
+
|
|
44
48
|
this.wordpressClients = clients;
|
|
45
49
|
this.siteConfigs = configs;
|
|
46
50
|
}
|
|
@@ -54,26 +58,25 @@ class MCPWordPressServer {
|
|
|
54
58
|
this.initialized = true;
|
|
55
59
|
}
|
|
56
60
|
|
|
57
|
-
|
|
58
61
|
async run() {
|
|
59
62
|
if (!this.initialized) {
|
|
60
63
|
await this.testClientConnections();
|
|
61
64
|
}
|
|
62
|
-
console.error(
|
|
65
|
+
console.error("INFO: Starting MCP WordPress Server...");
|
|
63
66
|
|
|
64
67
|
// Connect to stdio transport
|
|
65
68
|
const transport = new StdioServerTransport();
|
|
66
69
|
await this.server.connect(transport);
|
|
67
70
|
|
|
68
71
|
console.error(
|
|
69
|
-
`INFO: Server started and connected. Tools available for ${this.wordpressClients.size} site(s)
|
|
72
|
+
`INFO: Server started and connected. Tools available for ${this.wordpressClients.size} site(s).`,
|
|
70
73
|
);
|
|
71
74
|
}
|
|
72
75
|
|
|
73
76
|
async shutdown() {
|
|
74
|
-
console.error(
|
|
77
|
+
console.error("INFO: Shutting down MCP WordPress Server...");
|
|
75
78
|
await this.server.close();
|
|
76
|
-
console.error(
|
|
79
|
+
console.error("INFO: Server stopped.");
|
|
77
80
|
}
|
|
78
81
|
}
|
|
79
82
|
|
|
@@ -88,8 +91,8 @@ async function main() {
|
|
|
88
91
|
process.exit(0);
|
|
89
92
|
};
|
|
90
93
|
|
|
91
|
-
process.on(
|
|
92
|
-
process.on(
|
|
94
|
+
process.on("SIGINT", shutdown);
|
|
95
|
+
process.on("SIGTERM", shutdown);
|
|
93
96
|
} catch (error) {
|
|
94
97
|
console.error(`FATAL: Failed to start server: ${getErrorMessage(error)}`);
|
|
95
98
|
process.exit(1);
|