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 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"]
|
|
@ -84,6 +84,10 @@ export class DiscordMCPServer {
|
|||
toolResponse = await deleteCategoryHandler(args, this.toolContext);
|
||||
return toolResponse;
|
||||
|
||||
case "discord_login": toolResponse = await loginHandler(args, this.toolContext);
|
||||
this.logClientState("after discord_login handler");
|
||||
return toolResponse;
|
||||
|
||||
case "discord_send":
|
||||
this.logClientState("before discord_send handler");
|
||||
toolResponse = await sendMessageHandler(args, this.toolContext);
|
||||
|
|
|
@ -39,6 +39,17 @@ export const toolList = [
|
|||
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",
|
||||
description: "Sends a message to a specified Discord text channel",
|
||||
|
|
|
@ -177,6 +177,19 @@ export class StreamableHttpTransport implements MCPTransport {
|
|||
result = { tools: toolList };
|
||||
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
|
||||
// but return a proper JSON-RPC error rather than throwing an exception
|
||||
case 'discord_send':
|
||||
|
@ -225,7 +238,7 @@ export class StreamableHttpTransport implements MCPTransport {
|
|||
jsonrpc: '2.0',
|
||||
error: {
|
||||
code: -32603,
|
||||
message: 'Discord client reconnect failed.',
|
||||
message: 'Discord client reconnect failed. Please use discord_login tool first.',
|
||||
},
|
||||
id: req.body?.id || null,
|
||||
});
|
||||
|
@ -239,7 +252,7 @@ export class StreamableHttpTransport implements MCPTransport {
|
|||
jsonrpc: '2.0',
|
||||
error: {
|
||||
code: -32603,
|
||||
message: 'Discord client reconnect failed.',
|
||||
message: 'Discord client reconnect failed. Please use discord_login tool first.',
|
||||
},
|
||||
id: req.body?.id || null,
|
||||
});
|
||||
|
@ -249,7 +262,7 @@ export class StreamableHttpTransport implements MCPTransport {
|
|||
jsonrpc: '2.0',
|
||||
error: {
|
||||
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,
|
||||
});
|
||||
|
@ -333,7 +346,8 @@ export class StreamableHttpTransport implements MCPTransport {
|
|||
const toolArgs = params.arguments || {};
|
||||
|
||||
// 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()) {
|
||||
error(`Client not ready for tool ${toolName}, client state: ${JSON.stringify({
|
||||
isReady: this.toolContext!.client.isReady(),
|
||||
|
@ -358,7 +372,7 @@ export class StreamableHttpTransport implements MCPTransport {
|
|||
jsonrpc: '2.0',
|
||||
error: {
|
||||
code: -32603,
|
||||
message: 'Discord client reconnect failed.',
|
||||
message: 'Discord client reconnect failed. Please use discord_login tool first.',
|
||||
},
|
||||
id: req.body?.id || null,
|
||||
});
|
||||
|
@ -372,7 +386,7 @@ export class StreamableHttpTransport implements MCPTransport {
|
|||
jsonrpc: '2.0',
|
||||
error: {
|
||||
code: -32603,
|
||||
message: 'Discord client reconnect failed.',
|
||||
message: 'Discord client reconnect failed. Please use discord_login tool first.',
|
||||
},
|
||||
id: req.body?.id || null,
|
||||
});
|
||||
|
@ -382,7 +396,7 @@ export class StreamableHttpTransport implements MCPTransport {
|
|||
jsonrpc: '2.0',
|
||||
error: {
|
||||
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,
|
||||
});
|
||||
|
@ -390,7 +404,20 @@ export class StreamableHttpTransport implements MCPTransport {
|
|||
}
|
||||
|
||||
// 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':
|
||||
result = await sendMessageHandler(toolArgs, this.toolContext!);
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue