@wpgaurav/wp-mcp 0.1.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.
Files changed (118) hide show
  1. package/README.md +215 -0
  2. package/dist/bin/wp-mcp.d.ts +3 -0
  3. package/dist/bin/wp-mcp.d.ts.map +1 -0
  4. package/dist/bin/wp-mcp.js +44 -0
  5. package/dist/bin/wp-mcp.js.map +1 -0
  6. package/dist/src/client/auth.d.ts +2 -0
  7. package/dist/src/client/auth.d.ts.map +1 -0
  8. package/dist/src/client/auth.js +5 -0
  9. package/dist/src/client/auth.js.map +1 -0
  10. package/dist/src/client/errors.d.ts +14 -0
  11. package/dist/src/client/errors.d.ts.map +1 -0
  12. package/dist/src/client/errors.js +27 -0
  13. package/dist/src/client/errors.js.map +1 -0
  14. package/dist/src/client/wp-client.d.ts +24 -0
  15. package/dist/src/client/wp-client.d.ts.map +1 -0
  16. package/dist/src/client/wp-client.js +101 -0
  17. package/dist/src/client/wp-client.js.map +1 -0
  18. package/dist/src/config.d.ts +11 -0
  19. package/dist/src/config.d.ts.map +1 -0
  20. package/dist/src/config.js +20 -0
  21. package/dist/src/config.js.map +1 -0
  22. package/dist/src/discovery/engine.d.ts +5 -0
  23. package/dist/src/discovery/engine.d.ts.map +1 -0
  24. package/dist/src/discovery/engine.js +116 -0
  25. package/dist/src/discovery/engine.js.map +1 -0
  26. package/dist/src/discovery/naming.d.ts +4 -0
  27. package/dist/src/discovery/naming.d.ts.map +1 -0
  28. package/dist/src/discovery/naming.js +42 -0
  29. package/dist/src/discovery/naming.js.map +1 -0
  30. package/dist/src/discovery/schema-mapper.d.ts +18 -0
  31. package/dist/src/discovery/schema-mapper.d.ts.map +1 -0
  32. package/dist/src/discovery/schema-mapper.js +103 -0
  33. package/dist/src/discovery/schema-mapper.js.map +1 -0
  34. package/dist/src/discovery/tool-generator.d.ts +13 -0
  35. package/dist/src/discovery/tool-generator.d.ts.map +1 -0
  36. package/dist/src/discovery/tool-generator.js +58 -0
  37. package/dist/src/discovery/tool-generator.js.map +1 -0
  38. package/dist/src/index.d.ts +6 -0
  39. package/dist/src/index.d.ts.map +1 -0
  40. package/dist/src/index.js +5 -0
  41. package/dist/src/index.js.map +1 -0
  42. package/dist/src/server.d.ts +11 -0
  43. package/dist/src/server.d.ts.map +1 -0
  44. package/dist/src/server.js +21 -0
  45. package/dist/src/server.js.map +1 -0
  46. package/dist/src/tools/advanced/menus.d.ts +5 -0
  47. package/dist/src/tools/advanced/menus.d.ts.map +1 -0
  48. package/dist/src/tools/advanced/menus.js +33 -0
  49. package/dist/src/tools/advanced/menus.js.map +1 -0
  50. package/dist/src/tools/advanced/search.d.ts +5 -0
  51. package/dist/src/tools/advanced/search.d.ts.map +1 -0
  52. package/dist/src/tools/advanced/search.js +24 -0
  53. package/dist/src/tools/advanced/search.js.map +1 -0
  54. package/dist/src/tools/advanced/site-health.d.ts +5 -0
  55. package/dist/src/tools/advanced/site-health.d.ts.map +1 -0
  56. package/dist/src/tools/advanced/site-health.js +16 -0
  57. package/dist/src/tools/advanced/site-health.js.map +1 -0
  58. package/dist/src/tools/content/categories.d.ts +5 -0
  59. package/dist/src/tools/content/categories.d.ts.map +1 -0
  60. package/dist/src/tools/content/categories.js +43 -0
  61. package/dist/src/tools/content/categories.js.map +1 -0
  62. package/dist/src/tools/content/comments.d.ts +5 -0
  63. package/dist/src/tools/content/comments.d.ts.map +1 -0
  64. package/dist/src/tools/content/comments.js +45 -0
  65. package/dist/src/tools/content/comments.js.map +1 -0
  66. package/dist/src/tools/content/media.d.ts +5 -0
  67. package/dist/src/tools/content/media.d.ts.map +1 -0
  68. package/dist/src/tools/content/media.js +97 -0
  69. package/dist/src/tools/content/media.js.map +1 -0
  70. package/dist/src/tools/content/pages.d.ts +5 -0
  71. package/dist/src/tools/content/pages.d.ts.map +1 -0
  72. package/dist/src/tools/content/pages.js +98 -0
  73. package/dist/src/tools/content/pages.js.map +1 -0
  74. package/dist/src/tools/content/posts.d.ts +5 -0
  75. package/dist/src/tools/content/posts.d.ts.map +1 -0
  76. package/dist/src/tools/content/posts.js +107 -0
  77. package/dist/src/tools/content/posts.js.map +1 -0
  78. package/dist/src/tools/content/tags.d.ts +5 -0
  79. package/dist/src/tools/content/tags.d.ts.map +1 -0
  80. package/dist/src/tools/content/tags.js +41 -0
  81. package/dist/src/tools/content/tags.js.map +1 -0
  82. package/dist/src/tools/index.d.ts +5 -0
  83. package/dist/src/tools/index.d.ts.map +1 -0
  84. package/dist/src/tools/index.js +29 -0
  85. package/dist/src/tools/index.js.map +1 -0
  86. package/dist/src/tools/management/plugins.d.ts +5 -0
  87. package/dist/src/tools/management/plugins.d.ts.map +1 -0
  88. package/dist/src/tools/management/plugins.js +67 -0
  89. package/dist/src/tools/management/plugins.js.map +1 -0
  90. package/dist/src/tools/management/settings.d.ts +5 -0
  91. package/dist/src/tools/management/settings.d.ts.map +1 -0
  92. package/dist/src/tools/management/settings.js +37 -0
  93. package/dist/src/tools/management/settings.js.map +1 -0
  94. package/dist/src/tools/management/themes.d.ts +5 -0
  95. package/dist/src/tools/management/themes.d.ts.map +1 -0
  96. package/dist/src/tools/management/themes.js +34 -0
  97. package/dist/src/tools/management/themes.js.map +1 -0
  98. package/dist/src/tools/management/users.d.ts +5 -0
  99. package/dist/src/tools/management/users.d.ts.map +1 -0
  100. package/dist/src/tools/management/users.js +69 -0
  101. package/dist/src/tools/management/users.js.map +1 -0
  102. package/dist/src/tools/registry.d.ts +7 -0
  103. package/dist/src/tools/registry.d.ts.map +1 -0
  104. package/dist/src/tools/registry.js +13 -0
  105. package/dist/src/tools/registry.js.map +1 -0
  106. package/dist/src/tools/shared.d.ts +20 -0
  107. package/dist/src/tools/shared.d.ts.map +1 -0
  108. package/dist/src/tools/shared.js +15 -0
  109. package/dist/src/tools/shared.js.map +1 -0
  110. package/dist/src/transports/http.d.ts +3 -0
  111. package/dist/src/transports/http.d.ts.map +1 -0
  112. package/dist/src/transports/http.js +53 -0
  113. package/dist/src/transports/http.js.map +1 -0
  114. package/dist/src/transports/stdio.d.ts +3 -0
  115. package/dist/src/transports/stdio.d.ts.map +1 -0
  116. package/dist/src/transports/stdio.js +5 -0
  117. package/dist/src/transports/stdio.js.map +1 -0
  118. package/package.json +59 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../../src/tools/content/media.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CA6GpG"}
@@ -0,0 +1,97 @@
1
+ import { z } from "zod";
2
+ import { handleWpError, paginatedResult, jsonResult } from "../shared.js";
3
+ export function registerMediaTools(server, client, registry) {
4
+ server.registerTool("wp_media_list", {
5
+ description: "List media items in the WordPress media library",
6
+ inputSchema: {
7
+ per_page: z.number().int().min(1).max(100).default(10).describe("Items per page"),
8
+ page: z.number().int().min(1).default(1).describe("Page number"),
9
+ search: z.string().optional().describe("Search term"),
10
+ media_type: z.enum(["image", "video", "audio", "application"]).optional().describe("Filter by media type"),
11
+ mime_type: z.string().optional().describe("Filter by MIME type (e.g. image/jpeg)"),
12
+ orderby: z.enum(["date", "id", "title", "slug"]).optional().describe("Sort field"),
13
+ order: z.enum(["asc", "desc"]).optional().describe("Sort order"),
14
+ },
15
+ }, async (args) => {
16
+ try {
17
+ const result = await client.requestPaginated("/wp/v2/media", { params: args });
18
+ return paginatedResult(result.data, result.total, result.totalPages);
19
+ }
20
+ catch (err) {
21
+ return handleWpError(err);
22
+ }
23
+ });
24
+ registry.register("wp_media_list");
25
+ server.registerTool("wp_media_get", {
26
+ description: "Get a single media item by ID",
27
+ inputSchema: { id: z.number().int().describe("Media ID") },
28
+ }, async ({ id }) => {
29
+ try {
30
+ return jsonResult(await client.request(`/wp/v2/media/${id}`));
31
+ }
32
+ catch (err) {
33
+ return handleWpError(err);
34
+ }
35
+ });
36
+ registry.register("wp_media_get");
37
+ server.registerTool("wp_media_upload", {
38
+ description: "Upload a media file to WordPress from a URL. Downloads the file and uploads it to the media library.",
39
+ inputSchema: {
40
+ url: z.string().url().describe("URL of the file to upload"),
41
+ title: z.string().optional().describe("Media title"),
42
+ alt_text: z.string().optional().describe("Alt text for the media"),
43
+ caption: z.string().optional().describe("Media caption"),
44
+ filename: z.string().optional().describe("Override filename (include extension)"),
45
+ },
46
+ }, async ({ url, title, alt_text, caption, filename }) => {
47
+ try {
48
+ const response = await fetch(url);
49
+ if (!response.ok) {
50
+ return { content: [{ type: "text", text: `Failed to download file from ${url}: ${response.status}` }], isError: true };
51
+ }
52
+ const contentType = response.headers.get("content-type") ?? "application/octet-stream";
53
+ const buffer = Buffer.from(await response.arrayBuffer());
54
+ const resolvedFilename = filename ?? url.split("/").pop() ?? "upload";
55
+ const uploadResult = await client.request("/wp/v2/media", {
56
+ method: "POST",
57
+ headers: {
58
+ "Content-Type": contentType,
59
+ "Content-Disposition": `attachment; filename="${resolvedFilename}"`,
60
+ },
61
+ rawBody: buffer,
62
+ });
63
+ if (title || alt_text || caption) {
64
+ const mediaId = uploadResult["id"];
65
+ const updateBody = {};
66
+ if (title)
67
+ updateBody["title"] = title;
68
+ if (alt_text)
69
+ updateBody["alt_text"] = alt_text;
70
+ if (caption)
71
+ updateBody["caption"] = caption;
72
+ return jsonResult(await client.request(`/wp/v2/media/${mediaId}`, { method: "PUT", body: updateBody }));
73
+ }
74
+ return jsonResult(uploadResult);
75
+ }
76
+ catch (err) {
77
+ return handleWpError(err);
78
+ }
79
+ });
80
+ registry.register("wp_media_upload");
81
+ server.registerTool("wp_media_delete", {
82
+ description: "Permanently delete a media item",
83
+ inputSchema: {
84
+ id: z.number().int().describe("Media ID"),
85
+ force: z.boolean().default(true).describe("Must be true to delete media"),
86
+ },
87
+ }, async ({ id, force }) => {
88
+ try {
89
+ return jsonResult(await client.request(`/wp/v2/media/${id}`, { method: "DELETE", params: { force } }));
90
+ }
91
+ catch (err) {
92
+ return handleWpError(err);
93
+ }
94
+ });
95
+ registry.register("wp_media_delete");
96
+ }
97
+ //# sourceMappingURL=media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../../../src/tools/content/media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1E,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAgB,EAAE,QAAsB;IAC5F,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EAAE,iDAAiD;QAC9D,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACjF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;YAChE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YACrD,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC1G,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YAClF,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAClF,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;SACjE;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAA+B,EAAE,CAAC,CAAC;YAC1G,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CACF,CAAC;IACF,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAEnC,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EAAE,+BAA+B;QAC5C,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;KAC3D,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,IAAI,CAAC;YACH,OAAO,UAAU,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CACF,CAAC;IACF,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAElC,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EAAE,sGAAsG;QACnH,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YAC3D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YAClE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YACxD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;SAClF;KACF,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QACpD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,gCAAgC,GAAG,KAAK,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,CAAC;YAC3I,CAAC;YAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,0BAA0B,CAAC;YACvF,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YACzD,MAAM,gBAAgB,GAAG,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC;YAEtE,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE;gBACxD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,WAAW;oBAC3B,qBAAqB,EAAE,yBAAyB,gBAAgB,GAAG;iBACpE;gBACD,OAAO,EAAE,MAAM;aAChB,CAAC,CAAC;YAEH,IAAI,KAAK,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAI,YAAwC,CAAC,IAAI,CAAW,CAAC;gBAC1E,MAAM,UAAU,GAA4B,EAAE,CAAC;gBAC/C,IAAI,KAAK;oBAAE,UAAU,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;gBACvC,IAAI,QAAQ;oBAAE,UAAU,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;gBAChD,IAAI,OAAO;oBAAE,UAAU,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;gBAC7C,OAAO,UAAU,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,gBAAgB,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;YAC1G,CAAC;YAED,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CACF,CAAC;IACF,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAErC,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EAAE,iCAAiC;QAC9C,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YACzC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;SAC1E;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,OAAO,UAAU,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACzG,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CACF,CAAC;IACF,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { WpClient } from "../../client/wp-client.js";
3
+ import type { ToolRegistry } from "../registry.js";
4
+ export declare function registerPagesTools(server: McpServer, client: WpClient, registry: ToolRegistry): void;
5
+ //# sourceMappingURL=pages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../../../src/tools/content/pages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAiHpG"}
@@ -0,0 +1,98 @@
1
+ import { z } from "zod";
2
+ import { handleWpError, paginatedResult, jsonResult } from "../shared.js";
3
+ export function registerPagesTools(server, client, registry) {
4
+ server.registerTool("wp_pages_list", {
5
+ description: "List WordPress pages with filtering and pagination",
6
+ inputSchema: {
7
+ per_page: z.number().int().min(1).max(100).default(10).describe("Pages per page"),
8
+ page: z.number().int().min(1).default(1).describe("Page number"),
9
+ search: z.string().optional().describe("Search term"),
10
+ status: z.enum(["publish", "draft", "pending", "private", "trash", "any"]).optional().describe("Page status"),
11
+ parent: z.number().int().optional().describe("Parent page ID"),
12
+ orderby: z.enum(["date", "id", "title", "slug", "modified", "menu_order"]).optional().describe("Sort field"),
13
+ order: z.enum(["asc", "desc"]).optional().describe("Sort order"),
14
+ },
15
+ }, async (args) => {
16
+ try {
17
+ const result = await client.requestPaginated("/wp/v2/pages", { params: args });
18
+ return paginatedResult(result.data, result.total, result.totalPages);
19
+ }
20
+ catch (err) {
21
+ return handleWpError(err);
22
+ }
23
+ });
24
+ registry.register("wp_pages_list");
25
+ server.registerTool("wp_pages_get", {
26
+ description: "Get a single WordPress page by ID",
27
+ inputSchema: { id: z.number().int().describe("Page ID") },
28
+ }, async ({ id }) => {
29
+ try {
30
+ return jsonResult(await client.request(`/wp/v2/pages/${id}`));
31
+ }
32
+ catch (err) {
33
+ return handleWpError(err);
34
+ }
35
+ });
36
+ registry.register("wp_pages_get");
37
+ server.registerTool("wp_pages_create", {
38
+ description: "Create a new WordPress page",
39
+ inputSchema: {
40
+ title: z.string().describe("Page title"),
41
+ content: z.string().optional().describe("Page content (HTML)"),
42
+ excerpt: z.string().optional().describe("Page excerpt"),
43
+ status: z.enum(["publish", "draft", "pending", "private"]).default("draft").describe("Page status"),
44
+ parent: z.number().int().optional().describe("Parent page ID"),
45
+ menu_order: z.number().int().optional().describe("Menu order"),
46
+ featured_media: z.number().int().optional().describe("Featured image media ID"),
47
+ slug: z.string().optional().describe("Page slug"),
48
+ template: z.string().optional().describe("Page template file"),
49
+ },
50
+ }, async (args) => {
51
+ try {
52
+ return jsonResult(await client.request("/wp/v2/pages", { method: "POST", body: args }));
53
+ }
54
+ catch (err) {
55
+ return handleWpError(err);
56
+ }
57
+ });
58
+ registry.register("wp_pages_create");
59
+ server.registerTool("wp_pages_update", {
60
+ description: "Update an existing WordPress page",
61
+ inputSchema: {
62
+ id: z.number().int().describe("Page ID"),
63
+ title: z.string().optional().describe("Page title"),
64
+ content: z.string().optional().describe("Page content (HTML)"),
65
+ excerpt: z.string().optional().describe("Page excerpt"),
66
+ status: z.enum(["publish", "draft", "pending", "private"]).optional().describe("Page status"),
67
+ parent: z.number().int().optional().describe("Parent page ID"),
68
+ menu_order: z.number().int().optional().describe("Menu order"),
69
+ featured_media: z.number().int().optional().describe("Featured image media ID"),
70
+ slug: z.string().optional().describe("Page slug"),
71
+ template: z.string().optional().describe("Page template file"),
72
+ },
73
+ }, async ({ id, ...body }) => {
74
+ try {
75
+ return jsonResult(await client.request(`/wp/v2/pages/${id}`, { method: "PUT", body }));
76
+ }
77
+ catch (err) {
78
+ return handleWpError(err);
79
+ }
80
+ });
81
+ registry.register("wp_pages_update");
82
+ server.registerTool("wp_pages_delete", {
83
+ description: "Delete a WordPress page (moves to trash by default)",
84
+ inputSchema: {
85
+ id: z.number().int().describe("Page ID"),
86
+ force: z.boolean().default(false).describe("Bypass trash and permanently delete"),
87
+ },
88
+ }, async ({ id, force }) => {
89
+ try {
90
+ return jsonResult(await client.request(`/wp/v2/pages/${id}`, { method: "DELETE", params: { force } }));
91
+ }
92
+ catch (err) {
93
+ return handleWpError(err);
94
+ }
95
+ });
96
+ registry.register("wp_pages_delete");
97
+ }
98
+ //# sourceMappingURL=pages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.js","sourceRoot":"","sources":["../../../../src/tools/content/pages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { WpClient } from "../../client/wp-client.js";
3
+ import type { ToolRegistry } from "../registry.js";
4
+ export declare function registerPostsTools(server: McpServer, client: WpClient, registry: ToolRegistry): void;
5
+ //# sourceMappingURL=posts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"posts.d.ts","sourceRoot":"","sources":["../../../../src/tools/content/posts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CA0HpG"}
@@ -0,0 +1,107 @@
1
+ import { z } from "zod";
2
+ import { handleWpError } from "../shared.js";
3
+ export function registerPostsTools(server, client, registry) {
4
+ server.registerTool("wp_posts_list", {
5
+ description: "List WordPress posts with filtering and pagination",
6
+ inputSchema: {
7
+ per_page: z.number().int().min(1).max(100).default(10).describe("Posts per page"),
8
+ page: z.number().int().min(1).default(1).describe("Page number"),
9
+ search: z.string().optional().describe("Search term"),
10
+ status: z.enum(["publish", "draft", "pending", "private", "trash", "any"]).optional().describe("Post status"),
11
+ categories: z.string().optional().describe("Comma-separated category IDs"),
12
+ tags: z.string().optional().describe("Comma-separated tag IDs"),
13
+ orderby: z.enum(["date", "id", "title", "slug", "modified"]).optional().describe("Sort field"),
14
+ order: z.enum(["asc", "desc"]).optional().describe("Sort order"),
15
+ },
16
+ }, async (args) => {
17
+ try {
18
+ const result = await client.requestPaginated("/wp/v2/posts", { params: args });
19
+ return { content: [{ type: "text", text: JSON.stringify({ posts: result.data, total: result.total, totalPages: result.totalPages }, null, 2) }] };
20
+ }
21
+ catch (err) {
22
+ return handleWpError(err);
23
+ }
24
+ });
25
+ registry.register("wp_posts_list");
26
+ server.registerTool("wp_posts_get", {
27
+ description: "Get a single WordPress post by ID",
28
+ inputSchema: {
29
+ id: z.number().int().describe("Post ID"),
30
+ },
31
+ }, async ({ id }) => {
32
+ try {
33
+ const post = await client.request(`/wp/v2/posts/${id}`);
34
+ return { content: [{ type: "text", text: JSON.stringify(post, null, 2) }] };
35
+ }
36
+ catch (err) {
37
+ return handleWpError(err);
38
+ }
39
+ });
40
+ registry.register("wp_posts_get");
41
+ server.registerTool("wp_posts_create", {
42
+ description: "Create a new WordPress post",
43
+ inputSchema: {
44
+ title: z.string().describe("Post title"),
45
+ content: z.string().optional().describe("Post content (HTML)"),
46
+ excerpt: z.string().optional().describe("Post excerpt"),
47
+ status: z.enum(["publish", "draft", "pending", "private"]).default("draft").describe("Post status"),
48
+ categories: z.array(z.number().int()).optional().describe("Category IDs"),
49
+ tags: z.array(z.number().int()).optional().describe("Tag IDs"),
50
+ featured_media: z.number().int().optional().describe("Featured image media ID"),
51
+ slug: z.string().optional().describe("Post slug"),
52
+ format: z.enum(["standard", "aside", "chat", "gallery", "link", "image", "quote", "status", "video", "audio"]).optional().describe("Post format"),
53
+ },
54
+ }, async (args) => {
55
+ try {
56
+ const post = await client.request("/wp/v2/posts", { method: "POST", body: args });
57
+ return { content: [{ type: "text", text: JSON.stringify(post, null, 2) }] };
58
+ }
59
+ catch (err) {
60
+ return handleWpError(err);
61
+ }
62
+ });
63
+ registry.register("wp_posts_create");
64
+ server.registerTool("wp_posts_update", {
65
+ description: "Update an existing WordPress post",
66
+ inputSchema: {
67
+ id: z.number().int().describe("Post ID"),
68
+ title: z.string().optional().describe("Post title"),
69
+ content: z.string().optional().describe("Post content (HTML)"),
70
+ excerpt: z.string().optional().describe("Post excerpt"),
71
+ status: z.enum(["publish", "draft", "pending", "private"]).optional().describe("Post status"),
72
+ categories: z.array(z.number().int()).optional().describe("Category IDs"),
73
+ tags: z.array(z.number().int()).optional().describe("Tag IDs"),
74
+ featured_media: z.number().int().optional().describe("Featured image media ID"),
75
+ slug: z.string().optional().describe("Post slug"),
76
+ },
77
+ }, async ({ id, ...body }) => {
78
+ try {
79
+ const post = await client.request(`/wp/v2/posts/${id}`, { method: "PUT", body });
80
+ return { content: [{ type: "text", text: JSON.stringify(post, null, 2) }] };
81
+ }
82
+ catch (err) {
83
+ return handleWpError(err);
84
+ }
85
+ });
86
+ registry.register("wp_posts_update");
87
+ server.registerTool("wp_posts_delete", {
88
+ description: "Delete a WordPress post (moves to trash by default)",
89
+ inputSchema: {
90
+ id: z.number().int().describe("Post ID"),
91
+ force: z.boolean().default(false).describe("Bypass trash and permanently delete"),
92
+ },
93
+ }, async ({ id, force }) => {
94
+ try {
95
+ const result = await client.request(`/wp/v2/posts/${id}`, {
96
+ method: "DELETE",
97
+ params: { force },
98
+ });
99
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
100
+ }
101
+ catch (err) {
102
+ return handleWpError(err);
103
+ }
104
+ });
105
+ registry.register("wp_posts_delete");
106
+ }
107
+ //# sourceMappingURL=posts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"posts.js","sourceRoot":"","sources":["../../../../src/tools/content/posts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { WpClient } from "../../client/wp-client.js";
3
+ import type { ToolRegistry } from "../registry.js";
4
+ export declare function registerTagsTools(server: McpServer, client: WpClient, registry: ToolRegistry): void;
5
+ //# sourceMappingURL=tags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../../src/tools/content/tags.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CA4CnG"}
@@ -0,0 +1,41 @@
1
+ import { z } from "zod";
2
+ import { handleWpError, paginatedResult, jsonResult } from "../shared.js";
3
+ export function registerTagsTools(server, client, registry) {
4
+ server.registerTool("wp_tags_list", {
5
+ description: "List WordPress tags",
6
+ inputSchema: {
7
+ per_page: z.number().int().min(1).max(100).default(10).describe("Tags per page"),
8
+ page: z.number().int().min(1).default(1).describe("Page number"),
9
+ search: z.string().optional().describe("Search term"),
10
+ orderby: z.enum(["id", "name", "slug", "count"]).optional().describe("Sort field"),
11
+ order: z.enum(["asc", "desc"]).optional().describe("Sort order"),
12
+ hide_empty: z.boolean().optional().describe("Hide tags with no posts"),
13
+ },
14
+ }, async (args) => {
15
+ try {
16
+ const result = await client.requestPaginated("/wp/v2/tags", { params: args });
17
+ return paginatedResult(result.data, result.total, result.totalPages);
18
+ }
19
+ catch (err) {
20
+ return handleWpError(err);
21
+ }
22
+ });
23
+ registry.register("wp_tags_list");
24
+ server.registerTool("wp_tags_create", {
25
+ description: "Create a new WordPress tag",
26
+ inputSchema: {
27
+ name: z.string().describe("Tag name"),
28
+ slug: z.string().optional().describe("Tag slug"),
29
+ description: z.string().optional().describe("Tag description"),
30
+ },
31
+ }, async (args) => {
32
+ try {
33
+ return jsonResult(await client.request("/wp/v2/tags", { method: "POST", body: args }));
34
+ }
35
+ catch (err) {
36
+ return handleWpError(err);
37
+ }
38
+ });
39
+ registry.register("wp_tags_create");
40
+ }
41
+ //# sourceMappingURL=tags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags.js","sourceRoot":"","sources":["../../../../src/tools/content/tags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1E,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,MAAgB,EAAE,QAAsB;IAC3F,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;YAChF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;YAChE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YACrD,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAClF,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAChE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SACvE;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,IAA+B,EAAE,CAAC,CAAC;YACzG,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CACF,CAAC;IACF,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAElC,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EAAE,4BAA4B;QACzC,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YAChD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;SAC/D;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,OAAO,UAAU,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAA+B,EAAE,CAAC,CAAC,CAAC;QACpH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CACF,CAAC;IACF,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { WpClient } from "../client/wp-client.js";
3
+ import type { ToolRegistry } from "./registry.js";
4
+ export declare function registerAllCoreTools(server: McpServer, client: WpClient, registry: ToolRegistry): void;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAelD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CActG"}
@@ -0,0 +1,29 @@
1
+ import { registerPostsTools } from "./content/posts.js";
2
+ import { registerPagesTools } from "./content/pages.js";
3
+ import { registerMediaTools } from "./content/media.js";
4
+ import { registerCategoriesTools } from "./content/categories.js";
5
+ import { registerTagsTools } from "./content/tags.js";
6
+ import { registerCommentsTools } from "./content/comments.js";
7
+ import { registerPluginsTools } from "./management/plugins.js";
8
+ import { registerThemesTools } from "./management/themes.js";
9
+ import { registerUsersTools } from "./management/users.js";
10
+ import { registerSettingsTools } from "./management/settings.js";
11
+ import { registerMenusTools } from "./advanced/menus.js";
12
+ import { registerSearchTools } from "./advanced/search.js";
13
+ import { registerSiteHealthTools } from "./advanced/site-health.js";
14
+ export function registerAllCoreTools(server, client, registry) {
15
+ registerPostsTools(server, client, registry);
16
+ registerPagesTools(server, client, registry);
17
+ registerMediaTools(server, client, registry);
18
+ registerCategoriesTools(server, client, registry);
19
+ registerTagsTools(server, client, registry);
20
+ registerCommentsTools(server, client, registry);
21
+ registerPluginsTools(server, client, registry);
22
+ registerThemesTools(server, client, registry);
23
+ registerUsersTools(server, client, registry);
24
+ registerSettingsTools(server, client, registry);
25
+ registerMenusTools(server, client, registry);
26
+ registerSearchTools(server, client, registry);
27
+ registerSiteHealthTools(server, client, registry);
28
+ }
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAgB,EAAE,QAAsB;IAC9F,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClD,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/C,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC9C,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC9C,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { WpClient } from "../../client/wp-client.js";
3
+ import type { ToolRegistry } from "../registry.js";
4
+ export declare function registerPluginsTools(server: McpServer, client: WpClient, registry: ToolRegistry): void;
5
+ //# sourceMappingURL=plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../../../src/tools/management/plugins.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CA8EtG"}
@@ -0,0 +1,67 @@
1
+ import { z } from "zod";
2
+ import { handleWpError, jsonResult } from "../shared.js";
3
+ export function registerPluginsTools(server, client, registry) {
4
+ server.registerTool("wp_plugins_list", {
5
+ description: "List installed WordPress plugins with their status",
6
+ inputSchema: {
7
+ status: z.enum(["active", "inactive"]).optional().describe("Filter by plugin status"),
8
+ },
9
+ }, async (args) => {
10
+ try {
11
+ return jsonResult(await client.request("/wp/v2/plugins", { params: args }));
12
+ }
13
+ catch (err) {
14
+ return handleWpError(err);
15
+ }
16
+ });
17
+ registry.register("wp_plugins_list");
18
+ server.registerTool("wp_plugins_get", {
19
+ description: "Get details of a specific plugin. Use folder/file format (e.g. 'akismet/akismet')",
20
+ inputSchema: {
21
+ plugin: z.string().describe("Plugin identifier in folder/file format (e.g. 'akismet/akismet')"),
22
+ },
23
+ }, async ({ plugin }) => {
24
+ try {
25
+ return jsonResult(await client.request(`/wp/v2/plugins/${encodeURIComponent(plugin)}`));
26
+ }
27
+ catch (err) {
28
+ return handleWpError(err);
29
+ }
30
+ });
31
+ registry.register("wp_plugins_get");
32
+ server.registerTool("wp_plugins_activate", {
33
+ description: "Activate a WordPress plugin",
34
+ inputSchema: {
35
+ plugin: z.string().describe("Plugin identifier in folder/file format"),
36
+ },
37
+ }, async ({ plugin }) => {
38
+ try {
39
+ return jsonResult(await client.request(`/wp/v2/plugins/${encodeURIComponent(plugin)}`, {
40
+ method: "PUT",
41
+ body: { status: "active" },
42
+ }));
43
+ }
44
+ catch (err) {
45
+ return handleWpError(err);
46
+ }
47
+ });
48
+ registry.register("wp_plugins_activate");
49
+ server.registerTool("wp_plugins_deactivate", {
50
+ description: "Deactivate a WordPress plugin",
51
+ inputSchema: {
52
+ plugin: z.string().describe("Plugin identifier in folder/file format"),
53
+ },
54
+ }, async ({ plugin }) => {
55
+ try {
56
+ return jsonResult(await client.request(`/wp/v2/plugins/${encodeURIComponent(plugin)}`, {
57
+ method: "PUT",
58
+ body: { status: "inactive" },
59
+ }));
60
+ }
61
+ catch (err) {
62
+ return handleWpError(err);
63
+ }
64
+ });
65
+ registry.register("wp_plugins_deactivate");
66
+ }
67
+ //# sourceMappingURL=plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../../src/tools/management/plugins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { WpClient } from "../../client/wp-client.js";
3
+ import type { ToolRegistry } from "../registry.js";
4
+ export declare function registerSettingsTools(server: McpServer, client: WpClient, registry: ToolRegistry): void;
5
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../src/tools/management/settings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAwCvG"}
@@ -0,0 +1,37 @@
1
+ import { z } from "zod";
2
+ import { handleWpError, jsonResult } from "../shared.js";
3
+ export function registerSettingsTools(server, client, registry) {
4
+ server.registerTool("wp_settings_get", {
5
+ description: "Get WordPress site settings (title, tagline, URL, timezone, date/time format, etc.)",
6
+ inputSchema: {},
7
+ }, async () => {
8
+ try {
9
+ return jsonResult(await client.request("/wp/v2/settings"));
10
+ }
11
+ catch (err) {
12
+ return handleWpError(err);
13
+ }
14
+ });
15
+ registry.register("wp_settings_get");
16
+ server.registerTool("wp_settings_update", {
17
+ description: "Update WordPress site settings",
18
+ inputSchema: {
19
+ title: z.string().optional().describe("Site title"),
20
+ description: z.string().optional().describe("Site tagline"),
21
+ timezone_string: z.string().optional().describe("Timezone (e.g. 'America/New_York')"),
22
+ date_format: z.string().optional().describe("Date format string"),
23
+ time_format: z.string().optional().describe("Time format string"),
24
+ posts_per_page: z.number().int().optional().describe("Posts per page"),
25
+ default_comment_status: z.enum(["open", "closed"]).optional().describe("Default comment status"),
26
+ },
27
+ }, async (args) => {
28
+ try {
29
+ return jsonResult(await client.request("/wp/v2/settings", { method: "POST", body: args }));
30
+ }
31
+ catch (err) {
32
+ return handleWpError(err);
33
+ }
34
+ });
35
+ registry.register("wp_settings_update");
36
+ }
37
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../../src/tools/management/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAAgB,EAAE,QAAsB;IAC/F,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EAAE,qFAAqF;QAClG,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,OAAO,UAAU,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CACF,CAAC;IACF,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAErC,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,WAAW,EAAE,gCAAgC;QAC7C,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YACnD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC3D,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YACrF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YACjE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YACjE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACtE,sBAAsB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;SACjG;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,OAAO,UAAU,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAA+B,EAAE,CAAC,CAAC,CAAC;QACxH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CACF,CAAC;IACF,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { WpClient } from "../../client/wp-client.js";
3
+ import type { ToolRegistry } from "../registry.js";
4
+ export declare function registerThemesTools(server: McpServer, client: WpClient, registry: ToolRegistry): void;
5
+ //# sourceMappingURL=themes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../../../src/tools/management/themes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAqCrG"}