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/media.ts
CHANGED
|
@@ -1,30 +1,26 @@
|
|
|
1
1
|
import * as fs from "fs";
|
|
2
2
|
import { WordPressClient } from "../client/api.js";
|
|
3
|
-
import {
|
|
4
|
-
MediaQueryParams,
|
|
5
|
-
UpdateMediaRequest,
|
|
6
|
-
UploadMediaRequest,
|
|
7
|
-
} from "../types/wordpress.js";
|
|
3
|
+
import { MediaQueryParams, UpdateMediaRequest, UploadMediaRequest } from "../types/wordpress.js";
|
|
8
4
|
import { getErrorMessage } from "../utils/error.js";
|
|
9
5
|
|
|
10
6
|
/**
|
|
11
7
|
* Comprehensive media management tools for WordPress sites.
|
|
12
|
-
*
|
|
8
|
+
*
|
|
13
9
|
* This class provides complete media library functionality including:
|
|
14
10
|
* - Listing media items with advanced filtering and search
|
|
15
11
|
* - Uploading new media files with validation and optimization
|
|
16
12
|
* - Retrieving detailed media information and metadata
|
|
17
13
|
* - Updating media properties like title, description, and alt text
|
|
18
14
|
* - Deleting media items with safety checks
|
|
19
|
-
*
|
|
15
|
+
*
|
|
20
16
|
* Supports all WordPress media types including images, videos, audio files,
|
|
21
17
|
* and documents with proper MIME type validation and security checks.
|
|
22
|
-
*
|
|
18
|
+
*
|
|
23
19
|
* @example
|
|
24
20
|
* ```typescript
|
|
25
21
|
* const mediaTools = new MediaTools();
|
|
26
22
|
* const tools = mediaTools.getTools();
|
|
27
|
-
*
|
|
23
|
+
*
|
|
28
24
|
* // Upload an image
|
|
29
25
|
* const client = new WordPressClient(config);
|
|
30
26
|
* const result = await mediaTools.handleUploadMedia(client, {
|
|
@@ -33,29 +29,34 @@ import { getErrorMessage } from "../utils/error.js";
|
|
|
33
29
|
* alt_text: "Description of the image"
|
|
34
30
|
* });
|
|
35
31
|
* ```
|
|
36
|
-
*
|
|
32
|
+
*
|
|
37
33
|
* @since 1.0.0
|
|
38
34
|
* @author MCP WordPress Team
|
|
39
35
|
*/
|
|
40
36
|
export class MediaTools {
|
|
41
37
|
/**
|
|
42
38
|
* Retrieves the complete list of media management tools available for MCP.
|
|
43
|
-
*
|
|
39
|
+
*
|
|
44
40
|
* Returns an array of tool definitions for comprehensive media library management.
|
|
45
41
|
* Each tool includes parameter validation, security checks, and detailed error handling.
|
|
46
|
-
*
|
|
42
|
+
*
|
|
47
43
|
* @returns {Array<MCPTool>} Array of MCPTool definitions for media management
|
|
48
|
-
*
|
|
44
|
+
*
|
|
49
45
|
* @example
|
|
50
46
|
* ```typescript
|
|
51
47
|
* const mediaTools = new MediaTools();
|
|
52
48
|
* const tools = mediaTools.getTools();
|
|
53
49
|
* console.log(tools.length); // 5 tools: list, get, upload, update, delete
|
|
54
50
|
* ```
|
|
55
|
-
*
|
|
51
|
+
*
|
|
56
52
|
* @since 1.0.0
|
|
57
53
|
*/
|
|
58
|
-
public getTools():
|
|
54
|
+
public getTools(): Array<{
|
|
55
|
+
name: string;
|
|
56
|
+
description: string;
|
|
57
|
+
parameters?: Array<{ name: string; type?: string; description?: string; required?: boolean; enum?: string[]; items?: unknown }>;
|
|
58
|
+
handler: (client: WordPressClient, params: Record<string, unknown>) => Promise<unknown>;
|
|
59
|
+
}> {
|
|
59
60
|
return [
|
|
60
61
|
{
|
|
61
62
|
name: "wp_list_media",
|
|
@@ -111,8 +112,7 @@ export class MediaTools {
|
|
|
111
112
|
{
|
|
112
113
|
name: "alt_text",
|
|
113
114
|
type: "string",
|
|
114
|
-
description:
|
|
115
|
-
"Alternative text for the media item (for accessibility).",
|
|
115
|
+
description: "Alternative text for the media item (for accessibility).",
|
|
116
116
|
},
|
|
117
117
|
{
|
|
118
118
|
name: "caption",
|
|
@@ -178,8 +178,7 @@ export class MediaTools {
|
|
|
178
178
|
{
|
|
179
179
|
name: "force",
|
|
180
180
|
type: "boolean",
|
|
181
|
-
description:
|
|
182
|
-
"If true, permanently delete. If false, move to trash. Defaults to false.",
|
|
181
|
+
description: "If true, permanently delete. If false, move to trash. Defaults to false.",
|
|
183
182
|
},
|
|
184
183
|
],
|
|
185
184
|
handler: this.handleDeleteMedia.bind(this),
|
|
@@ -187,35 +186,26 @@ export class MediaTools {
|
|
|
187
186
|
];
|
|
188
187
|
}
|
|
189
188
|
|
|
190
|
-
public async handleListMedia(
|
|
191
|
-
|
|
192
|
-
params: MediaQueryParams,
|
|
193
|
-
): Promise<any> {
|
|
189
|
+
public async handleListMedia(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
190
|
+
const queryParams = params as MediaQueryParams;
|
|
194
191
|
try {
|
|
195
|
-
const media = await client.getMedia(
|
|
192
|
+
const media = await client.getMedia(queryParams);
|
|
196
193
|
if (media.length === 0) {
|
|
197
194
|
return "No media items found matching the criteria.";
|
|
198
195
|
}
|
|
199
196
|
const content =
|
|
200
197
|
`Found ${media.length} media items:\n\n` +
|
|
201
|
-
media
|
|
202
|
-
.map(
|
|
203
|
-
(m) =>
|
|
204
|
-
`- ID ${m.id}: **${m.title.rendered}** (${m.mime_type})\n Link: ${m.source_url}`,
|
|
205
|
-
)
|
|
206
|
-
.join("\n");
|
|
198
|
+
media.map((m) => `- ID ${m.id}: **${m.title.rendered}** (${m.mime_type})\n Link: ${m.source_url}`).join("\n");
|
|
207
199
|
return content;
|
|
208
200
|
} catch (error) {
|
|
209
201
|
throw new Error(`Failed to list media: ${getErrorMessage(error)}`);
|
|
210
202
|
}
|
|
211
203
|
}
|
|
212
204
|
|
|
213
|
-
public async handleGetMedia(
|
|
214
|
-
|
|
215
|
-
params: { id: number },
|
|
216
|
-
): Promise<any> {
|
|
205
|
+
public async handleGetMedia(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
206
|
+
const { id } = params as { id: number };
|
|
217
207
|
try {
|
|
218
|
-
const media = await client.getMediaItem(
|
|
208
|
+
const media = await client.getMediaItem(id);
|
|
219
209
|
const content =
|
|
220
210
|
`**Media Details (ID: ${media.id})**\n\n` +
|
|
221
211
|
`- **Title:** ${media.title.rendered}\n` +
|
|
@@ -223,9 +213,7 @@ export class MediaTools {
|
|
|
223
213
|
`- **Type:** ${media.media_type} (${media.mime_type})\n` +
|
|
224
214
|
`- **Date:** ${new Date(media.date).toLocaleString()}\n` +
|
|
225
215
|
(media.alt_text ? `- **Alt Text:** ${media.alt_text}\n` : "") +
|
|
226
|
-
(media.caption.rendered
|
|
227
|
-
? `- **Caption:** ${media.caption.rendered}\n`
|
|
228
|
-
: "");
|
|
216
|
+
(media.caption.rendered ? `- **Caption:** ${media.caption.rendered}\n` : "");
|
|
229
217
|
return content;
|
|
230
218
|
} catch (error) {
|
|
231
219
|
throw new Error(`Failed to get media item: ${getErrorMessage(error)}`);
|
|
@@ -234,14 +222,15 @@ export class MediaTools {
|
|
|
234
222
|
|
|
235
223
|
public async handleUploadMedia(
|
|
236
224
|
client: WordPressClient,
|
|
237
|
-
params:
|
|
238
|
-
): Promise<
|
|
225
|
+
params: Record<string, unknown>,
|
|
226
|
+
): Promise<unknown> {
|
|
227
|
+
const uploadParams = params as unknown as UploadMediaRequest & { file_path: string };
|
|
239
228
|
try {
|
|
240
|
-
if (!fs.existsSync(
|
|
241
|
-
throw new Error(`File not found at path: ${
|
|
229
|
+
if (!fs.existsSync(uploadParams.file_path)) {
|
|
230
|
+
throw new Error(`File not found at path: ${uploadParams.file_path}`);
|
|
242
231
|
}
|
|
243
232
|
|
|
244
|
-
const media = await client.uploadMedia(
|
|
233
|
+
const media = await client.uploadMedia(uploadParams);
|
|
245
234
|
return `✅ Media uploaded successfully!\n- ID: ${media.id}\n- Title: ${media.title.rendered}\n- URL: ${media.source_url}`;
|
|
246
235
|
} catch (error) {
|
|
247
236
|
throw new Error(`Failed to upload media: ${getErrorMessage(error)}`);
|
|
@@ -250,24 +239,23 @@ export class MediaTools {
|
|
|
250
239
|
|
|
251
240
|
public async handleUpdateMedia(
|
|
252
241
|
client: WordPressClient,
|
|
253
|
-
params:
|
|
254
|
-
): Promise<
|
|
242
|
+
params: Record<string, unknown>,
|
|
243
|
+
): Promise<unknown> {
|
|
244
|
+
const updateParams = params as unknown as UpdateMediaRequest & { id: number };
|
|
255
245
|
try {
|
|
256
|
-
const media = await client.updateMedia(
|
|
246
|
+
const media = await client.updateMedia(updateParams);
|
|
257
247
|
return `✅ Media ${media.id} updated successfully.`;
|
|
258
248
|
} catch (error) {
|
|
259
249
|
throw new Error(`Failed to update media: ${getErrorMessage(error)}`);
|
|
260
250
|
}
|
|
261
251
|
}
|
|
262
252
|
|
|
263
|
-
public async handleDeleteMedia(
|
|
264
|
-
|
|
265
|
-
params: { id: number; force?: boolean },
|
|
266
|
-
): Promise<any> {
|
|
253
|
+
public async handleDeleteMedia(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
254
|
+
const { id, force } = params as { id: number; force?: boolean };
|
|
267
255
|
try {
|
|
268
|
-
await client.deleteMedia(
|
|
269
|
-
const action =
|
|
270
|
-
return `✅ Media item ${
|
|
256
|
+
await client.deleteMedia(id, force);
|
|
257
|
+
const action = force ? "permanently deleted" : "moved to trash";
|
|
258
|
+
return `✅ Media item ${id} has been ${action}`;
|
|
271
259
|
} catch (error) {
|
|
272
260
|
throw new Error(`Failed to delete media: ${getErrorMessage(error)}`);
|
|
273
261
|
}
|
package/src/tools/pages.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import { WordPressClient } from "../client/api.js";
|
|
2
|
-
import {
|
|
3
|
-
CreatePostRequest,
|
|
4
|
-
PostQueryParams,
|
|
5
|
-
UpdatePostRequest,
|
|
6
|
-
} from "../types/wordpress.js";
|
|
2
|
+
import { CreatePageRequest, PostQueryParams as PageQueryParams, UpdatePageRequest } from "../types/wordpress.js";
|
|
7
3
|
import { getErrorMessage } from "../utils/error.js";
|
|
8
4
|
|
|
9
5
|
/**
|
|
@@ -15,7 +11,12 @@ export class PageTools {
|
|
|
15
11
|
* Retrieves the list of page management tools.
|
|
16
12
|
* @returns An array of MCPTool definitions.
|
|
17
13
|
*/
|
|
18
|
-
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
|
+
}> {
|
|
19
20
|
return [
|
|
20
21
|
{
|
|
21
22
|
name: "wp_list_pages",
|
|
@@ -119,8 +120,7 @@ export class PageTools {
|
|
|
119
120
|
{
|
|
120
121
|
name: "force",
|
|
121
122
|
type: "boolean",
|
|
122
|
-
description:
|
|
123
|
-
"If true, permanently delete. If false, move to trash. Defaults to false.",
|
|
123
|
+
description: "If true, permanently delete. If false, move to trash. Defaults to false.",
|
|
124
124
|
},
|
|
125
125
|
],
|
|
126
126
|
handler: this.handleDeletePage.bind(this),
|
|
@@ -141,35 +141,26 @@ export class PageTools {
|
|
|
141
141
|
];
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
-
public async handleListPages(
|
|
145
|
-
|
|
146
|
-
params: PostQueryParams,
|
|
147
|
-
): Promise<any> {
|
|
144
|
+
public async handleListPages(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
145
|
+
const queryParams = params as unknown as PageQueryParams;
|
|
148
146
|
try {
|
|
149
|
-
const pages = await client.getPages(
|
|
147
|
+
const pages = await client.getPages(queryParams);
|
|
150
148
|
if (pages.length === 0) {
|
|
151
149
|
return "No pages found matching the criteria.";
|
|
152
150
|
}
|
|
153
151
|
const content =
|
|
154
152
|
`Found ${pages.length} pages:\n\n` +
|
|
155
|
-
pages
|
|
156
|
-
.map(
|
|
157
|
-
(p) =>
|
|
158
|
-
`- ID ${p.id}: **${p.title.rendered}** (${p.status})\n Link: ${p.link}`,
|
|
159
|
-
)
|
|
160
|
-
.join("\n");
|
|
153
|
+
pages.map((p) => `- ID ${p.id}: **${p.title.rendered}** (${p.status})\n Link: ${p.link}`).join("\n");
|
|
161
154
|
return content;
|
|
162
155
|
} catch (error) {
|
|
163
156
|
throw new Error(`Failed to list pages: ${getErrorMessage(error)}`);
|
|
164
157
|
}
|
|
165
158
|
}
|
|
166
159
|
|
|
167
|
-
public async handleGetPage(
|
|
168
|
-
|
|
169
|
-
params: { id: number },
|
|
170
|
-
): Promise<any> {
|
|
160
|
+
public async handleGetPage(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
161
|
+
const { id } = params as { id: number };
|
|
171
162
|
try {
|
|
172
|
-
const page = await client.getPage(
|
|
163
|
+
const page = await client.getPage(id);
|
|
173
164
|
const content =
|
|
174
165
|
`**Page Details (ID: ${page.id})**\n\n` +
|
|
175
166
|
`- **Title:** ${page.title.rendered}\n` +
|
|
@@ -182,65 +173,52 @@ export class PageTools {
|
|
|
182
173
|
}
|
|
183
174
|
}
|
|
184
175
|
|
|
185
|
-
public async handleCreatePage(
|
|
186
|
-
|
|
187
|
-
params: CreatePostRequest,
|
|
188
|
-
): Promise<any> {
|
|
176
|
+
public async handleCreatePage(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
177
|
+
const createParams = params as unknown as CreatePageRequest;
|
|
189
178
|
try {
|
|
190
|
-
const page = await client.createPage(
|
|
179
|
+
const page = await client.createPage(createParams);
|
|
191
180
|
return `✅ Page created successfully!\n- ID: ${page.id}\n- Title: ${page.title.rendered}\n- Link: ${page.link}`;
|
|
192
181
|
} catch (error) {
|
|
193
182
|
throw new Error(`Failed to create page: ${getErrorMessage(error)}`);
|
|
194
183
|
}
|
|
195
184
|
}
|
|
196
185
|
|
|
197
|
-
public async handleUpdatePage(
|
|
198
|
-
|
|
199
|
-
params: UpdatePostRequest & { id: number },
|
|
200
|
-
): Promise<any> {
|
|
186
|
+
public async handleUpdatePage(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
187
|
+
const updateParams = params as unknown as UpdatePageRequest & { id: number };
|
|
201
188
|
try {
|
|
202
|
-
const page = await client.updatePage(
|
|
189
|
+
const page = await client.updatePage(updateParams);
|
|
203
190
|
return `✅ Page ${page.id} updated successfully.`;
|
|
204
191
|
} catch (error) {
|
|
205
192
|
throw new Error(`Failed to update page: ${getErrorMessage(error)}`);
|
|
206
193
|
}
|
|
207
194
|
}
|
|
208
195
|
|
|
209
|
-
public async handleDeletePage(
|
|
210
|
-
|
|
211
|
-
params: { id: number; force?: boolean },
|
|
212
|
-
): Promise<any> {
|
|
196
|
+
public async handleDeletePage(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
197
|
+
const { id, force } = params as { id: number; force?: boolean };
|
|
213
198
|
try {
|
|
214
|
-
await client.deletePage(
|
|
199
|
+
await client.deletePage(id, force);
|
|
215
200
|
const action = params.force ? "permanently deleted" : "moved to trash";
|
|
216
|
-
return `✅ Page ${
|
|
201
|
+
return `✅ Page ${id} has been ${action}.`;
|
|
217
202
|
} catch (error) {
|
|
218
203
|
throw new Error(`Failed to delete page: ${getErrorMessage(error)}`);
|
|
219
204
|
}
|
|
220
205
|
}
|
|
221
206
|
|
|
222
|
-
public async handleGetPageRevisions(
|
|
223
|
-
|
|
224
|
-
params: { id: number },
|
|
225
|
-
): Promise<any> {
|
|
207
|
+
public async handleGetPageRevisions(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
|
|
208
|
+
const { id } = params as { id: number };
|
|
226
209
|
try {
|
|
227
|
-
const revisions = await client.getPageRevisions(
|
|
210
|
+
const revisions = await client.getPageRevisions(id);
|
|
228
211
|
if (revisions.length === 0) {
|
|
229
|
-
return `No revisions found for page ${
|
|
212
|
+
return `No revisions found for page ${id}.`;
|
|
230
213
|
}
|
|
231
214
|
const content =
|
|
232
|
-
`Found ${revisions.length} revisions for page ${
|
|
215
|
+
`Found ${revisions.length} revisions for page ${id}:\n\n` +
|
|
233
216
|
revisions
|
|
234
|
-
.map(
|
|
235
|
-
(r) =>
|
|
236
|
-
`- Revision by user ID ${r.author} at ${new Date(r.modified).toLocaleString()}`,
|
|
237
|
-
)
|
|
217
|
+
.map((r) => `- Revision by user ID ${r.author} at ${new Date(r.modified).toLocaleString()}`)
|
|
238
218
|
.join("\n");
|
|
239
219
|
return content;
|
|
240
220
|
} catch (error) {
|
|
241
|
-
throw new Error(
|
|
242
|
-
`Failed to get page revisions: ${getErrorMessage(error)}`,
|
|
243
|
-
);
|
|
221
|
+
throw new Error(`Failed to get page revisions: ${getErrorMessage(error)}`);
|
|
244
222
|
}
|
|
245
223
|
}
|
|
246
224
|
}
|