@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.
- package/LICENSE +166 -0
- package/README.md +145 -0
- package/dist/common/nodemwBot.d.ts +21 -0
- package/dist/common/nodemwBot.d.ts.map +1 -0
- package/dist/common/nodemwBot.js +62 -0
- package/dist/common/nodemwBot.js.map +1 -0
- package/dist/common/utils.d.ts +7 -0
- package/dist/common/utils.d.ts.map +1 -0
- package/dist/common/utils.js +38 -0
- package/dist/common/utils.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +64 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +4 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +9 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/editing/add-flow-topic.d.ts +3 -0
- package/dist/tools/editing/add-flow-topic.d.ts.map +1 -0
- package/dist/tools/editing/add-flow-topic.js +25 -0
- package/dist/tools/editing/add-flow-topic.js.map +1 -0
- package/dist/tools/editing/append.d.ts +3 -0
- package/dist/tools/editing/append.d.ts.map +1 -0
- package/dist/tools/editing/append.js +26 -0
- package/dist/tools/editing/append.js.map +1 -0
- package/dist/tools/editing/create-account.d.ts +3 -0
- package/dist/tools/editing/create-account.d.ts.map +1 -0
- package/dist/tools/editing/create-account.js +24 -0
- package/dist/tools/editing/create-account.js.map +1 -0
- package/dist/tools/editing/delete.d.ts +3 -0
- package/dist/tools/editing/delete.d.ts.map +1 -0
- package/dist/tools/editing/delete.js +25 -0
- package/dist/tools/editing/delete.js.map +1 -0
- package/dist/tools/editing/edit.d.ts +3 -0
- package/dist/tools/editing/edit.d.ts.map +1 -0
- package/dist/tools/editing/edit.js +27 -0
- package/dist/tools/editing/edit.js.map +1 -0
- package/dist/tools/editing/move.d.ts +3 -0
- package/dist/tools/editing/move.d.ts.map +1 -0
- package/dist/tools/editing/move.js +26 -0
- package/dist/tools/editing/move.js.map +1 -0
- package/dist/tools/editing/prepend.d.ts +3 -0
- package/dist/tools/editing/prepend.d.ts.map +1 -0
- package/dist/tools/editing/prepend.js +26 -0
- package/dist/tools/editing/prepend.js.map +1 -0
- package/dist/tools/editing/protect.d.ts +3 -0
- package/dist/tools/editing/protect.d.ts.map +1 -0
- package/dist/tools/editing/protect.js +37 -0
- package/dist/tools/editing/protect.js.map +1 -0
- package/dist/tools/editing/purge.d.ts +3 -0
- package/dist/tools/editing/purge.d.ts.map +1 -0
- package/dist/tools/editing/purge.js +23 -0
- package/dist/tools/editing/purge.js.map +1 -0
- package/dist/tools/editing/send-email.d.ts +3 -0
- package/dist/tools/editing/send-email.d.ts.map +1 -0
- package/dist/tools/editing/send-email.js +25 -0
- package/dist/tools/editing/send-email.js.map +1 -0
- package/dist/tools/editing/upload-by-url.d.ts +3 -0
- package/dist/tools/editing/upload-by-url.d.ts.map +1 -0
- package/dist/tools/editing/upload-by-url.js +26 -0
- package/dist/tools/editing/upload-by-url.js.map +1 -0
- package/dist/tools/editing/upload.d.ts +3 -0
- package/dist/tools/editing/upload.d.ts.map +1 -0
- package/dist/tools/editing/upload.js +27 -0
- package/dist/tools/editing/upload.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +105 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/ro/expand-templates.d.ts +3 -0
- package/dist/tools/ro/expand-templates.d.ts.map +1 -0
- package/dist/tools/ro/expand-templates.js +28 -0
- package/dist/tools/ro/expand-templates.js.map +1 -0
- package/dist/tools/ro/get-all-pages.d.ts +3 -0
- package/dist/tools/ro/get-all-pages.d.ts.map +1 -0
- package/dist/tools/ro/get-all-pages.js +30 -0
- package/dist/tools/ro/get-all-pages.js.map +1 -0
- package/dist/tools/ro/get-article-categories.d.ts +3 -0
- package/dist/tools/ro/get-article-categories.d.ts.map +1 -0
- package/dist/tools/ro/get-article-categories.js +27 -0
- package/dist/tools/ro/get-article-categories.js.map +1 -0
- package/dist/tools/ro/get-article-info.d.ts +3 -0
- package/dist/tools/ro/get-article-info.d.ts.map +1 -0
- package/dist/tools/ro/get-article-info.js +35 -0
- package/dist/tools/ro/get-article-info.js.map +1 -0
- package/dist/tools/ro/get-article-properties.d.ts +3 -0
- package/dist/tools/ro/get-article-properties.d.ts.map +1 -0
- package/dist/tools/ro/get-article-properties.js +26 -0
- package/dist/tools/ro/get-article-properties.js.map +1 -0
- package/dist/tools/ro/get-article-revisions.d.ts +3 -0
- package/dist/tools/ro/get-article-revisions.d.ts.map +1 -0
- package/dist/tools/ro/get-article-revisions.js +29 -0
- package/dist/tools/ro/get-article-revisions.js.map +1 -0
- package/dist/tools/ro/get-article.d.ts +3 -0
- package/dist/tools/ro/get-article.d.ts.map +1 -0
- package/dist/tools/ro/get-article.js +54 -0
- package/dist/tools/ro/get-article.js.map +1 -0
- package/dist/tools/ro/get-backlinks.d.ts +3 -0
- package/dist/tools/ro/get-backlinks.d.ts.map +1 -0
- package/dist/tools/ro/get-backlinks.js +27 -0
- package/dist/tools/ro/get-backlinks.js.map +1 -0
- package/dist/tools/ro/get-categories.d.ts +3 -0
- package/dist/tools/ro/get-categories.d.ts.map +1 -0
- package/dist/tools/ro/get-categories.js +27 -0
- package/dist/tools/ro/get-categories.js.map +1 -0
- package/dist/tools/ro/get-external-links.d.ts +3 -0
- package/dist/tools/ro/get-external-links.d.ts.map +1 -0
- package/dist/tools/ro/get-external-links.js +27 -0
- package/dist/tools/ro/get-external-links.js.map +1 -0
- package/dist/tools/ro/get-image-info.d.ts +3 -0
- package/dist/tools/ro/get-image-info.d.ts.map +1 -0
- package/dist/tools/ro/get-image-info.js +29 -0
- package/dist/tools/ro/get-image-info.js.map +1 -0
- package/dist/tools/ro/get-image-usage.d.ts +3 -0
- package/dist/tools/ro/get-image-usage.d.ts.map +1 -0
- package/dist/tools/ro/get-image-usage.js +27 -0
- package/dist/tools/ro/get-image-usage.js.map +1 -0
- package/dist/tools/ro/get-images-from-article.d.ts +3 -0
- package/dist/tools/ro/get-images-from-article.d.ts.map +1 -0
- package/dist/tools/ro/get-images-from-article.js +27 -0
- package/dist/tools/ro/get-images-from-article.js.map +1 -0
- package/dist/tools/ro/get-images.d.ts +3 -0
- package/dist/tools/ro/get-images.d.ts.map +1 -0
- package/dist/tools/ro/get-images.js +43 -0
- package/dist/tools/ro/get-images.js.map +1 -0
- package/dist/tools/ro/get-log.d.ts +3 -0
- package/dist/tools/ro/get-log.d.ts.map +1 -0
- package/dist/tools/ro/get-log.js +46 -0
- package/dist/tools/ro/get-log.js.map +1 -0
- package/dist/tools/ro/get-mediawiki-version.d.ts +3 -0
- package/dist/tools/ro/get-mediawiki-version.d.ts.map +1 -0
- package/dist/tools/ro/get-mediawiki-version.js +20 -0
- package/dist/tools/ro/get-mediawiki-version.js.map +1 -0
- package/dist/tools/ro/get-pages-by-prefix.d.ts +3 -0
- package/dist/tools/ro/get-pages-by-prefix.d.ts.map +1 -0
- package/dist/tools/ro/get-pages-by-prefix.js +27 -0
- package/dist/tools/ro/get-pages-by-prefix.js.map +1 -0
- package/dist/tools/ro/get-pages-in-category.d.ts +3 -0
- package/dist/tools/ro/get-pages-in-category.d.ts.map +1 -0
- package/dist/tools/ro/get-pages-in-category.js +29 -0
- package/dist/tools/ro/get-pages-in-category.js.map +1 -0
- package/dist/tools/ro/get-pages-in-namespace.d.ts +3 -0
- package/dist/tools/ro/get-pages-in-namespace.d.ts.map +1 -0
- package/dist/tools/ro/get-pages-in-namespace.js +27 -0
- package/dist/tools/ro/get-pages-in-namespace.js.map +1 -0
- package/dist/tools/ro/get-pages-transcluding.d.ts +3 -0
- package/dist/tools/ro/get-pages-transcluding.d.ts.map +1 -0
- package/dist/tools/ro/get-pages-transcluding.js +32 -0
- package/dist/tools/ro/get-pages-transcluding.js.map +1 -0
- package/dist/tools/ro/get-query-page.d.ts +3 -0
- package/dist/tools/ro/get-query-page.d.ts.map +1 -0
- package/dist/tools/ro/get-query-page.js +27 -0
- package/dist/tools/ro/get-query-page.js.map +1 -0
- package/dist/tools/ro/get-recent-changes.d.ts +3 -0
- package/dist/tools/ro/get-recent-changes.d.ts.map +1 -0
- package/dist/tools/ro/get-recent-changes.js +43 -0
- package/dist/tools/ro/get-recent-changes.js.map +1 -0
- package/dist/tools/ro/get-site-info.d.ts +3 -0
- package/dist/tools/ro/get-site-info.d.ts.map +1 -0
- package/dist/tools/ro/get-site-info.js +23 -0
- package/dist/tools/ro/get-site-info.js.map +1 -0
- package/dist/tools/ro/get-site-stats.d.ts +3 -0
- package/dist/tools/ro/get-site-stats.d.ts.map +1 -0
- package/dist/tools/ro/get-site-stats.js +20 -0
- package/dist/tools/ro/get-site-stats.js.map +1 -0
- package/dist/tools/ro/get-user-contribs.d.ts +3 -0
- package/dist/tools/ro/get-user-contribs.d.ts.map +1 -0
- package/dist/tools/ro/get-user-contribs.js +39 -0
- package/dist/tools/ro/get-user-contribs.js.map +1 -0
- package/dist/tools/ro/get-users.d.ts +3 -0
- package/dist/tools/ro/get-users.d.ts.map +1 -0
- package/dist/tools/ro/get-users.js +29 -0
- package/dist/tools/ro/get-users.js.map +1 -0
- package/dist/tools/ro/parse.d.ts +3 -0
- package/dist/tools/ro/parse.d.ts.map +1 -0
- package/dist/tools/ro/parse.js +37 -0
- package/dist/tools/ro/parse.js.map +1 -0
- package/dist/tools/ro/search.d.ts +3 -0
- package/dist/tools/ro/search.d.ts.map +1 -0
- package/dist/tools/ro/search.js +32 -0
- package/dist/tools/ro/search.js.map +1 -0
- package/dist/tools/ro/whoami.d.ts +3 -0
- package/dist/tools/ro/whoami.d.ts.map +1 -0
- package/dist/tools/ro/whoami.js +20 -0
- package/dist/tools/ro/whoami.js.map +1 -0
- package/dist/tools/ro/whoare.d.ts +3 -0
- package/dist/tools/ro/whoare.d.ts.map +1 -0
- package/dist/tools/ro/whoare.js +19 -0
- package/dist/tools/ro/whoare.js.map +1 -0
- package/dist/tools/ro/whois.d.ts +3 -0
- package/dist/tools/ro/whois.d.ts.map +1 -0
- package/dist/tools/ro/whois.js +26 -0
- package/dist/tools/ro/whois.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|