@xiedada/nodemw-mcp-server 0.0.1

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 (195) hide show
  1. package/LICENSE +166 -0
  2. package/README.md +145 -0
  3. package/dist/common/nodemwBot.d.ts +21 -0
  4. package/dist/common/nodemwBot.d.ts.map +1 -0
  5. package/dist/common/nodemwBot.js +62 -0
  6. package/dist/common/nodemwBot.js.map +1 -0
  7. package/dist/common/utils.d.ts +7 -0
  8. package/dist/common/utils.d.ts.map +1 -0
  9. package/dist/common/utils.js +38 -0
  10. package/dist/common/utils.js.map +1 -0
  11. package/dist/index.d.ts +3 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +64 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/server.d.ts +4 -0
  16. package/dist/server.d.ts.map +1 -0
  17. package/dist/server.js +9 -0
  18. package/dist/server.js.map +1 -0
  19. package/dist/tools/editing/add-flow-topic.d.ts +3 -0
  20. package/dist/tools/editing/add-flow-topic.d.ts.map +1 -0
  21. package/dist/tools/editing/add-flow-topic.js +25 -0
  22. package/dist/tools/editing/add-flow-topic.js.map +1 -0
  23. package/dist/tools/editing/append.d.ts +3 -0
  24. package/dist/tools/editing/append.d.ts.map +1 -0
  25. package/dist/tools/editing/append.js +26 -0
  26. package/dist/tools/editing/append.js.map +1 -0
  27. package/dist/tools/editing/create-account.d.ts +3 -0
  28. package/dist/tools/editing/create-account.d.ts.map +1 -0
  29. package/dist/tools/editing/create-account.js +24 -0
  30. package/dist/tools/editing/create-account.js.map +1 -0
  31. package/dist/tools/editing/delete.d.ts +3 -0
  32. package/dist/tools/editing/delete.d.ts.map +1 -0
  33. package/dist/tools/editing/delete.js +25 -0
  34. package/dist/tools/editing/delete.js.map +1 -0
  35. package/dist/tools/editing/edit.d.ts +3 -0
  36. package/dist/tools/editing/edit.d.ts.map +1 -0
  37. package/dist/tools/editing/edit.js +27 -0
  38. package/dist/tools/editing/edit.js.map +1 -0
  39. package/dist/tools/editing/move.d.ts +3 -0
  40. package/dist/tools/editing/move.d.ts.map +1 -0
  41. package/dist/tools/editing/move.js +26 -0
  42. package/dist/tools/editing/move.js.map +1 -0
  43. package/dist/tools/editing/prepend.d.ts +3 -0
  44. package/dist/tools/editing/prepend.d.ts.map +1 -0
  45. package/dist/tools/editing/prepend.js +26 -0
  46. package/dist/tools/editing/prepend.js.map +1 -0
  47. package/dist/tools/editing/protect.d.ts +3 -0
  48. package/dist/tools/editing/protect.d.ts.map +1 -0
  49. package/dist/tools/editing/protect.js +37 -0
  50. package/dist/tools/editing/protect.js.map +1 -0
  51. package/dist/tools/editing/purge.d.ts +3 -0
  52. package/dist/tools/editing/purge.d.ts.map +1 -0
  53. package/dist/tools/editing/purge.js +23 -0
  54. package/dist/tools/editing/purge.js.map +1 -0
  55. package/dist/tools/editing/send-email.d.ts +3 -0
  56. package/dist/tools/editing/send-email.d.ts.map +1 -0
  57. package/dist/tools/editing/send-email.js +25 -0
  58. package/dist/tools/editing/send-email.js.map +1 -0
  59. package/dist/tools/editing/upload-by-url.d.ts +3 -0
  60. package/dist/tools/editing/upload-by-url.d.ts.map +1 -0
  61. package/dist/tools/editing/upload-by-url.js +26 -0
  62. package/dist/tools/editing/upload-by-url.js.map +1 -0
  63. package/dist/tools/editing/upload.d.ts +3 -0
  64. package/dist/tools/editing/upload.d.ts.map +1 -0
  65. package/dist/tools/editing/upload.js +27 -0
  66. package/dist/tools/editing/upload.js.map +1 -0
  67. package/dist/tools/index.d.ts +3 -0
  68. package/dist/tools/index.d.ts.map +1 -0
  69. package/dist/tools/index.js +105 -0
  70. package/dist/tools/index.js.map +1 -0
  71. package/dist/tools/ro/expand-templates.d.ts +3 -0
  72. package/dist/tools/ro/expand-templates.d.ts.map +1 -0
  73. package/dist/tools/ro/expand-templates.js +28 -0
  74. package/dist/tools/ro/expand-templates.js.map +1 -0
  75. package/dist/tools/ro/get-all-pages.d.ts +3 -0
  76. package/dist/tools/ro/get-all-pages.d.ts.map +1 -0
  77. package/dist/tools/ro/get-all-pages.js +30 -0
  78. package/dist/tools/ro/get-all-pages.js.map +1 -0
  79. package/dist/tools/ro/get-article-categories.d.ts +3 -0
  80. package/dist/tools/ro/get-article-categories.d.ts.map +1 -0
  81. package/dist/tools/ro/get-article-categories.js +27 -0
  82. package/dist/tools/ro/get-article-categories.js.map +1 -0
  83. package/dist/tools/ro/get-article-info.d.ts +3 -0
  84. package/dist/tools/ro/get-article-info.d.ts.map +1 -0
  85. package/dist/tools/ro/get-article-info.js +35 -0
  86. package/dist/tools/ro/get-article-info.js.map +1 -0
  87. package/dist/tools/ro/get-article-properties.d.ts +3 -0
  88. package/dist/tools/ro/get-article-properties.d.ts.map +1 -0
  89. package/dist/tools/ro/get-article-properties.js +26 -0
  90. package/dist/tools/ro/get-article-properties.js.map +1 -0
  91. package/dist/tools/ro/get-article-revisions.d.ts +3 -0
  92. package/dist/tools/ro/get-article-revisions.d.ts.map +1 -0
  93. package/dist/tools/ro/get-article-revisions.js +29 -0
  94. package/dist/tools/ro/get-article-revisions.js.map +1 -0
  95. package/dist/tools/ro/get-article.d.ts +3 -0
  96. package/dist/tools/ro/get-article.d.ts.map +1 -0
  97. package/dist/tools/ro/get-article.js +54 -0
  98. package/dist/tools/ro/get-article.js.map +1 -0
  99. package/dist/tools/ro/get-backlinks.d.ts +3 -0
  100. package/dist/tools/ro/get-backlinks.d.ts.map +1 -0
  101. package/dist/tools/ro/get-backlinks.js +27 -0
  102. package/dist/tools/ro/get-backlinks.js.map +1 -0
  103. package/dist/tools/ro/get-categories.d.ts +3 -0
  104. package/dist/tools/ro/get-categories.d.ts.map +1 -0
  105. package/dist/tools/ro/get-categories.js +27 -0
  106. package/dist/tools/ro/get-categories.js.map +1 -0
  107. package/dist/tools/ro/get-external-links.d.ts +3 -0
  108. package/dist/tools/ro/get-external-links.d.ts.map +1 -0
  109. package/dist/tools/ro/get-external-links.js +27 -0
  110. package/dist/tools/ro/get-external-links.js.map +1 -0
  111. package/dist/tools/ro/get-image-info.d.ts +3 -0
  112. package/dist/tools/ro/get-image-info.d.ts.map +1 -0
  113. package/dist/tools/ro/get-image-info.js +29 -0
  114. package/dist/tools/ro/get-image-info.js.map +1 -0
  115. package/dist/tools/ro/get-image-usage.d.ts +3 -0
  116. package/dist/tools/ro/get-image-usage.d.ts.map +1 -0
  117. package/dist/tools/ro/get-image-usage.js +27 -0
  118. package/dist/tools/ro/get-image-usage.js.map +1 -0
  119. package/dist/tools/ro/get-images-from-article.d.ts +3 -0
  120. package/dist/tools/ro/get-images-from-article.d.ts.map +1 -0
  121. package/dist/tools/ro/get-images-from-article.js +27 -0
  122. package/dist/tools/ro/get-images-from-article.js.map +1 -0
  123. package/dist/tools/ro/get-images.d.ts +3 -0
  124. package/dist/tools/ro/get-images.d.ts.map +1 -0
  125. package/dist/tools/ro/get-images.js +43 -0
  126. package/dist/tools/ro/get-images.js.map +1 -0
  127. package/dist/tools/ro/get-log.d.ts +3 -0
  128. package/dist/tools/ro/get-log.d.ts.map +1 -0
  129. package/dist/tools/ro/get-log.js +46 -0
  130. package/dist/tools/ro/get-log.js.map +1 -0
  131. package/dist/tools/ro/get-mediawiki-version.d.ts +3 -0
  132. package/dist/tools/ro/get-mediawiki-version.d.ts.map +1 -0
  133. package/dist/tools/ro/get-mediawiki-version.js +20 -0
  134. package/dist/tools/ro/get-mediawiki-version.js.map +1 -0
  135. package/dist/tools/ro/get-pages-by-prefix.d.ts +3 -0
  136. package/dist/tools/ro/get-pages-by-prefix.d.ts.map +1 -0
  137. package/dist/tools/ro/get-pages-by-prefix.js +27 -0
  138. package/dist/tools/ro/get-pages-by-prefix.js.map +1 -0
  139. package/dist/tools/ro/get-pages-in-category.d.ts +3 -0
  140. package/dist/tools/ro/get-pages-in-category.d.ts.map +1 -0
  141. package/dist/tools/ro/get-pages-in-category.js +29 -0
  142. package/dist/tools/ro/get-pages-in-category.js.map +1 -0
  143. package/dist/tools/ro/get-pages-in-namespace.d.ts +3 -0
  144. package/dist/tools/ro/get-pages-in-namespace.d.ts.map +1 -0
  145. package/dist/tools/ro/get-pages-in-namespace.js +27 -0
  146. package/dist/tools/ro/get-pages-in-namespace.js.map +1 -0
  147. package/dist/tools/ro/get-pages-transcluding.d.ts +3 -0
  148. package/dist/tools/ro/get-pages-transcluding.d.ts.map +1 -0
  149. package/dist/tools/ro/get-pages-transcluding.js +32 -0
  150. package/dist/tools/ro/get-pages-transcluding.js.map +1 -0
  151. package/dist/tools/ro/get-query-page.d.ts +3 -0
  152. package/dist/tools/ro/get-query-page.d.ts.map +1 -0
  153. package/dist/tools/ro/get-query-page.js +27 -0
  154. package/dist/tools/ro/get-query-page.js.map +1 -0
  155. package/dist/tools/ro/get-recent-changes.d.ts +3 -0
  156. package/dist/tools/ro/get-recent-changes.d.ts.map +1 -0
  157. package/dist/tools/ro/get-recent-changes.js +43 -0
  158. package/dist/tools/ro/get-recent-changes.js.map +1 -0
  159. package/dist/tools/ro/get-site-info.d.ts +3 -0
  160. package/dist/tools/ro/get-site-info.d.ts.map +1 -0
  161. package/dist/tools/ro/get-site-info.js +23 -0
  162. package/dist/tools/ro/get-site-info.js.map +1 -0
  163. package/dist/tools/ro/get-site-stats.d.ts +3 -0
  164. package/dist/tools/ro/get-site-stats.d.ts.map +1 -0
  165. package/dist/tools/ro/get-site-stats.js +20 -0
  166. package/dist/tools/ro/get-site-stats.js.map +1 -0
  167. package/dist/tools/ro/get-user-contribs.d.ts +3 -0
  168. package/dist/tools/ro/get-user-contribs.d.ts.map +1 -0
  169. package/dist/tools/ro/get-user-contribs.js +39 -0
  170. package/dist/tools/ro/get-user-contribs.js.map +1 -0
  171. package/dist/tools/ro/get-users.d.ts +3 -0
  172. package/dist/tools/ro/get-users.d.ts.map +1 -0
  173. package/dist/tools/ro/get-users.js +29 -0
  174. package/dist/tools/ro/get-users.js.map +1 -0
  175. package/dist/tools/ro/parse.d.ts +3 -0
  176. package/dist/tools/ro/parse.d.ts.map +1 -0
  177. package/dist/tools/ro/parse.js +37 -0
  178. package/dist/tools/ro/parse.js.map +1 -0
  179. package/dist/tools/ro/search.d.ts +3 -0
  180. package/dist/tools/ro/search.d.ts.map +1 -0
  181. package/dist/tools/ro/search.js +32 -0
  182. package/dist/tools/ro/search.js.map +1 -0
  183. package/dist/tools/ro/whoami.d.ts +3 -0
  184. package/dist/tools/ro/whoami.d.ts.map +1 -0
  185. package/dist/tools/ro/whoami.js +20 -0
  186. package/dist/tools/ro/whoami.js.map +1 -0
  187. package/dist/tools/ro/whoare.d.ts +3 -0
  188. package/dist/tools/ro/whoare.d.ts.map +1 -0
  189. package/dist/tools/ro/whoare.js +19 -0
  190. package/dist/tools/ro/whoare.js.map +1 -0
  191. package/dist/tools/ro/whois.d.ts +3 -0
  192. package/dist/tools/ro/whois.d.ts.map +1 -0
  193. package/dist/tools/ro/whois.js +26 -0
  194. package/dist/tools/ro/whois.js.map +1 -0
  195. package/package.json +53 -0
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
3
+ import { jsonResult, errorResult } from '../../common/utils.js';
4
+ export function createAccountTool(server) {
5
+ return server.tool('create-account', 'Create a new MediaWiki user account (requires authentication)', {
6
+ username: z.string().describe('New account username'),
7
+ password: z.string().describe('New account password'),
8
+ }, {
9
+ title: 'Create user account',
10
+ readOnlyHint: false,
11
+ destructiveHint: false
12
+ }, async (params) => handleCreateAccountTool(params));
13
+ }
14
+ async function handleCreateAccountTool(params) {
15
+ try {
16
+ const bot = await getBot();
17
+ const result = await promisifyBotMethod(bot, 'createAccount', params.username, params.password);
18
+ return jsonResult(result);
19
+ }
20
+ catch (error) {
21
+ return errorResult('Failed to create account', error);
22
+ }
23
+ }
24
+ //# sourceMappingURL=create-account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-account.js","sourceRoot":"","sources":["../../../src/tools/editing/create-account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,iBAAiB,CAAE,MAAiB;IACnD,OAAO,MAAM,CAAC,IAAI,CACjB,gBAAgB,EAChB,+DAA+D,EAC/D;QACC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,sBAAsB,CAAE;QACvD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,sBAAsB,CAAE;KACvD,EACD;QACC,KAAK,EAAE,qBAAqB;QAC5B,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,EAAG,MAAM,EAAG,EAAE,CAAC,uBAAuB,CAAE,MAAM,CAAE,CACrD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,uBAAuB,CACrC,MAGC;IAED,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAE3B,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACtC,GAAG,EACH,eAAe,EACf,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,QAAQ,CACf,CAAC;QAEF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO,WAAW,CAAC,0BAA0B,EAAE,KAAc,CAAC,CAAC;IAChE,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function deleteTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/tools/editing/delete.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAKzF,wBAAgB,UAAU,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAe9D"}
@@ -0,0 +1,25 @@
1
+ import { z } from 'zod';
2
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
3
+ import { jsonResult, errorResult } from '../../common/utils.js';
4
+ export function deleteTool(server) {
5
+ return server.tool('delete', 'Delete a wiki page (requires authentication)', {
6
+ title: z.string().describe('Page title to delete'),
7
+ reason: z.string().describe('Reason for deletion'),
8
+ }, {
9
+ title: 'Delete page',
10
+ readOnlyHint: false,
11
+ destructiveHint: true
12
+ }, async (params) => handleDeleteTool(params));
13
+ }
14
+ async function handleDeleteTool(params) {
15
+ try {
16
+ const bot = await getBot();
17
+ const prefixedReason = `[nodemw-mcp] ${params.reason}`;
18
+ const result = await promisifyBotMethod(bot, 'delete', params.title, prefixedReason);
19
+ return jsonResult(result);
20
+ }
21
+ catch (error) {
22
+ return errorResult('Failed to delete page', error);
23
+ }
24
+ }
25
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/tools/editing/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,UAAU,CAAE,MAAiB;IAC5C,OAAO,MAAM,CAAC,IAAI,CACjB,QAAQ,EACR,8CAA8C,EAC9C;QACC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,sBAAsB,CAAE;QACpD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,qBAAqB,CAAE;KACpD,EACD;QACC,KAAK,EAAE,aAAa;QACpB,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,IAAI;KACF,EACpB,KAAK,EAAG,MAAM,EAAG,EAAE,CAAC,gBAAgB,CAAE,MAAM,CAAE,CAC9C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC9B,MAGC;IAED,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,cAAc,GAAG,gBAAgB,MAAM,CAAC,MAAM,EAAE,CAAC;QAEvD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAItC,GAAG,EACH,QAAQ,EACR,MAAM,CAAC,KAAK,EACZ,cAAc,CACd,CAAC;QAEF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO,WAAW,CAAC,uBAAuB,EAAE,KAAc,CAAC,CAAC;IAC7D,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function editTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=edit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../src/tools/editing/edit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAKzF,wBAAgB,QAAQ,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAiB5D"}
@@ -0,0 +1,27 @@
1
+ import { z } from 'zod';
2
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
3
+ import { jsonResult, errorResult } from '../../common/utils.js';
4
+ export function editTool(server) {
5
+ return server.tool('edit', 'Edit a wiki page (requires authentication)', {
6
+ title: z.string().describe('Page title to edit'),
7
+ content: z.string().describe('New content for the page'),
8
+ summary: z.string().describe('Edit summary'),
9
+ minor: z.boolean().optional().default(false).describe('Mark as minor edit')
10
+ }, {
11
+ title: 'Edit page',
12
+ readOnlyHint: false,
13
+ destructiveHint: true
14
+ }, async (params) => handleEditTool(params));
15
+ }
16
+ async function handleEditTool(params) {
17
+ try {
18
+ const bot = await getBot();
19
+ const prefixedSummary = `[nodemw-mcp] ${params.summary}`;
20
+ const result = await promisifyBotMethod(bot, 'edit', params.title, params.content, prefixedSummary, params.minor || false);
21
+ return jsonResult(result);
22
+ }
23
+ catch (error) {
24
+ return errorResult('Failed to edit page', error);
25
+ }
26
+ }
27
+ //# sourceMappingURL=edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/tools/editing/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,QAAQ,CAAE,MAAiB;IAC1C,OAAO,MAAM,CAAC,IAAI,CACjB,MAAM,EACN,4CAA4C,EAC5C;QACC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,oBAAoB,CAAE;QAClD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,0BAA0B,CAAE;QAC1D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,cAAc,CAAE;QAC9C,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAE,KAAK,CAAE,CAAC,QAAQ,CAAE,oBAAoB,CAAE;KAC/E,EACD;QACC,KAAK,EAAE,WAAW;QAClB,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,IAAI;KACF,EACpB,KAAK,EAAG,MAAM,EAAG,EAAE,CAAC,cAAc,CAAE,MAAM,CAAE,CAC5C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAC5B,MAKC;IAED,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,eAAe,GAAG,gBAAgB,MAAM,CAAC,OAAO,EAAE,CAAC;QAEzD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAMtC,GAAG,EACH,MAAM,EACN,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,OAAO,EACd,eAAe,EACf,MAAM,CAAC,KAAK,IAAI,KAAK,CACrB,CAAC;QAEF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO,WAAW,CAAC,qBAAqB,EAAE,KAAc,CAAC,CAAC;IAC3D,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function moveTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=move.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move.d.ts","sourceRoot":"","sources":["../../../src/tools/editing/move.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAKzF,wBAAgB,QAAQ,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAgB5D"}
@@ -0,0 +1,26 @@
1
+ import { z } from 'zod';
2
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
3
+ import { jsonResult, errorResult } from '../../common/utils.js';
4
+ export function moveTool(server) {
5
+ return server.tool('move', 'Move (rename) a wiki page (requires authentication)', {
6
+ from: z.string().describe('Current page title'),
7
+ to: z.string().describe('New page title'),
8
+ summary: z.string().describe('Move summary'),
9
+ }, {
10
+ title: 'Move page',
11
+ readOnlyHint: false,
12
+ destructiveHint: true
13
+ }, async (params) => handleMoveTool(params));
14
+ }
15
+ async function handleMoveTool(params) {
16
+ try {
17
+ const bot = await getBot();
18
+ const prefixedSummary = `[nodemw-mcp] ${params.summary}`;
19
+ const result = await promisifyBotMethod(bot, 'move', params.from, params.to, prefixedSummary);
20
+ return jsonResult(result);
21
+ }
22
+ catch (error) {
23
+ return errorResult('Failed to move page', error);
24
+ }
25
+ }
26
+ //# sourceMappingURL=move.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move.js","sourceRoot":"","sources":["../../../src/tools/editing/move.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,QAAQ,CAAE,MAAiB;IAC1C,OAAO,MAAM,CAAC,IAAI,CACjB,MAAM,EACN,qDAAqD,EACrD;QACC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,oBAAoB,CAAE;QACjD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,gBAAgB,CAAE;QAC3C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,cAAc,CAAE;KAC9C,EACD;QACC,KAAK,EAAE,WAAW;QAClB,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,IAAI;KACF,EACpB,KAAK,EAAG,MAAM,EAAG,EAAE,CAAC,cAAc,CAAE,MAAM,CAAE,CAC5C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAC5B,MAIC;IAED,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,eAAe,GAAG,gBAAgB,MAAM,CAAC,OAAO,EAAE,CAAC;QAEzD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAKtC,GAAG,EACH,MAAM,EACN,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,EAAE,EACT,eAAe,CACf,CAAC;QAEF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO,WAAW,CAAC,qBAAqB,EAAE,KAAc,CAAC,CAAC;IAC3D,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function prependTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=prepend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepend.d.ts","sourceRoot":"","sources":["../../../src/tools/editing/prepend.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAKzF,wBAAgB,WAAW,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAgB/D"}
@@ -0,0 +1,26 @@
1
+ import { z } from 'zod';
2
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
3
+ import { jsonResult, errorResult } from '../../common/utils.js';
4
+ export function prependTool(server) {
5
+ return server.tool('prepend', 'Prepend content to a wiki page (requires authentication)', {
6
+ title: z.string().describe('Page title to prepend to'),
7
+ content: z.string().describe('Content to prepend'),
8
+ summary: z.string().describe('Edit summary'),
9
+ }, {
10
+ title: 'Prepend to page',
11
+ readOnlyHint: false,
12
+ destructiveHint: true
13
+ }, async (params) => handlePrependTool(params));
14
+ }
15
+ async function handlePrependTool(params) {
16
+ try {
17
+ const bot = await getBot();
18
+ const prefixedSummary = `[nodemw-mcp] ${params.summary}`;
19
+ const result = await promisifyBotMethod(bot, 'prepend', params.title, params.content, prefixedSummary);
20
+ return jsonResult(result);
21
+ }
22
+ catch (error) {
23
+ return errorResult('Failed to prepend to page', error);
24
+ }
25
+ }
26
+ //# sourceMappingURL=prepend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepend.js","sourceRoot":"","sources":["../../../src/tools/editing/prepend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,WAAW,CAAE,MAAiB;IAC7C,OAAO,MAAM,CAAC,IAAI,CACjB,SAAS,EACT,0DAA0D,EAC1D;QACC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,0BAA0B,CAAE;QACxD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,oBAAoB,CAAE;QACpD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,cAAc,CAAE;KAC9C,EACD;QACC,KAAK,EAAE,iBAAiB;QACxB,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,IAAI;KACF,EACpB,KAAK,EAAG,MAAM,EAAG,EAAE,CAAC,iBAAiB,CAAE,MAAM,CAAE,CAC/C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC/B,MAIC;IAED,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,eAAe,GAAG,gBAAgB,MAAM,CAAC,OAAO,EAAE,CAAC;QAEzD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAMtC,GAAG,EACH,SAAS,EACT,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,OAAO,EACd,eAAe,CACf,CAAC;QAEF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO,WAAW,CAAC,2BAA2B,EAAE,KAAc,CAAC,CAAC;IACjE,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function protectTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=protect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protect.d.ts","sourceRoot":"","sources":["../../../src/tools/editing/protect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAKzF,wBAAgB,WAAW,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAuB/D"}
@@ -0,0 +1,37 @@
1
+ import { z } from 'zod';
2
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
3
+ import { jsonResult, errorResult } from '../../common/utils.js';
4
+ export function protectTool(server) {
5
+ return server.tool('protect', 'Protect a wiki page (requires authentication)', {
6
+ title: z.string().describe('Page title to protect'),
7
+ protections: z.array(z.object({
8
+ type: z.string().describe('Action type (e.g., edit, move)'),
9
+ level: z.string().optional().default('all').describe('Protection level (e.g., sysop, autoconfirmed)'),
10
+ expiry: z.string().optional().describe('Expiry time (e.g., 1 week, never)')
11
+ })).describe('Protection settings'),
12
+ reason: z.string().optional().describe('Reason for protection'),
13
+ cascade: z.boolean().optional().default(false).describe('Apply cascade protection')
14
+ }, {
15
+ title: 'Protect page',
16
+ readOnlyHint: false,
17
+ destructiveHint: true
18
+ }, async (params) => handleProtectTool(params));
19
+ }
20
+ async function handleProtectTool(params) {
21
+ try {
22
+ const bot = await getBot();
23
+ const options = {};
24
+ if (params.reason) {
25
+ options.reason = `[nodemw-mcp] ${params.reason}`;
26
+ }
27
+ if (params.cascade) {
28
+ options.cascade = params.cascade;
29
+ }
30
+ const result = await promisifyBotMethod(bot, 'protect', params.title, params.protections, options);
31
+ return jsonResult(result);
32
+ }
33
+ catch (error) {
34
+ return errorResult('Failed to protect page', error);
35
+ }
36
+ }
37
+ //# sourceMappingURL=protect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protect.js","sourceRoot":"","sources":["../../../src/tools/editing/protect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,WAAW,CAAE,MAAiB;IAC7C,OAAO,MAAM,CAAC,IAAI,CACjB,SAAS,EACT,+CAA+C,EAC/C;QACC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,uBAAuB,CAAE;QACrD,WAAW,EAAE,CAAC,CAAC,KAAK,CACnB,CAAC,CAAC,MAAM,CAAC;YACR,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,gCAAgC,CAAE;YAC7D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAE,+CAA+C,CAAE;YACvG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAE,mCAAmC,CAAE;SAC7E,CAAC,CACF,CAAC,QAAQ,CAAE,qBAAqB,CAAE;QACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAE,uBAAuB,CAAE;QACjE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAE,0BAA0B,CAAE;KACrF,EACD;QACC,KAAK,EAAE,cAAc;QACrB,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,IAAI;KACF,EACpB,KAAK,EAAG,MAAM,EAAG,EAAE,CAAC,iBAAiB,CAAE,MAAM,CAAE,CAC/C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC/B,MAKC;IAED,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAQ,EAAE,CAAC;QACxB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,GAAG,gBAAgB,MAAM,CAAC,MAAM,EAAE,CAAC;QAClD,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAClC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAItC,GAAG,EACH,SAAS,EACT,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,WAAW,EAClB,OAAO,CACP,CAAC;QAEF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO,WAAW,CAAC,wBAAwB,EAAE,KAAc,CAAC,CAAC;IAC9D,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function purgeTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=purge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"purge.d.ts","sourceRoot":"","sources":["../../../src/tools/editing/purge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAKzF,wBAAgB,SAAS,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAc7D"}
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
3
+ import { jsonResult, errorResult } from '../../common/utils.js';
4
+ export function purgeTool(server) {
5
+ return server.tool('purge', 'Purge cache for wiki pages', {
6
+ titles: z.union([z.string(), z.array(z.string())]).describe('Page title(s) or category to purge'),
7
+ }, {
8
+ title: 'Purge pages',
9
+ readOnlyHint: false,
10
+ destructiveHint: false
11
+ }, async (params) => handlePurgeTool(params));
12
+ }
13
+ async function handlePurgeTool(params) {
14
+ try {
15
+ const bot = await getBot();
16
+ const result = await promisifyBotMethod(bot, 'purge', params.titles);
17
+ return jsonResult(result);
18
+ }
19
+ catch (error) {
20
+ return errorResult('Failed to purge pages', error);
21
+ }
22
+ }
23
+ //# sourceMappingURL=purge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"purge.js","sourceRoot":"","sources":["../../../src/tools/editing/purge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,SAAS,CAAE,MAAiB;IAC3C,OAAO,MAAM,CAAC,IAAI,CACjB,OAAO,EACP,4BAA4B,EAC5B;QACC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAE,oCAAoC,CAAE;KACnG,EACD;QACC,KAAK,EAAE,aAAa;QACpB,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,EAAG,MAAM,EAAG,EAAE,CAAC,eAAe,CAAE,MAAM,CAAE,CAC7C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAC7B,MAEC;IAED,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAE3B,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACtC,GAAG,EACH,OAAO,EACP,MAAM,CAAC,MAAM,CACb,CAAC;QAEF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO,WAAW,CAAC,uBAAuB,EAAE,KAAc,CAAC,CAAC;IAC7D,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function sendEmailTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=send-email.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send-email.d.ts","sourceRoot":"","sources":["../../../src/tools/editing/send-email.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAKzF,wBAAgB,aAAa,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAgBjE"}
@@ -0,0 +1,25 @@
1
+ import { z } from 'zod';
2
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
3
+ import { jsonResult, errorResult } from '../../common/utils.js';
4
+ export function sendEmailTool(server) {
5
+ return server.tool('send-email', 'Send email to a wiki user (requires authentication)', {
6
+ username: z.string().describe('Username to email'),
7
+ subject: z.string().describe('Email subject'),
8
+ text: z.string().describe('Email content'),
9
+ }, {
10
+ title: 'Send email',
11
+ readOnlyHint: false,
12
+ destructiveHint: false
13
+ }, async (params) => handleSendEmailTool(params));
14
+ }
15
+ async function handleSendEmailTool(params) {
16
+ try {
17
+ const bot = await getBot();
18
+ const result = await promisifyBotMethod(bot, 'sendEmail', params.username, params.subject, params.text);
19
+ return jsonResult(result);
20
+ }
21
+ catch (error) {
22
+ return errorResult('Failed to send email', error);
23
+ }
24
+ }
25
+ //# sourceMappingURL=send-email.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send-email.js","sourceRoot":"","sources":["../../../src/tools/editing/send-email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,aAAa,CAAE,MAAiB;IAC/C,OAAO,MAAM,CAAC,IAAI,CACjB,YAAY,EACZ,qDAAqD,EACrD;QACC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,mBAAmB,CAAE;QACpD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,eAAe,CAAE;QAC/C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,eAAe,CAAE;KAC5C,EACD;QACC,KAAK,EAAE,YAAY;QACnB,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,EAAG,MAAM,EAAG,EAAE,CAAC,mBAAmB,CAAE,MAAM,CAAE,CACjD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CACjC,MAIC;IAED,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAE3B,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAGtC,GAAG,EACH,WAAW,EACX,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAI,CACX,CAAC;QAEF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO,WAAW,CAAC,sBAAsB,EAAE,KAAc,CAAC,CAAC;IAC5D,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function uploadByUrlTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=upload-by-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-by-url.d.ts","sourceRoot":"","sources":["../../../src/tools/editing/upload-by-url.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAKzF,wBAAgB,eAAe,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAgBnE"}
@@ -0,0 +1,26 @@
1
+ import { z } from 'zod';
2
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
3
+ import { jsonResult, errorResult } from '../../common/utils.js';
4
+ export function uploadByUrlTool(server) {
5
+ return server.tool('upload-by-url', 'Upload a file to wiki from URL (requires authentication)', {
6
+ filename: z.string().describe('Destination filename on wiki'),
7
+ url: z.string().url().describe('Source URL to download file from'),
8
+ summary: z.string().optional().describe('Upload summary'),
9
+ }, {
10
+ title: 'Upload file by URL',
11
+ readOnlyHint: false,
12
+ destructiveHint: false
13
+ }, async (params) => handleUploadByUrlTool(params));
14
+ }
15
+ async function handleUploadByUrlTool(params) {
16
+ try {
17
+ const bot = await getBot();
18
+ const prefixedSummary = params.summary ? `[nodemw-mcp] ${params.summary}` : '[nodemw-mcp] File upload from URL';
19
+ const result = await promisifyBotMethod(bot, 'uploadByUrl', params.filename, params.url, prefixedSummary);
20
+ return jsonResult(result);
21
+ }
22
+ catch (error) {
23
+ return errorResult('Failed to upload file by URL', error);
24
+ }
25
+ }
26
+ //# sourceMappingURL=upload-by-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-by-url.js","sourceRoot":"","sources":["../../../src/tools/editing/upload-by-url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,eAAe,CAAE,MAAiB;IACjD,OAAO,MAAM,CAAC,IAAI,CACjB,eAAe,EACf,0DAA0D,EAC1D;QACC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,8BAA8B,CAAE;QAC/D,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAE,kCAAkC,CAAE;QACpE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAE,gBAAgB,CAAE;KAC3D,EACD;QACC,KAAK,EAAE,oBAAoB;QAC3B,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,EAAG,MAAM,EAAG,EAAE,CAAC,qBAAqB,CAAE,MAAM,CAAE,CACnD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CACnC,MAIC;IAED,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,mCAAmC,CAAC;QAEhH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAKtC,GAAG,EACH,aAAa,EACb,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,GAAG,EACV,eAAe,CACf,CAAC;QAEF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO,WAAW,CAAC,8BAA8B,EAAE,KAAc,CAAC,CAAC;IACpE,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function uploadTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/tools/editing/upload.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAKzF,wBAAgB,UAAU,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAgB9D"}
@@ -0,0 +1,27 @@
1
+ import { z } from 'zod';
2
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
3
+ import { jsonResult, errorResult } from '../../common/utils.js';
4
+ export function uploadTool(server) {
5
+ return server.tool('upload', 'Upload a file to wiki (requires authentication)', {
6
+ filename: z.string().describe('Destination filename on wiki'),
7
+ content: z.string().describe('File content as base64 string'),
8
+ comment: z.string().optional().describe('Upload comment'),
9
+ }, {
10
+ title: 'Upload file',
11
+ readOnlyHint: false,
12
+ destructiveHint: false
13
+ }, async (params) => handleUploadTool(params));
14
+ }
15
+ async function handleUploadTool(params) {
16
+ try {
17
+ const bot = await getBot();
18
+ const fileContent = Buffer.from(params.content, 'base64');
19
+ const comment = params.comment ? `[nodemw-mcp] ${params.comment}` : '[nodemw-mcp] File upload';
20
+ const result = await promisifyBotMethod(bot, 'upload', params.filename, fileContent, comment);
21
+ return jsonResult(result);
22
+ }
23
+ catch (error) {
24
+ return errorResult('Failed to upload file', error);
25
+ }
26
+ }
27
+ //# sourceMappingURL=upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../src/tools/editing/upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,UAAU,CAAE,MAAiB;IAC5C,OAAO,MAAM,CAAC,IAAI,CACjB,QAAQ,EACR,iDAAiD,EACjD;QACC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,8BAA8B,CAAE;QAC/D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,+BAA+B,CAAE;QAC/D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAE,gBAAgB,CAAE;KAC3D,EACD;QACC,KAAK,EAAE,aAAa;QACpB,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,EAAG,MAAM,EAAG,EAAE,CAAC,gBAAgB,CAAE,MAAM,CAAE,CAC9C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC9B,MAIC;IAED,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC;QAE/F,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAKtC,GAAG,EACH,QAAQ,EACR,MAAM,CAAC,QAAQ,EACf,WAAW,EACX,OAAO,CACP,CAAC;QAEF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO,WAAW,CAAC,uBAAuB,EAAE,KAAc,CAAC,CAAC;IAC7D,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerAllTools(server: McpServer): RegisteredTool[];
3
+ //# 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,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAkGzF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,cAAc,EAAE,CAUpE"}
@@ -0,0 +1,105 @@
1
+ // Read tools
2
+ import { getArticleTool } from './ro/get-article.js';
3
+ import { searchTool } from './ro/search.js';
4
+ import { getPagesInCategoryTool } from './ro/get-pages-in-category.js';
5
+ import { getCategoriesTool } from './ro/get-categories.js';
6
+ import { getUsersTool } from './ro/get-users.js';
7
+ import { getAllPagesTool } from './ro/get-all-pages.js';
8
+ import { getPagesInNamespaceTool } from './ro/get-pages-in-namespace.js';
9
+ import { getPagesByPrefixTool } from './ro/get-pages-by-prefix.js';
10
+ import { getPagesTranscludingTool } from './ro/get-pages-transcluding.js';
11
+ import { getArticleRevisionsTool } from './ro/get-article-revisions.js';
12
+ import { getArticleCategoriesTool } from './ro/get-article-categories.js';
13
+ import { getArticlePropertiesTool } from './ro/get-article-properties.js';
14
+ import { getArticleInfoTool } from './ro/get-article-info.js';
15
+ import { getUserContribsTool } from './ro/get-user-contribs.js';
16
+ import { whoamiTool } from './ro/whoami.js';
17
+ import { whoisTool } from './ro/whois.js';
18
+ import { whoareTool } from './ro/whoare.js';
19
+ import { getImagesTool } from './ro/get-images.js';
20
+ import { getImagesFromArticleTool } from './ro/get-images-from-article.js';
21
+ import { getImageUsageTool } from './ro/get-image-usage.js';
22
+ import { getImageInfoTool } from './ro/get-image-info.js';
23
+ import { getLogTool } from './ro/get-log.js';
24
+ import { expandTemplatesTool } from './ro/expand-templates.js';
25
+ import { parseTool } from './ro/parse.js';
26
+ import { getRecentChangesTool } from './ro/get-recent-changes.js';
27
+ import { getSiteInfoTool } from './ro/get-site-info.js';
28
+ import { getSiteStatsTool } from './ro/get-site-stats.js';
29
+ import { getMediaWikiVersionTool } from './ro/get-mediawiki-version.js';
30
+ import { getQueryPageTool } from './ro/get-query-page.js';
31
+ import { getExternalLinksTool } from './ro/get-external-links.js';
32
+ import { getBacklinksTool } from './ro/get-backlinks.js';
33
+ // Write tools
34
+ import { editTool } from './editing/edit.js';
35
+ import { appendTool } from './editing/append.js';
36
+ import { prependTool } from './editing/prepend.js';
37
+ import { moveTool } from './editing/move.js';
38
+ import { deleteTool } from './editing/delete.js';
39
+ import { protectTool } from './editing/protect.js';
40
+ import { purgeTool } from './editing/purge.js';
41
+ import { sendEmailTool } from './editing/send-email.js';
42
+ import { uploadTool } from './editing/upload.js';
43
+ import { uploadByUrlTool } from './editing/upload-by-url.js';
44
+ import { addFlowTopicTool } from './editing/add-flow-topic.js';
45
+ import { createAccountTool } from './editing/create-account.js';
46
+ const toolRegistrars = [
47
+ // Read tools
48
+ getArticleTool,
49
+ searchTool,
50
+ getPagesInCategoryTool,
51
+ getCategoriesTool,
52
+ getUsersTool,
53
+ getAllPagesTool,
54
+ getPagesInNamespaceTool,
55
+ getPagesByPrefixTool,
56
+ getPagesTranscludingTool,
57
+ getArticleRevisionsTool,
58
+ getArticleCategoriesTool,
59
+ getArticlePropertiesTool,
60
+ getArticleInfoTool,
61
+ getUserContribsTool,
62
+ whoamiTool,
63
+ whoisTool,
64
+ whoareTool,
65
+ getImagesTool,
66
+ getImagesFromArticleTool,
67
+ getImageUsageTool,
68
+ getImageInfoTool,
69
+ getLogTool,
70
+ expandTemplatesTool,
71
+ parseTool,
72
+ getRecentChangesTool,
73
+ getSiteInfoTool,
74
+ getSiteStatsTool,
75
+ getMediaWikiVersionTool,
76
+ getQueryPageTool,
77
+ getExternalLinksTool,
78
+ getBacklinksTool,
79
+ // Write tools
80
+ editTool,
81
+ appendTool,
82
+ prependTool,
83
+ moveTool,
84
+ deleteTool,
85
+ protectTool,
86
+ purgeTool,
87
+ sendEmailTool,
88
+ uploadTool,
89
+ uploadByUrlTool,
90
+ addFlowTopicTool,
91
+ createAccountTool
92
+ ];
93
+ export function registerAllTools(server) {
94
+ const registeredTools = [];
95
+ for (const registrar of toolRegistrars) {
96
+ try {
97
+ registeredTools.push(registrar(server));
98
+ }
99
+ catch (error) {
100
+ console.error(`Error registering tool: ${error.message}`);
101
+ }
102
+ }
103
+ return registeredTools;
104
+ }
105
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function expandTemplatesTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=expand-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expand-templates.d.ts","sourceRoot":"","sources":["../../../src/tools/ro/expand-templates.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAIzF,wBAAgB,mBAAmB,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAevE"}
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
3
+ export function expandTemplatesTool(server) {
4
+ return server.tool('expand-templates', 'Expand templates in wikitext', {
5
+ text: z.string().describe('Wikitext with templates to expand'),
6
+ title: z.string().optional().describe('Context page title'),
7
+ }, {
8
+ title: 'Expand templates',
9
+ readOnlyHint: true,
10
+ destructiveHint: false
11
+ }, async ({ text, title }) => handleExpandTemplatesTool(text, title));
12
+ }
13
+ async function handleExpandTemplatesTool(text, title) {
14
+ try {
15
+ const bot = await getBot();
16
+ const expandedXml = await promisifyBotMethod(bot, 'expandTemplates', text, title || '');
17
+ return {
18
+ content: [{ type: 'text', text: expandedXml }]
19
+ };
20
+ }
21
+ catch (error) {
22
+ return {
23
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
24
+ isError: true
25
+ };
26
+ }
27
+ }
28
+ //# sourceMappingURL=expand-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expand-templates.js","sourceRoot":"","sources":["../../../src/tools/ro/expand-templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,MAAM,UAAU,mBAAmB,CAAE,MAAiB;IACrD,OAAO,MAAM,CAAC,IAAI,CACjB,kBAAkB,EAClB,8BAA8B,EAC9B;QACC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAC9D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KAC3D,EACD;QACC,KAAK,EAAE,kBAAkB;QACzB,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,EAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAG,EAAE,CAAC,yBAAyB,CAAE,IAAI,EAAE,KAAK,CAAE,CACrE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CACvC,IAAY,EACZ,KAAc;IAEd,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAC3C,GAAG,EACH,iBAAiB,EACjB,IAAI,EACJ,KAAK,IAAI,EAAE,CACX,CAAC;QAEF,OAAO;YACN,OAAO,EAAE,CAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAE;SAChD,CAAC;IACH,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO;YACN,OAAO,EAAE,CAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAa,KAAgB,CAAC,OAAQ,EAAE,EAAE,CAAE;YAC7E,OAAO,EAAE,IAAI;SACb,CAAC;IACH,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function getAllPagesTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=get-all-pages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-all-pages.d.ts","sourceRoot":"","sources":["../../../src/tools/ro/get-all-pages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAYzF,wBAAgB,eAAe,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAcnE"}
@@ -0,0 +1,30 @@
1
+ import { z } from 'zod';
2
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
3
+ import { jsonResult, errorResult } from '../../common/utils.js';
4
+ export function getAllPagesTool(server) {
5
+ return server.tool('get-all-pages', 'Get all non-redirect pages from the wiki', {
6
+ limit: z.number().optional().default(500).describe('Maximum number of pages to return')
7
+ }, {
8
+ title: 'Get all pages',
9
+ readOnlyHint: true,
10
+ destructiveHint: false
11
+ }, async ({ limit }) => handleGetAllPagesTool(limit));
12
+ }
13
+ async function handleGetAllPagesTool(limit) {
14
+ try {
15
+ const bot = await getBot();
16
+ const allResults = await promisifyBotMethod(bot, 'getAllPages');
17
+ // Limit results
18
+ const results = allResults.slice(0, limit);
19
+ return jsonResult({
20
+ total: allResults.length,
21
+ displayed: results.length,
22
+ pages: results,
23
+ limit
24
+ });
25
+ }
26
+ catch (error) {
27
+ return errorResult('Failed to get all pages', error);
28
+ }
29
+ }
30
+ //# sourceMappingURL=get-all-pages.js.map