mcp-wordpress 1.5.2 → 2.0.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 +332 -61
- package/dist/cache/CacheInvalidation.d.ts.map +1 -1
- package/dist/cache/CacheInvalidation.js +4 -4
- package/dist/cache/CacheInvalidation.js.map +1 -1
- package/dist/client/MockWordPressClient.d.ts +55 -0
- package/dist/client/MockWordPressClient.d.ts.map +1 -0
- package/dist/client/MockWordPressClient.js +369 -0
- package/dist/client/MockWordPressClient.js.map +1 -0
- package/dist/client/api.d.ts +1 -0
- package/dist/client/api.d.ts.map +1 -1
- package/dist/client/api.js +26 -60
- package/dist/client/api.js.map +1 -1
- package/dist/client/managers/AuthenticationManager.d.ts.map +1 -1
- package/dist/client/managers/AuthenticationManager.js +4 -3
- package/dist/client/managers/AuthenticationManager.js.map +1 -1
- package/dist/config/ConfigurationSchema.d.ts +3 -3
- package/dist/config/ConfigurationSchema.d.ts.map +1 -1
- package/dist/config/ConfigurationSchema.js +7 -24
- package/dist/config/ConfigurationSchema.js.map +1 -1
- package/dist/config/ServerConfiguration.d.ts +8 -0
- package/dist/config/ServerConfiguration.d.ts.map +1 -1
- package/dist/config/ServerConfiguration.js +80 -31
- package/dist/config/ServerConfiguration.js.map +1 -1
- package/dist/docs/DocumentationGenerator.d.ts.map +1 -1
- package/dist/docs/DocumentationGenerator.js +5 -7
- package/dist/docs/DocumentationGenerator.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -29
- package/dist/index.js.map +1 -1
- package/dist/security/InputValidator.d.ts.map +1 -1
- package/dist/security/InputValidator.js +3 -11
- package/dist/security/InputValidator.js.map +1 -1
- package/dist/server/ToolRegistry.d.ts +4 -0
- package/dist/server/ToolRegistry.d.ts.map +1 -1
- package/dist/server/ToolRegistry.js +71 -8
- package/dist/server/ToolRegistry.js.map +1 -1
- package/dist/tools/auth.d.ts.map +1 -1
- package/dist/tools/auth.js +8 -3
- package/dist/tools/auth.js.map +1 -1
- package/dist/tools/posts.d.ts.map +1 -1
- package/dist/tools/posts.js +287 -20
- package/dist/tools/posts.js.map +1 -1
- package/dist/tools/site.d.ts.map +1 -1
- package/dist/tools/site.js +47 -9
- package/dist/tools/site.js.map +1 -1
- package/dist/tools/users.d.ts.map +1 -1
- package/dist/tools/users.js +113 -10
- package/dist/tools/users.js.map +1 -1
- package/dist/utils/enhancedError.d.ts +61 -0
- package/dist/utils/enhancedError.d.ts.map +1 -0
- package/dist/utils/enhancedError.js +221 -0
- package/dist/utils/enhancedError.js.map +1 -0
- package/dist/utils/streaming.d.ts +104 -0
- package/dist/utils/streaming.d.ts.map +1 -0
- package/dist/utils/streaming.js +312 -0
- package/dist/utils/streaming.js.map +1 -0
- package/dist/utils/validation.d.ts +19 -3
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +174 -24
- package/dist/utils/validation.js.map +1 -1
- package/docs/ARCHITECTURE.md +850 -0
- package/docs/CACHING.md +20 -17
- package/docs/CONFIGURATION.md +660 -0
- package/docs/DOCKER.md +61 -60
- package/docs/EVALUATION.md +397 -0
- package/docs/INSTALLATION.md +423 -0
- package/docs/PERFORMANCE_MONITORING.md +17 -15
- package/docs/SECURITY.md +621 -0
- package/docs/SECURITY_TESTING.md +22 -26
- package/docs/TEST_SITE_SETUP.md +136 -0
- package/docs/TROUBLESHOOTING.md +578 -0
- package/docs/api/README.md +76 -91
- package/docs/api/categories/auth.md +0 -2
- package/docs/api/categories/cache.md +0 -2
- package/docs/api/categories/comment.md +0 -2
- package/docs/api/categories/media.md +0 -2
- package/docs/api/categories/page.md +0 -2
- package/docs/api/categories/performance.md +0 -2
- package/docs/api/categories/post.md +0 -2
- package/docs/api/categories/site.md +0 -2
- package/docs/api/categories/taxonomy.md +0 -2
- package/docs/api/categories/user.md +0 -2
- package/docs/api/summary.json +1 -1
- package/docs/api/tools/wp_approve_comment.md +11 -3
- package/docs/api/tools/wp_cache_clear.md +14 -5
- package/docs/api/tools/wp_cache_info.md +14 -5
- package/docs/api/tools/wp_cache_stats.md +14 -5
- package/docs/api/tools/wp_cache_warm.md +14 -5
- package/docs/api/tools/wp_create_application_password.md +11 -3
- package/docs/api/tools/wp_create_category.md +11 -3
- package/docs/api/tools/wp_create_comment.md +14 -5
- package/docs/api/tools/wp_create_page.md +13 -5
- package/docs/api/tools/wp_create_post.md +14 -7
- package/docs/api/tools/wp_create_tag.md +11 -3
- package/docs/api/tools/wp_create_user.md +13 -5
- package/docs/api/tools/wp_delete_application_password.md +11 -3
- package/docs/api/tools/wp_delete_category.md +11 -3
- package/docs/api/tools/wp_delete_comment.md +11 -3
- package/docs/api/tools/wp_delete_media.md +10 -3
- package/docs/api/tools/wp_delete_page.md +10 -3
- package/docs/api/tools/wp_delete_post.md +11 -5
- package/docs/api/tools/wp_delete_tag.md +11 -3
- package/docs/api/tools/wp_delete_user.md +10 -3
- package/docs/api/tools/wp_get_application_passwords.md +11 -3
- package/docs/api/tools/wp_get_auth_status.md +11 -3
- package/docs/api/tools/wp_get_category.md +11 -3
- package/docs/api/tools/wp_get_comment.md +11 -3
- package/docs/api/tools/wp_get_current_user.md +11 -3
- package/docs/api/tools/wp_get_media.md +11 -3
- package/docs/api/tools/wp_get_page.md +11 -3
- package/docs/api/tools/wp_get_page_revisions.md +11 -3
- package/docs/api/tools/wp_get_post.md +12 -5
- package/docs/api/tools/wp_get_post_revisions.md +11 -3
- package/docs/api/tools/wp_get_site_settings.md +10 -3
- package/docs/api/tools/wp_get_tag.md +11 -3
- package/docs/api/tools/wp_get_user.md +11 -3
- package/docs/api/tools/wp_list_categories.md +11 -3
- package/docs/api/tools/wp_list_comments.md +11 -3
- package/docs/api/tools/wp_list_media.md +14 -5
- package/docs/api/tools/wp_list_pages.md +14 -5
- package/docs/api/tools/wp_list_posts.md +15 -7
- package/docs/api/tools/wp_list_tags.md +11 -3
- package/docs/api/tools/wp_list_users.md +11 -3
- package/docs/api/tools/wp_performance_alerts.md +17 -7
- package/docs/api/tools/wp_performance_benchmark.md +17 -7
- package/docs/api/tools/wp_performance_export.md +17 -7
- package/docs/api/tools/wp_performance_history.md +17 -7
- package/docs/api/tools/wp_performance_optimize.md +17 -7
- package/docs/api/tools/wp_performance_stats.md +17 -7
- package/docs/api/tools/wp_search_site.md +11 -3
- package/docs/api/tools/wp_spam_comment.md +11 -3
- package/docs/api/tools/wp_switch_auth_method.md +14 -5
- package/docs/api/tools/wp_test_auth.md +11 -3
- package/docs/api/tools/wp_update_category.md +11 -3
- package/docs/api/tools/wp_update_comment.md +14 -5
- package/docs/api/tools/wp_update_media.md +14 -5
- package/docs/api/tools/wp_update_page.md +13 -5
- package/docs/api/tools/wp_update_post.md +14 -7
- package/docs/api/tools/wp_update_site_settings.md +14 -5
- package/docs/api/tools/wp_update_tag.md +11 -3
- package/docs/api/tools/wp_update_user.md +13 -5
- package/docs/api/tools/wp_upload_media.md +13 -5
- package/docs/api/types/WordPressPost.md +2 -0
- package/docs/code-improvements.md +40 -0
- package/docs/contract-testing.md +1 -1
- package/docs/developer/API_REFERENCE.md +19 -59
- package/docs/developer/ARCHITECTURE.md +8 -11
- package/docs/developer/BUILD_SYSTEM.md +2 -2
- package/docs/developer/CONTRIBUTING.md +3 -5
- package/docs/developer/GITHUB_ACTIONS_SETUP.md +2 -2
- package/docs/developer/MIGRATION_GUIDE.md +5 -6
- package/docs/developer/README.md +2 -1
- package/docs/developer/REFACTORING.md +9 -15
- package/docs/developer/RELEASE_PROCESS.md +4 -3
- package/docs/developer/TESTING.md +2 -2
- package/docs/examples/claude-desktop-config.md +8 -0
- package/docs/integrations/claude-desktop.md +426 -0
- package/docs/integrations/cline.md +537 -0
- package/docs/integrations/vs-code.md +515 -0
- package/docs/releases/COMMUNITY_ANNOUNCEMENT_v1.1.2.md +30 -23
- package/docs/releases/RELEASE_NOTES_v1.1.2.md +7 -6
- package/docs/testing-configurations.md +11 -0
- package/docs/user-guides/DOCKER_NPM_DTX_SETUP.md +3 -2
- package/docs/user-guides/DOCKER_SETUP.md +3 -2
- package/docs/user-guides/DTX_SETUP.md +6 -5
- package/docs/user-guides/DXT_INSTALLATION.md +4 -4
- package/docs/user-guides/NPM_SETUP.md +4 -2
- package/docs/user-guides/NPX_SETUP.md +4 -2
- package/docs/user-guides/SMITHERY_SETUP.md +402 -0
- package/docs/wordpress-rest-api-authentication-troubleshooting.md +45 -42
- package/package.json +12 -2
- package/src/cache/CacheInvalidation.ts +7 -18
- package/src/client/MockWordPressClient.ts +398 -0
- package/src/client/api.ts +77 -237
- package/src/client/managers/AuthenticationManager.ts +19 -56
- package/src/config/ConfigurationSchema.ts +14 -45
- package/src/config/ServerConfiguration.ts +98 -71
- package/src/docs/DocumentationGenerator.ts +39 -123
- package/src/dxt-entry.cjs +4 -1
- package/src/index.ts +35 -54
- package/src/security/InputValidator.ts +15 -57
- package/src/server/ToolRegistry.ts +88 -17
- package/src/tools/auth.ts +15 -22
- package/src/tools/posts.ts +347 -64
- package/src/tools/site.ts +69 -46
- package/src/tools/users.ts +142 -44
- package/src/utils/enhancedError.ts +248 -0
- package/src/utils/streaming.ts +428 -0
- package/src/utils/validation.ts +253 -92
- package/dist/mcp-wordpress-1.5.2.tgz +0 -0
package/dist/tools/users.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getErrorMessage } from "../utils/error.js";
|
|
2
|
+
import { WordPressDataStreamer, StreamingUtils } from "../utils/streaming.js";
|
|
2
3
|
/**
|
|
3
4
|
* Provides tools for managing users on a WordPress site.
|
|
4
5
|
* This class encapsulates tool definitions and their corresponding handlers.
|
|
@@ -12,7 +13,13 @@ export class UserTools {
|
|
|
12
13
|
return [
|
|
13
14
|
{
|
|
14
15
|
name: "wp_list_users",
|
|
15
|
-
description: "Lists users from a WordPress site
|
|
16
|
+
description: "Lists users from a WordPress site with comprehensive filtering and detailed user information including roles, registration dates, and activity status.\n\n" +
|
|
17
|
+
"**Usage Examples:**\n" +
|
|
18
|
+
"• List all users: `wp_list_users`\n" +
|
|
19
|
+
'• Search users: `wp_list_users --search="john"`\n' +
|
|
20
|
+
'• Filter by role: `wp_list_users --roles=["editor","author"]`\n' +
|
|
21
|
+
'• Find admins: `wp_list_users --roles=["administrator"]`\n' +
|
|
22
|
+
'• Combined search: `wp_list_users --search="smith" --roles=["subscriber"]`',
|
|
16
23
|
parameters: [
|
|
17
24
|
{
|
|
18
25
|
name: "search",
|
|
@@ -43,7 +50,12 @@ export class UserTools {
|
|
|
43
50
|
},
|
|
44
51
|
{
|
|
45
52
|
name: "wp_get_current_user",
|
|
46
|
-
description: "Retrieves the currently authenticated user
|
|
53
|
+
description: "Retrieves the currently authenticated user with comprehensive profile information including roles, capabilities, and account details.\n\n" +
|
|
54
|
+
"**Usage Examples:**\n" +
|
|
55
|
+
"• Get current user: `wp_get_current_user`\n" +
|
|
56
|
+
"• Check permissions: Use this to verify your current user's capabilities and roles\n" +
|
|
57
|
+
"• Account verification: Confirm you're authenticated with the correct account\n" +
|
|
58
|
+
"• Profile details: View registration date, email, and user metadata",
|
|
47
59
|
parameters: [],
|
|
48
60
|
handler: this.handleGetCurrentUser.bind(this),
|
|
49
61
|
},
|
|
@@ -127,10 +139,59 @@ export class UserTools {
|
|
|
127
139
|
if (users.length === 0) {
|
|
128
140
|
return "No users found matching the criteria.";
|
|
129
141
|
}
|
|
130
|
-
|
|
142
|
+
// Use streaming for large user result sets (>30 users)
|
|
143
|
+
if (users.length > 30) {
|
|
144
|
+
const streamResults = [];
|
|
145
|
+
for await (const result of WordPressDataStreamer.streamUsers(users, {
|
|
146
|
+
includeRoles: true,
|
|
147
|
+
includeCapabilities: false, // Too verbose for large sets
|
|
148
|
+
batchSize: 15,
|
|
149
|
+
})) {
|
|
150
|
+
streamResults.push(result);
|
|
151
|
+
}
|
|
152
|
+
return StreamingUtils.formatStreamingResponse(streamResults, "users");
|
|
153
|
+
}
|
|
154
|
+
// Enhanced user information with comprehensive details
|
|
155
|
+
const siteUrl = client.getSiteUrl ? client.getSiteUrl() : "Unknown site";
|
|
156
|
+
const userCount = users.length;
|
|
157
|
+
const rolesSummary = users.reduce((acc, u) => {
|
|
158
|
+
const roles = u.roles || [];
|
|
159
|
+
roles.forEach((role) => {
|
|
160
|
+
acc[role] = (acc[role] || 0) + 1;
|
|
161
|
+
});
|
|
162
|
+
return acc;
|
|
163
|
+
}, {});
|
|
164
|
+
const metadata = [
|
|
165
|
+
`👥 **Users Summary**: ${userCount} total users`,
|
|
166
|
+
`🌐 **Source**: ${siteUrl}`,
|
|
167
|
+
`📊 **Roles Distribution**: ${Object.entries(rolesSummary)
|
|
168
|
+
.map(([role, count]) => `${role}: ${count}`)
|
|
169
|
+
.join(", ")}`,
|
|
170
|
+
`📅 **Retrieved**: ${new Date().toLocaleString()}`,
|
|
171
|
+
];
|
|
172
|
+
const content = metadata.join("\n") +
|
|
173
|
+
"\n\n" +
|
|
131
174
|
users
|
|
132
|
-
.map((u) =>
|
|
133
|
-
.
|
|
175
|
+
.map((u) => {
|
|
176
|
+
const registrationDate = u.registered_date
|
|
177
|
+
? new Date(u.registered_date).toLocaleDateString("en-US", {
|
|
178
|
+
year: "numeric",
|
|
179
|
+
month: "short",
|
|
180
|
+
day: "numeric",
|
|
181
|
+
})
|
|
182
|
+
: "Unknown";
|
|
183
|
+
const roles = u.roles?.join(", ") || "No roles";
|
|
184
|
+
const description = u.description || "No description";
|
|
185
|
+
const displayName = u.name || "No display name";
|
|
186
|
+
const userUrl = u.url || "No URL";
|
|
187
|
+
return (`- **ID ${u.id}**: ${displayName} (@${u.slug})\n` +
|
|
188
|
+
` 📧 Email: ${u.email || "No email"}\n` +
|
|
189
|
+
` 🎭 Roles: ${roles}\n` +
|
|
190
|
+
` 📅 Registered: ${registrationDate}\n` +
|
|
191
|
+
` 🔗 URL: ${userUrl}\n` +
|
|
192
|
+
` 📝 Description: ${description}`);
|
|
193
|
+
})
|
|
194
|
+
.join("\n\n");
|
|
134
195
|
return content;
|
|
135
196
|
}
|
|
136
197
|
catch (error) {
|
|
@@ -154,11 +215,53 @@ export class UserTools {
|
|
|
154
215
|
async handleGetCurrentUser(client, params) {
|
|
155
216
|
try {
|
|
156
217
|
const user = await client.getCurrentUser();
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
218
|
+
const siteUrl = client.getSiteUrl();
|
|
219
|
+
// Extract meaningful information from capabilities
|
|
220
|
+
const capabilities = user.capabilities || {};
|
|
221
|
+
const keyCapabilities = [
|
|
222
|
+
"edit_posts",
|
|
223
|
+
"edit_pages",
|
|
224
|
+
"publish_posts",
|
|
225
|
+
"publish_pages",
|
|
226
|
+
"delete_posts",
|
|
227
|
+
"delete_pages",
|
|
228
|
+
"manage_categories",
|
|
229
|
+
"manage_options",
|
|
230
|
+
"moderate_comments",
|
|
231
|
+
"upload_files",
|
|
232
|
+
"edit_others_posts",
|
|
233
|
+
"delete_others_posts",
|
|
234
|
+
];
|
|
235
|
+
const userCapabilities = keyCapabilities.filter((cap) => capabilities[cap]).join(", ");
|
|
236
|
+
const totalCapabilities = Object.keys(capabilities).length;
|
|
237
|
+
// Format registration date more clearly
|
|
238
|
+
const registrationDate = user.registered_date
|
|
239
|
+
? new Date(user.registered_date).toLocaleDateString("en-US", {
|
|
240
|
+
year: "numeric",
|
|
241
|
+
month: "long",
|
|
242
|
+
day: "numeric",
|
|
243
|
+
})
|
|
244
|
+
: "Not available";
|
|
245
|
+
// Extract role information
|
|
246
|
+
const roles = user.roles || [];
|
|
247
|
+
const primaryRole = roles[0] || "No role assigned";
|
|
248
|
+
const allRoles = roles.length > 1 ? roles.join(", ") : primaryRole;
|
|
249
|
+
// Build comprehensive user information
|
|
250
|
+
const content = `**Current User Details for ${siteUrl}**\n\n` +
|
|
251
|
+
`- **ID:** ${user.id}\n` +
|
|
252
|
+
`- **Display Name:** ${user.name || "Not set"}\n` +
|
|
253
|
+
`- **Username:** ${user.slug || "Not set"}\n` +
|
|
254
|
+
`- **Email:** ${user.email || "Not set"}\n` +
|
|
255
|
+
`- **User URL:** ${user.url || "Not set"}\n` +
|
|
256
|
+
`- **Nickname:** ${user.nickname || user.name || "Not set"}\n` +
|
|
257
|
+
`- **Description:** ${user.description || "No description provided"}\n` +
|
|
258
|
+
`- **Locale:** ${user.locale || "Default"}\n` +
|
|
259
|
+
`- **Registration Date:** ${registrationDate}\n` +
|
|
260
|
+
`- **Primary Role:** ${primaryRole}\n` +
|
|
261
|
+
`- **All Roles:** ${allRoles}\n` +
|
|
262
|
+
`- **Total Capabilities:** ${totalCapabilities} capabilities\n` +
|
|
263
|
+
`- **Key Capabilities:** ${userCapabilities || "None"}\n` +
|
|
264
|
+
`- **Profile Link:** ${user.link || `${siteUrl}/wp-admin/profile.php`}`;
|
|
162
265
|
return content;
|
|
163
266
|
}
|
|
164
267
|
catch (error) {
|
package/dist/tools/users.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/tools/users.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/tools/users.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export interface ErrorContext {
|
|
2
|
+
operation: string;
|
|
3
|
+
parameters?: Record<string, any>;
|
|
4
|
+
suggestions?: string[];
|
|
5
|
+
troubleshooting?: string[];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Enhanced error handling with helpful messages and suggestions
|
|
9
|
+
*/
|
|
10
|
+
export declare class EnhancedError extends Error {
|
|
11
|
+
suggestions: string[];
|
|
12
|
+
troubleshooting: string[];
|
|
13
|
+
context: ErrorContext;
|
|
14
|
+
constructor(message: string, context: ErrorContext);
|
|
15
|
+
/**
|
|
16
|
+
* Format error message with suggestions
|
|
17
|
+
*/
|
|
18
|
+
toString(): string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Common error handlers with context-aware suggestions
|
|
22
|
+
*/
|
|
23
|
+
export declare class ErrorHandlers {
|
|
24
|
+
/**
|
|
25
|
+
* Handle post not found errors
|
|
26
|
+
*/
|
|
27
|
+
static postNotFound(postId: number, originalError: any): EnhancedError;
|
|
28
|
+
/**
|
|
29
|
+
* Handle authentication errors
|
|
30
|
+
*/
|
|
31
|
+
static authenticationFailed(originalError: any): EnhancedError;
|
|
32
|
+
/**
|
|
33
|
+
* Handle site parameter missing errors
|
|
34
|
+
*/
|
|
35
|
+
static siteParameterMissing(availableSites: string[]): EnhancedError;
|
|
36
|
+
/**
|
|
37
|
+
* Handle site not found errors
|
|
38
|
+
*/
|
|
39
|
+
static siteNotFound(siteId: string, availableSites: string[]): EnhancedError;
|
|
40
|
+
/**
|
|
41
|
+
* Handle permission errors
|
|
42
|
+
*/
|
|
43
|
+
static permissionDenied(operation: string, originalError: any): EnhancedError;
|
|
44
|
+
/**
|
|
45
|
+
* Handle network/connection errors
|
|
46
|
+
*/
|
|
47
|
+
static connectionError(originalError: any): EnhancedError;
|
|
48
|
+
/**
|
|
49
|
+
* Handle validation errors
|
|
50
|
+
*/
|
|
51
|
+
static validationError(field: string, value: any, expectedType: string): EnhancedError;
|
|
52
|
+
/**
|
|
53
|
+
* Handle rate limiting errors
|
|
54
|
+
*/
|
|
55
|
+
static rateLimitExceeded(originalError: any): EnhancedError;
|
|
56
|
+
/**
|
|
57
|
+
* Generic error handler with basic suggestions
|
|
58
|
+
*/
|
|
59
|
+
static generic(operation: string, originalError: any): EnhancedError;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=enhancedError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhancedError.d.ts","sourceRoot":"","sources":["../../src/utils/enhancedError.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IAC/B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,YAAY,CAAC;gBAEjB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;IAQlD;;OAEG;IACH,QAAQ,IAAI,MAAM;CAmBnB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,GAAG,aAAa;IAqBtE;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,aAAa,EAAE,GAAG,GAAG,aAAa;IAqB9D;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,aAAa;IAgBpE;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,aAAa;IAiB5E;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,GAAG,aAAa;IAmB7E;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,GAAG,aAAa;IAmBzD;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,GAAG,aAAa;IAiBtF;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,aAAa,EAAE,GAAG,GAAG,aAAa;IAmB3D;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,GAAG,aAAa;CAkBrE"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { getErrorMessage } from "./error.js";
|
|
2
|
+
/**
|
|
3
|
+
* Enhanced error handling with helpful messages and suggestions
|
|
4
|
+
*/
|
|
5
|
+
export class EnhancedError extends Error {
|
|
6
|
+
suggestions;
|
|
7
|
+
troubleshooting;
|
|
8
|
+
context;
|
|
9
|
+
constructor(message, context) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = "EnhancedError";
|
|
12
|
+
this.context = context;
|
|
13
|
+
this.suggestions = context.suggestions || [];
|
|
14
|
+
this.troubleshooting = context.troubleshooting || [];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Format error message with suggestions
|
|
18
|
+
*/
|
|
19
|
+
toString() {
|
|
20
|
+
let message = `❌ ${this.message}`;
|
|
21
|
+
if (this.suggestions.length > 0) {
|
|
22
|
+
message += `\n\n💡 **Suggestions:**\n`;
|
|
23
|
+
this.suggestions.forEach((suggestion) => {
|
|
24
|
+
message += `• ${suggestion}\n`;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
if (this.troubleshooting.length > 0) {
|
|
28
|
+
message += `\n🔧 **Troubleshooting:**\n`;
|
|
29
|
+
this.troubleshooting.forEach((step) => {
|
|
30
|
+
message += `• ${step}\n`;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
return message;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Common error handlers with context-aware suggestions
|
|
38
|
+
*/
|
|
39
|
+
export class ErrorHandlers {
|
|
40
|
+
/**
|
|
41
|
+
* Handle post not found errors
|
|
42
|
+
*/
|
|
43
|
+
static postNotFound(postId, originalError) {
|
|
44
|
+
const errorMessage = getErrorMessage(originalError);
|
|
45
|
+
return new EnhancedError(`Post with ID ${postId} not found`, {
|
|
46
|
+
operation: "get_post",
|
|
47
|
+
parameters: { postId },
|
|
48
|
+
suggestions: [
|
|
49
|
+
"Check if the post ID is correct",
|
|
50
|
+
"Verify the post exists and is published",
|
|
51
|
+
"Try listing posts first with wp_list_posts to see available posts",
|
|
52
|
+
"Check if you have permission to view this post",
|
|
53
|
+
],
|
|
54
|
+
troubleshooting: [
|
|
55
|
+
"Use wp_list_posts to see all available posts",
|
|
56
|
+
"Check the post status - it might be draft, private, or trashed",
|
|
57
|
+
"Verify your user permissions for viewing posts",
|
|
58
|
+
`Original error: ${errorMessage}`,
|
|
59
|
+
],
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Handle authentication errors
|
|
64
|
+
*/
|
|
65
|
+
static authenticationFailed(originalError) {
|
|
66
|
+
const errorMessage = getErrorMessage(originalError);
|
|
67
|
+
return new EnhancedError("Authentication failed", {
|
|
68
|
+
operation: "authenticate",
|
|
69
|
+
suggestions: [
|
|
70
|
+
"Check your WordPress credentials (username and app password)",
|
|
71
|
+
"Verify the WordPress site URL is correct",
|
|
72
|
+
"Ensure application passwords are enabled on your WordPress site",
|
|
73
|
+
"Try regenerating your application password",
|
|
74
|
+
],
|
|
75
|
+
troubleshooting: [
|
|
76
|
+
"Go to your WordPress admin → Users → Profile → Application Passwords",
|
|
77
|
+
"Create a new application password with a descriptive name",
|
|
78
|
+
"Make sure the WordPress site URL ends with wp-json/wp/v2",
|
|
79
|
+
"Check if your site has any security plugins blocking REST API",
|
|
80
|
+
`Original error: ${errorMessage}`,
|
|
81
|
+
],
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Handle site parameter missing errors
|
|
86
|
+
*/
|
|
87
|
+
static siteParameterMissing(availableSites) {
|
|
88
|
+
return new EnhancedError("Multiple sites configured - site parameter required", {
|
|
89
|
+
operation: "site_selection",
|
|
90
|
+
suggestions: [
|
|
91
|
+
"Add --site parameter to specify which site to use",
|
|
92
|
+
`Available sites: ${availableSites.join(", ")}`,
|
|
93
|
+
'Example: wp_list_posts --site="your-site-id"',
|
|
94
|
+
],
|
|
95
|
+
troubleshooting: [
|
|
96
|
+
"Check your mcp-wordpress.config.json for configured sites",
|
|
97
|
+
"Use the site ID from your configuration file",
|
|
98
|
+
"Site IDs are defined in the 'id' field of each site config",
|
|
99
|
+
],
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Handle site not found errors
|
|
104
|
+
*/
|
|
105
|
+
static siteNotFound(siteId, availableSites) {
|
|
106
|
+
return new EnhancedError(`Site with ID '${siteId}' not found`, {
|
|
107
|
+
operation: "site_selection",
|
|
108
|
+
parameters: { siteId },
|
|
109
|
+
suggestions: [
|
|
110
|
+
`Available sites: ${availableSites.join(", ")}`,
|
|
111
|
+
"Check the spelling of the site ID",
|
|
112
|
+
"Verify the site is configured in mcp-wordpress.config.json",
|
|
113
|
+
],
|
|
114
|
+
troubleshooting: [
|
|
115
|
+
"Open mcp-wordpress.config.json to see configured sites",
|
|
116
|
+
"Check the 'id' field for each site configuration",
|
|
117
|
+
"Ensure the site ID matches exactly (case-sensitive)",
|
|
118
|
+
],
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Handle permission errors
|
|
123
|
+
*/
|
|
124
|
+
static permissionDenied(operation, originalError) {
|
|
125
|
+
const errorMessage = getErrorMessage(originalError);
|
|
126
|
+
return new EnhancedError(`Permission denied for ${operation}`, {
|
|
127
|
+
operation,
|
|
128
|
+
suggestions: [
|
|
129
|
+
"Check if your user has the required permissions",
|
|
130
|
+
"Verify you're logged in with the correct user account",
|
|
131
|
+
"Contact your WordPress administrator for permission changes",
|
|
132
|
+
],
|
|
133
|
+
troubleshooting: [
|
|
134
|
+
"Check your user role in WordPress admin → Users",
|
|
135
|
+
"Verify the required capabilities for this operation",
|
|
136
|
+
"Try using an administrator account",
|
|
137
|
+
`Original error: ${errorMessage}`,
|
|
138
|
+
],
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Handle network/connection errors
|
|
143
|
+
*/
|
|
144
|
+
static connectionError(originalError) {
|
|
145
|
+
const errorMessage = getErrorMessage(originalError);
|
|
146
|
+
return new EnhancedError("Failed to connect to WordPress site", {
|
|
147
|
+
operation: "connection",
|
|
148
|
+
suggestions: [
|
|
149
|
+
"Check your internet connection",
|
|
150
|
+
"Verify the WordPress site URL is correct and accessible",
|
|
151
|
+
"Check if the site is temporarily down",
|
|
152
|
+
],
|
|
153
|
+
troubleshooting: [
|
|
154
|
+
"Try accessing the site in your browser",
|
|
155
|
+
"Check if the REST API is enabled: visit yoursite.com/wp-json/",
|
|
156
|
+
"Verify there are no firewall or security plugins blocking access",
|
|
157
|
+
`Original error: ${errorMessage}`,
|
|
158
|
+
],
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Handle validation errors
|
|
163
|
+
*/
|
|
164
|
+
static validationError(field, value, expectedType) {
|
|
165
|
+
return new EnhancedError(`Invalid ${field}: expected ${expectedType}, got ${typeof value}`, {
|
|
166
|
+
operation: "validation",
|
|
167
|
+
parameters: { field, value, expectedType },
|
|
168
|
+
suggestions: [
|
|
169
|
+
`Provide a valid ${expectedType} for ${field}`,
|
|
170
|
+
"Check the parameter format and type",
|
|
171
|
+
"Refer to the tool documentation for correct parameter format",
|
|
172
|
+
],
|
|
173
|
+
troubleshooting: [
|
|
174
|
+
"Review the tool's parameter requirements",
|
|
175
|
+
"Check for typos in parameter names",
|
|
176
|
+
"Ensure parameter values match the expected type",
|
|
177
|
+
],
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Handle rate limiting errors
|
|
182
|
+
*/
|
|
183
|
+
static rateLimitExceeded(originalError) {
|
|
184
|
+
const errorMessage = getErrorMessage(originalError);
|
|
185
|
+
return new EnhancedError("Rate limit exceeded", {
|
|
186
|
+
operation: "rate_limit",
|
|
187
|
+
suggestions: [
|
|
188
|
+
"Wait a few minutes before trying again",
|
|
189
|
+
"Reduce the frequency of requests",
|
|
190
|
+
"Use pagination for large operations",
|
|
191
|
+
],
|
|
192
|
+
troubleshooting: [
|
|
193
|
+
"Check your WordPress hosting plan limits",
|
|
194
|
+
"Consider upgrading your hosting plan for higher limits",
|
|
195
|
+
"Implement delays between requests",
|
|
196
|
+
`Original error: ${errorMessage}`,
|
|
197
|
+
],
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Generic error handler with basic suggestions
|
|
202
|
+
*/
|
|
203
|
+
static generic(operation, originalError) {
|
|
204
|
+
const errorMessage = getErrorMessage(originalError);
|
|
205
|
+
return new EnhancedError(`Failed to ${operation}`, {
|
|
206
|
+
operation,
|
|
207
|
+
suggestions: [
|
|
208
|
+
"Check your WordPress credentials and permissions",
|
|
209
|
+
"Verify the site is accessible and functioning",
|
|
210
|
+
"Try the operation again after a brief wait",
|
|
211
|
+
],
|
|
212
|
+
troubleshooting: [
|
|
213
|
+
"Test your connection with a simpler operation first",
|
|
214
|
+
"Check WordPress admin for any issues",
|
|
215
|
+
"Review the WordPress error logs",
|
|
216
|
+
`Original error: ${errorMessage}`,
|
|
217
|
+
],
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=enhancedError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhancedError.js","sourceRoot":"","sources":["../../src/utils/enhancedError.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streaming utilities for handling large result sets
|
|
3
|
+
* Implements streaming responses for better performance and memory usage
|
|
4
|
+
*/
|
|
5
|
+
export interface StreamingOptions {
|
|
6
|
+
batchSize?: number;
|
|
7
|
+
delay?: number;
|
|
8
|
+
transformItem?: (item: any) => any;
|
|
9
|
+
filterItem?: (item: any) => boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface StreamingResult<T> {
|
|
12
|
+
data: T[];
|
|
13
|
+
hasMore: boolean;
|
|
14
|
+
cursor?: string | undefined;
|
|
15
|
+
total?: number | undefined;
|
|
16
|
+
processed: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Creates a streaming response for large datasets
|
|
20
|
+
*/
|
|
21
|
+
export declare class DataStreamer<T> {
|
|
22
|
+
private batchSize;
|
|
23
|
+
private delay;
|
|
24
|
+
private transformItem;
|
|
25
|
+
private filterItem;
|
|
26
|
+
constructor(options?: StreamingOptions);
|
|
27
|
+
/**
|
|
28
|
+
* Processes data in batches with streaming
|
|
29
|
+
*/
|
|
30
|
+
streamBatches<U>(data: T[], processor: (batch: T[]) => Promise<U[]>): AsyncGenerator<StreamingResult<U>, void, unknown>;
|
|
31
|
+
/**
|
|
32
|
+
* Processes large datasets with pagination
|
|
33
|
+
*/
|
|
34
|
+
streamPages<U>(fetcher: (page: number, perPage: number) => Promise<{
|
|
35
|
+
data: T[];
|
|
36
|
+
hasMore: boolean;
|
|
37
|
+
}>, processor: (items: T[]) => Promise<U[]>): AsyncGenerator<StreamingResult<U>, void, unknown>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Streaming formatter for WordPress data
|
|
41
|
+
*/
|
|
42
|
+
export declare class WordPressDataStreamer {
|
|
43
|
+
/**
|
|
44
|
+
* Streams WordPress posts with author and taxonomy information
|
|
45
|
+
*/
|
|
46
|
+
static streamPosts(posts: any[], options?: {
|
|
47
|
+
includeAuthor?: boolean;
|
|
48
|
+
includeCategories?: boolean;
|
|
49
|
+
includeTags?: boolean;
|
|
50
|
+
batchSize?: number;
|
|
51
|
+
}): AsyncGenerator<StreamingResult<any>, void, unknown>;
|
|
52
|
+
/**
|
|
53
|
+
* Streams WordPress users with role information
|
|
54
|
+
*/
|
|
55
|
+
static streamUsers(users: any[], options?: {
|
|
56
|
+
includeRoles?: boolean;
|
|
57
|
+
includeCapabilities?: boolean;
|
|
58
|
+
batchSize?: number;
|
|
59
|
+
}): AsyncGenerator<StreamingResult<any>, void, unknown>;
|
|
60
|
+
/**
|
|
61
|
+
* Streams WordPress comments with moderation status
|
|
62
|
+
*/
|
|
63
|
+
static streamComments(comments: any[], options?: {
|
|
64
|
+
includeAuthor?: boolean;
|
|
65
|
+
includePost?: boolean;
|
|
66
|
+
batchSize?: number;
|
|
67
|
+
}): AsyncGenerator<StreamingResult<any>, void, unknown>;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Utility functions for streaming responses
|
|
71
|
+
*/
|
|
72
|
+
export declare class StreamingUtils {
|
|
73
|
+
/**
|
|
74
|
+
* Formats streaming results for display
|
|
75
|
+
*/
|
|
76
|
+
static formatStreamingResponse(results: StreamingResult<any>[], type?: "posts" | "users" | "comments" | "media"): string;
|
|
77
|
+
/**
|
|
78
|
+
* Implements progressive loading for large datasets
|
|
79
|
+
*/
|
|
80
|
+
static loadProgressively<T>(fetcher: (offset: number, limit: number) => Promise<T[]>, options?: {
|
|
81
|
+
initialLoad?: number;
|
|
82
|
+
batchSize?: number;
|
|
83
|
+
maxItems?: number;
|
|
84
|
+
onProgress?: (loaded: number, total?: number) => void;
|
|
85
|
+
}): Promise<T[]>;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Memory-efficient data processor
|
|
89
|
+
*/
|
|
90
|
+
export declare class MemoryEfficientProcessor {
|
|
91
|
+
/**
|
|
92
|
+
* Processes large datasets with memory monitoring
|
|
93
|
+
*/
|
|
94
|
+
static processLargeDataset<T, U>(dataProvider: () => AsyncGenerator<T[], void, unknown>, processor: (items: T[]) => Promise<U[]>, options?: {
|
|
95
|
+
maxMemoryUsage?: number;
|
|
96
|
+
batchSize?: number;
|
|
97
|
+
onProgress?: (processed: number) => void;
|
|
98
|
+
}): Promise<U[]>;
|
|
99
|
+
/**
|
|
100
|
+
* Helper method to split arrays into chunks
|
|
101
|
+
*/
|
|
102
|
+
private static chunkArray;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=streaming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../src/utils/streaming.ts"],"names":[],"mappings":"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"}
|