Skip to main content
Glama

discord_add_reaction

React to a specific Discord message with an emoji by providing the channel ID, message ID, and emoji identifier. Simplifies emoji interaction in Discord via MCP-Discord server.

Instructions

Adds an emoji reaction to a specific Discord message

Input Schema

NameRequiredDescriptionDefault
channelIdYes
emojiYes
messageIdYes

Input Schema (JSON Schema)

{ "properties": { "channelId": { "type": "string" }, "emoji": { "type": "string" }, "messageId": { "type": "string" } }, "required": [ "channelId", "messageId", "emoji" ], "type": "object" }

Implementation Reference

  • The main handler function that parses arguments using AddReactionSchema, fetches the channel and message, adds the reaction using Discord.js message.react(emoji), and returns success or error response.
    export async function addReactionHandler( args: unknown, context: ToolContext ): Promise<ToolResponse> { const { channelId, messageId, emoji } = AddReactionSchema.parse(args); try { if (!context.client.isReady()) { return { content: [{ type: "text", text: "Discord client not logged in." }], isError: true }; } const channel = await context.client.channels.fetch(channelId); if (!channel || !channel.isTextBased() || !('messages' in channel)) { return { content: [{ type: "text", text: `Cannot find text channel with ID: ${channelId}` }], isError: true }; } const message = await channel.messages.fetch(messageId); if (!message) { return { content: [{ type: "text", text: `Cannot find message with ID: ${messageId}` }], isError: true }; } // Add the reaction await message.react(emoji); return { content: [{ type: "text", text: `Successfully added reaction ${emoji} to message ID: ${messageId}` }] }; } catch (error) { return handleDiscordError(error); } }
  • Zod schema for input validation of the discord_add_reaction tool parameters: channelId, messageId, emoji.
    export const AddReactionSchema = z.object({ channelId: z.string(), messageId: z.string(), emoji: z.string() });
  • src/server.ts:143-146 (registration)
    Switch case in server.ts that registers and dispatches the discord_add_reaction tool call to the addReactionHandler function.
    case "discord_add_reaction": this.logClientState("before discord_add_reaction handler"); toolResponse = await addReactionHandler(args, this.toolContext); return toolResponse;
  • MCP tool definition including name, description, and JSON input schema for the discord_add_reaction tool, used in listTools response.
    { name: "discord_add_reaction", description: "Adds an emoji reaction to a specific Discord message", inputSchema: { type: "object", properties: { channelId: { type: "string" }, messageId: { type: "string" }, emoji: { type: "string" } }, required: ["channelId", "messageId", "emoji"] } },
  • src/server.ts:66-70 (registration)
    Registration of the tool list handler that returns the toolList containing the discord_add_reaction tool definition.
    this.server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: toolList }; });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/barryyip0625/mcp-discord'

If you have feedback or need assistance with the MCP directory API, please join our Discord server