mcp-wordpress 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +568 -0
  3. package/bin/mcp-wordpress.js +12 -0
  4. package/bin/setup.js +302 -0
  5. package/bin/status.js +359 -0
  6. package/dist/client/WordPressClient.d.ts +81 -0
  7. package/dist/client/WordPressClient.d.ts.map +1 -0
  8. package/dist/client/WordPressClient.js +354 -0
  9. package/dist/client/WordPressClient.js.map +1 -0
  10. package/dist/client/api.d.ts +140 -0
  11. package/dist/client/api.d.ts.map +1 -0
  12. package/dist/client/api.js +727 -0
  13. package/dist/client/api.js.map +1 -0
  14. package/dist/client/auth.d.ts +121 -0
  15. package/dist/client/auth.d.ts.map +1 -0
  16. package/dist/client/auth.js +430 -0
  17. package/dist/client/auth.js.map +1 -0
  18. package/dist/client/managers/AuthenticationManager.d.ts +39 -0
  19. package/dist/client/managers/AuthenticationManager.d.ts.map +1 -0
  20. package/dist/client/managers/AuthenticationManager.js +159 -0
  21. package/dist/client/managers/AuthenticationManager.js.map +1 -0
  22. package/dist/client/managers/BaseManager.d.ts +22 -0
  23. package/dist/client/managers/BaseManager.d.ts.map +1 -0
  24. package/dist/client/managers/BaseManager.js +47 -0
  25. package/dist/client/managers/BaseManager.js.map +1 -0
  26. package/dist/client/managers/RequestManager.d.ts +45 -0
  27. package/dist/client/managers/RequestManager.d.ts.map +1 -0
  28. package/dist/client/managers/RequestManager.js +161 -0
  29. package/dist/client/managers/RequestManager.js.map +1 -0
  30. package/dist/client/managers/index.d.ts +8 -0
  31. package/dist/client/managers/index.d.ts.map +1 -0
  32. package/dist/client/managers/index.js +8 -0
  33. package/dist/client/managers/index.js.map +1 -0
  34. package/dist/index.d.ts +19 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +264 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/server.d.ts +7 -0
  39. package/dist/server.d.ts.map +1 -0
  40. package/dist/server.js +7 -0
  41. package/dist/server.js.map +1 -0
  42. package/dist/tools/auth.d.ts +44 -0
  43. package/dist/tools/auth.d.ts.map +1 -0
  44. package/dist/tools/auth.js +126 -0
  45. package/dist/tools/auth.js.map +1 -0
  46. package/dist/tools/base.d.ts +37 -0
  47. package/dist/tools/base.d.ts.map +1 -0
  48. package/dist/tools/base.js +60 -0
  49. package/dist/tools/base.js.map +1 -0
  50. package/dist/tools/comments.d.ts +33 -0
  51. package/dist/tools/comments.d.ts.map +1 -0
  52. package/dist/tools/comments.js +228 -0
  53. package/dist/tools/comments.js.map +1 -0
  54. package/dist/tools/index.d.ts +9 -0
  55. package/dist/tools/index.d.ts.map +1 -0
  56. package/dist/tools/index.js +9 -0
  57. package/dist/tools/index.js.map +1 -0
  58. package/dist/tools/media.d.ts +29 -0
  59. package/dist/tools/media.d.ts.map +1 -0
  60. package/dist/tools/media.js +208 -0
  61. package/dist/tools/media.js.map +1 -0
  62. package/dist/tools/pages.d.ts +30 -0
  63. package/dist/tools/pages.d.ts.map +1 -0
  64. package/dist/tools/pages.js +211 -0
  65. package/dist/tools/pages.js.map +1 -0
  66. package/dist/tools/posts.d.ts +30 -0
  67. package/dist/tools/posts.d.ts.map +1 -0
  68. package/dist/tools/posts.js +240 -0
  69. package/dist/tools/posts.js.map +1 -0
  70. package/dist/tools/site.d.ts +31 -0
  71. package/dist/tools/site.d.ts.map +1 -0
  72. package/dist/tools/site.js +192 -0
  73. package/dist/tools/site.js.map +1 -0
  74. package/dist/tools/taxonomies.d.ts +37 -0
  75. package/dist/tools/taxonomies.d.ts.map +1 -0
  76. package/dist/tools/taxonomies.js +280 -0
  77. package/dist/tools/taxonomies.js.map +1 -0
  78. package/dist/tools/users.d.ts +28 -0
  79. package/dist/tools/users.d.ts.map +1 -0
  80. package/dist/tools/users.js +201 -0
  81. package/dist/tools/users.js.map +1 -0
  82. package/dist/types/client.d.ts +215 -0
  83. package/dist/types/client.d.ts.map +1 -0
  84. package/dist/types/client.js +72 -0
  85. package/dist/types/client.js.map +1 -0
  86. package/dist/types/index.d.ts +157 -0
  87. package/dist/types/index.d.ts.map +1 -0
  88. package/dist/types/index.js +12 -0
  89. package/dist/types/index.js.map +1 -0
  90. package/dist/types/mcp.d.ts +178 -0
  91. package/dist/types/mcp.d.ts.map +1 -0
  92. package/dist/types/mcp.js +7 -0
  93. package/dist/types/mcp.js.map +1 -0
  94. package/dist/types/wordpress.d.ts +443 -0
  95. package/dist/types/wordpress.d.ts.map +1 -0
  96. package/dist/types/wordpress.js +7 -0
  97. package/dist/types/wordpress.js.map +1 -0
  98. package/dist/utils/debug.d.ts +63 -0
  99. package/dist/utils/debug.d.ts.map +1 -0
  100. package/dist/utils/debug.js +195 -0
  101. package/dist/utils/debug.js.map +1 -0
  102. package/dist/utils/error.d.ts +19 -0
  103. package/dist/utils/error.d.ts.map +1 -0
  104. package/dist/utils/error.js +71 -0
  105. package/dist/utils/error.js.map +1 -0
  106. package/dist/utils/toolWrapper.d.ts +36 -0
  107. package/dist/utils/toolWrapper.d.ts.map +1 -0
  108. package/dist/utils/toolWrapper.js +90 -0
  109. package/dist/utils/toolWrapper.js.map +1 -0
  110. package/package.json +115 -0
  111. package/src/client/api.ts +1043 -0
  112. package/src/client/auth.ts +527 -0
  113. package/src/client/managers/AuthenticationManager.ts +190 -0
  114. package/src/client/managers/BaseManager.ts +73 -0
  115. package/src/client/managers/RequestManager.ts +214 -0
  116. package/src/client/managers/index.ts +8 -0
  117. package/src/index.ts +337 -0
  118. package/src/server.ts +7 -0
  119. package/src/tools/auth.ts +153 -0
  120. package/src/tools/comments.ts +263 -0
  121. package/src/tools/index.ts +8 -0
  122. package/src/tools/media.ts +240 -0
  123. package/src/tools/pages.ts +246 -0
  124. package/src/tools/posts.ts +277 -0
  125. package/src/tools/site.ts +227 -0
  126. package/src/tools/taxonomies.ts +322 -0
  127. package/src/tools/users.ts +233 -0
  128. package/src/types/client.ts +304 -0
  129. package/src/types/index.ts +207 -0
  130. package/src/types/mcp.ts +247 -0
  131. package/src/types/wordpress.ts +491 -0
  132. package/src/utils/debug.ts +258 -0
  133. package/src/utils/error.ts +88 -0
  134. package/src/utils/toolWrapper.ts +105 -0
