Discord MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DISCORD_TOKEN | Yes | The Discord token used for authentication. The token is sent verbatim in the Authorization header. This server never adds Bot, Bearer, or another prefix. |
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 | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| discord_requestA | Call any Discord v10 REST endpoint, e.g. /guilds/123/roles. Covers permissions, roles, moderation, invites, webhooks, emojis, scheduled events, threads, polls, and other REST operations. Supply API-relative path and query separately. Files: [{"filename": "note.txt", "data_base64": "...", "content_type": "text/plain"}]. Total upload limit is 10 MiB. Discord permissions and endpoint limits still apply. |
| get_current_userA | Inspect the authenticated Discord account. |
| list_guildsB | List accessible servers; pass the last ID as after to paginate. |
| read_messagesA | Read channel or thread history. Use the oldest message ID as before for older pages. Only one of before, after, around may be supplied. Discord may omit message content when the credential lacks the required access or intent. |
| search_messagesB | Search server messages with optional channel and author filters. A 202 indexing response is returned as data; retry later if indexing is not complete. |
| send_messageA | Send a message or reply. Mentions do not ping by default. Use discord_request for attachments, embeds, polls, components, or explicit mentions. |
| edit_messageB | Edit an existing message where the credential permits it. |
| add_reactionA | React using a Unicode emoji or custom name:id; URL encoding is automatic. |
| create_dmB | Open a direct-message channel with a user, subject to Discord permissions. |
| list_membersA | List server members, subject to required intents. Paginate with the last user ID. |
| get_guildC | Inspect server details. |
| list_channelsC | List channels in a server. |
| get_channelA | Inspect channel metadata and permission overwrites. |
| get_messageA | Read one message. |
| get_userB | Inspect a user profile. |
| get_memberA | Inspect a server member and their roles. |
| list_rolesB | List server roles and permissions. |
| list_active_threadsA | List active server threads accessible to this credential. |
| list_pinsA | List the first page of pinned messages; use discord_request with before to paginate. |
| list_invitesB | List server invites where permitted. |
| delete_messageB | Delete a message where permitted. |
| pin_messageB | Pin a message in its channel. |
| unpin_messageA | Remove a message pin. |
| add_member_roleA | Assign a server role to a member. |
| remove_member_roleB | Remove a server role from a member. |
| create_channelA | Create a server channel; data includes name and optional type or permission_overwrites. |
| update_channelB | Update channel name, topic, permissions, or thread metadata using Discord fields. |
| delete_channelA | Delete a channel or close a DM. |
| create_threadC | Start a thread; data includes name, type and optional auto_archive_duration. |
| create_roleC | Create a server role using Discord role fields. |
| update_memberB | Modify member nickname, roles, timeout, mute, or voice channel using Discord fields. |
| create_inviteB | Create a channel invite; data may include max_age, max_uses and unique. |
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 32 tools
Most tools map cleanly to distinct Discord resources (messages, channels, roles, members, guilds). The main ambiguity is discord_request, which overlaps with nearly every other tool by design, but its generic nature is clearly described as a catch-all REST endpoint accessor.
The vast majority of tools follow a consistent verb_noun pattern: read_messages, delete_message, list_roles, create_channel, get_guild, add_member_role. Minor deviations exist, such as discord_request as a standalone generic tool and get_current_user not matching the list/get style perfectly, but the overall pattern is predictable.
32 tools is on the heavier side but justified for a Discord server integration covering messages, channels, members, roles, threads, invites, and reactions. The generic discord_request tool helps keep the count from being even larger, and every tool addresses a concrete Discord operation.
The surface covers core interaction and moderation workflows well: message lifecycle, channel lifecycle, role assignment, member updates, invites, threads, pins, reactions, and DMs. Notable gaps include no dedicated webhook/emoji/event tools, though discord_request explicitly covers those REST operations, so agents can work around the gap.