@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,46 @@
1
+ import { z } from 'zod';
2
+ import { getBot } from '../../common/nodemwBot.js';
3
+ import { jsonResult, errorResult } from '../../common/utils.js';
4
+ export function getLogTool(server) {
5
+ return server.tool('get-log', 'Get log entries of a specific type', {
6
+ type: z.string().describe('Log type (e.g. delete, block, move)'),
7
+ start: z.string().optional().default('').describe('Start timestamp (YYYYMMDDHHMMSS format)'),
8
+ limit: z.number().optional().default(50).describe('Maximum number of entries to return')
9
+ }, {
10
+ title: 'Get log entries',
11
+ readOnlyHint: true,
12
+ destructiveHint: false
13
+ }, async ({ type, start, limit }) => handleGetLogTool(type, start, limit));
14
+ }
15
+ async function handleGetLogTool(type, start, limit) {
16
+ try {
17
+ const bot = await getBot();
18
+ // Handle getLog's callback signature manually
19
+ const entries = await new Promise((resolve, reject) => {
20
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
+ bot.getLog(type, start, (err, ...args) => {
22
+ if (err) {
23
+ reject(err);
24
+ }
25
+ else {
26
+ const ents = args[0];
27
+ resolve(Array.isArray(ents) ? ents : []);
28
+ }
29
+ });
30
+ });
31
+ // Limit results
32
+ const limitedEntries = entries.slice(0, limit);
33
+ return jsonResult({
34
+ type,
35
+ start,
36
+ limit,
37
+ total: entries.length,
38
+ displayed: limitedEntries.length,
39
+ entries: limitedEntries
40
+ });
41
+ }
42
+ catch (error) {
43
+ return errorResult('Failed to get log entries', error);
44
+ }
45
+ }
46
+ //# sourceMappingURL=get-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-log.js","sourceRoot":"","sources":["../../../src/tools/ro/get-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAsB,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAWhE,MAAM,UAAU,UAAU,CAAE,MAAiB;IAC5C,OAAO,MAAM,CAAC,IAAI,CACjB,SAAS,EACT,oCAAoC,EACpC;QACC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAChE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QAC5F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KACxF,EACD;QACC,KAAK,EAAE,iBAAiB;QACxB,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,EAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAG,EAAE,CAAC,gBAAgB,CAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAE,CAC1E,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC9B,IAAY,EACZ,KAAa,EACb,KAAa;IAEb,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,8CAA8C;QAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACjE,8DAA8D;YAC7D,GAAW,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,GAAiB,EAAE,GAAG,IAAW,EAAE,EAAE;gBACtE,IAAI,GAAG,EAAE,CAAC;oBACT,MAAM,CAAC,GAAG,CAAC,CAAC;gBACb,CAAC;qBAAM,CAAC;oBACP,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBACrB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1C,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,gBAAgB;QAChB,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAE/C,OAAO,UAAU,CAAC;YACjB,IAAI;YACJ,KAAK;YACL,KAAK;YACL,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,SAAS,EAAE,cAAc,CAAC,MAAM;YAChC,OAAO,EAAE,cAAc;SACvB,CAAC,CAAC;IACJ,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 getMediaWikiVersionTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=get-mediawiki-version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-mediawiki-version.d.ts","sourceRoot":"","sources":["../../../src/tools/ro/get-mediawiki-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAKzF,wBAAgB,uBAAuB,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAY3E"}
@@ -0,0 +1,20 @@
1
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
2
+ import { jsonResult, errorResult } from '../../common/utils.js';
3
+ export function getMediaWikiVersionTool(server) {
4
+ return server.tool('get-mediawiki-version', 'Get MediaWiki version running on the server', {}, {
5
+ title: 'Get MediaWiki version',
6
+ readOnlyHint: true,
7
+ destructiveHint: false
8
+ }, async () => handleGetMediaWikiVersionTool());
9
+ }
10
+ async function handleGetMediaWikiVersionTool() {
11
+ try {
12
+ const bot = await getBot();
13
+ const version = await promisifyBotMethod(bot, 'getMediaWikiVersion');
14
+ return jsonResult({ version });
15
+ }
16
+ catch (error) {
17
+ return errorResult('Failed to get MediaWiki version', error);
18
+ }
19
+ }
20
+ //# sourceMappingURL=get-mediawiki-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-mediawiki-version.js","sourceRoot":"","sources":["../../../src/tools/ro/get-mediawiki-version.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,uBAAuB,CAAE,MAAiB;IACzD,OAAO,MAAM,CAAC,IAAI,CACjB,uBAAuB,EACvB,6CAA6C,EAC7C,EAAE,EACF;QACC,KAAK,EAAE,uBAAuB;QAC9B,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,IAAI,EAAE,CAAC,6BAA6B,EAAE,CAC3C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,6BAA6B;IAC3C,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,kBAAkB,CACvC,GAAG,EACH,qBAAqB,CACrB,CAAC;QAEF,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAChC,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO,WAAW,CAAC,iCAAiC,EAAE,KAAc,CAAC,CAAC;IACvE,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function getPagesByPrefixTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=get-pages-by-prefix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-pages-by-prefix.d.ts","sourceRoot":"","sources":["../../../src/tools/ro/get-pages-by-prefix.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAYzF,wBAAgB,oBAAoB,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAcxE"}
@@ -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 getPagesByPrefixTool(server) {
5
+ return server.tool('get-pages-by-prefix', 'Get pages starting with a specific prefix', {
6
+ prefix: z.string().describe('Prefix to match page titles')
7
+ }, {
8
+ title: 'Get pages by prefix',
9
+ readOnlyHint: true,
10
+ destructiveHint: false
11
+ }, async ({ prefix }) => handleGetPagesByPrefixTool(prefix));
12
+ }
13
+ async function handleGetPagesByPrefixTool(prefix) {
14
+ try {
15
+ const bot = await getBot();
16
+ const results = await promisifyBotMethod(bot, 'getPagesByPrefix', prefix);
17
+ return jsonResult({
18
+ prefix,
19
+ pages: results,
20
+ count: results.length
21
+ });
22
+ }
23
+ catch (error) {
24
+ return errorResult('Failed to get pages by prefix', error);
25
+ }
26
+ }
27
+ //# sourceMappingURL=get-pages-by-prefix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-pages-by-prefix.js","sourceRoot":"","sources":["../../../src/tools/ro/get-pages-by-prefix.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;AAShE,MAAM,UAAU,oBAAoB,CAAE,MAAiB;IACtD,OAAO,MAAM,CAAC,IAAI,CACjB,qBAAqB,EACrB,2CAA2C,EAC3C;QACC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KAC1D,EACD;QACC,KAAK,EAAE,qBAAqB;QAC5B,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,EAAG,EAAE,MAAM,EAAE,EAAG,EAAE,CAAC,0BAA0B,CAAE,MAAM,CAAE,CAC5D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,0BAA0B,CACxC,MAAc;IAEd,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,kBAAkB,CACvC,GAAG,EACH,kBAAkB,EAClB,MAAM,CACN,CAAC;QAEF,OAAO,UAAU,CAAC;YACjB,MAAM;YACN,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,OAAO,CAAC,MAAM;SACrB,CAAC,CAAC;IACJ,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO,WAAW,CAAC,+BAA+B,EAAE,KAAc,CAAC,CAAC;IACrE,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function getPagesInCategoryTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=get-pages-in-category.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-pages-in-category.d.ts","sourceRoot":"","sources":["../../../src/tools/ro/get-pages-in-category.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAYzF,wBAAgB,sBAAsB,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAc1E"}
@@ -0,0 +1,29 @@
1
+ import { z } from 'zod';
2
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
3
+ import { jsonResult, errorResult } from '../../common/utils.js';
4
+ export function getPagesInCategoryTool(server) {
5
+ return server.tool('get-pages-in-category', 'Get all pages in a category', {
6
+ category: z.string().describe('Category name (with or without Category: prefix)')
7
+ }, {
8
+ title: 'Get pages in category',
9
+ readOnlyHint: true,
10
+ destructiveHint: false
11
+ }, async ({ category }) => handleGetPagesInCategoryTool(category));
12
+ }
13
+ async function handleGetPagesInCategoryTool(category) {
14
+ try {
15
+ const bot = await getBot();
16
+ // Remove "Category:" prefix if present
17
+ const cleanCategory = category.replace(/^Category:/i, '');
18
+ const results = await promisifyBotMethod(bot, 'getPagesInCategory', cleanCategory);
19
+ return jsonResult({
20
+ category: cleanCategory,
21
+ pages: results,
22
+ count: results.length
23
+ });
24
+ }
25
+ catch (error) {
26
+ return errorResult('Failed to get pages in category', error);
27
+ }
28
+ }
29
+ //# sourceMappingURL=get-pages-in-category.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-pages-in-category.js","sourceRoot":"","sources":["../../../src/tools/ro/get-pages-in-category.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;AAShE,MAAM,UAAU,sBAAsB,CAAE,MAAiB;IACxD,OAAO,MAAM,CAAC,IAAI,CACjB,uBAAuB,EACvB,6BAA6B,EAC7B;QACC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAE,kDAAkD,CAAE;KACnF,EACD;QACC,KAAK,EAAE,uBAAuB;QAC9B,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,EAAG,EAAE,QAAQ,EAAE,EAAG,EAAE,CAAC,4BAA4B,CAAE,QAAQ,CAAE,CAClE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,4BAA4B,CAC1C,QAAgB;IAEhB,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAE3B,uCAAuC;QACvC,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAE,aAAa,EAAE,EAAE,CAAE,CAAC;QAE5D,MAAM,OAAO,GAAG,MAAM,kBAAkB,CACvC,GAAG,EACH,oBAAoB,EACpB,aAAa,CACb,CAAC;QAEF,OAAO,UAAU,CAAC;YACjB,QAAQ,EAAE,aAAa;YACvB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,OAAO,CAAC,MAAM;SACrB,CAAC,CAAC;IACJ,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO,WAAW,CAAC,iCAAiC,EAAE,KAAc,CAAC,CAAC;IACvE,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function getPagesInNamespaceTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=get-pages-in-namespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-pages-in-namespace.d.ts","sourceRoot":"","sources":["../../../src/tools/ro/get-pages-in-namespace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAYzF,wBAAgB,uBAAuB,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAc3E"}
@@ -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 getPagesInNamespaceTool(server) {
5
+ return server.tool('get-pages-in-namespace', 'Get all non-redirect pages in a specific namespace', {
6
+ namespace: z.number().describe('Namespace number to filter pages')
7
+ }, {
8
+ title: 'Get pages in namespace',
9
+ readOnlyHint: true,
10
+ destructiveHint: false
11
+ }, async ({ namespace }) => handleGetPagesInNamespaceTool(namespace));
12
+ }
13
+ async function handleGetPagesInNamespaceTool(namespace) {
14
+ try {
15
+ const bot = await getBot();
16
+ const results = await promisifyBotMethod(bot, 'getPagesInNamespace', namespace);
17
+ return jsonResult({
18
+ namespace,
19
+ pages: results,
20
+ count: results.length
21
+ });
22
+ }
23
+ catch (error) {
24
+ return errorResult('Failed to get pages in namespace', error);
25
+ }
26
+ }
27
+ //# sourceMappingURL=get-pages-in-namespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-pages-in-namespace.js","sourceRoot":"","sources":["../../../src/tools/ro/get-pages-in-namespace.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;AAShE,MAAM,UAAU,uBAAuB,CAAE,MAAiB;IACzD,OAAO,MAAM,CAAC,IAAI,CACjB,wBAAwB,EACxB,oDAAoD,EACpD;QACC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;KAClE,EACD;QACC,KAAK,EAAE,wBAAwB;QAC/B,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,EAAG,EAAE,SAAS,EAAE,EAAG,EAAE,CAAC,6BAA6B,CAAE,SAAS,CAAE,CACrE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,6BAA6B,CAC3C,SAAiB;IAEjB,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,kBAAkB,CACvC,GAAG,EACH,qBAAqB,EACrB,SAAS,CACT,CAAC;QAEF,OAAO,UAAU,CAAC;YACjB,SAAS;YACT,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,OAAO,CAAC,MAAM;SACrB,CAAC,CAAC;IACJ,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO,WAAW,CAAC,kCAAkC,EAAE,KAAc,CAAC,CAAC;IACxE,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function getPagesTranscludingTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=get-pages-transcluding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-pages-transcluding.d.ts","sourceRoot":"","sources":["../../../src/tools/ro/get-pages-transcluding.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAYzF,wBAAgB,wBAAwB,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAc5E"}
@@ -0,0 +1,32 @@
1
+ import { z } from 'zod';
2
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
3
+ import { jsonResult, errorResult } from '../../common/utils.js';
4
+ export function getPagesTranscludingTool(server) {
5
+ return server.tool('get-pages-transcluding', 'Get all pages that transclude (include) a specific template', {
6
+ template: z.string().describe('Template title to find transclusions')
7
+ }, {
8
+ title: 'Get pages transcluding template',
9
+ readOnlyHint: true,
10
+ destructiveHint: false
11
+ }, async ({ template }) => handleGetPagesTranscludingTool(template));
12
+ }
13
+ async function handleGetPagesTranscludingTool(template) {
14
+ try {
15
+ const bot = await getBot();
16
+ const callbackArgs = await promisifyBotMethod(bot, 'getPagesTranscluding', template);
17
+ // Extract results from callback args (ignore first arg if it's error, which promisifyBotMethod already handles)
18
+ const rawResults = callbackArgs[1];
19
+ const results = Array.isArray(rawResults)
20
+ ? rawResults.filter((page) => page != null && typeof page === 'object' && 'title' in page)
21
+ : [];
22
+ return jsonResult({
23
+ template,
24
+ pages: results,
25
+ count: results.length
26
+ });
27
+ }
28
+ catch (error) {
29
+ return errorResult('Failed to get pages transcluding template', error);
30
+ }
31
+ }
32
+ //# sourceMappingURL=get-pages-transcluding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-pages-transcluding.js","sourceRoot":"","sources":["../../../src/tools/ro/get-pages-transcluding.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;AAShE,MAAM,UAAU,wBAAwB,CAAE,MAAiB;IAC1D,OAAO,MAAM,CAAC,IAAI,CACjB,wBAAwB,EACxB,6DAA6D,EAC7D;QACC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;KACrE,EACD;QACC,KAAK,EAAE,iCAAiC;QACxC,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,EAAG,EAAE,QAAQ,EAAE,EAAG,EAAE,CAAC,8BAA8B,CAAE,QAAQ,CAAE,CACpE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,8BAA8B,CAC5C,QAAgB;IAEhB,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAC5C,GAAG,EACH,sBAAsB,EACtB,QAAQ,CACR,CAAC;QAEF,gHAAgH;QAChH,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;YACxC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAA4B,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,IAAI,CAAC;YACpH,CAAC,CAAC,EAAE,CAAC;QAEN,OAAO,UAAU,CAAC;YACjB,QAAQ;YACR,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,OAAO,CAAC,MAAM;SACrB,CAAC,CAAC;IACJ,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO,WAAW,CAAC,2CAA2C,EAAE,KAAc,CAAC,CAAC;IACjF,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function getQueryPageTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=get-query-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-query-page.d.ts","sourceRoot":"","sources":["../../../src/tools/ro/get-query-page.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAWzF,wBAAgB,gBAAgB,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAcpE"}
@@ -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 getQueryPageTool(server) {
5
+ return server.tool('get-query-page', 'Get results from a query page (special page)', {
6
+ name: z.string().describe('Name of the query page')
7
+ }, {
8
+ title: 'Get query page results',
9
+ readOnlyHint: true,
10
+ destructiveHint: false
11
+ }, async ({ name }) => handleGetQueryPageTool(name));
12
+ }
13
+ async function handleGetQueryPageTool(name) {
14
+ try {
15
+ const bot = await getBot();
16
+ const results = await promisifyBotMethod(bot, 'getQueryPage', name);
17
+ return jsonResult({
18
+ name,
19
+ results,
20
+ count: results.length
21
+ });
22
+ }
23
+ catch (error) {
24
+ return errorResult('Failed to get query page results', error);
25
+ }
26
+ }
27
+ //# sourceMappingURL=get-query-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-query-page.js","sourceRoot":"","sources":["../../../src/tools/ro/get-query-page.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;AAQhE,MAAM,UAAU,gBAAgB,CAAE,MAAiB;IAClD,OAAO,MAAM,CAAC,IAAI,CACjB,gBAAgB,EAChB,8CAA8C,EAC9C;QACC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;KACnD,EACD;QACC,KAAK,EAAE,wBAAwB;QAC/B,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,EAAG,EAAE,IAAI,EAAE,EAAG,EAAE,CAAC,sBAAsB,CAAE,IAAI,CAAE,CACpD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CACpC,IAAY;IAEZ,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,kBAAkB,CACvC,GAAG,EACH,cAAc,EACd,IAAI,CACJ,CAAC;QAEF,OAAO,UAAU,CAAC;YACjB,IAAI;YACJ,OAAO;YACP,KAAK,EAAE,OAAO,CAAC,MAAM;SACrB,CAAC,CAAC;IACJ,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO,WAAW,CAAC,kCAAkC,EAAE,KAAc,CAAC,CAAC;IACxE,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function getRecentChangesTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=get-recent-changes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-recent-changes.d.ts","sourceRoot":"","sources":["../../../src/tools/ro/get-recent-changes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAazF,wBAAgB,oBAAoB,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAexE"}
@@ -0,0 +1,43 @@
1
+ import { z } from 'zod';
2
+ import { getBot } from '../../common/nodemwBot.js';
3
+ import { jsonResult, errorResult } from '../../common/utils.js';
4
+ export function getRecentChangesTool(server) {
5
+ return server.tool('get-recent-changes', 'Get recent changes on the wiki', {
6
+ start: z.string().optional().describe('Start timestamp'),
7
+ limit: z.number().optional().default(50).describe('Maximum number of changes to return')
8
+ }, {
9
+ title: 'Get recent changes',
10
+ readOnlyHint: true,
11
+ destructiveHint: false
12
+ }, async ({ start, limit }) => handleGetRecentChangesTool(start, limit));
13
+ }
14
+ async function handleGetRecentChangesTool(start, limit = 50) {
15
+ try {
16
+ const bot = await getBot();
17
+ // Handle getRecentChanges's callback signature manually
18
+ const changes = await new Promise((resolve, reject) => {
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
+ bot.getRecentChanges(start, (err, ...args) => {
21
+ if (err) {
22
+ reject(err);
23
+ }
24
+ else {
25
+ const chgs = args[0];
26
+ resolve(Array.isArray(chgs) ? chgs : []);
27
+ }
28
+ });
29
+ });
30
+ // Limit results
31
+ const limitedChanges = changes.slice(0, limit);
32
+ return jsonResult({
33
+ total: changes.length,
34
+ limit,
35
+ start,
36
+ changes: limitedChanges
37
+ });
38
+ }
39
+ catch (error) {
40
+ return errorResult('Failed to get recent changes', error);
41
+ }
42
+ }
43
+ //# sourceMappingURL=get-recent-changes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-recent-changes.js","sourceRoot":"","sources":["../../../src/tools/ro/get-recent-changes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAsB,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAUhE,MAAM,UAAU,oBAAoB,CAAE,MAAiB;IACtD,OAAO,MAAM,CAAC,IAAI,CACjB,oBAAoB,EACpB,gCAAgC,EAChC;QACC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACxD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KACxF,EACD;QACC,KAAK,EAAE,oBAAoB;QAC3B,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,EAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAG,EAAE,CAAC,0BAA0B,CAAE,KAAK,EAAE,KAAK,CAAE,CACxE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,0BAA0B,CACxC,KAAc,EACd,QAAgB,EAAE;IAElB,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,wDAAwD;QACxD,MAAM,OAAO,GAAG,MAAM,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrE,8DAA8D;YAC7D,GAAW,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,GAAiB,EAAE,GAAG,IAAW,EAAE,EAAE;gBAC1E,IAAI,GAAG,EAAE,CAAC;oBACT,MAAM,CAAC,GAAG,CAAC,CAAC;gBACb,CAAC;qBAAM,CAAC;oBACP,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBACrB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1C,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,gBAAgB;QAChB,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAE/C,OAAO,UAAU,CAAC;YACjB,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,KAAK;YACL,KAAK;YACL,OAAO,EAAE,cAAc;SACvB,CAAC,CAAC;IACJ,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 getSiteInfoTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=get-site-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-site-info.d.ts","sourceRoot":"","sources":["../../../src/tools/ro/get-site-info.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAKzF,wBAAgB,eAAe,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAcnE"}
@@ -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 getSiteInfoTool(server) {
5
+ return server.tool('get-site-info', 'Get site information from MediaWiki', {
6
+ properties: z.array(z.string()).describe('List of site information properties to retrieve')
7
+ }, {
8
+ title: 'Get site info',
9
+ readOnlyHint: true,
10
+ destructiveHint: false
11
+ }, async ({ properties }) => handleGetSiteInfoTool(properties));
12
+ }
13
+ async function handleGetSiteInfoTool(properties) {
14
+ try {
15
+ const bot = await getBot();
16
+ const info = await promisifyBotMethod(bot, 'getSiteInfo', properties);
17
+ return jsonResult(info || {});
18
+ }
19
+ catch (error) {
20
+ return errorResult('Failed to get site info', error);
21
+ }
22
+ }
23
+ //# sourceMappingURL=get-site-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-site-info.js","sourceRoot":"","sources":["../../../src/tools/ro/get-site-info.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,qCAAqC,EACrC;QACC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,iDAAiD,CAAC;KAC3F,EACD;QACC,KAAK,EAAE,eAAe;QACtB,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,EAAG,EAAE,UAAU,EAAE,EAAG,EAAE,CAAC,qBAAqB,CAAE,UAAU,CAAE,CAC/D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CACnC,UAAoB;IAEpB,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,kBAAkB,CACpC,GAAG,EACH,aAAa,EACb,UAAU,CACV,CAAC;QAEF,OAAO,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO,WAAW,CAAC,yBAAyB,EAAE,KAAc,CAAC,CAAC;IAC/D,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function getSiteStatsTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=get-site-stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-site-stats.d.ts","sourceRoot":"","sources":["../../../src/tools/ro/get-site-stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAiBzF,wBAAgB,gBAAgB,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAYpE"}
@@ -0,0 +1,20 @@
1
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
2
+ import { jsonResult, errorResult } from '../../common/utils.js';
3
+ export function getSiteStatsTool(server) {
4
+ return server.tool('get-site-stats', 'Get site statistics', {}, {
5
+ title: 'Get site stats',
6
+ readOnlyHint: true,
7
+ destructiveHint: false
8
+ }, async () => handleGetSiteStatsTool());
9
+ }
10
+ async function handleGetSiteStatsTool() {
11
+ try {
12
+ const bot = await getBot();
13
+ const stats = await promisifyBotMethod(bot, 'getSiteStats');
14
+ return jsonResult(stats);
15
+ }
16
+ catch (error) {
17
+ return errorResult('Failed to get site stats', error);
18
+ }
19
+ }
20
+ //# sourceMappingURL=get-site-stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-site-stats.js","sourceRoot":"","sources":["../../../src/tools/ro/get-site-stats.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAchE,MAAM,UAAU,gBAAgB,CAAE,MAAiB;IAClD,OAAO,MAAM,CAAC,IAAI,CACjB,gBAAgB,EAChB,qBAAqB,EACrB,EAAE,EACF;QACC,KAAK,EAAE,gBAAgB;QACvB,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,IAAI,EAAE,CAAC,sBAAsB,EAAE,CACpC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB;IACpC,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,kBAAkB,CACrC,GAAG,EACH,cAAc,CACd,CAAC;QAEF,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1B,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 getUserContribsTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=get-user-contribs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-user-contribs.d.ts","sourceRoot":"","sources":["../../../src/tools/ro/get-user-contribs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAazF,wBAAgB,mBAAmB,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAgBvE"}
@@ -0,0 +1,39 @@
1
+ import { z } from 'zod';
2
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
3
+ import { jsonResult, errorResult } from '../../common/utils.js';
4
+ export function getUserContribsTool(server) {
5
+ return server.tool('get-user-contribs', 'Get contributions made by a specific user', {
6
+ username: z.string().describe('Username to get contributions for'),
7
+ namespace: z.number().optional().describe('Filter contributions by namespace'),
8
+ limit: z.number().optional().default(50).describe('Maximum number of contributions to return')
9
+ }, {
10
+ title: 'Get user contributions',
11
+ readOnlyHint: true,
12
+ destructiveHint: false
13
+ }, async ({ username, namespace, limit }) => handleGetUserContribsTool(username, namespace, limit));
14
+ }
15
+ async function handleGetUserContribsTool(username, namespace, limit = 50) {
16
+ try {
17
+ const bot = await getBot();
18
+ const options = {
19
+ user: username,
20
+ ...(namespace !== undefined && { namespace })
21
+ };
22
+ const callbackArgs = await promisifyBotMethod(bot, 'getUserContribs', options);
23
+ const contribs = Array.isArray(callbackArgs[1]) ? callbackArgs[1] : [];
24
+ // Limit results
25
+ const limitedContribs = contribs.slice(0, limit);
26
+ return jsonResult({
27
+ username,
28
+ namespace,
29
+ limit,
30
+ total: contribs.length,
31
+ displayed: limitedContribs.length,
32
+ contributions: limitedContribs
33
+ });
34
+ }
35
+ catch (error) {
36
+ return errorResult('Failed to get user contributions', error);
37
+ }
38
+ }
39
+ //# sourceMappingURL=get-user-contribs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-user-contribs.js","sourceRoot":"","sources":["../../../src/tools/ro/get-user-contribs.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;AAUhE,MAAM,UAAU,mBAAmB,CAAE,MAAiB;IACrD,OAAO,MAAM,CAAC,IAAI,CACjB,mBAAmB,EACnB,2CAA2C,EAC3C;QACC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAClE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAC9E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC;KAC9F,EACD;QACC,KAAK,EAAE,wBAAwB;QAC/B,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,EAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,EAAG,EAAE,CAAC,yBAAyB,CAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAE,CACnG,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CACvC,QAAgB,EAChB,SAAkB,EAClB,QAAgB,EAAE;IAElB,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG;YACf,IAAI,EAAE,QAAQ;YACd,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;SAC7C,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAC5C,GAAG,EACH,iBAAiB,EACjB,OAAO,CACP,CAAC;QAEF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvE,gBAAgB;QAChB,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEjD,OAAO,UAAU,CAAC;YACjB,QAAQ;YACR,SAAS;YACT,KAAK;YACL,KAAK,EAAE,QAAQ,CAAC,MAAM;YACtB,SAAS,EAAE,eAAe,CAAC,MAAM;YACjC,aAAa,EAAE,eAAe;SAC9B,CAAC,CAAC;IACJ,CAAC;IAAC,OAAQ,KAAK,EAAG,CAAC;QAClB,OAAO,WAAW,CAAC,kCAAkC,EAAE,KAAc,CAAC,CAAC;IACxE,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function getUsersTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=get-users.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-users.d.ts","sourceRoot":"","sources":["../../../src/tools/ro/get-users.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAWzF,wBAAgB,YAAY,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAehE"}
@@ -0,0 +1,29 @@
1
+ import { z } from 'zod';
2
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
3
+ import { jsonResult, errorResult } from '../../common/utils.js';
4
+ export function getUsersTool(server) {
5
+ return server.tool('get-users', 'Get all users matching a prefix', {
6
+ prefix: z.string().optional().default('').describe('Prefix to filter usernames'),
7
+ onlyWithEdits: z.boolean().optional().default(false).describe('Only include users with at least one edit')
8
+ }, {
9
+ title: 'Get users',
10
+ readOnlyHint: true,
11
+ destructiveHint: false
12
+ }, async ({ prefix, onlyWithEdits }) => handleGetUsersTool(prefix, onlyWithEdits));
13
+ }
14
+ async function handleGetUsersTool(prefix, onlyWithEdits) {
15
+ try {
16
+ const bot = await getBot();
17
+ const results = await promisifyBotMethod(bot, 'getUsers', { prefix, witheditsonly: onlyWithEdits });
18
+ return jsonResult({
19
+ prefix,
20
+ onlyWithEdits,
21
+ users: results,
22
+ count: results.length
23
+ });
24
+ }
25
+ catch (error) {
26
+ return errorResult('Failed to get users', error);
27
+ }
28
+ }
29
+ //# sourceMappingURL=get-users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-users.js","sourceRoot":"","sources":["../../../src/tools/ro/get-users.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;AAQhE,MAAM,UAAU,YAAY,CAAE,MAAiB;IAC9C,OAAO,MAAM,CAAC,IAAI,CACjB,WAAW,EACX,iCAAiC,EACjC;QACC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAChF,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC;KAC1G,EACD;QACC,KAAK,EAAE,WAAW;QAClB,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,EAAG,EAAE,MAAM,EAAE,aAAa,EAAE,EAAG,EAAE,CAAC,kBAAkB,CAAE,MAAM,EAAE,aAAa,CAAE,CAClF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAChC,MAAc,EACd,aAAsB;IAEtB,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,kBAAkB,CACvC,GAAG,EACH,UAAU,EACV,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,CACxC,CAAC;QAEF,OAAO,UAAU,CAAC;YACjB,MAAM;YACN,aAAa;YACb,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,OAAO,CAAC,MAAM;SACrB,CAAC,CAAC;IACJ,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 parseTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/tools/ro/parse.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAIzF,wBAAgB,SAAS,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAe7D"}
@@ -0,0 +1,37 @@
1
+ import { z } from 'zod';
2
+ import { getBot, promisifyBotMethod } from '../../common/nodemwBot.js';
3
+ export function parseTool(server) {
4
+ return server.tool('parse', 'Parse wikitext to HTML', {
5
+ text: z.string().describe('Wikitext to parse'),
6
+ title: z.string().optional().describe('Context page title')
7
+ }, {
8
+ title: 'Parse wikitext',
9
+ readOnlyHint: true,
10
+ destructiveHint: false
11
+ }, async ({ text, title }) => handleParseTool(text, title));
12
+ }
13
+ async function handleParseTool(text, title) {
14
+ try {
15
+ const bot = await getBot();
16
+ const callbackArgs = await promisifyBotMethod(bot, 'parse', text, title || '');
17
+ const xml = callbackArgs[1] || '';
18
+ const images = Array.isArray(callbackArgs[2]) ? callbackArgs[2] : [];
19
+ const output = [
20
+ 'Parsed XML structure:',
21
+ '',
22
+ xml,
23
+ '',
24
+ `Images found: ${images.length > 0 ? images.join(', ') : 'none'}`
25
+ ].join('\n');
26
+ return {
27
+ content: [{ type: 'text', text: output }]
28
+ };
29
+ }
30
+ catch (error) {
31
+ return {
32
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
33
+ isError: true
34
+ };
35
+ }
36
+ }
37
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/tools/ro/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,MAAM,UAAU,SAAS,CAAE,MAAiB;IAC3C,OAAO,MAAM,CAAC,IAAI,CACjB,OAAO,EACP,wBAAwB,EACxB;QACC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC9C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KAC3D,EACD;QACC,KAAK,EAAE,gBAAgB;QACvB,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;KACH,EACpB,KAAK,EAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAG,EAAE,CAAC,eAAe,CAAE,IAAI,EAAE,KAAK,CAAE,CAC3D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAC7B,IAAY,EACZ,KAAc;IAEd,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAC5C,GAAG,EACH,OAAO,EACP,IAAI,EACJ,KAAK,IAAI,EAAE,CACX,CAAC;QAEF,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAErE,MAAM,MAAM,GAAG;YACd,uBAAuB;YACvB,EAAE;YACF,GAAG;YACH,EAAE;YACF,iBAAiB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;SACjE,CAAC,IAAI,CAAE,IAAI,CAAE,CAAC;QAEf,OAAO;YACN,OAAO,EAAE,CAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAE;SAC3C,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 searchTool(server: McpServer): RegisteredTool;
3
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/tools/ro/search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAazF,wBAAgB,UAAU,CAAE,MAAM,EAAE,SAAS,GAAI,cAAc,CAe9D"}