package/dist/index.js ADDED
@@ -0,0 +1,264 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import dotenv from "dotenv";
4
+ import * as fs from "fs";
5
+ import * as path from "path";
6
+ import { fileURLToPath } from "url";
7
+ import { WordPressClient } from "./client/api.js";
8
+ import * as Tools from "./tools/index.js";
9
+ import { getErrorMessage } from "./utils/error.js";
10
+ import { z } from "zod";
11
+ // --- Constants ---
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = path.dirname(__filename);
14
+ const rootDir = path.resolve(__dirname, "..");
15
+ const envPath = path.resolve(rootDir, ".env");
16
+ dotenv.config({ path: envPath });
17
+ const SERVER_VERSION = "1.1.1"; // Updated version with test fixes
18
+ // --- Main Server Class ---
19
+ class MCPWordPressServer {
20
+ server;
21
+ // MODIFICATION: Manages multiple WordPress clients, keyed by site ID.
22
+ wordpressClients = new Map();
23
+ initialized = false;
24
+ // MODIFICATION: Stores the configurations for all loaded sites.
25
+ siteConfigs = [];
26
+ constructor(mcpConfig) {
27
+ this.loadConfiguration(mcpConfig);
28
+ if (this.wordpressClients.size === 0) {
29
+ console.error("No WordPress sites were configured. Please create mcp-wordpress.config.json or set environment variables.");
30
+ process.exit(1);
31
+ }
32
+ this.server = new McpServer({
33
+ name: "mcp-wordpress",
34
+ version: SERVER_VERSION,
35
+ });
36
+ this.setupTools();
37
+ }
38
+ loadConfiguration(mcpConfig) {
39
+ const configPath = path.resolve(rootDir, "mcp-wordpress.config.json");
40
+ if (fs.existsSync(configPath)) {
41
+ console.error("INFO: Found mcp-wordpress.config.json, loading multi-site configuration.");
42
+ this.loadMultiSiteConfig(configPath);
43
+ }
44
+ else {
45
+ console.error("INFO: mcp-wordpress.config.json not found, falling back to environment variables for single-site mode.");
46
+ this.loadSingleSiteFromEnv(mcpConfig);
47
+ }
48
+ }
49
+ loadMultiSiteConfig(configPath) {
50
+ try {
51
+ const configFile = fs.readFileSync(configPath, "utf-8");
52
+ const config = JSON.parse(configFile);
53
+ if (!config.sites || !Array.isArray(config.sites)) {
54
+ throw new Error('Configuration file must have a "sites" array.');
55
+ }
56
+ this.siteConfigs = config.sites;
57
+ for (const site of this.siteConfigs) {
58
+ if (site.id && site.name && site.config) {
59
+ const clientConfig = {
60
+ baseUrl: site.config.WORDPRESS_SITE_URL,
61
+ auth: {
62
+ method: site.config.WORDPRESS_AUTH_METHOD ||
63
+ "app-password",
64
+ username: site.config.WORDPRESS_USERNAME,
65
+ appPassword: site.config.WORDPRESS_APP_PASSWORD,
66
+ },
67
+ };
68
+ const client = new WordPressClient(clientConfig);
69
+ this.wordpressClients.set(site.id, client);
70
+ console.error(`INFO: Initialized client for site: ${site.name} (ID: ${site.id})`);
71
+ }
72
+ else {
73
+ console.warn("WARN: Skipping invalid site entry in config. Must have id, name, and config.", site);
74
+ }
75
+ }
76
+ }
77
+ catch (error) {
78
+ console.error(`FATAL: Error reading or parsing mcp-wordpress.config.json: ${getErrorMessage(error)}`);
79
+ process.exit(1);
80
+ }
81
+ }
82
+ loadSingleSiteFromEnv(mcpConfig) {
83
+ const siteUrl = mcpConfig?.wordpressSiteUrl || process.env.WORDPRESS_SITE_URL;
84
+ const username = mcpConfig?.wordpressUsername || process.env.WORDPRESS_USERNAME;
85
+ const password = mcpConfig?.wordpressAppPassword || process.env.WORDPRESS_APP_PASSWORD;
86
+ const authMethod = (mcpConfig?.wordpressAuthMethod ||
87
+ process.env.WORDPRESS_AUTH_METHOD ||
88
+ "app-password");
89
+ if (!siteUrl || !username || !password) {
90
+ console.error("ERROR: Missing required credentials for single-site mode.");
91
+ console.error("Please set WORDPRESS_SITE_URL, WORDPRESS_USERNAME, and WORDPRESS_APP_PASSWORD environment variables.");
92
+ return;
93
+ }
94
+ const singleSiteConfig = {
95
+ baseUrl: siteUrl,
96
+ auth: { method: authMethod, username, appPassword: password },
97
+ };
98
+ const client = new WordPressClient(singleSiteConfig);
99
+ this.wordpressClients.set("default", client);
100
+ this.siteConfigs.push({
101
+ id: "default",
102
+ name: "Default Site",
103
+ config: singleSiteConfig,
104
+ });
105
+ console.error("INFO: Initialized client for default site in single-site mode.");
106
+ }
107
+ setupTools() {
108
+ // Register all tools from the tools directory
109
+ Object.values(Tools).forEach((ToolClass) => {
110
+ const toolInstance = new ToolClass();
111
+ const tools = toolInstance.getTools();
112
+ tools.forEach((tool) => {
113
+ this.registerTool(tool);
114
+ });
115
+ });
116
+ }
117
+ registerTool(tool) {
118
+ // Create base parameter schema with site parameter
119
+ const baseSchema = {
120
+ site: z.string()
121
+ .optional()
122
+ .describe("The ID of the WordPress site to target (from mcp-wordpress.config.json). Required if multiple sites are configured."),
123
+ };
124
+ // Merge with tool-specific parameters
125
+ const parameterSchema = tool.parameters?.reduce((schema, param) => {
126
+ let zodType;
127
+ switch (param.type) {
128
+ case 'string':
129
+ zodType = z.string();
130
+ break;
131
+ case 'number':
132
+ zodType = z.number();
133
+ break;
134
+ case 'boolean':
135
+ zodType = z.boolean();
136
+ break;
137
+ case 'array':
138
+ zodType = z.array(z.string());
139
+ break;
140
+ case 'object':
141
+ zodType = z.record(z.any());
142
+ break;
143
+ default:
144
+ zodType = z.string();
145
+ }
146
+ if (param.description) {
147
+ zodType = zodType.describe(param.description);
148
+ }
149
+ if (!param.required) {
150
+ zodType = zodType.optional();
151
+ }
152
+ schema[param.name] = zodType;
153
+ return schema;
154
+ }, { ...baseSchema }) || baseSchema;
155
+ // Make site parameter required if multiple sites are configured
156
+ if (this.wordpressClients.size > 1) {
157
+ parameterSchema.site = parameterSchema.site.describe("The ID of the WordPress site to target (from mcp-wordpress.config.json). Required when multiple sites are configured.");
158
+ }
159
+ this.server.tool(tool.name, tool.description || `WordPress tool: ${tool.name}`, parameterSchema, async (args) => {
160
+ try {
161
+ const siteId = args.site || "default";
162
+ const client = this.wordpressClients.get(siteId);
163
+ if (!client) {
164
+ const availableSites = Array.from(this.wordpressClients.keys()).join(", ");
165
+ return {
166
+ content: [{
167
+ type: "text",
168
+ text: `Error: Site with ID '${siteId}' not found. Available sites: ${availableSites}`
169
+ }],
170
+ isError: true
171
+ };
172
+ }
173
+ // Call the tool handler with the client and parameters
174
+ const result = await tool.handler(client, args);
175
+ return {
176
+ content: [{
177
+ type: "text",
178
+ text: typeof result === 'string' ? result : JSON.stringify(result, null, 2)
179
+ }]
180
+ };
181
+ }
182
+ catch (error) {
183
+ if (this.isAuthenticationError(error)) {
184
+ return {
185
+ content: [{
186
+ type: "text",
187
+ text: `Authentication failed for site '${args.site || "default"}'. Please check your credentials.`
188
+ }],
189
+ isError: true
190
+ };
191
+ }
192
+ return {
193
+ content: [{
194
+ type: "text",
195
+ text: `Error: ${getErrorMessage(error)}`
196
+ }],
197
+ isError: true
198
+ };
199
+ }
200
+ });
201
+ }
202
+ async testClientConnections() {
203
+ console.error("INFO: Testing connections to all configured WordPress sites...");
204
+ const connectionPromises = Array.from(this.wordpressClients.entries()).map(async ([siteId, client]) => {
205
+ try {
206
+ await client.ping();
207
+ console.error(`SUCCESS: Connection to site '${siteId}' successful.`);
208
+ }
209
+ catch (error) {
210
+ console.error(`ERROR: Failed to connect to site '${siteId}': ${getErrorMessage(error)}`);
211
+ if (this.isAuthenticationError(error)) {
212
+ console.error(`Authentication may have failed for site '${siteId}'. Please check credentials.`);
213
+ }
214
+ }
215
+ });
216
+ await Promise.all(connectionPromises);
217
+ this.initialized = true;
218
+ console.error("INFO: Connection tests complete.");
219
+ }
220
+ isAuthenticationError(error) {
221
+ if (error?.response?.status && [401, 403].includes(error.response.status)) {
222
+ return true;
223
+ }
224
+ return error?.code === "WORDPRESS_AUTH_ERROR";
225
+ }
226
+ async run() {
227
+ if (!this.initialized) {
228
+ await this.testClientConnections();
229
+ }
230
+ console.error("INFO: Starting MCP WordPress Server...");
231
+ // Connect to stdio transport
232
+ const transport = new StdioServerTransport();
233
+ await this.server.connect(transport);
234
+ console.error(`INFO: Server started and connected. Tools available for ${this.wordpressClients.size} site(s).`);
235
+ }
236
+ async shutdown() {
237
+ console.error("INFO: Shutting down MCP WordPress Server...");
238
+ await this.server.close();
239
+ console.error("INFO: Server stopped.");
240
+ }
241
+ }
242
+ // --- Main Execution ---
243
+ async function main() {
244
+ try {
245
+ const mcpServer = new MCPWordPressServer();
246
+ await mcpServer.run();
247
+ const shutdown = async () => {
248
+ await mcpServer.shutdown();
249
+ process.exit(0);
250
+ };
251
+ process.on("SIGINT", shutdown);
252
+ process.on("SIGTERM", shutdown);
253
+ }
254
+ catch (error) {
255
+ console.error(`FATAL: Failed to start server: ${getErrorMessage(error)}`);
256
+ process.exit(1);
257
+ }
258
+ }
259
+ if (process.argv[1] === fileURLToPath(import.meta.url)) {
260
+ main();
261
+ }
262
+ export default MCPWordPressServer;
263
+ export { MCPWordPressServer };
264
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Compatibility export for tests
3
+ * Re-exports the main MCP server class for backward compatibility
4
+ */
5
+ export { default as MCPWordPressServer } from './index.js';
6
+ export { default } from './index.js';
7
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}
package/dist/server.js ADDED
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Compatibility export for tests
3
+ * Re-exports the main MCP server class for backward compatibility
4
+ */
5
+ export { default as MCPWordPressServer } from './index.js';
6
+ export { default } from './index.js';
7
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { WordPressClient } from "../client/api.js";
2
+ import { AuthMethod } from "../types/client.js";
3
+ /**
4
+ * Provides authentication-related tools for WordPress sites.
5
+ * This class encapsulates tool definitions and their corresponding handlers.
6
+ */
7
+ export declare class AuthTools {
8
+ /**
9
+ * Retrieves the list of authentication tools.
10
+ * @returns An array of MCPTool definitions.
11
+ */
12
+ getTools(): any[];
13
+ /**
14
+ * Handles the 'wp_test_auth' tool request.
15
+ * It tests the connection and fetches user details upon success.
16
+ * @param client - The WordPressClient instance for the target site.
17
+ * @param params - The parameters for the tool request.
18
+ * @returns A promise that resolves to an MCPToolResponse.
19
+ */
20
+ handleTestAuth(client: WordPressClient, params: any): Promise<any>;
21
+ /**
22
+ * Handles the 'wp_get_auth_status' tool request.
23
+ * Reports whether the client is currently authenticated.
24
+ * @param client - The WordPressClient instance for the target site.
25
+ * @param params - The parameters for the tool request.
26
+ * @returns A promise that resolves to an MCPToolResponse.
27
+ */
28
+ handleGetAuthStatus(client: WordPressClient, params: any): Promise<any>;
29
+ /**
30
+ * Handles the 'wp_switch_auth_method' tool request.
31
+ * Updates the client's authentication configuration in memory for the session.
32
+ * @param client - The WordPressClient instance for the target site.
33
+ * @param params - The parameters for the tool request, including the new auth details.
34
+ * @returns A promise that resolves to an MCPToolResponse.
35
+ */
36
+ handleSwitchAuthMethod(client: WordPressClient, params: {
37
+ method: AuthMethod;
38
+ username?: string;
39
+ password?: string;
40
+ jwt_token?: string;
41
+ }): Promise<any>;
42
+ }
43
+ export default AuthTools;
44
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD;;;GAGG;AACH,qBAAa,SAAS;IACpB;;;OAGG;IACI,QAAQ,IAAI,GAAG,EAAE;IAmDxB;;;;;;OAMG;IACU,cAAc,CACzB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,GAAG,GACV,OAAO,CAAC,GAAG,CAAC;IAoBf;;;;;;OAMG;IACU,mBAAmB,CAC9B,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,GAAG,GACV,OAAO,CAAC,GAAG,CAAC;IAsBf;;;;;;OAMG;IACU,sBAAsB,CACjC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE;QACN,MAAM,EAAE,UAAU,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GACA,OAAO,CAAC,GAAG,CAAC;CAShB;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,126 @@
1
+ import { getErrorMessage } from "../utils/error.js";
2
+ /**
3
+ * Provides authentication-related tools for WordPress sites.
4
+ * This class encapsulates tool definitions and their corresponding handlers.
5
+ */
6
+ export class AuthTools {
7
+ /**
8
+ * Retrieves the list of authentication tools.
9
+ * @returns An array of MCPTool definitions.
10
+ */
11
+ getTools() {
12
+ return [
13
+ {
14
+ name: "wp_test_auth",
15
+ description: "Tests the authentication and connectivity for a configured WordPress site.",
16
+ parameters: [], // The 'site' parameter is added dynamically by the server
17
+ handler: this.handleTestAuth.bind(this),
18
+ },
19
+ {
20
+ name: "wp_get_auth_status",
21
+ description: "Gets the current authentication status for a configured WordPress site.",
22
+ parameters: [],
23
+ handler: this.handleGetAuthStatus.bind(this),
24
+ },
25
+ {
26
+ name: "wp_switch_auth_method",
27
+ description: "Switches the authentication method for a site for the current session.",
28
+ parameters: [
29
+ {
30
+ name: "method",
31
+ type: "string",
32
+ required: true,
33
+ description: "The new authentication method to use.",
34
+ enum: ["app-password", "jwt", "basic", "api-key", "cookie"],
35
+ },
36
+ {
37
+ name: "username",
38
+ type: "string",
39
+ description: "The username for 'app-password' or 'basic' authentication.",
40
+ },
41
+ {
42
+ name: "password",
43
+ type: "string",
44
+ description: "The Application Password for 'app-password' or password for 'basic' auth.",
45
+ },
46
+ {
47
+ name: "jwt_token",
48
+ type: "string",
49
+ description: "The token for 'jwt' authentication.",
50
+ },
51
+ ],
52
+ handler: this.handleSwitchAuthMethod.bind(this),
53
+ },
54
+ ];
55
+ }
56
+ /**
57
+ * Handles the 'wp_test_auth' tool request.
58
+ * It tests the connection and fetches user details upon success.
59
+ * @param client - The WordPressClient instance for the target site.
60
+ * @param params - The parameters for the tool request.
61
+ * @returns A promise that resolves to an MCPToolResponse.
62
+ */
63
+ async handleTestAuth(client, params) {
64
+ try {
65
+ await client.ping();
66
+ const user = await client.getCurrentUser();
67
+ const siteConfig = client.config;
68
+ const content = `✅ **Authentication successful!**\n\n` +
69
+ `**Site:** ${siteConfig.baseUrl}\n` +
70
+ `**Method:** ${siteConfig.auth.method}\n` +
71
+ `**User:** ${user.name} (@${user.slug})\n` +
72
+ `**Roles:** ${user.roles?.join(", ") || "N/A"}\n\n` +
73
+ `Your WordPress connection is working properly.`;
74
+ return content;
75
+ }
76
+ catch (error) {
77
+ throw new Error(`Authentication test failed: ${getErrorMessage(error)}`);
78
+ }
79
+ }
80
+ /**
81
+ * Handles the 'wp_get_auth_status' tool request.
82
+ * Reports whether the client is currently authenticated.
83
+ * @param client - The WordPressClient instance for the target site.
84
+ * @param params - The parameters for the tool request.
85
+ * @returns A promise that resolves to an MCPToolResponse.
86
+ */
87
+ async handleGetAuthStatus(client, params) {
88
+ try {
89
+ const isAuthenticated = client.isAuthenticated;
90
+ const config = client.config;
91
+ let content = `**Authentication Status for ${config.baseUrl}**\n\n` +
92
+ `**Authenticated:** ${isAuthenticated ? "✅ Yes" : "❌ No"}\n` +
93
+ `**Method:** ${config.auth.method}\n`;
94
+ if (isAuthenticated) {
95
+ const user = await client.getCurrentUser();
96
+ content += `**User:** ${user.name} (@${user.slug})\n`;
97
+ }
98
+ else {
99
+ content += `**Status:** Not connected. Use 'wp_test_auth' to connect and verify credentials.`;
100
+ }
101
+ return content;
102
+ }
103
+ catch (error) {
104
+ throw new Error(`Failed to get auth status: ${getErrorMessage(error)}`);
105
+ }
106
+ }
107
+ /**
108
+ * Handles the 'wp_switch_auth_method' tool request.
109
+ * Updates the client's authentication configuration in memory for the session.
110
+ * @param client - The WordPressClient instance for the target site.
111
+ * @param params - The parameters for the tool request, including the new auth details.
112
+ * @returns A promise that resolves to an MCPToolResponse.
113
+ */
114
+ async handleSwitchAuthMethod(client, params) {
115
+ try {
116
+ // This functionality is not currently supported as the client
117
+ // doesn't have an updateAuthConfig method
118
+ throw new Error("Dynamic authentication method switching is not currently supported. Please update your configuration file and restart the server.");
119
+ }
120
+ catch (error) {
121
+ throw new Error(`Failed to switch auth method: ${getErrorMessage(error)}`);
122
+ }
123
+ }
124
+ }
125
+ export default AuthTools;
126
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { WordPressClient } from "../client/api.js";
2
+ /**
3
+ * Base class for all WordPress tool categories.
4
+ * Provides common functionality and error handling for tool implementations.
5
+ */
6
+ export declare abstract class BaseToolClass {
7
+ protected client: WordPressClient;
8
+ constructor(client: WordPressClient);
9
+ /**
10
+ * Abstract method that must be implemented by subclasses to return their tool definitions.
11
+ * @returns An array of MCPTool definitions.
12
+ */
13
+ abstract getTools(): any[];
14
+ /**
15
+ * Common error handler for all tools.
16
+ * @param error The error to handle
17
+ * @param operation The operation that failed
18
+ * @throws Error with formatted message
19
+ */
20
+ protected handleError(error: unknown, operation: string): never;
21
+ /**
22
+ * Validates required parameters are not undefined or null.
23
+ * @param params Object containing parameters to validate
24
+ * @param required Array of required parameter names
25
+ * @throws Error if any required parameter is missing
26
+ */
27
+ protected validateRequiredParams(params: Record<string, any>, required: string[]): void;
28
+ /**
29
+ * Resolves the appropriate WordPress client for multi-site support.
30
+ * @param site Optional site ID for multi-site configurations
31
+ * @param clients Map of site IDs to WordPress clients
32
+ * @returns The resolved WordPress client
33
+ * @throws Error if site is not found or ambiguous
34
+ */
35
+ protected resolveClient(site: string | undefined, clients: Map<string, WordPressClient>): WordPressClient;
36
+ }
37
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/tools/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD;;;GAGG;AACH,8BAAsB,aAAa;IACrB,SAAS,CAAC,MAAM,EAAE,eAAe;gBAAvB,MAAM,EAAE,eAAe;IAE7C;;;OAGG;IACH,QAAQ,CAAC,QAAQ,IAAI,GAAG,EAAE;IAE1B;;;;;OAKG;IACH,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK;IAI/D;;;;;OAKG;IACH,SAAS,CAAC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAQvF;;;;;;OAMG;IACH,SAAS,CAAC,aAAa,CACrB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GACpC,eAAe;CA6BnB"}
@@ -0,0 +1,60 @@
1
+ import { getErrorMessage } from "../utils/error.js";
2
+ /**
3
+ * Base class for all WordPress tool categories.
4
+ * Provides common functionality and error handling for tool implementations.
5
+ */
6
+ export class BaseToolClass {
7
+ client;
8
+ constructor(client) {
9
+ this.client = client;
10
+ }
11
+ /**
12
+ * Common error handler for all tools.
13
+ * @param error The error to handle
14
+ * @param operation The operation that failed
15
+ * @throws Error with formatted message
16
+ */
17
+ handleError(error, operation) {
18
+ throw new Error(`Failed to ${operation}: ${getErrorMessage(error)}`);
19
+ }
20
+ /**
21
+ * Validates required parameters are not undefined or null.
22
+ * @param params Object containing parameters to validate
23
+ * @param required Array of required parameter names
24
+ * @throws Error if any required parameter is missing
25
+ */
26
+ validateRequiredParams(params, required) {
27
+ for (const param of required) {
28
+ if (params[param] === undefined || params[param] === null) {
29
+ throw new Error(`Missing required parameter: ${param}`);
30
+ }
31
+ }
32
+ }
33
+ /**
34
+ * Resolves the appropriate WordPress client for multi-site support.
35
+ * @param site Optional site ID for multi-site configurations
36
+ * @param clients Map of site IDs to WordPress clients
37
+ * @returns The resolved WordPress client
38
+ * @throws Error if site is not found or ambiguous
39
+ */
40
+ resolveClient(site, clients) {
41
+ if (clients.size === 0) {
42
+ throw new Error("No WordPress clients configured");
43
+ }
44
+ if (clients.size === 1 && !site) {
45
+ return Array.from(clients.values())[0];
46
+ }
47
+ if (!site && clients.size > 1) {
48
+ throw new Error(`Multiple sites configured. Please specify --site parameter with one of: ${Array.from(clients.keys()).join(", ")}`);
49
+ }
50
+ if (site) {
51
+ const client = clients.get(site);
52
+ if (!client) {
53
+ throw new Error(`Site "${site}" not found. Available sites: ${Array.from(clients.keys()).join(", ")}`);
54
+ }
55
+ return client;
56
+ }
57
+ return this.client;
58
+ }
59
+ }
60
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/tools/base.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;GAGG;AACH,MAAM,OAAgB,aAAa;IACX;IAAtB,YAAsB,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;IAAG,CAAC;IAQjD;;;;;OAKG;IACO,WAAW,CAAC,KAAc,EAAE,SAAiB;QACrD,MAAM,IAAI,KAAK,CAAC,aAAa,SAAS,KAAK,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IAED;;;;;OAKG;IACO,sBAAsB,CAAC,MAA2B,EAAE,QAAkB;QAC9E,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACO,aAAa,CACrB,IAAwB,EACxB,OAAqC;QAErC,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,2EAA2E,KAAK,CAAC,IAAI,CACnF,OAAO,CAAC,IAAI,EAAE,CACf,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACf,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CACb,SAAS,IAAI,iCAAiC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtF,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,33 @@
1
+ import { WordPressClient } from "../client/api.js";
2
+ import { CommentQueryParams, CreateCommentRequest, UpdateCommentRequest } from "../types/wordpress.js";
3
+ /**
4
+ * Provides tools for managing comments on a WordPress site.
5
+ * This class encapsulates tool definitions and their corresponding handlers.
6
+ */
7
+ export declare class CommentTools {
8
+ /**
9
+ * Retrieves the list of comment management tools.
10
+ * @returns An array of MCPTool definitions.
11
+ */
12
+ getTools(): any[];
13
+ handleListComments(client: WordPressClient, params: CommentQueryParams): Promise<any>;
14
+ handleGetComment(client: WordPressClient, params: {
15
+ id: number;
16
+ }): Promise<any>;
17
+ handleCreateComment(client: WordPressClient, params: CreateCommentRequest): Promise<any>;
18
+ handleUpdateComment(client: WordPressClient, params: UpdateCommentRequest & {
19
+ id: number;
20
+ }): Promise<any>;
21
+ handleDeleteComment(client: WordPressClient, params: {
22
+ id: number;
23
+ force?: boolean;
24
+ }): Promise<any>;
25
+ handleApproveComment(client: WordPressClient, params: {
26
+ id: number;
27
+ }): Promise<any>;
28
+ handleSpamComment(client: WordPressClient, params: {
29
+ id: number;
30
+ }): Promise<any>;
31
+ }
32
+ export default CommentTools;
33
+ //# sourceMappingURL=comments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../src/tools/comments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAG/B;;;GAGG;AACH,qBAAa,YAAY;IACvB;;;OAGG;IACI,QAAQ,IAAI,GAAG,EAAE;IAuIX,kBAAkB,CAC7B,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,GAAG,CAAC;IAoBF,gBAAgB,CAC3B,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GACrB,OAAO,CAAC,GAAG,CAAC;IAgBF,mBAAmB,CAC9B,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,GAAG,CAAC;IASF,mBAAmB,CAC9B,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,oBAAoB,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC,GAAG,CAAC;IASF,mBAAmB,CAC9B,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GACtC,OAAO,CAAC,GAAG,CAAC;IAUF,oBAAoB,CAC/B,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GACrB,OAAO,CAAC,GAAG,CAAC;IAYF,iBAAiB,CAC5B,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GACrB,OAAO,CAAC,GAAG,CAAC;CAWhB;AAED,eAAe,YAAY,CAAC"}