
Discord MCP
Connect AI assistants to Discord — manage channels, messages, roles, members, events and more via a JDA-powered bot.
Add to your client
Copy the config for your MCP client and paste it into its config file.
docker run -d -i --name discord-mcp --restart unless-stopped -p 8085:8085 -e SPRING_PROFILES_ACTIVE -e DISCORD_TOKEN -e DISCORD_GUILD_ID saseq/discord-mcp:latestPaste into ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"discord-mcp": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://localhost:8085/mcp"
]
}
}
}Claude Desktop connects to remote servers through the `mcp-remote` proxy (installed on first run via npx). Restart Claude Desktop after saving.
Step-by-step guides: Add to Claude Desktop · Add to Cursor · Add to Windsurf
Before you start
- A Discord bot and its token (DISCORD_TOKEN)
- Docker (recommended) — or Maven + Java to build and run the JAR manually
- Optional: DISCORD_GUILD_ID to set a default server ID so guildId can be omitted on tools
About Discord MCP
An MCP server that bridges AI assistants and Discord through a JDA-based bot. It exposes a comprehensive set of Discord management tools — messaging, channels, categories, roles, webhooks, invites, forums, emojis, scheduled events, voice/stage channels, permission overwrites and moderation — over an HTTP MCP endpoint (default http://localhost:8085/mcp) or a legacy stdio transport. Setup is via Docker (recommended), Docker Compose, or a Maven-built JAR.
Tools & capabilities (73)
get_server_infoGet detailed Discord server information
get_user_id_by_nameGet a Discord user's ID by username in a guild for ping usage <@id>
send_private_messageSend a private message to a specific user
edit_private_messageEdit a private message from a specific user
delete_private_messageDelete a private message from a specific user
read_private_messagesRead private message history from a specific user (includes attachment metadata, count 1-100 and optional cursor: before/after/around)
send_messageSend a message to a specific channel
edit_messageEdit a message from a specific channel
delete_messageDelete a message from a specific channel
read_messagesRead message history from a specific channel (includes attachment metadata, count 1-100 and optional cursor: before/after/around)
add_reactionAdd a reaction (emoji) to a specific message
remove_reactionRemove a specified reaction (emoji) from a message
create_text_channelCreate a new text channel
edit_text_channelEdit settings of a text channel (name, topic, nsfw, slowmode, category, position)
delete_channelDelete a channel
find_channelFind a channel type and ID using name and server ID
list_channelsList of all channels
get_channel_infoGet detailed information about a channel
move_channelMove a channel to another category and/or change its position
create_categoryCreate a new category for channels
edit_categoryEdit a category (rename or move position)
delete_categoryDelete a category
find_categoryFind a category ID using name and server ID
list_channels_in_categoryList of channels in a specific category
create_webhookCreate a new webhook on a specific channel
delete_webhookDelete a webhook
list_webhooksList of webhooks on a specific channel
send_webhook_messageSend a message via webhook
list_rolesGet a list of all roles on the server with their details
create_roleCreate a new role on the server
edit_roleModify an existing role's settings
delete_rolePermanently delete a role from the server
assign_roleAssign a role to a user
remove_roleRemove a role from a user
kick_memberKicks a member from the server
ban_memberBans a user from the server
unban_memberRemoves a ban from a user
timeout_memberDisables communication for a member for a specified duration
remove_timeoutRemoves a timeout (unmute) from a member before it expires
set_nicknameChanges a member's nickname on the server
get_bansReturns a list of banned users on the server with ban reasons
create_voice_channelCreate a new voice channel in a guild
create_stage_channelCreate a new stage channel for audio events
edit_voice_channelEdit settings of a voice or stage channel (name, bitrate, user limit, region)
move_memberMove a member to another voice channel
disconnect_memberDisconnect a member from their current voice channel
modify_voice_stateServer mute or deafen a member in voice channels
create_guild_scheduled_eventSchedule a new event on the server (voice, stage, or external)
edit_guild_scheduled_eventModify event details or change its status (start, complete, cancel)
delete_guild_scheduled_eventPermanently delete a scheduled event
list_guild_scheduled_eventsList all active and scheduled events on the server
get_guild_scheduled_event_usersGet list of users interested in a scheduled event
list_channel_permission_overwritesList all permission overwrites for a channel with role/member breakdown
upsert_role_channel_permissionsCreate or update permission overwrite for a role on a channel
upsert_member_channel_permissionsCreate or update permission overwrite for a member on a channel
delete_channel_permission_overwriteDelete a permission overwrite for a role or member from a channel
create_inviteCreate a new invite link for a specific channel
list_invitesList all active invites on the server with their statistics
delete_inviteDelete (revoke) an invite so the link stops working
get_invite_detailsGet details about a specific invite (works for any public invite)
create_forum_channelCreate a new forum channel
edit_forum_channelEdit settings of a forum channel (name, topic, nsfw, slowmode, category, position, default sort, default layout)
list_forum_channelsList all forum channels in the server
get_forum_channel_infoGet detailed information about a forum channel including tags and settings
list_forum_tagsList all available tags in a forum channel
create_forum_postCreate a new forum post (thread) with an initial message in a forum channel
list_forum_postsList active posts (threads) in a forum channel
modify_forum_postModify a forum post: lock/unlock, archive/unarchive, pin/unpin, or change applied tags
list_emojisList all custom emojis on the server
get_emoji_detailsGet detailed information about a specific custom emoji
create_emojiUpload a new custom emoji to the server (base64 or image URL, max 256KB)
edit_emojiEdit an existing emoji's name or role restrictions
delete_emojiPermanently delete a custom emoji from the server
What this server can do
Discord MCP provides tools for these capabilities — tap one to see every MCP server that does the same:
When to use it
- Let an AI assistant post, edit, and moderate messages in a Discord community
- Automate server administration — create/edit channels, categories, roles, and permission overwrites
- Run moderation workflows: kick, ban, timeout, and manage nicknames or banned-user lists
- Manage scheduled events, voice/stage channels, forum posts, invites, webhooks, and custom emojis
- Wire Discord actions into no-code/agent pipelines via n8n, Codex CLI, or OpenClaw
Security notes
Requires a Discord bot token (DISCORD_TOKEN) supplied via environment variable; treat it as a secret. The bot can perform destructive and moderation actions (delete channels/messages, kick/ban members, manage roles and permissions), so grant it only the Discord permissions it needs. The default HTTP endpoint http://localhost:8085/mcp is reachable only from the local machine; to expose it remotely (e.g. for Claude Desktop remote connectors) put it behind public HTTPS via a tunnel or reverse proxy.
Discord MCP FAQ
What credentials do I need?
A Discord bot token set as the DISCORD_TOKEN environment variable. Optionally set DISCORD_GUILD_ID to a default server ID so the guildId parameter becomes optional on every tool.
Which transport should I use?
HTTP singleton mode is recommended — connect clients to http://localhost:8085/mcp. A legacy stdio mode is also supported, which launches a new process/container per client session.
How do I run it?
Pull and run the Docker image saseq/discord-mcp:latest (also available via Docker Compose), or build the JAR from source with Maven and run it with java -jar.
Can Claude Desktop connect remotely?
Yes, but the default endpoint is local-only. Expose it over public HTTPS (tunnel or reverse proxy) and add it as a custom Connector in Claude Desktop's Connectors UI.
Alternatives to Discord MCP
Compare all alternatives →Connect your personal WhatsApp: search, read and send messages and media locally
Powerful Slack MCP with stdio/SSE/HTTP, DMs, group DMs and no-admin token auth
Full Telegram user-account MCP via MTProto: read chats, manage groups, send messages