Skip to main content
Glama
lburnscissp

discord-mcp

by lburnscissp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DISCORD_GUILD_IDNoOptional default server ID so tools don't need guild_id every call
DISCORD_BOT_TOKENYesYour Discord bot token

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
discord_list_channelsA

List a server's channels and categories, optionally filtered by kind or name.

The usual way to find a channel_id before reading or posting. Threads are not
included — use discord_list_threads.

Returns: Markdown table (name, type, ID, category, topic) or JSON list of channel objects
with id, name, type, parent_id, position, topic.
discord_get_channelA

Get one channel or thread: type, topic, parent, slowmode, and for threads the archive/lock state.

Returns: Markdown bullet list or JSON channel object.
discord_create_channelA

Create a channel or category in a server. Needs the Manage Channels permission.

Returns: Confirmation with the new channel's label and ID.
discord_edit_channelA

Rename, retopic, move, set slowmode on a channel — or archive/lock a thread.

Only the fields you pass are changed. Needs Manage Channels (Manage Threads for threads).

Returns: Confirmation listing the fields changed.
discord_delete_channelA

Permanently delete a channel or thread and every message in it. Irreversible.

Confirm with the user before calling. Needs Manage Channels.

Returns: Confirmation naming what was deleted.
discord_list_threadsA

List active (unarchived) threads in a server, optionally only under one channel.

Returns: Markdown table (name, ID, parent, messages, members) or JSON list.
Archived threads are not included.
discord_create_threadA

Start a thread — from an existing message, or standalone in a channel.

Returns: Confirmation with the thread ID. Post into it with discord_send_message using
the thread ID as channel_id.
discord_whoamiA

Identify the bot account this server is running as.

Use first to confirm the token works, and to learn the bot's own user ID (needed to
tell the bot's messages apart from other people's).

Returns: `Name (@username, ID) [bot]` plus the bot's creation date.
Errors: `Error: Invalid bot token…` if DISCORD_BOT_TOKEN is wrong or missing.
discord_list_guildsA

List every server (guild) the bot has been invited to.

A bot only sees servers where someone with Manage Server added it — it cannot browse
servers it isn't in. Use this to find a guild_id.

Returns: Markdown table of name and ID, or JSON list of {id, name, owner, permissions}
where `owner` means the bot's owner owns the server.
discord_get_guildB

Get details for one server: name, owner, member and online counts, creation date.

Returns: Markdown summary or JSON with id, name, owner_id, description,
approximate_member_count, approximate_presence_count, created_at, premium_tier.
discord_search_membersA

Find server members whose username or nickname starts with a string.

The quickest way to turn a name into a user_id. Does not need the privileged
Server Members intent (unlike discord_list_members).

Returns: Markdown table (member, roles, joined) or JSON list of {user_id, username,
display_name, nick, bot, roles, joined_at, timed_out_until}.
discord_list_membersA

List server members in join order with cursor pagination.

Requires the Server Members privileged intent to be enabled for the bot in the
developer portal; otherwise Discord returns Missing Access.

Returns: Markdown table or JSON envelope {count, limit, has_more, next_after, items}.
discord_get_memberA

Get one member's profile in this server: nickname, roles, join date, timeout status.

Returns: Markdown bullets or JSON member object.
discord_set_member_roleA

Give a role to a member, or take it away.

Needs Manage Roles, and the bot's own top role must sit above the role being assigned.

Returns: Confirmation.
discord_read_messagesA

Read recent messages from a channel or thread, newest first, with cursor pagination.

Needs the Message Content intent enabled for the bot or every message reads as empty.
Pass only one of before / after / around.

Returns: Markdown — each message as author, time, ID, text, attachments, reactions,
oldest at top; a footer gives the `before` cursor for the next page. JSON — envelope
{count, limit, has_more, next_before, items:[{id, channel_id, author{id, username,
display_name, bot}, content, timestamp, edited_timestamp, pinned, attachments?,
embeds?, reactions?, reply_to?, thread_id?}]}.
discord_get_messageA

Fetch one message by ID, including attachments, embeds and reactions.

Returns: Markdown block or JSON message object (same shape as discord_read_messages items).
discord_search_messagesA

Find messages in a channel containing a phrase, optionally by one author.

Discord's search API is not available to bots, so this scans the most recent
`max_scan` messages page by page (100 per API call) and filters locally. For "what
did X say about Y last week" this is the tool; for older history raise max_scan.

Returns: Matching messages (Markdown or JSON, same shape as discord_read_messages) plus
how many messages were scanned and the oldest one reached.
discord_send_messageA

