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.
- package/README.md +114 -48
- package/dist/ajv-patch.js +34 -0
- package/dist/cache/CacheInvalidation.d.ts +3 -1
- package/dist/cache/CacheInvalidation.d.ts.map +1 -1
- package/dist/cache/CacheInvalidation.js +10 -4
- package/dist/cache/CacheInvalidation.js.map +1 -1
- package/dist/cache/CacheManager.d.ts +3 -2
- package/dist/cache/CacheManager.d.ts.map +1 -1
- package/dist/cache/CacheManager.js +11 -3
- package/dist/cache/CacheManager.js.map +1 -1
- package/dist/cache/HttpCacheWrapper.d.ts +7 -6
- package/dist/cache/HttpCacheWrapper.d.ts.map +1 -1
- package/dist/cache/HttpCacheWrapper.js +8 -5
- package/dist/cache/HttpCacheWrapper.js.map +1 -1
- package/dist/cache/__tests__/HttpCacheWrapper.test.js +6 -5
- package/dist/cache/__tests__/HttpCacheWrapper.test.js.map +1 -1
- package/dist/cache/index.d.ts +3 -3
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +1 -1
- package/dist/cache/index.js.map +1 -1
- package/dist/client/CachedWordPressClient.d.ts +23 -9
- package/dist/client/CachedWordPressClient.d.ts.map +1 -1
- package/dist/client/CachedWordPressClient.js +4 -1
- package/dist/client/CachedWordPressClient.js.map +1 -1
- package/dist/client/MockWordPressClient.d.ts +2 -1
- package/dist/client/MockWordPressClient.d.ts.map +1 -1
- package/dist/client/MockWordPressClient.js +3 -1
- package/dist/client/MockWordPressClient.js.map +1 -1
- package/dist/client/api.d.ts +17 -13
- package/dist/client/api.d.ts.map +1 -1
- package/dist/client/api.js +135 -30
- package/dist/client/api.js.map +1 -1
- package/dist/client/auth.d.ts.map +1 -1
- package/dist/client/auth.js +2 -3
- package/dist/client/auth.js.map +1 -1
- package/dist/client/managers/AuthenticationManager.d.ts +55 -2
- package/dist/client/managers/AuthenticationManager.d.ts.map +1 -1
- package/dist/client/managers/AuthenticationManager.js +269 -71
- package/dist/client/managers/AuthenticationManager.js.map +1 -1
- package/dist/client/managers/BaseManager.d.ts +3 -3
- package/dist/client/managers/BaseManager.d.ts.map +1 -1
- package/dist/client/managers/BaseManager.js +11 -5
- package/dist/client/managers/BaseManager.js.map +1 -1
- package/dist/client/managers/RequestManager.d.ts +2 -2
- package/dist/client/managers/RequestManager.d.ts.map +1 -1
- package/dist/client/managers/RequestManager.js +25 -12
- package/dist/client/managers/RequestManager.js.map +1 -1
- package/dist/config/Config.d.ts +155 -0
- package/dist/config/Config.d.ts.map +1 -0
- package/dist/config/Config.js +215 -0
- package/dist/config/Config.js.map +1 -0
- package/dist/config/ConfigurationSchema.d.ts +21 -21
- package/dist/config/ConfigurationSchema.d.ts.map +1 -1
- package/dist/config/ConfigurationSchema.js +19 -2
- package/dist/config/ConfigurationSchema.js.map +1 -1
- package/dist/config/ServerConfiguration.d.ts +2 -1
- package/dist/config/ServerConfiguration.d.ts.map +1 -1
- package/dist/config/ServerConfiguration.js +50 -41
- package/dist/config/ServerConfiguration.js.map +1 -1
- package/dist/docs/DocumentationGenerator.d.ts +9 -8
- package/dist/docs/DocumentationGenerator.d.ts.map +1 -1
- package/dist/docs/DocumentationGenerator.js +10 -7
- package/dist/docs/DocumentationGenerator.js.map +1 -1
- package/dist/docs/MarkdownFormatter.d.ts.map +1 -1
- package/dist/docs/MarkdownFormatter.js +3 -2
- package/dist/docs/MarkdownFormatter.js.map +1 -1
- package/dist/dxt-entry.cjs +81 -0
- package/dist/dxt-entry.js +15 -14
- package/dist/dxt-entry.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -21
- package/dist/index.js.map +1 -1
- package/dist/performance/MetricsCollector.d.ts +13 -7
- package/dist/performance/MetricsCollector.d.ts.map +1 -1
- package/dist/performance/MetricsCollector.js +69 -27
- package/dist/performance/MetricsCollector.js.map +1 -1
- package/dist/performance/PerformanceAnalytics.d.ts +8 -2
- package/dist/performance/PerformanceAnalytics.d.ts.map +1 -1
- package/dist/performance/PerformanceAnalytics.js +17 -47
- package/dist/performance/PerformanceAnalytics.js.map +1 -1
- package/dist/performance/PerformanceMonitor.d.ts +2 -1
- package/dist/performance/PerformanceMonitor.d.ts.map +1 -1
- package/dist/performance/PerformanceMonitor.js +12 -13
- package/dist/performance/PerformanceMonitor.js.map +1 -1
- package/dist/performance/index.d.ts +2 -2
- package/dist/performance/index.d.ts.map +1 -1
- package/dist/security/AISecurityScanner.d.ts +1 -0
- package/dist/security/AISecurityScanner.d.ts.map +1 -1
- package/dist/security/AISecurityScanner.js +22 -12
- package/dist/security/AISecurityScanner.js.map +1 -1
- package/dist/security/AutomatedRemediation.d.ts +4 -3
- package/dist/security/AutomatedRemediation.d.ts.map +1 -1
- package/dist/security/AutomatedRemediation.js +46 -15
- package/dist/security/AutomatedRemediation.js.map +1 -1
- package/dist/security/InputValidator.d.ts +13 -9
- package/dist/security/InputValidator.d.ts.map +1 -1
- package/dist/security/InputValidator.js +4 -2
- package/dist/security/InputValidator.js.map +1 -1
- package/dist/security/SecurityCIPipeline.d.ts +1 -1
- package/dist/security/SecurityCIPipeline.d.ts.map +1 -1
- package/dist/security/SecurityCIPipeline.js +38 -29
- package/dist/security/SecurityCIPipeline.js.map +1 -1
- package/dist/security/SecurityConfig.d.ts +3 -3
- package/dist/security/SecurityConfig.d.ts.map +1 -1
- package/dist/security/SecurityConfig.js +13 -9
- package/dist/security/SecurityConfig.js.map +1 -1
- package/dist/security/SecurityConfigManager.d.ts +2 -2
- package/dist/security/SecurityConfigManager.d.ts.map +1 -1
- package/dist/security/SecurityConfigManager.js +20 -15
- package/dist/security/SecurityConfigManager.js.map +1 -1
- package/dist/security/SecurityMonitoring.d.ts +2 -2
- package/dist/security/SecurityMonitoring.d.ts.map +1 -1
- package/dist/security/SecurityMonitoring.js +19 -17
- package/dist/security/SecurityMonitoring.js.map +1 -1
- package/dist/security/SecurityReviewer.d.ts.map +1 -1
- package/dist/security/SecurityReviewer.js +10 -7
- package/dist/security/SecurityReviewer.js.map +1 -1
- package/dist/security/index.d.ts +24 -23
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +52 -23
- package/dist/security/index.js.map +1 -1
- package/dist/server/ConnectionTester.d.ts +12 -4
- package/dist/server/ConnectionTester.d.ts.map +1 -1
- package/dist/server/ConnectionTester.js +96 -22
- 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 +10 -5
- package/dist/server/ToolRegistry.js.map +1 -1
- package/dist/tools/BaseToolManager.d.ts +47 -11
- package/dist/tools/BaseToolManager.d.ts.map +1 -1
- package/dist/tools/BaseToolManager.js +168 -29
- package/dist/tools/BaseToolManager.js.map +1 -1
- package/dist/tools/auth.d.ts +16 -10
- package/dist/tools/auth.d.ts.map +1 -1
- package/dist/tools/auth.js +3 -2
- package/dist/tools/auth.js.map +1 -1
- package/dist/tools/cache.d.ts +30 -30
- package/dist/tools/cache.d.ts.map +1 -1
- package/dist/tools/cache.js +1 -6
- package/dist/tools/cache.js.map +1 -1
- package/dist/tools/comments.d.ts +20 -20
- package/dist/tools/comments.d.ts.map +1 -1
- package/dist/tools/comments.js +16 -9
- package/dist/tools/comments.js.map +1 -1
- package/dist/tools/media.d.ts +18 -16
- package/dist/tools/media.d.ts.map +1 -1
- package/dist/tools/media.js +16 -15
- package/dist/tools/media.js.map +1 -1
- package/dist/tools/pages.d.ts +19 -17
- package/dist/tools/pages.d.ts.map +1 -1
- package/dist/tools/pages.js +16 -12
- package/dist/tools/pages.js.map +1 -1
- package/dist/tools/performance.d.ts +11 -1
- package/dist/tools/performance.d.ts.map +1 -1
- package/dist/tools/performance.js +67 -34
- package/dist/tools/performance.js.map +1 -1
- package/dist/tools/posts/PostHandlers.d.ts +46 -0
- package/dist/tools/posts/PostHandlers.d.ts.map +1 -0
- package/dist/tools/posts/PostHandlers.js +400 -0
- package/dist/tools/posts/PostHandlers.js.map +1 -0
- package/dist/tools/posts/PostToolDefinitions.d.ts +37 -0
- package/dist/tools/posts/PostToolDefinitions.d.ts.map +1 -0
- package/dist/tools/posts/PostToolDefinitions.js +236 -0
- package/dist/tools/posts/PostToolDefinitions.js.map +1 -0
- package/dist/tools/posts/index.d.ts +138 -0
- package/dist/tools/posts/index.d.ts.map +1 -0
- package/dist/tools/posts/index.js +163 -0
- package/dist/tools/posts/index.js.map +1 -0
- package/dist/tools/posts.d.ts +10 -246
- package/dist/tools/posts.d.ts.map +1 -1
- package/dist/tools/posts.js +11 -723
- package/dist/tools/posts.js.map +1 -1
- package/dist/tools/site.d.ts +19 -18
- package/dist/tools/site.d.ts.map +1 -1
- package/dist/tools/site.js +14 -10
- package/dist/tools/site.js.map +1 -1
- package/dist/tools/taxonomies.d.ts +23 -24
- package/dist/tools/taxonomies.d.ts.map +1 -1
- package/dist/tools/taxonomies.js +24 -18
- package/dist/tools/taxonomies.js.map +1 -1
- package/dist/tools/users.d.ts +20 -15
- package/dist/tools/users.d.ts.map +1 -1
- package/dist/tools/users.js +12 -8
- package/dist/tools/users.js.map +1 -1
- package/dist/types/client.d.ts +48 -41
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/client.js +30 -5
- package/dist/types/client.js.map +1 -1
- package/dist/types/enhanced.d.ts +237 -0
- package/dist/types/enhanced.d.ts.map +1 -0
- package/dist/types/enhanced.js +49 -0
- package/dist/types/enhanced.js.map +1 -0
- package/dist/types/index.d.ts +15 -12
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/mcp.d.ts +12 -12
- package/dist/types/mcp.d.ts.map +1 -1
- package/dist/types/requests.d.ts +322 -0
- package/dist/types/requests.d.ts.map +1 -0
- package/dist/types/requests.js +8 -0
- package/dist/types/requests.js.map +1 -0
- package/dist/types/tools.d.ts +506 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +8 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/types/wordpress.d.ts +43 -15
- package/dist/types/wordpress.d.ts.map +1 -1
- package/dist/types/wordpress.js +8 -1
- package/dist/types/wordpress.js.map +1 -1
- package/dist/utils/debug.d.ts +19 -11
- package/dist/utils/debug.d.ts.map +1 -1
- package/dist/utils/debug.js +46 -10
- package/dist/utils/debug.js.map +1 -1
- package/dist/utils/enhancedError.d.ts +8 -8
- package/dist/utils/enhancedError.d.ts.map +1 -1
- package/dist/utils/enhancedError.js.map +1 -1
- package/dist/utils/error.d.ts +2 -4
- package/dist/utils/error.d.ts.map +1 -1
- package/dist/utils/error.js +42 -5
- package/dist/utils/error.js.map +1 -1
- package/dist/utils/logger.d.ts +106 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +280 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/streaming.d.ts +9 -9
- package/dist/utils/streaming.d.ts.map +1 -1
- package/dist/utils/streaming.js +71 -52
- package/dist/utils/streaming.js.map +1 -1
- package/dist/utils/toolWrapper.d.ts +9 -7
- package/dist/utils/toolWrapper.d.ts.map +1 -1
- package/dist/utils/toolWrapper.js.map +1 -1
- package/dist/utils/validation/core.d.ts +21 -0
- package/dist/utils/validation/core.d.ts.map +1 -0
- package/dist/utils/validation/core.js +71 -0
- package/dist/utils/validation/core.js.map +1 -0
- package/dist/utils/validation/index.d.ts +25 -0
- package/dist/utils/validation/index.d.ts.map +1 -0
- package/dist/utils/validation/index.js +29 -0
- package/dist/utils/validation/index.js.map +1 -0
- package/dist/utils/validation/network.d.ts +19 -0
- package/dist/utils/validation/network.d.ts.map +1 -0
- package/dist/utils/validation/network.js +93 -0
- package/dist/utils/validation/network.js.map +1 -0
- package/dist/utils/validation/rateLimit.d.ts +21 -0
- package/dist/utils/validation/rateLimit.d.ts.map +1 -0
- package/dist/utils/validation/rateLimit.js +43 -0
- package/dist/utils/validation/rateLimit.js.map +1 -0
- package/dist/utils/validation/security.d.ts +29 -0
- package/dist/utils/validation/security.d.ts.map +1 -0
- package/dist/utils/validation/security.js +327 -0
- package/dist/utils/validation/security.js.map +1 -0
- package/dist/utils/validation/wordpress.d.ts +31 -0
- package/dist/utils/validation/wordpress.d.ts.map +1 -0
- package/dist/utils/validation/wordpress.js +146 -0
- package/dist/utils/validation/wordpress.js.map +1 -0
- package/dist/utils/validation.d.ts +13 -82
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +25 -343
- package/dist/utils/validation.js.map +1 -1
- package/docs/BADGE_UPDATES.md +132 -0
- package/docs/CI_CD_IMPROVEMENTS.md +191 -0
- package/docs/INCREMENTAL_COVERAGE.md +183 -0
- package/docs/api/README.md +3 -1
- package/docs/api/openapi.json +5 -1
- package/docs/api/summary.json +1 -1
- package/docs/api/tools/wp_create_post.md +12 -14
- package/docs/examples/claude-desktop-config.md +1 -1
- package/docs/examples/docker-production.md +100 -93
- package/docs/examples/multi-site-setup.md +5 -4
- package/docs/examples/single-site-setup.md +3 -4
- package/docs/examples/use-case-workflows.md +4 -5
- package/docs/integrations/claude-desktop.md +31 -31
- package/docs/integrations/cline.md +4 -4
- package/docs/integrations/vs-code.md +9 -8
- package/docs/user-guides/SMITHERY_SETUP.md +10 -10
- package/package.json +44 -25
- package/src/cache/CacheInvalidation.ts +12 -5
- package/src/cache/CacheManager.ts +18 -15
- package/src/cache/HttpCacheWrapper.ts +30 -59
- package/src/cache/__tests__/HttpCacheWrapper.test.ts +6 -5
- package/src/cache/index.ts +3 -14
- package/src/client/CachedWordPressClient.ts +32 -30
- package/src/client/MockWordPressClient.ts +4 -2
- package/src/client/api.ts +186 -64
- package/src/client/auth.ts +15 -40
- package/src/client/managers/AuthenticationManager.ts +337 -77
- package/src/client/managers/BaseManager.ts +18 -30
- package/src/client/managers/RequestManager.ts +39 -44
- package/src/config/Config.ts +308 -0
- package/src/config/ConfigurationSchema.ts +23 -2
- package/src/config/ServerConfiguration.ts +51 -47
- package/src/docs/DocumentationGenerator.ts +50 -39
- package/src/docs/MarkdownFormatter.ts +19 -29
- package/src/dxt-entry.cjs +26 -16
- package/src/dxt-entry.ts +17 -27
- package/src/index.ts +42 -28
- package/src/performance/MetricsCollector.ts +108 -86
- package/src/performance/PerformanceAnalytics.ts +69 -164
- package/src/performance/PerformanceMonitor.ts +32 -47
- package/src/performance/index.ts +2 -10
- package/src/security/AISecurityScanner.ts +22 -12
- package/src/security/AutomatedRemediation.ts +49 -18
- package/src/security/InputValidator.ts +9 -6
- package/src/security/SecurityCIPipeline.ts +53 -37
- package/src/security/SecurityConfig.ts +22 -22
- package/src/security/SecurityConfigManager.ts +23 -19
- package/src/security/SecurityMonitoring.ts +24 -21
- package/src/security/SecurityReviewer.ts +10 -7
- package/src/security/index.ts +64 -29
- package/src/server/ConnectionTester.ts +120 -31
- package/src/server/ToolRegistry.ts +31 -21
- package/src/tools/BaseToolManager.ts +286 -33
- package/src/tools/auth.ts +20 -8
- package/src/tools/cache.ts +5 -15
- package/src/tools/comments.ts +34 -48
- package/src/tools/media.ts +41 -53
- package/src/tools/pages.ts +32 -54
- package/src/tools/performance.ts +141 -176
- package/src/tools/posts/PostHandlers.ts +474 -0
- package/src/tools/posts/PostToolDefinitions.ts +250 -0
- package/src/tools/posts/index.ts +192 -0
- package/src/tools/posts.ts +24 -780
- package/src/tools/site.ts +34 -19
- package/src/tools/taxonomies.ts +41 -57
- package/src/tools/users.ts +28 -16
- package/src/types/client.ts +114 -138
- package/src/types/enhanced.ts +318 -0
- package/src/types/index.ts +51 -30
- package/src/types/mcp.ts +20 -42
- package/src/types/requests.ts +378 -0
- package/src/types/tools.ts +608 -0
- package/src/types/wordpress.ts +56 -34
- package/src/utils/debug.ts +77 -59
- package/src/utils/enhancedError.ts +8 -8
- package/src/utils/error.ts +53 -31
- package/src/utils/logger.ts +351 -0
- package/src/utils/streaming.ts +86 -68
- package/src/utils/toolWrapper.ts +10 -12
- package/src/utils/validation/core.ts +108 -0
- package/src/utils/validation/index.ts +36 -0
- package/src/utils/validation/network.ts +132 -0
- package/src/utils/validation/rateLimit.ts +54 -0
- package/src/utils/validation/security.ts +361 -0
- package/src/utils/validation/wordpress.ts +180 -0
- package/src/utils/validation.ts +47 -470
package/src/tools/site.ts
CHANGED
|
@@ -11,7 +11,12 @@ export class SiteTools {
|
|
|
11
11
|
* Retrieves the list of site management tools.
|
|
12
12
|
* @returns An array of MCPTool definitions.
|
|
13
13
|
*/
|
|
14
|
-
public getTools():
|
|
14
|
+
public getTools(): Array<{
|
|
15
|
+
name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
parameters?: Array<{ name: string; type?: string; description?: string; required?: boolean; enum?: string[]; items?: unknown }>;
|
|
18
|
+
handler: (client: WordPressClient, params: Record<string, unknown>) => Promise<unknown>;
|
|
19
|
+
}> {
|
|
15
20
|
return [
|
|
16
21
|
{
|
|
17
22
|
name: "wp_get_site_settings",
|
|
@@ -121,7 +126,10 @@ export class SiteTools {
|
|
|
121
126
|
];
|
|
122
127
|
}
|
|
123
128
|
|
|
124
|
-
public async handleGetSiteSettings(
|
|
129
|
+
public async handleGetSiteSettings(
|
|
130
|
+
client: WordPressClient,
|
|
131
|
+
_params: Record<string, unknown>,
|
|
132
|
+
): Promise<unknown> {
|
|
125
133
|
try {
|
|
126
134
|
const settings = await client.getSiteSettings();
|
|
127
135
|
const siteUrl = client.getSiteUrl();
|
|
@@ -179,7 +187,10 @@ export class SiteTools {
|
|
|
179
187
|
}
|
|
180
188
|
}
|
|
181
189
|
|
|
182
|
-
public async handleUpdateSiteSettings(
|
|
190
|
+
public async handleUpdateSiteSettings(
|
|
191
|
+
client: WordPressClient,
|
|
192
|
+
params: Record<string, unknown>,
|
|
193
|
+
): Promise<unknown> {
|
|
183
194
|
try {
|
|
184
195
|
const updatedSettings = await client.updateSiteSettings(params);
|
|
185
196
|
return `✅ Site settings updated successfully. New title: ${updatedSettings.title}`;
|
|
@@ -190,15 +201,16 @@ export class SiteTools {
|
|
|
190
201
|
|
|
191
202
|
public async handleSearchSite(
|
|
192
203
|
client: WordPressClient,
|
|
193
|
-
params:
|
|
194
|
-
): Promise<
|
|
204
|
+
params: Record<string, unknown>,
|
|
205
|
+
): Promise<unknown> {
|
|
195
206
|
try {
|
|
196
|
-
const
|
|
207
|
+
const { term, type } = params as { term: string; type?: "posts" | "pages" | "media" };
|
|
208
|
+
const results = await client.search(term, type ? [type] : undefined);
|
|
197
209
|
if (results.length === 0) {
|
|
198
|
-
return `No results found for "${
|
|
210
|
+
return `No results found for "${term}".`;
|
|
199
211
|
}
|
|
200
212
|
const content =
|
|
201
|
-
`Found ${results.length} results for "${
|
|
213
|
+
`Found ${results.length} results for "${term}":\n\n` +
|
|
202
214
|
results.map((r) => `- [${r.type}] **${r.title}**\n Link: ${r.url}`).join("\n");
|
|
203
215
|
return content;
|
|
204
216
|
} catch (error) {
|
|
@@ -206,14 +218,15 @@ export class SiteTools {
|
|
|
206
218
|
}
|
|
207
219
|
}
|
|
208
220
|
|
|
209
|
-
public async handleGetApplicationPasswords(client: WordPressClient, params:
|
|
221
|
+
public async handleGetApplicationPasswords(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
210
222
|
try {
|
|
211
|
-
const
|
|
223
|
+
const { user_id } = params as { user_id: number };
|
|
224
|
+
const passwords = await client.getApplicationPasswords(user_id);
|
|
212
225
|
if (passwords.length === 0) {
|
|
213
|
-
return `No application passwords found for user ID ${
|
|
226
|
+
return `No application passwords found for user ID ${user_id}.`;
|
|
214
227
|
}
|
|
215
228
|
const content =
|
|
216
|
-
`Found ${passwords.length} application passwords for user ID ${
|
|
229
|
+
`Found ${passwords.length} application passwords for user ID ${user_id}:\n\n` +
|
|
217
230
|
passwords
|
|
218
231
|
.map(
|
|
219
232
|
(p: WordPressApplicationPassword) =>
|
|
@@ -228,10 +241,11 @@ export class SiteTools {
|
|
|
228
241
|
|
|
229
242
|
public async handleCreateApplicationPassword(
|
|
230
243
|
client: WordPressClient,
|
|
231
|
-
params:
|
|
232
|
-
): Promise<
|
|
244
|
+
params: Record<string, unknown>,
|
|
245
|
+
): Promise<unknown> {
|
|
233
246
|
try {
|
|
234
|
-
const
|
|
247
|
+
const { user_id, app_name } = params as { user_id: number; app_name: string };
|
|
248
|
+
const result = await client.createApplicationPassword(user_id, app_name);
|
|
235
249
|
const content =
|
|
236
250
|
"✅ **Application password created successfully!**\n\n" +
|
|
237
251
|
`**Name:** ${result.name}\n` +
|
|
@@ -245,11 +259,12 @@ export class SiteTools {
|
|
|
245
259
|
|
|
246
260
|
public async handleDeleteApplicationPassword(
|
|
247
261
|
client: WordPressClient,
|
|
248
|
-
params:
|
|
249
|
-
): Promise<
|
|
262
|
+
params: Record<string, unknown>,
|
|
263
|
+
): Promise<unknown> {
|
|
250
264
|
try {
|
|
251
|
-
|
|
252
|
-
|
|
265
|
+
const { user_id, uuid } = params as { user_id: number; uuid: string };
|
|
266
|
+
await client.deleteApplicationPassword(user_id, uuid);
|
|
267
|
+
return `✅ Application password with UUID ${uuid} has been revoked.`;
|
|
253
268
|
} catch (error) {
|
|
254
269
|
throw new Error(`Failed to delete application password: ${getErrorMessage(error)}`);
|
|
255
270
|
}
|
package/src/tools/taxonomies.ts
CHANGED
|
@@ -16,7 +16,12 @@ export class TaxonomyTools {
|
|
|
16
16
|
* Retrieves the list of taxonomy management tools.
|
|
17
17
|
* @returns An array of MCPTool definitions.
|
|
18
18
|
*/
|
|
19
|
-
public getTools():
|
|
19
|
+
public getTools(): Array<{
|
|
20
|
+
name: string;
|
|
21
|
+
description: string;
|
|
22
|
+
parameters?: Array<{ name: string; type?: string; description?: string; required?: boolean; enum?: string[]; items?: unknown }>;
|
|
23
|
+
handler: (client: WordPressClient, params: Record<string, unknown>) => Promise<unknown>;
|
|
24
|
+
}> {
|
|
20
25
|
return [
|
|
21
26
|
// Categories
|
|
22
27
|
{
|
|
@@ -171,32 +176,26 @@ export class TaxonomyTools {
|
|
|
171
176
|
];
|
|
172
177
|
}
|
|
173
178
|
|
|
174
|
-
public async handleListCategories(
|
|
175
|
-
|
|
176
|
-
params: any,
|
|
177
|
-
): Promise<any> {
|
|
179
|
+
public async handleListCategories(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
180
|
+
const queryParams = params as Record<string, string | number | boolean>;
|
|
178
181
|
try {
|
|
179
|
-
const categories = await client.getCategories(
|
|
182
|
+
const categories = await client.getCategories(queryParams);
|
|
180
183
|
if (categories.length === 0) {
|
|
181
184
|
return "No categories found.";
|
|
182
185
|
}
|
|
183
186
|
const content =
|
|
184
187
|
`Found ${categories.length} categories:\n\n` +
|
|
185
|
-
categories
|
|
186
|
-
.map((c) => `- ID ${c.id}: **${c.name}** (Posts: ${c.count})`)
|
|
187
|
-
.join("\n");
|
|
188
|
+
categories.map((c) => `- ID ${c.id}: **${c.name}** (Posts: ${c.count})`).join("\n");
|
|
188
189
|
return content;
|
|
189
190
|
} catch (error) {
|
|
190
191
|
throw new Error(`Failed to list categories: ${getErrorMessage(error)}`);
|
|
191
192
|
}
|
|
192
193
|
}
|
|
193
194
|
|
|
194
|
-
public async handleGetCategory(
|
|
195
|
-
|
|
196
|
-
params: { id: number },
|
|
197
|
-
): Promise<any> {
|
|
195
|
+
public async handleGetCategory(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
196
|
+
const { id } = params as { id: number };
|
|
198
197
|
try {
|
|
199
|
-
const category = await client.getCategory(
|
|
198
|
+
const category = await client.getCategory(id);
|
|
200
199
|
const content =
|
|
201
200
|
`**Category Details (ID: ${category.id})**\n\n` +
|
|
202
201
|
`- **Name:** ${category.name}\n` +
|
|
@@ -209,12 +208,10 @@ export class TaxonomyTools {
|
|
|
209
208
|
}
|
|
210
209
|
}
|
|
211
210
|
|
|
212
|
-
public async handleCreateCategory(
|
|
213
|
-
|
|
214
|
-
params: CreateCategoryRequest,
|
|
215
|
-
): Promise<any> {
|
|
211
|
+
public async handleCreateCategory(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
212
|
+
const createParams = params as unknown as CreateCategoryRequest;
|
|
216
213
|
try {
|
|
217
|
-
const category = await client.createCategory(
|
|
214
|
+
const category = await client.createCategory(createParams);
|
|
218
215
|
return `✅ Category "${category.name}" created successfully with ID: ${category.id}.`;
|
|
219
216
|
} catch (error) {
|
|
220
217
|
throw new Error(`Failed to create category: ${getErrorMessage(error)}`);
|
|
@@ -223,54 +220,47 @@ export class TaxonomyTools {
|
|
|
223
220
|
|
|
224
221
|
public async handleUpdateCategory(
|
|
225
222
|
client: WordPressClient,
|
|
226
|
-
params:
|
|
227
|
-
): Promise<
|
|
223
|
+
params: Record<string, unknown>,
|
|
224
|
+
): Promise<unknown> {
|
|
225
|
+
const updateParams = params as unknown as UpdateCategoryRequest;
|
|
228
226
|
try {
|
|
229
|
-
const category = await client.updateCategory(
|
|
227
|
+
const category = await client.updateCategory(updateParams);
|
|
230
228
|
return `✅ Category ${category.id} updated successfully.`;
|
|
231
229
|
} catch (error) {
|
|
232
230
|
throw new Error(`Failed to update category: ${getErrorMessage(error)}`);
|
|
233
231
|
}
|
|
234
232
|
}
|
|
235
233
|
|
|
236
|
-
public async handleDeleteCategory(
|
|
237
|
-
|
|
238
|
-
params: { id: number },
|
|
239
|
-
): Promise<any> {
|
|
234
|
+
public async handleDeleteCategory(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
235
|
+
const { id } = params as { id: number };
|
|
240
236
|
try {
|
|
241
|
-
await client.deleteCategory(
|
|
242
|
-
return `✅ Category ${
|
|
237
|
+
await client.deleteCategory(id);
|
|
238
|
+
return `✅ Category ${id} has been deleted.`;
|
|
243
239
|
} catch (error) {
|
|
244
240
|
throw new Error(`Failed to delete category: ${getErrorMessage(error)}`);
|
|
245
241
|
}
|
|
246
242
|
}
|
|
247
243
|
|
|
248
|
-
public async handleListTags(
|
|
249
|
-
|
|
250
|
-
params: any,
|
|
251
|
-
): Promise<any> {
|
|
244
|
+
public async handleListTags(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
245
|
+
const queryParams = params as Record<string, string | number | boolean>;
|
|
252
246
|
try {
|
|
253
|
-
const tags = await client.getTags(
|
|
247
|
+
const tags = await client.getTags(queryParams);
|
|
254
248
|
if (tags.length === 0) {
|
|
255
249
|
return "No tags found.";
|
|
256
250
|
}
|
|
257
251
|
const content =
|
|
258
252
|
`Found ${tags.length} tags:\n\n` +
|
|
259
|
-
tags
|
|
260
|
-
.map((t) => `- ID ${t.id}: **${t.name}** (Posts: ${t.count})`)
|
|
261
|
-
.join("\n");
|
|
253
|
+
tags.map((t) => `- ID ${t.id}: **${t.name}** (Posts: ${t.count})`).join("\n");
|
|
262
254
|
return content;
|
|
263
255
|
} catch (error) {
|
|
264
256
|
throw new Error(`Failed to list tags: ${getErrorMessage(error)}`);
|
|
265
257
|
}
|
|
266
258
|
}
|
|
267
259
|
|
|
268
|
-
public async handleGetTag(
|
|
269
|
-
|
|
270
|
-
params: { id: number },
|
|
271
|
-
): Promise<any> {
|
|
260
|
+
public async handleGetTag(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
261
|
+
const { id } = params as { id: number };
|
|
272
262
|
try {
|
|
273
|
-
const tag = await client.getTag(
|
|
263
|
+
const tag = await client.getTag(id);
|
|
274
264
|
const content =
|
|
275
265
|
`**Tag Details (ID: ${tag.id})**\n\n` +
|
|
276
266
|
`- **Name:** ${tag.name}\n` +
|
|
@@ -282,37 +272,31 @@ export class TaxonomyTools {
|
|
|
282
272
|
}
|
|
283
273
|
}
|
|
284
274
|
|
|
285
|
-
public async handleCreateTag(
|
|
286
|
-
|
|
287
|
-
params: CreateTagRequest,
|
|
288
|
-
): Promise<any> {
|
|
275
|
+
public async handleCreateTag(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
276
|
+
const createParams = params as unknown as CreateTagRequest;
|
|
289
277
|
try {
|
|
290
|
-
const tag = await client.createTag(
|
|
278
|
+
const tag = await client.createTag(createParams);
|
|
291
279
|
return `✅ Tag "${tag.name}" created successfully with ID: ${tag.id}.`;
|
|
292
280
|
} catch (error) {
|
|
293
281
|
throw new Error(`Failed to create tag: ${getErrorMessage(error)}`);
|
|
294
282
|
}
|
|
295
283
|
}
|
|
296
284
|
|
|
297
|
-
public async handleUpdateTag(
|
|
298
|
-
|
|
299
|
-
params: UpdateTagRequest & { id: number },
|
|
300
|
-
): Promise<any> {
|
|
285
|
+
public async handleUpdateTag(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
286
|
+
const updateParams = params as unknown as UpdateTagRequest;
|
|
301
287
|
try {
|
|
302
|
-
const tag = await client.updateTag(
|
|
288
|
+
const tag = await client.updateTag(updateParams);
|
|
303
289
|
return `✅ Tag ${tag.id} updated successfully.`;
|
|
304
290
|
} catch (error) {
|
|
305
291
|
throw new Error(`Failed to update tag: ${getErrorMessage(error)}`);
|
|
306
292
|
}
|
|
307
293
|
}
|
|
308
294
|
|
|
309
|
-
public async handleDeleteTag(
|
|
310
|
-
|
|
311
|
-
params: { id: number },
|
|
312
|
-
): Promise<any> {
|
|
295
|
+
public async handleDeleteTag(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
296
|
+
const { id } = params as { id: number };
|
|
313
297
|
try {
|
|
314
|
-
await client.deleteTag(
|
|
315
|
-
return `✅ Tag ${
|
|
298
|
+
await client.deleteTag(id);
|
|
299
|
+
return `✅ Tag ${id} has been deleted.`;
|
|
316
300
|
} catch (error) {
|
|
317
301
|
throw new Error(`Failed to delete tag: ${getErrorMessage(error)}`);
|
|
318
302
|
}
|
package/src/tools/users.ts
CHANGED
|
@@ -12,7 +12,12 @@ export class UserTools {
|
|
|
12
12
|
* Retrieves the list of user management tools.
|
|
13
13
|
* @returns An array of MCPTool definitions.
|
|
14
14
|
*/
|
|
15
|
-
public getTools():
|
|
15
|
+
public getTools(): Array<{
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
parameters?: Array<{ name: string; type?: string; description?: string; required?: boolean; enum?: string[]; items?: unknown }>;
|
|
19
|
+
handler: (client: WordPressClient, params: Record<string, unknown>) => Promise<unknown>;
|
|
20
|
+
}> {
|
|
16
21
|
return [
|
|
17
22
|
{
|
|
18
23
|
name: "wp_list_users",
|
|
@@ -139,7 +144,7 @@ export class UserTools {
|
|
|
139
144
|
];
|
|
140
145
|
}
|
|
141
146
|
|
|
142
|
-
public async handleListUsers(client: WordPressClient, params: UserQueryParams): Promise<
|
|
147
|
+
public async handleListUsers(client: WordPressClient, params: UserQueryParams): Promise<unknown> {
|
|
143
148
|
try {
|
|
144
149
|
const users = await client.getUsers(params);
|
|
145
150
|
if (users.length === 0) {
|
|
@@ -148,7 +153,7 @@ export class UserTools {
|
|
|
148
153
|
|
|
149
154
|
// Use streaming for large user result sets (>30 users)
|
|
150
155
|
if (users.length > 30) {
|
|
151
|
-
const streamResults: StreamingResult<
|
|
156
|
+
const streamResults: StreamingResult<unknown>[] = [];
|
|
152
157
|
|
|
153
158
|
for await (const result of WordPressDataStreamer.streamUsers(users, {
|
|
154
159
|
includeRoles: true,
|
|
@@ -218,9 +223,10 @@ export class UserTools {
|
|
|
218
223
|
}
|
|
219
224
|
}
|
|
220
225
|
|
|
221
|
-
public async handleGetUser(client: WordPressClient, params:
|
|
226
|
+
public async handleGetUser(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
227
|
+
const { id } = params as { id: number };
|
|
222
228
|
try {
|
|
223
|
-
const user = await client.getUser(
|
|
229
|
+
const user = await client.getUser(id);
|
|
224
230
|
const content =
|
|
225
231
|
`**User Details (ID: ${user.id})**\n\n` +
|
|
226
232
|
`- **Name:** ${user.name}\n` +
|
|
@@ -233,7 +239,10 @@ export class UserTools {
|
|
|
233
239
|
}
|
|
234
240
|
}
|
|
235
241
|
|
|
236
|
-
public async handleGetCurrentUser(
|
|
242
|
+
public async handleGetCurrentUser(
|
|
243
|
+
client: WordPressClient,
|
|
244
|
+
params: Record<string, unknown>,
|
|
245
|
+
): Promise<Record<string, unknown>> {
|
|
237
246
|
try {
|
|
238
247
|
const user = await client.getCurrentUser();
|
|
239
248
|
const siteUrl = client.getSiteUrl();
|
|
@@ -290,36 +299,39 @@ export class UserTools {
|
|
|
290
299
|
`- **Key Capabilities:** ${userCapabilities || "None"}\n` +
|
|
291
300
|
`- **Profile Link:** ${user.link || `${siteUrl}/wp-admin/profile.php`}`;
|
|
292
301
|
|
|
293
|
-
return content;
|
|
302
|
+
return { content };
|
|
294
303
|
} catch (error) {
|
|
295
304
|
throw new Error(`Failed to get current user: ${getErrorMessage(error)}`);
|
|
296
305
|
}
|
|
297
306
|
}
|
|
298
307
|
|
|
299
|
-
public async handleCreateUser(client: WordPressClient, params:
|
|
308
|
+
public async handleCreateUser(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
309
|
+
const createParams = params as unknown as CreateUserRequest;
|
|
300
310
|
try {
|
|
301
|
-
const user = await client.createUser(
|
|
311
|
+
const user = await client.createUser(createParams);
|
|
302
312
|
return `✅ User "${user.name}" created successfully with ID: ${user.id}.`;
|
|
303
313
|
} catch (error) {
|
|
304
314
|
throw new Error(`Failed to create user: ${getErrorMessage(error)}`);
|
|
305
315
|
}
|
|
306
316
|
}
|
|
307
317
|
|
|
308
|
-
public async handleUpdateUser(client: WordPressClient, params:
|
|
318
|
+
public async handleUpdateUser(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
319
|
+
const updateParams = params as unknown as UpdateUserRequest;
|
|
309
320
|
try {
|
|
310
|
-
const user = await client.updateUser(
|
|
321
|
+
const user = await client.updateUser(updateParams);
|
|
311
322
|
return `✅ User ${user.id} updated successfully.`;
|
|
312
323
|
} catch (error) {
|
|
313
324
|
throw new Error(`Failed to update user: ${getErrorMessage(error)}`);
|
|
314
325
|
}
|
|
315
326
|
}
|
|
316
327
|
|
|
317
|
-
public async handleDeleteUser(client: WordPressClient, params:
|
|
328
|
+
public async handleDeleteUser(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
329
|
+
const { id, reassign } = params as { id: number; reassign?: number };
|
|
318
330
|
try {
|
|
319
|
-
await client.deleteUser(
|
|
320
|
-
let content = `✅ User ${
|
|
321
|
-
if (
|
|
322
|
-
content += ` Their content has been reassigned to user ID ${
|
|
331
|
+
await client.deleteUser(id, reassign);
|
|
332
|
+
let content = `✅ User ${id} has been deleted.`;
|
|
333
|
+
if (reassign) {
|
|
334
|
+
content += ` Their content has been reassigned to user ID ${reassign}.`;
|
|
323
335
|
}
|
|
324
336
|
return content;
|
|
325
337
|
} catch (error) {
|