discord-server-mcp
Enables creating, organizing, and moderating Discord servers through a bot, including managing channels, roles, members, messages, announcements, templates, backups, onboarding, AutoMod, webhooks, events, emojis, and other Discord API endpoints.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@discord-server-mcp set up a server for my gaming group"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
discord-server-mcp
Create, organise and moderate Discord servers from Claude (or any MCP client) through your own bot.
Ask in plain words: "set up a server for my gaming group", "add a Solved tag to the help forum", "post this announcement with the image and ping @Announcements", "who can see #staff-chat?". The assistant reads the server, shows you the plan, and acts once you agree.
132 tools, of which only a core of 48 is on at first; the rest turn on when a task needs them, plus
discord_apifor any other Discord endpoint.Live events: the assistant sees what happens as it happens: new messages, mentions of the bot, members joining or leaving, reactions and button clicks. It can also wait for something, such as a reply.
Automations:
role menus with buttons, a dropdown or reactions;
welcome messages with auto-roles, and verification with an "I accept the rules" button;
numbered support tickets in private channels; a staff-only channel gets a line when each one opens (with a Claim button), is claimed and closes (with a summary and the full transcript), and
ticket_historyfinds any past ticket;support forums: new posts get an Open tag and a Solved button, staff can claim them, solved posts close, idle ones close after a few days;
the server's own slash commands, such as
/rulesor/links;rules, "when this happens, do that": answer words, delete links, give a role on a reaction, DM new members, time out spammers;
scheduled and recurring messages, in any time zone;
moderation logs, in one channel, split by kind, or in a forum with one post per member and tags per kind (filter by member, kind or both): deleted and edited messages with what they said, joins and leaves, kicks, bans, timeouts, nickname and role changes with who did it and why, AutoMod blocks. The bot's own automations and ticket channels are left out, and every entry is kept for
search_mod_logand/modlog;staff alerts: a role ping in a staff channel and/or DMs on bans, kicks, timeouts, AutoMod blocks and raids;
staff slash commands inside Discord:
/lock,/unlock,/slowmode,/purge,/timeout,/untimeout,/kick,/ban,/unban,/role add|remove,/announce,/ticket close|claim,/modlog. Discord shows each one only to members with the matching permission, they respect the role order, and the log shows who used them.
Members see these texts in the server's language: English, Portuguese (Portugal and Brazil), Spanish, French, German, Italian, Russian, Japanese, Chinese (simplified), Korean, Polish or Turkish. Every text can be changed, then or later, so any other language works too. Staff command names can be in English, translated for each member, or in one language for everyone. They run while the assistant is open, or around the clock with
discord-server-mcp runor Docker.Background jobs: big builds, role changes for many members, message backups (JSON, Markdown and HTML transcripts) and restores. Each job shows its progress and can be cancelled or resumed.
Local or remote: stdio for desktop apps, or Streamable HTTP with a bearer token (
serve --http).Guided from zero:
/discordfinds what is already set up, lets you pick a server, and walks you through creating a bot, adding it to an existing server, or creating a brand-new server. The new server gets built step by step: questions, plan, structure, rules and welcome texts, then Community, onboarding and AutoMod.Several bots and servers:
add as many bots as you like and move between their servers;
each request uses the bot that is in that server, or the one you chose for it;
every result says which bot acted.
Warns about 2FA: when a server requires two-factor authentication for moderation, it says who needs 2FA and why.
Templates, layouts and backups: build a whole server from a template, a layout you describe, or a backup. Only what is missing is created, and an interrupted build can be resumed.
Safe by design:
every change can be previewed (
dry_run);permanent actions need
confirm: true;there are read-only and preview-only modes, an allow-list of servers and selectable tool packs;
nobody is pinged unless you ask.
Built for Claude: a
/discordcommand with a menu and a guided setup, and skills that make Claude show the plan before acting.Easy install:
one-click extension for Claude Desktop (asks for the token in a form);
a plugin for Claude Code;
a setup command (
init) for every other client.
Names, not ids:
announcements,@Moderator,alice. Emoji prefixes are ignored when matching, and typos get "did you mean…?" suggestions.Files and images from your computer or the web, inside messages and embeds, and as icons, emojis and banners.
Online presence: the bot shows as online with your status text while it runs.
Install
1. Create the bot (2 minutes)
Go to discord.com/developers/applications, click New Application, open Bot and click Reset Token. Copy the token and keep it secret: it controls the bot.
Optional: on the same page, turn on Server Members Intent so member lists and role member counts work.
Add the bot to your server: OAuth2 → URL Generator → scope
bot→ permission Administrator → open the link. The/discordcommand and theinitcommand also give you this link.In Server Settings → Roles, drag the bot's role near the top. A bot can only manage roles and members below its own highest role.
2. Add it to your app
Claude Desktop: download discord-server-mcp-<version>.mcpb from the latest release and double-click it. Claude Desktop shows a form; paste the token there. Node.js is not needed because Claude Desktop includes it.
Claude Code:
/plugin install discord-server --marketplace pr5ias/discord-server-mcpThen run /discord: Claude walks you through creating the bot and asks for the token in a private box, or, if your app has none, on a one-time page in your browser at 127.0.0.1. The token goes straight to the server and is saved in ~/.discord-mcp/bots.json, never into the chat. On older versions, run /plugin marketplace add pr5ias/discord-server-mcp first, then /plugin install discord-server@discord-server-mcp. The same .plugin file from the releases also installs in the Claude app.
Cursor, Windsurf, VS Code and other MCP clients (needs Node.js 22+):
npx discord-server-mcp initWithout npm, clone this repository and run node dist/index.mjs init instead.
The wizard checks the token, saves it to ~/.discord-mcp/bots.json (run it again to add more bots), prints the invite link, and adds the server to Claude Desktop, Claude Code, Cursor and Windsurf if you want. To set it up by hand, start the server with npx -y discord-server-mcp and give it the token as DISCORD_BOT_TOKEN.
3. Use it
Restart the app and type /discord (in Claude), or just ask "show my Discord server". If something is off, /discord setup or node dist/index.mjs check tells you exactly what to fix.
Related MCP server: discord-mcp
The /discord command
/discordshows what is set up and asks which server to work on, or offers to add a bot, add it to another server, or create a new server. With no bot yet it explains how bots work and walks you through creating one. After you pick a server, a menu opens:Check-up: finds problems, such as missing topics, empty channels, risky roles or a bot role that is too low.
Build or reorganise: templates, layouts and restores.
Messages & announcements.
Roles, members & moderation.
Build or reorganise includes Build a server from scratch:
Questions about the server: what it is for, languages, which areas, size.
A starting point: a built-in template, a template from the internet, a copy of another of your servers, or your own description. It is adapted to your answers, then a preview: the channel sidebar as members will see it, the roles, and a grid of who can see and write where. Approve it, ask for changes, or try another template, as many times as you like.
The structure: roles, channels and permissions.
The rules, welcome, FAQ and first announcement, written for you to approve before they are posted.
Optional settings: Community, onboarding, the welcome screen, verification, AutoMod and an invite link.
/discord setupwalks through the setup one step at a time./discord <request>skips the menu, e.g./discord build the project template.
Tools
132 tools in packs. Only the core pack (48 tools) is on at first, so the model has fewer tools to choose from and each request stays small. When a task needs more, the assistant calls enable_tools and the pack appears at once. In apps that do not refresh their tool list, the assistant calls the same tools through use_tool, so nothing is out of reach. DISCORD_TOOLSETS=all turns everything on.
Pack | Tools |
core (always on) |
|
automations |
|
live |
|
jobs |
|
moderation |
|
messaging |
|
organizing |
|
server_settings |
|
expressions |
|
api |
|
Templates and backups
preview_blueprint and apply_blueprint accept any of these:
a built-in template:
community,gaming,creator,projectorstudy. They follow the structure most servers use: an information area with welcome, rules and announcements, community chat, topic or support areas, voice, and a private staff area.a Discord template from the internet (
discord_template: adiscord.new/…link from a site such as discords.com/templates);another server the bot is in (
copy_from_server);a JSON file from
export_server_structure;a layout written on the spot:
{
"roles": [{ "name": "Event Host", "color": "#e67e22" }],
"categories": [{
"name": "Events",
"channels": [
{ "name": "📅-event-announcements", "type": "announcement", "topic": "Upcoming events",
"overrides": [{ "target": "@everyone", "deny": ["SendMessages"] }, { "target": "Event Host", "allow": ["SendMessages"] }] },
{ "name": "💬-event-chat", "type": "text", "topic": "Talk about the events" },
{ "name": "🎙️-event-stage", "type": "stage" }
]
}]
}mode: "plan"lists the steps and changes nothing.mode: "apply"carries them out.Existing roles, categories and channels are matched by name, with emojis and dashes ignored, and are reused.
Missing forum tags and topics are added.
Nothing is ever deleted.
With
update_existing: trueit also moves channels into place, updates roles that differ, and reorders everything.
Running around the clock and remotely
Role menus, welcomes, tickets, slash commands and the moderation log need a bot that is online. The MCP server keeps the bots online while your AI app is open. To keep them working all the time, run this on a computer or server that stays on:
node dist/index.mjs run # or: npx discord-server-mcp runOr with Docker. Settings, bots and automations are kept in the /data volume. Copy ~/.discord-mcp/automations.json into it to bring over what you set up in Claude.
docker build -t discord-server-mcp .
docker run -d --restart unless-stopped --name discord-bot \
-v discord-data:/data -e DISCORD_BOT_TOKEN=<token> discord-server-mcpAdd serve --http --host 0.0.0.0 at the end, -p 3333:3333 and -e DISCORD_MCP_HTTP_TOKEN=<secret> to serve the MCP tools over HTTP from the container instead.
To use the tools from another machine, serve MCP over HTTP:
DISCORD_MCP_HTTP_TOKEN=<long random secret> node dist/index.mjs serve --http --port 3333Endpoint: clients connect to
http://<host>:3333/mcpand sendAuthorization: Bearer <secret>.Who can reach it: it listens on 127.0.0.1 only. Add
--host 0.0.0.0and put HTTPS in front to reach it from elsewhere.Health check:
/healthreports the version and whether each bot is connected.
Intents. For message text (and the text of deleted messages in the moderation log) and member join events, open the Developer Portal → Bot and turn on Message Content and Server Members. Without them the live features still work, but message text comes through empty and joins are not seen. events_status shows which intents are active.
Safety settings
Just ask Claude ("only show changes, don't apply them", "set the bot's status to My Server"): the configure tool saves them in ~/.discord-mcp/settings.json. The Claude Desktop extension also asks for the main ones during install. Environment variables with the same names override the file.
Variable | Default | Meaning |
| none | A bot token. Bots added from the chat or with |
| first bot | Name or id of the bot used when a request names no server ( |
| none | JSON |
|
|
|
|
| Permanent actions (delete, kick, ban, purge, prune…) return a preview until called with |
| all | Comma-separated server ids the tools may touch. |
| core only | Extra packs on from the start, e.g. |
| none | Default server when the bot is in several. |
|
|
|
|
|
|
| none | Bearer secret required by |
| none | Status text, e.g. |
|
|
|
Tools carry MCP annotations (read-only, destructive), so clients can ask before running them. Audit-log reasons are supported on moderation tools.
Sharing a bot
Two people can use the same bot from their own computers. Each one adds the same token with add_bot.
Share it through a Team: in the Developer Portal, go to Teams → New Team, invite the person, then open the app's General Information and click Transfer App to Team. Don't send the token in a chat.
Resetting the token affects everyone: a reset gives a new token, so agree before doing it.
The audit log can't tell you apart: every change shows as the bot. If you need to know who did what, give each person their own bot.
When several bots are in one server, every result says which bot acted, set_server_bot chooses the bot for that server, and any request can pass bot.
Limits
New servers: Discord rarely lets bots create servers. Create the server in the app, invite the bot, then build it with a template.
Role order: a bot cannot manage roles or members at or above its own highest role.
Other bots' messages cannot be edited. Re-post them and delete the old ones.
Always-on features: role menus, welcomes, tickets, slash commands and the moderation log work only while the server runs. Use
runor Docker on an always-on machine to keep them working all the time. Slash commands answer with fixed texts; they do not run other actions.Bulk delete only works on messages younger than 14 days. Older ones are deleted one by one.
Message search scans recent messages per channel, because Discord's search API is not available to bots.
Your own account is never used. Automating a personal account (a "selfbot") breaks Discord's terms and can get the account banned.
Publishing (maintainers)
For a new version, raise the version in package.json, server.json, .claude-plugin/plugin.json and src/version.js, then:
npm test # builds and runs every test against the fake Discord API
npm run package # release/: the .mcpb and .plugin files
npm login # opens the browser; npm needs 2FA on the account
npm publish # staged: the version waits until it is approvednpm now stages publishes: the new version stays hidden (a first publish shows a 0.0.0-stage placeholder) until a maintainer approves it in npmjs.com → Staged Packages → Approve, or with npm stage approve <id>, with 2FA. Then:
mcp-publisher login github # https://github.com/modelcontextprotocol/registry
mcp-publisher publish # lists server.json in the official MCP registryFinally, make a GitHub release tagged v<version> with the two files from release/.
Development
npm install
npm test # builds, then runs every tool pack against a fake Discord API
npm run package # release/: the .mcpb extension and the .plugin fileSource:
src/, plain JavaScript ES modules.discord.js: REST client, lookups and dry runs.tool.js: write modes and tool packs.tools/*.js: the tools.templates.js: server templates.cli.js:initandcheck.
Build:
dist/index.mjsis the bundled server and is committed, so the plugin works straight from the repository.Releases: run
npm testandnpm run package, then attach the two files fromrelease/to a GitHub release taggedv<version>.
License
MIT
Available Tools
48 toolsadd_botA
Add a Discord bot (several are supported) without the token ever going through the chat. method "box" (default) asks the app to show a private input box; if the app cannot, or the box is closed, it opens a one-time page on this computer (a http://127.0.0.1 link) where the user pastes the token in their browser. The token is checked and saved, and the bot can be used at once. Call it after the user created the bot (setup_check has the steps).
Inputs: label, method, dry_run.
apply_blueprintA
Build or complete a server from a blueprint: a built-in template (list_templates), a saved export (file), or a layout you write (blueprint: {roles, categories:[{name, overrides, channels:[{name, type, topic, slowmode, tags, overrides}]}], channels}). mode "plan" lists the steps without changing anything; "apply" does them. Only what is missing is created, matching names loosely (emojis and dashes ignored), so it is safe to run again to continue. Nothing is deleted.
Inputs: bot, file, mode, server, +7 more.
ban_memberBDestructive
Ban a user from the server, optionally deleting their recent messages.
Inputs: user (required), bot, reason, server, +3 more.
bot_invite_linkARead-only
The link that adds a bot to a server the user manages (Administrator by default, or chosen permissions).
Inputs: bot, permissions.
check_permissionsARead-only
What a member or role can actually do, on the server or in one channel, after roles and channel overrides. Also answers "who can see this channel?" when only a channel is given.
Inputs: bot, role, member, server, +1 more.
configureA
Only when the user asks: change this Discord tool's own settings and save them on this computer: write mode, allowed servers, tool packs on at start, confirmation for permanent actions, default server and the bots' status. Most apply at once; tool groups, read-only mode and the status apply after restarting the app.
Inputs: online, status, dry_run, write_mode, +6 more.
create_categoryC
Create a channel category.
Inputs: name (required), bot, reason, server, +3 more.
create_channelA
Create a text, announcement, forum, media, voice or stage channel. Inside a category it takes the category's permissions unless overrides are given. Permission names: CreateInstantInvite, KickMembers, BanMembers, Administrator, ManageChannels, ManageGuild, AddReactions, ViewAuditLog, PrioritySpeaker, Stream, ViewChannel, SendMessages, SendTTSMessages, ManageMessages, EmbedLinks, AttachFiles, ReadMessageHistory, MentionEveryone, UseExternalEmojis, ViewGuildInsights, Connect, Speak, MuteMembers, DeafenMembers, MoveMembers, UseVAD, ChangeNickname, ManageNicknames, ManageRoles, ManageWebhooks, ManageGuildExpressions, UseApplicationCommands, RequestToSpeak, ManageEvents, ManageThreads, CreatePublicThreads, CreatePrivateThreads, UseExternalStickers, SendMessagesInThreads, UseEmbeddedActivities, ModerateMembers, ViewCreatorMonetizationAnalytics, UseSoundboard, CreateGuildExpressions, CreateEvents, UseExternalSounds, SendVoiceMessages, SendPolls, UseExternalApps, PinMessages.
Inputs: name (required), bot, nsfw, type, +15 more.
create_forum_postC
Create a post in a forum or media channel, with tags, embeds, files and link buttons.
Inputs: forum (required), title (required), bot, tags, +7 more.
create_inviteC
Create an invite link to a channel.
Inputs: channel (required), bot, server, unique, +4 more.
create_roleB
Create a role. Permission names: CreateInstantInvite, KickMembers, BanMembers, Administrator, ManageChannels, ManageGuild, AddReactions, ViewAuditLog, PrioritySpeaker, Stream, ViewChannel, SendMessages, SendTTSMessages, ManageMessages, EmbedLinks, AttachFiles, ReadMessageHistory, MentionEveryone, UseExternalEmojis, ViewGuildInsights, Connect, Speak, MuteMembers, DeafenMembers, MoveMembers, UseVAD, ChangeNickname, ManageNicknames, ManageRoles, ManageWebhooks, ManageGuildExpressions, UseApplicationCommands, RequestToSpeak, ManageEvents, ManageThreads, CreatePublicThreads, CreatePrivateThreads, UseExternalStickers, SendMessagesInThreads, UseEmbeddedActivities, ModerateMembers, ViewCreatorMonetizationAnalytics, UseSoundboard, CreateGuildExpressions, CreateEvents, UseExternalSounds, SendVoiceMessages, SendPolls, UseExternalApps, PinMessages.
Inputs: name (required), bot, color, reason, +7 more.
create_threadB
Start a thread in a text or announcement channel, from a message or on its own.
Inputs: name (required), channel (required), bot, server, +4 more.
delete_channelADestructive
Delete a channel, category or thread. Cannot be undone. Channels inside a deleted category are kept, without category.
Inputs: channel (required), bot, reason, server, +2 more.
delete_messagesADestructive
Delete one or more messages (up to 100). Messages older than 14 days are deleted one by one.
Inputs: channel (required), message_ids (required), bot, reason, +3 more.
delete_roleCDestructive
Delete a role. Cannot be undone.
Inputs: role (required), bot, reason, server, +2 more.
edit_channelC
Change a channel, category or thread: name, topic, category, position, slowmode, NSFW, voice settings, forum settings.
Inputs: channel (required), bot, name, nsfw, +13 more.
edit_messageA
Edit a message the bot sent: text, embeds, link buttons, files (replaces the attachments when given).
Inputs: channel (required), message_id (required), bot, files, +6 more.
edit_roleA
Edit a role. "permissions" replaces all of them; use add_permissions/remove_permissions to change a few. Permission names: CreateInstantInvite, KickMembers, BanMembers, Administrator, ManageChannels, ManageGuild, AddReactions, ViewAuditLog, PrioritySpeaker, Stream, ViewChannel, SendMessages, SendTTSMessages, ManageMessages, EmbedLinks, AttachFiles, ReadMessageHistory, MentionEveryone, UseExternalEmojis, ViewGuildInsights, Connect, Speak, MuteMembers, DeafenMembers, MoveMembers, UseVAD, ChangeNickname, ManageNicknames, ManageRoles, ManageWebhooks, ManageGuildExpressions, UseApplicationCommands, RequestToSpeak, ManageEvents, ManageThreads, CreatePublicThreads, CreatePrivateThreads, UseExternalStickers, SendMessagesInThreads, UseEmbeddedActivities, ModerateMembers, ViewCreatorMonetizationAnalytics, UseSoundboard, CreateGuildExpressions, CreateEvents, UseExternalSounds, SendVoiceMessages, SendPolls, UseExternalApps, PinMessages.
Inputs: role (required), bot, name, color, +10 more.
edit_serverC
Change server settings: name, description, icon, banner, splash, verification level, default notifications, content filter, AFK, system and rules channels.
Inputs: bot, icon, name, banner, +15 more.
enable_toolsARead-only
Turn on more Discord tools for this conversation. Only the core tools are on at first; call this as soon as a task needs one of these packs: automations (role menus, welcome messages with auto-roles, support tickets and their history, the server's own slash commands, staff slash commands (/ban, /lock, /purge…), moderation logs and searching them, staff alerts, support forums, rules (when X happens do Y), member verification, scheduled messages); live (what is happening now, waiting for a reply, mention or join); jobs (background jobs: message backups and restores, roles for many members at once); moderation (AutoMod, locking channels, purging messages, bans list, pruning, audit log, role audit, member export); messaging (webhooks (post with another name), DMs, pins list, announcements publishing, polls and reactions results); organizing (cloning channels, more forum tags, threads, following announcement channels, copying and syncing permissions); server_settings (onboarding, welcome screen, invites list, server stats and activity, bot profile, creating or leaving servers); expressions (emojis, stickers, soundboard, scheduled events, stage, application commands); api (direct Discord API calls for anything else).
Inputs: packs (required).
export_server_structureARead-only
Export a server's roles, categories, channels, topics, forum tags and permissions as a blueprint (a backup without messages). Optionally save it to a JSON file; apply_blueprint can rebuild from it here or on another server.
Inputs: bot, server, save_to.
get_memberBRead-only
Details of one member: names, roles, join date, timeout.
Inputs: member (required), bot, server.
get_messageARead-only
Read one message in full (content, embeds, files, reactions).
Inputs: channel (required), message_id (required), bot, server.
get_serverARead-only
Overview of a server: settings, every category with its channels (type, topic, forum tags), roles (top to bottom) and the bot's own permissions. Start here before changing anything.
Inputs: bot, server.
import_discord_templateARead-only
Load a Discord server template from a link (discord.new/CODE or discord.com/template/CODE, as shared on template websites) and return it as a blueprint you can show with preview_blueprint, edit, and build with apply_blueprint. Also gives the template's name, description and how many times it was used.
Inputs: link (required), bot.
job_statusCRead-only
Progress and result of a background job.
Inputs: job_id (required), bot.
kick_memberADestructive
Remove a member from the server (they can rejoin with an invite).
Inputs: member (required), bot, reason, server, +2 more.
list_botsARead-only
List the configured bots, which one is used by default, and how many servers each is in.
Inputs: no named parameters.
list_membersARead-only
List server members with their roles. Needs the Server Members Intent enabled for the bot in the Developer Portal (Bot tab).
Inputs: bot, role, limit, server.
list_rolesARead-only
List roles (top to bottom) with colour, permissions and member count hints.
Inputs: bot, server.
list_serversARead-only
List every Discord server the configured bots can work on (the servers they were invited to): owner, members, which bot and whether it is administrator there, plus the links to add each bot to another server.
Inputs: bot.
list_templatesARead-only
List the built-in server templates for apply_blueprint.
Inputs: bot.
pin_messageC
Pin or unpin a message.
Inputs: channel (required), message_id (required), bot, unpin, +2 more.
preview_blueprintARead-only
Show a visual preview of a server layout before building it: the channel sidebar as members will see it (categories, channel types, topics, forum tags, private areas), the roles with colours and key permissions, and a grid of who can see and write in each channel. With a server, also marks what is new, already there or moved. Use it to let the user approve or ask for changes; then apply_blueprint.
Inputs: bot, file, server, template, +4 more.
reactA
Add reactions to a message, or remove them (the bot's own, someone's, one emoji for everyone, or all).
Inputs: channel (required), message_id (required), bot, user, +4 more.
read_messagesARead-only
Read messages of a channel or thread (newest last). Use before/after to page.
Inputs: channel (required), bot, after, limit, +2 more.
remove_botADestructive
Forget a saved bot on this computer (the bot itself stays on Discord and in its servers).
Inputs: bot (required), confirm, dry_run.
reorder_channelsB
Put channels in an order. Give the full order of categories (top to bottom), or the channels of one category in order, or both.
Inputs: bot, server, dry_run, channels, +2 more.
search_messagesBRead-only
Search recent messages across the server's text channels, forums' active posts and threads (and their titles) for words or an author.
Inputs: bot, query, author, server, +3 more.
send_messageA
Send a message to a channel or thread: text, embeds, files/images (local paths or URLs; show one inside an embed with image "attachment://name.png"), link buttons, a poll, a reply, and pings. Nobody is pinged unless listed in ping_roles/ping_users/ping_everyone.
Inputs: channel (required), bot, pin, poll, +13 more.
set_forum_tagsA
Replace the whole tag list of a forum or media channel. Existing tags keep their emoji unless a new one is given.
Inputs: tags (required), forum (required), bot, server, +1 more.
set_member_rolesC
Give roles to a member and/or take roles away.
Inputs: member (required), add, bot, reason, +3 more.
set_permissionsA
Set what a role, @everyone or a member can do in a channel or category (allow, deny, or remove the override). Permission names: CreateInstantInvite, KickMembers, BanMembers, Administrator, ManageChannels, ManageGuild, AddReactions, ViewAuditLog, PrioritySpeaker, Stream, ViewChannel, SendMessages, SendTTSMessages, ManageMessages, EmbedLinks, AttachFiles, ReadMessageHistory, MentionEveryone, UseExternalEmojis, ViewGuildInsights, Connect, Speak, MuteMembers, DeafenMembers, MoveMembers, UseVAD, ChangeNickname, ManageNicknames, ManageRoles, ManageWebhooks, ManageGuildExpressions, UseApplicationCommands, RequestToSpeak, ManageEvents, ManageThreads, CreatePublicThreads, CreatePrivateThreads, UseExternalStickers, SendMessagesInThreads, UseEmbeddedActivities, ModerateMembers, ViewCreatorMonetizationAnalytics, UseSoundboard, CreateGuildExpressions, CreateEvents, UseExternalSounds, SendVoiceMessages, SendPolls, UseExternalApps, PinMessages.
Inputs: target (required), channel (required), bot, deny, +6 more.
set_server_botB
Choose which bot to use in a server that several configured bots are in (saved on this computer). "auto" goes back to the default bot.
Inputs: bot (required), server (required), dry_run.
setup_checkARead-only
Start here. Shows every configured bot with the servers it is in, what to fix (permissions, role position, intents), invite links, and this tool's settings. With no bot yet it gives the steps to create one.
Inputs: no named parameters.
timeout_memberA
Time a member out (they cannot talk or react) for a while, or end a timeout with minutes 0.
Inputs: member (required), minutes (required), bot, reason, +2 more.
use_botB
Choose the default bot (used when a request does not name a server). Tools still pick the right bot automatically when a server is named.
Inputs: bot (required), dry_run.
use_toolA
Call a Discord tool from a pack by name, with its arguments. Use it when enable_tools turned a pack on but this app does not show the new tools yet.
Inputs: tool (required), dry_run, arguments.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 48 tools
Most tools target a distinct resource+action (create_channel, edit_role, ban_member), and the blueprint family (import_discord_template, preview_blueprint, export_server_structure, apply_blueprint) is clearly delineated. The main friction is two tools both billed as entry points (get_server and setup_check say "Start here"), plus partial overlap between enable_tools, use_tool and configure, which an agent could hesitate between.
Everything is snake_case and the dominant pattern is verb_noun (create_channel, edit_role, delete_messages, set_permissions, search_messages). A handful break the verb-first pattern with noun phrases (setup_check, job_status, bot_invite_link, preview_blueprint) and even invert it (setup_check vs check_permissions), but the vocabulary remains readable and predictable.
48 exposed tools far exceeds the range where an agent can reliably pick without misfires, and several are meta-tools (enable_tools, use_tool, configure) that exist purely to navigate the surface. The gated pack system shows awareness of the problem, but the initial flat list is still very heavy for what is largely Discord CRUD.
Coverage is exceptional: full CRUD for channels, categories, threads, roles, messages, invites, permissions, member moderation, plus search, permission introspection and a complete blueprint import/export/preview/apply lifecycle. Remaining operations (AutoMod, webhooks, DMs, bans list, leaving servers) are deliberately reachable through enable_tools packs, so the domain has no dead ends.
Maintenance
Related MCP Connectors
Discord MCP server for ChatGPT, Claude and any AI agent: list servers and channels, read channel messages, search messages, send message, reply to message, send DM, read mentions and assign role in your own Discord account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Discord yourself; Cotlet does not store your password and you need no Discord API key. About the official Discord API: Yes, Discord has an official API for bots and OAuth2 apps, but it acts as a bot that a server manager adds, not as you, and Discord has no official MCP server for it (checked 5 Nov 2026). The MCP server on Discord's docs site only searches documentation. Setup and FAQ: https://cotlet.dev/integrations/discord-api-mcp-server
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Build Discord communities with AI: roles, channels, modules, automations and reviewed announcements.
Build your own tools from chat: design, test and host them on a shareable MCP server URL.
Related MCP Servers
- AlicenseAqualityFmaintenanceA Model Context Protocol server that enables LLMs to send, edit, and delete Discord messages using webhooks. It supports text content, rich embeds, and thread interactions with strict Zod-based parameter validation.312 npm1MIT
- FlicenseNot gradedqualityDmaintenanceComprehensive Discord server management through MCP, enabling channel, role, permission, message, moderation, and automation tasks via natural language.4-
- AlicenseAqualityDmaintenanceAn MCP server that lets AI assistants provision Discord servers (guilds, categories, channels, roles, permissions) from declarative blueprints via the Discord REST API, with idempotent diff-based planning and no deletions.15MIT
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients such as Claude, Cursor, or Codex to build and manage Discord servers end to end — creating channels, roles, permission overwrites, threads, webhooks, events, and messages, plus whole-server blueprints applied idempotently. Includes guard rails like read-only and safe modes, per-server allowlists, and permission explanations.177 npmMIT