Re-enable the discord_login tools
This commit is contained in:
parent
9a1529dc05
commit
00dae9e426
|
@ -22,5 +22,5 @@ ENV DISCORD_TOKEN=""
|
||||||
# Expose HTTP port
|
# Expose HTTP port
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
|
|
||||||
# Default command to run the MCP server with HTTP transport and Discord token
|
# Default command to run the MCP server with HTTP transport
|
||||||
CMD ["node", "build/index.js", "--transport", "http", "--port", "8080"]
|
CMD ["node", "build/index.js", "--transport", "http", "--port", "8080"]
|
|
@ -84,6 +84,10 @@ export class DiscordMCPServer {
|
||||||
toolResponse = await deleteCategoryHandler(args, this.toolContext);
|
toolResponse = await deleteCategoryHandler(args, this.toolContext);
|
||||||
return toolResponse;
|
return toolResponse;
|
||||||
|
|
||||||
|
case "discord_login": toolResponse = await loginHandler(args, this.toolContext);
|
||||||
|
this.logClientState("after discord_login handler");
|
||||||
|
return toolResponse;
|
||||||
|
|
||||||
case "discord_send":
|
case "discord_send":
|
||||||
this.logClientState("before discord_send handler");
|
this.logClientState("before discord_send handler");
|
||||||
toolResponse = await sendMessageHandler(args, this.toolContext);
|
toolResponse = await sendMessageHandler(args, this.toolContext);
|
||||||
|
|
|
@ -39,6 +39,17 @@ export const toolList = [
|
||||||
required: ["categoryId"]
|
required: ["categoryId"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "discord_login",
|
||||||
|
description: "Logs in to Discord using the configured token",
|
||||||
|
inputSchema: {
|
||||||
|
type: "object",
|
||||||
|
properties: {
|
||||||
|
token: { type: "string" }
|
||||||
|
},
|
||||||
|
required: []
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "discord_send",
|
name: "discord_send",
|
||||||
description: "Sends a message to a specified Discord text channel",
|
description: "Sends a message to a specified Discord text channel",
|
||||||
|
|
|
@ -177,6 +177,19 @@ export class StreamableHttpTransport implements MCPTransport {
|
||||||
result = { tools: toolList };
|
result = { tools: toolList };
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'discord_login':
|
||||||
|
result = await loginHandler(params, this.toolContext!);
|
||||||
|
// Log client state after login
|
||||||
|
info(`Client state after login: ${JSON.stringify({
|
||||||
|
isReady: this.toolContext!.client.isReady(),
|
||||||
|
hasToken: !!this.toolContext!.client.token,
|
||||||
|
user: this.toolContext!.client.user ? {
|
||||||
|
id: this.toolContext!.client.user.id,
|
||||||
|
tag: this.toolContext!.client.user.tag,
|
||||||
|
} : null
|
||||||
|
})}`);
|
||||||
|
break;
|
||||||
|
|
||||||
// Make sure Discord client is logged in for other Discord API tools
|
// Make sure Discord client is logged in for other Discord API tools
|
||||||
// but return a proper JSON-RPC error rather than throwing an exception
|
// but return a proper JSON-RPC error rather than throwing an exception
|
||||||
case 'discord_send':
|
case 'discord_send':
|
||||||
|
@ -225,7 +238,7 @@ export class StreamableHttpTransport implements MCPTransport {
|
||||||
jsonrpc: '2.0',
|
jsonrpc: '2.0',
|
||||||
error: {
|
error: {
|
||||||
code: -32603,
|
code: -32603,
|
||||||
message: 'Discord client reconnect failed.',
|
message: 'Discord client reconnect failed. Please use discord_login tool first.',
|
||||||
},
|
},
|
||||||
id: req.body?.id || null,
|
id: req.body?.id || null,
|
||||||
});
|
});
|
||||||
|
@ -239,7 +252,7 @@ export class StreamableHttpTransport implements MCPTransport {
|
||||||
jsonrpc: '2.0',
|
jsonrpc: '2.0',
|
||||||
error: {
|
error: {
|
||||||
code: -32603,
|
code: -32603,
|
||||||
message: 'Discord client reconnect failed.',
|
message: 'Discord client reconnect failed. Please use discord_login tool first.',
|
||||||
},
|
},
|
||||||
id: req.body?.id || null,
|
id: req.body?.id || null,
|
||||||
});
|
});
|
||||||
|
@ -249,7 +262,7 @@ export class StreamableHttpTransport implements MCPTransport {
|
||||||
jsonrpc: '2.0',
|
jsonrpc: '2.0',
|
||||||
error: {
|
error: {
|
||||||
code: -32603,
|
code: -32603,
|
||||||
message: 'Discord client not logged in.',
|
message: 'Discord client not logged in. Please use discord_login tool first.',
|
||||||
},
|
},
|
||||||
id: req.body?.id || null,
|
id: req.body?.id || null,
|
||||||
});
|
});
|
||||||
|
@ -333,7 +346,8 @@ export class StreamableHttpTransport implements MCPTransport {
|
||||||
const toolArgs = params.arguments || {};
|
const toolArgs = params.arguments || {};
|
||||||
|
|
||||||
// Check if Discord client is logged in for Discord API tools
|
// Check if Discord client is logged in for Discord API tools
|
||||||
if (toolName.startsWith('discord_') &&
|
if (toolName !== 'discord_login' &&
|
||||||
|
toolName.startsWith('discord_') &&
|
||||||
!this.toolContext!.client.isReady()) {
|
!this.toolContext!.client.isReady()) {
|
||||||
error(`Client not ready for tool ${toolName}, client state: ${JSON.stringify({
|
error(`Client not ready for tool ${toolName}, client state: ${JSON.stringify({
|
||||||
isReady: this.toolContext!.client.isReady(),
|
isReady: this.toolContext!.client.isReady(),
|
||||||
|
@ -358,7 +372,7 @@ export class StreamableHttpTransport implements MCPTransport {
|
||||||
jsonrpc: '2.0',
|
jsonrpc: '2.0',
|
||||||
error: {
|
error: {
|
||||||
code: -32603,
|
code: -32603,
|
||||||
message: 'Discord client reconnect failed.',
|
message: 'Discord client reconnect failed. Please use discord_login tool first.',
|
||||||
},
|
},
|
||||||
id: req.body?.id || null,
|
id: req.body?.id || null,
|
||||||
});
|
});
|
||||||
|
@ -372,7 +386,7 @@ export class StreamableHttpTransport implements MCPTransport {
|
||||||
jsonrpc: '2.0',
|
jsonrpc: '2.0',
|
||||||
error: {
|
error: {
|
||||||
code: -32603,
|
code: -32603,
|
||||||
message: 'Discord client reconnect failed.',
|
message: 'Discord client reconnect failed. Please use discord_login tool first.',
|
||||||
},
|
},
|
||||||
id: req.body?.id || null,
|
id: req.body?.id || null,
|
||||||
});
|
});
|
||||||
|
@ -382,7 +396,7 @@ export class StreamableHttpTransport implements MCPTransport {
|
||||||
jsonrpc: '2.0',
|
jsonrpc: '2.0',
|
||||||
error: {
|
error: {
|
||||||
code: -32603,
|
code: -32603,
|
||||||
message: 'Discord client not logged in.',
|
message: 'Discord client not logged in. Please use discord_login tool first.',
|
||||||
},
|
},
|
||||||
id: req.body?.id || null,
|
id: req.body?.id || null,
|
||||||
});
|
});
|
||||||
|
@ -391,6 +405,19 @@ export class StreamableHttpTransport implements MCPTransport {
|
||||||
|
|
||||||
// Call the appropriate handler based on tool name
|
// Call the appropriate handler based on tool name
|
||||||
switch (toolName) {
|
switch (toolName) {
|
||||||
|
case 'discord_login':
|
||||||
|
result = await loginHandler(toolArgs, this.toolContext!);
|
||||||
|
// Log client state after login
|
||||||
|
info(`Client state after login: ${JSON.stringify({
|
||||||
|
isReady: this.toolContext!.client.isReady(),
|
||||||
|
hasToken: !!this.toolContext!.client.token,
|
||||||
|
user: this.toolContext!.client.user ? {
|
||||||
|
id: this.toolContext!.client.user.id,
|
||||||
|
tag: this.toolContext!.client.user.tag,
|
||||||
|
} : null
|
||||||
|
})}`);
|
||||||
|
break;
|
||||||
|
|
||||||
case 'discord_send':
|
case 'discord_send':
|
||||||
result = await sendMessageHandler(toolArgs, this.toolContext!);
|
result = await sendMessageHandler(toolArgs, this.toolContext!);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue