mcp-discord
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DISCORD_BOT_TOKEN | Yes | The Discord bot token from the Discord Developer Portal, required for authentication to the Discord API. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| discord_send_messageA | Send a new message to a Discord channel. Supports plain text, embeds, replies, and allowed_mentions control. Returns the created message object including its ID. |
| discord_edit_messageA | Edit a message the bot previously sent. Can edit content and embeds. Cannot edit other users' messages. |
| discord_delete_messageA | Delete a single message. Requires Manage Messages for other users' messages; bot can always delete its own. |
| discord_bulk_delete_messagesA | Bulk delete 2-100 messages from a channel. All messages must be less than 14 days old. Useful for raid cleanup. Requires Manage Messages permission. |
| discord_get_messageB | Fetch a single message by ID. Useful for reading context before acting. |
| discord_list_messagesA | Fetch recent messages from a channel. Paginate with before/after/around cursors. Default limit is 50, max 100. |
| discord_pin_messageA | Pin a message in a channel. Requires Manage Messages. Channels max 50 pinned messages. |
| discord_unpin_messageC | Unpin a previously pinned message. |
| discord_add_reactionA | Add a reaction from the bot to a message. Emoji can be a unicode glyph (e.g. "π") or custom-emoji string ("name:id"). Requires Add Reactions + Read Message History. |
| discord_remove_reactionA | Remove a reaction. Without user_id, removes the bot's own reaction. With user_id, removes a specific user's reaction (requires Manage Messages). |
| discord_get_reactionsA | List users who reacted with a specific emoji on a message. Paginated (default 25, max 100). |
| discord_list_channelsB | List all channels in a guild (server). Includes text, voice, category, thread channels. |
| discord_get_channelB | Fetch details about a single channel β name, type, permission overwrites, parent category, rate limit, etc. |
| discord_create_threadA | Create a thread. If message_id is provided, creates a thread from that message; otherwise creates a standalone thread in the channel. auto_archive_duration is in minutes: 60, 1440, 4320, or 10080. |
| discord_list_active_threadsA | List all active (non-archived) threads in a guild. |
| discord_send_typingA | Trigger the "bot is typingβ¦" indicator in a channel for about 10 seconds. Useful before sending a long-form response so users know the bot is working. |
| discord_get_memberC | Fetch a guild member β nickname, joined_at, roles, communication_disabled_until (timeout), etc. |
| discord_list_membersA | List members of a guild. Paginate with |
| discord_timeout_userA | Timeout a user β they cannot send messages, react, or join voice. Up to 28 days. Pass duration_seconds=0 to remove an existing timeout. Requires Moderate Members permission. |
| discord_kick_userA | Remove a user from the guild. They can rejoin via invite. Requires Kick Members permission. |
| discord_add_roleA | Add a role to a guild member. Requires Manage Roles and the target role must be below the bot's highest role. |
| discord_remove_roleC | Remove a role from a guild member. |
| discord_list_guildsA | List all guilds (servers) the bot is a member of. Useful for multi-server setups. |
| discord_get_guildC | Fetch details for a single guild β name, icon, owner, member count, features, etc. |
| discord_list_rolesA | List all roles in a guild. Returns role objects sorted by position (highest first). |
| discord_get_audit_logA | Fetch recent audit log entries. Filter by action_type (Discord AuditLogEvent enum integer) and/or user_id. Requires View Audit Log permission. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 26 tools
Most tools have distinct purposes targeting specific Discord resources and actions, such as send_message vs. edit_message or kick_user vs. timeout_user. However, some overlap exists: add_reaction and remove_reaction are clear, but get_reactions could be confused with list_messages for reading message content, and list_active_threads vs. create_thread might cause minor ambiguity in thread management scenarios.
All tools follow a consistent snake_case naming pattern with a clear verb_noun structure, such as discord_send_message, discord_get_channel, and discord_list_members. The naming is predictable and uniform across all 26 tools, making it easy for agents to understand and select the appropriate tool.
With 26 tools, the count is on the higher side for a Discord bot server, which may feel heavy and potentially overwhelming for agents. While Discord's API is feature-rich, this many tools could lead to decision paralysis or misselection, though it does cover a broad range of functionalities from messaging to moderation.
The tool set provides comprehensive coverage for core Discord bot operations, including CRUD for messages, roles, and members, as well as moderation actions like kick and timeout. Minor gaps exist, such as no tools for editing roles or managing invites, but agents can still handle most common workflows effectively without significant dead ends.