@quadslab.io/discord-mcp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +474 -0
- package/dist/discord-client.d.ts +57 -0
- package/dist/discord-client.js +188 -0
- package/dist/discord-client.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +135 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server.d.ts +15 -0
- package/dist/mcp-server.js +65 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/tools/automod.d.ts +6 -0
- package/dist/tools/automod.js +376 -0
- package/dist/tools/automod.js.map +1 -0
- package/dist/tools/channels.d.ts +6 -0
- package/dist/tools/channels.js +840 -0
- package/dist/tools/channels.js.map +1 -0
- package/dist/tools/emojis.d.ts +6 -0
- package/dist/tools/emojis.js +295 -0
- package/dist/tools/emojis.js.map +1 -0
- package/dist/tools/events.d.ts +6 -0
- package/dist/tools/events.js +304 -0
- package/dist/tools/events.js.map +1 -0
- package/dist/tools/forums.d.ts +6 -0
- package/dist/tools/forums.js +276 -0
- package/dist/tools/forums.js.map +1 -0
- package/dist/tools/guild.d.ts +6 -0
- package/dist/tools/guild.js +88 -0
- package/dist/tools/guild.js.map +1 -0
- package/dist/tools/index.d.ts +13 -0
- package/dist/tools/index.js +142 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/members.d.ts +6 -0
- package/dist/tools/members.js +628 -0
- package/dist/tools/members.js.map +1 -0
- package/dist/tools/messages.d.ts +6 -0
- package/dist/tools/messages.js +688 -0
- package/dist/tools/messages.js.map +1 -0
- package/dist/tools/reactions.d.ts +6 -0
- package/dist/tools/reactions.js +137 -0
- package/dist/tools/reactions.js.map +1 -0
- package/dist/tools/roles.d.ts +6 -0
- package/dist/tools/roles.js +469 -0
- package/dist/tools/roles.js.map +1 -0
- package/dist/tools/server.d.ts +6 -0
- package/dist/tools/server.js +607 -0
- package/dist/tools/server.js.map +1 -0
- package/dist/tools/stage.d.ts +6 -0
- package/dist/tools/stage.js +153 -0
- package/dist/tools/stage.js.map +1 -0
- package/dist/tools/threads.d.ts +6 -0
- package/dist/tools/threads.js +331 -0
- package/dist/tools/threads.js.map +1 -0
- package/dist/tools/utils.d.ts +21 -0
- package/dist/tools/utils.js +315 -0
- package/dist/tools/utils.js.map +1 -0
- package/dist/tools/webhooks.d.ts +6 -0
- package/dist/tools/webhooks.js +195 -0
- package/dist/tools/webhooks.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { getClient, getGuild, getGuildId } from '../discord-client.js';
|
|
2
|
+
/**
|
|
3
|
+
* Guild information tools
|
|
4
|
+
*/
|
|
5
|
+
export const guildTools = [
|
|
6
|
+
{
|
|
7
|
+
name: 'list_guilds',
|
|
8
|
+
description: 'List all Discord servers (guilds) the bot is a member of. Returns server names and IDs.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {},
|
|
12
|
+
required: [],
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
name: 'get_guild_info',
|
|
17
|
+
description: 'Get detailed information about the configured Discord server, including member count, channels, roles, and server settings.',
|
|
18
|
+
inputSchema: {
|
|
19
|
+
type: 'object',
|
|
20
|
+
properties: {},
|
|
21
|
+
required: [],
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
];
|
|
25
|
+
export async function executeGuildTool(name, args) {
|
|
26
|
+
switch (name) {
|
|
27
|
+
case 'list_guilds':
|
|
28
|
+
return await listGuilds();
|
|
29
|
+
case 'get_guild_info':
|
|
30
|
+
return await getGuildInfo();
|
|
31
|
+
default:
|
|
32
|
+
throw new Error(`Unknown guild tool: ${name}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async function listGuilds() {
|
|
36
|
+
const client = getClient();
|
|
37
|
+
const guilds = client.guilds.cache;
|
|
38
|
+
const configuredGuildId = getGuildId();
|
|
39
|
+
const guildList = guilds.map(guild => ({
|
|
40
|
+
id: guild.id,
|
|
41
|
+
name: guild.name,
|
|
42
|
+
memberCount: guild.memberCount,
|
|
43
|
+
isConfigured: guild.id === configuredGuildId,
|
|
44
|
+
}));
|
|
45
|
+
return JSON.stringify({
|
|
46
|
+
totalGuilds: guildList.length,
|
|
47
|
+
configuredGuildId,
|
|
48
|
+
guilds: guildList,
|
|
49
|
+
}, null, 2);
|
|
50
|
+
}
|
|
51
|
+
async function getGuildInfo() {
|
|
52
|
+
const guild = await getGuild();
|
|
53
|
+
// Fetch additional guild data
|
|
54
|
+
await guild.members.fetch();
|
|
55
|
+
const info = {
|
|
56
|
+
id: guild.id,
|
|
57
|
+
name: guild.name,
|
|
58
|
+
description: guild.description,
|
|
59
|
+
icon: guild.iconURL(),
|
|
60
|
+
banner: guild.bannerURL(),
|
|
61
|
+
ownerId: guild.ownerId,
|
|
62
|
+
memberCount: guild.memberCount,
|
|
63
|
+
createdAt: guild.createdAt.toISOString(),
|
|
64
|
+
features: guild.features,
|
|
65
|
+
verificationLevel: guild.verificationLevel,
|
|
66
|
+
premiumTier: guild.premiumTier,
|
|
67
|
+
premiumSubscriptionCount: guild.premiumSubscriptionCount,
|
|
68
|
+
channels: {
|
|
69
|
+
total: guild.channels.cache.size,
|
|
70
|
+
text: guild.channels.cache.filter(c => c.isTextBased() && !c.isVoiceBased()).size,
|
|
71
|
+
voice: guild.channels.cache.filter(c => c.isVoiceBased()).size,
|
|
72
|
+
categories: guild.channels.cache.filter(c => c.type === 4).size,
|
|
73
|
+
},
|
|
74
|
+
roles: {
|
|
75
|
+
total: guild.roles.cache.size,
|
|
76
|
+
list: guild.roles.cache
|
|
77
|
+
.sort((a, b) => b.position - a.position)
|
|
78
|
+
.map(r => ({ id: r.id, name: r.name, color: r.hexColor, position: r.position })),
|
|
79
|
+
},
|
|
80
|
+
emojis: {
|
|
81
|
+
total: guild.emojis.cache.size,
|
|
82
|
+
static: guild.emojis.cache.filter(e => !e.animated).size,
|
|
83
|
+
animated: guild.emojis.cache.filter(e => e.animated === true).size,
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
return JSON.stringify(info, null, 2);
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=guild.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guild.js","sourceRoot":"","sources":["../../src/tools/guild.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* All available MCP tools for Discord server management
|
|
4
|
+
*/
|
|
5
|
+
export declare const allTools: Tool[];
|
|
6
|
+
/**
|
|
7
|
+
* Execute a tool by name with the given arguments
|
|
8
|
+
*/
|
|
9
|
+
export declare function executeTool(name: string, args: Record<string, unknown>): Promise<string>;
|
|
10
|
+
/**
|
|
11
|
+
* Get a tool definition by name
|
|
12
|
+
*/
|
|
13
|
+
export declare function getTool(name: string): Tool | undefined;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// Import all tool definitions
|
|
2
|
+
import { guildTools, executeGuildTool } from './guild.js';
|
|
3
|
+
import { roleTools, executeRoleTool } from './roles.js';
|
|
4
|
+
import { channelTools, executeChannelTool } from './channels.js';
|
|
5
|
+
import { memberTools, executeMemberTool } from './members.js';
|
|
6
|
+
import { messageTools, executeMessageTool } from './messages.js';
|
|
7
|
+
import { reactionTools, executeReactionTool } from './reactions.js';
|
|
8
|
+
import { serverTools, executeServerTool } from './server.js';
|
|
9
|
+
import { threadTools, executeThreadTool } from './threads.js';
|
|
10
|
+
import { emojiTools, executeEmojiTool } from './emojis.js';
|
|
11
|
+
import { automodTools, executeAutomodTool } from './automod.js';
|
|
12
|
+
import { eventTools, executeEventTool } from './events.js';
|
|
13
|
+
import { webhookTools, executeWebhookTool } from './webhooks.js';
|
|
14
|
+
import { forumTools, executeForumTool } from './forums.js';
|
|
15
|
+
import { stageTools, executeStageTool } from './stage.js';
|
|
16
|
+
/**
|
|
17
|
+
* All available MCP tools for Discord server management
|
|
18
|
+
*/
|
|
19
|
+
export const allTools = [
|
|
20
|
+
...guildTools,
|
|
21
|
+
...roleTools,
|
|
22
|
+
...channelTools,
|
|
23
|
+
...memberTools,
|
|
24
|
+
...messageTools,
|
|
25
|
+
...reactionTools,
|
|
26
|
+
...serverTools,
|
|
27
|
+
...threadTools,
|
|
28
|
+
...emojiTools,
|
|
29
|
+
...automodTools,
|
|
30
|
+
...eventTools,
|
|
31
|
+
...webhookTools,
|
|
32
|
+
...forumTools,
|
|
33
|
+
...stageTools,
|
|
34
|
+
];
|
|
35
|
+
/**
|
|
36
|
+
* Tool name to category mapping for routing
|
|
37
|
+
*/
|
|
38
|
+
const toolCategories = {};
|
|
39
|
+
// Map guild tools
|
|
40
|
+
for (const tool of guildTools) {
|
|
41
|
+
toolCategories[tool.name] = 'guild';
|
|
42
|
+
}
|
|
43
|
+
// Map role tools
|
|
44
|
+
for (const tool of roleTools) {
|
|
45
|
+
toolCategories[tool.name] = 'role';
|
|
46
|
+
}
|
|
47
|
+
// Map channel tools
|
|
48
|
+
for (const tool of channelTools) {
|
|
49
|
+
toolCategories[tool.name] = 'channel';
|
|
50
|
+
}
|
|
51
|
+
// Map member tools
|
|
52
|
+
for (const tool of memberTools) {
|
|
53
|
+
toolCategories[tool.name] = 'member';
|
|
54
|
+
}
|
|
55
|
+
// Map message tools
|
|
56
|
+
for (const tool of messageTools) {
|
|
57
|
+
toolCategories[tool.name] = 'message';
|
|
58
|
+
}
|
|
59
|
+
// Map reaction tools
|
|
60
|
+
for (const tool of reactionTools) {
|
|
61
|
+
toolCategories[tool.name] = 'reaction';
|
|
62
|
+
}
|
|
63
|
+
// Map server tools
|
|
64
|
+
for (const tool of serverTools) {
|
|
65
|
+
toolCategories[tool.name] = 'server';
|
|
66
|
+
}
|
|
67
|
+
// Map thread tools
|
|
68
|
+
for (const tool of threadTools) {
|
|
69
|
+
toolCategories[tool.name] = 'thread';
|
|
70
|
+
}
|
|
71
|
+
// Map emoji tools
|
|
72
|
+
for (const tool of emojiTools) {
|
|
73
|
+
toolCategories[tool.name] = 'emoji';
|
|
74
|
+
}
|
|
75
|
+
// Map automod tools
|
|
76
|
+
for (const tool of automodTools) {
|
|
77
|
+
toolCategories[tool.name] = 'automod';
|
|
78
|
+
}
|
|
79
|
+
// Map event tools
|
|
80
|
+
for (const tool of eventTools) {
|
|
81
|
+
toolCategories[tool.name] = 'event';
|
|
82
|
+
}
|
|
83
|
+
// Map webhook tools
|
|
84
|
+
for (const tool of webhookTools) {
|
|
85
|
+
toolCategories[tool.name] = 'webhook';
|
|
86
|
+
}
|
|
87
|
+
// Map forum tools
|
|
88
|
+
for (const tool of forumTools) {
|
|
89
|
+
toolCategories[tool.name] = 'forum';
|
|
90
|
+
}
|
|
91
|
+
// Map stage tools
|
|
92
|
+
for (const tool of stageTools) {
|
|
93
|
+
toolCategories[tool.name] = 'stage';
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Execute a tool by name with the given arguments
|
|
97
|
+
*/
|
|
98
|
+
export async function executeTool(name, args) {
|
|
99
|
+
const category = toolCategories[name];
|
|
100
|
+
if (!category) {
|
|
101
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
102
|
+
}
|
|
103
|
+
switch (category) {
|
|
104
|
+
case 'guild':
|
|
105
|
+
return executeGuildTool(name, args);
|
|
106
|
+
case 'role':
|
|
107
|
+
return executeRoleTool(name, args);
|
|
108
|
+
case 'channel':
|
|
109
|
+
return executeChannelTool(name, args);
|
|
110
|
+
case 'member':
|
|
111
|
+
return executeMemberTool(name, args);
|
|
112
|
+
case 'message':
|
|
113
|
+
return executeMessageTool(name, args);
|
|
114
|
+
case 'reaction':
|
|
115
|
+
return executeReactionTool(name, args);
|
|
116
|
+
case 'server':
|
|
117
|
+
return executeServerTool(name, args);
|
|
118
|
+
case 'thread':
|
|
119
|
+
return executeThreadTool(name, args);
|
|
120
|
+
case 'emoji':
|
|
121
|
+
return executeEmojiTool(name, args);
|
|
122
|
+
case 'automod':
|
|
123
|
+
return executeAutomodTool(name, args);
|
|
124
|
+
case 'event':
|
|
125
|
+
return executeEventTool(name, args);
|
|
126
|
+
case 'webhook':
|
|
127
|
+
return executeWebhookTool(name, args);
|
|
128
|
+
case 'forum':
|
|
129
|
+
return executeForumTool(name, args);
|
|
130
|
+
case 'stage':
|
|
131
|
+
return executeStageTool(name, args);
|
|
132
|
+
default:
|
|
133
|
+
throw new Error(`Unknown tool category: ${category}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Get a tool definition by name
|
|
138
|
+
*/
|
|
139
|
+
export function getTool(name) {
|
|
140
|
+
return allTools.find(t => t.name === name);
|
|
141
|
+
}
|
|
142
|
+
//# 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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"}
|