Post a message to a channel, thread, or DM channel as the bot. Optionally as a reply.

Visible to everyone in the channel immediately — confirm wording with the user first.
Mentions do not ping unless allow_mentions is true.

Returns: Confirmation with the new message ID and a jump link.
discord_edit_messageA

Replace the text of a message the bot sent. Cannot edit other users' messages.

Returns: Confirmation.
discord_delete_messageA

Delete one message. Deleting others' messages needs Manage Messages. Irreversible.

For 2–100 recent messages at once use discord_bulk_delete_messages.

Returns: Confirmation.
discord_reactA

Add or remove the bot's own reaction on a message.

Returns: Confirmation.
discord_list_pinsA

List the pinned messages in a channel (max 50).

Returns: Markdown messages or JSON list, same shape as discord_read_messages items.
discord_pin_messageB

Pin or unpin a message in its channel. Needs Manage Messages.

Returns: Confirmation.
discord_send_dmA

Send a direct message from the bot to a user.

Fails if the user has DMs from server members/bots disabled. Confirm with the user
before sending — DMs feel more personal than channel posts.

Returns: Confirmation with the DM channel ID (reuse it with discord_read_messages to see replies).
discord_timeout_memberA

Time out a member (no posting, reacting or voice) for up to 28 days, or lift a timeout with minutes=0.

Needs Moderate Members. Confirm with the user before applying.

Returns: Confirmation with the time the timeout ends.
discord_kick_memberA

Remove a member from the server. They can rejoin with an invite. Needs Kick Members.

Confirm with the user before calling.

Returns: Confirmation.
discord_ban_memberA

Ban a user from the server (they cannot rejoin until unbanned), optionally deleting their recent messages.

Needs Ban Members. Confirm with the user before calling.

Returns: Confirmation.
discord_unban_memberA

Lift a ban so the user can rejoin. Needs Ban Members.

Returns: Confirmation.
discord_list_bansA

List banned users and the reason recorded for each. Needs Ban Members.

Returns: Markdown table (user, reason) or JSON list of {user_id, username, reason}.
discord_bulk_delete_messagesA

Delete 2–100 messages from one channel in a single call. Irreversible. Needs Manage Messages.

Discord refuses messages older than 14 days — delete those one at a time with
discord_delete_message. Confirm with the user before calling.

Returns: Confirmation with the count deleted.
discord_get_audit_logA

Read the server's audit log — who did what (bans, kicks, deletions, channel/role changes) and why.

Needs View Audit Log. Use to answer "who deleted that channel" or "why was X banned".

Returns: Markdown table (time, actor, action, target, reason) or JSON list of entries
{id, time, actor{id, username}, action, target_id, reason, changes}.
discord_list_rolesA

List a server's roles from highest to lowest, with IDs, colors and flags.

Use to find role_id for discord_set_member_role. Permission bitfields are in the JSON output.

Returns: Markdown table (name, ID, color, hoisted, mentionable, managed) or JSON list.
discord_create_roleA

Create a role. Needs Manage Roles. New roles appear at the bottom of the hierarchy.

Returns: Confirmation with the role ID.
discord_edit_roleA

Change a role's name, color, hoist/mentionable flags, or permissions. Only passed fields change.

Returns: Confirmation listing the fields changed.
discord_delete_roleA

Delete a role, removing it from every member. Irreversible — confirm with the user first.

Returns: Confirmation.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 35 tools

Disambiguation5/5

Each tool targets a distinct resource plus action (list/get/create/edit/delete on channels, roles, members, messages), and descriptions explicitly disambiguate the closest pairs like discord_delete_message vs discord_bulk_delete_messages and discord_search_members vs discord_list_members. The channel/thread overlap is handled by clear notes (e.g. discord_get_channel covers threads, discord_send_message accepts a thread ID).

Naming Consistency5/5

Every tool follows a strict discord_verb_noun pattern (discord_list_channels, discord_create_role, discord_ban_member) with the same namespace prefix. No camelCase or naming drift anywhere in the set.

Tool Count3/5

35 tools is heavy and at the upper end of what an agent can reliably select from, even though Discord is a genuinely broad domain. Most tools earn their place, but some (pins, reactions, bulk delete) could be consolidated.

Completeness4/5

Coverage is strong across messages, channels, threads, roles, members, moderation, and the audit log, including lifecycle operations like edit/delete and unban. Minor gaps remain (invites, emoji/sticker/webhook management, guild settings), but core workflows have no dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues