A Discord MCP (Model Context Protocol) server that enables AI assistants to interact with the Discord platform.
MCP-Discord provides the following Discord-related functionalities:
- Login to Discord bot
- Get server information
- Read/delete channel messages
- Send messages to specified channels
- Retrieve forum channel lists
- Create/delete/reply to forum posts
- Create/delete text channels
- Add/remove message reactions
- Create/edit/delete/use webhooks
- Node.js (v16.0.0 or higher)
- npm (v7.0.0 or higher)
- A Discord bot with appropriate permissions
- Bot token (obtainable from the Discord Developer Portal)
- Message Content Intent enabled
- Server Members Intent enabled
- Presence Intent enabled
- Permissions in your Discord server:
- Send Messages
- Create Public Threads
- Send Messages in Threads
- Manage Threads
- Manage Channels
- Add Reactions
To install mcp-discord for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @barryyip0625/mcp-discord --client claude
# Clone the repository
git clone https://github.com/barryyip0625/mcp-discord.git
cd mcp-discord
# Install dependencies
npm install
# Compile TypeScript
npm run build
A Discord bot token is required for proper operation. You can provide it in two ways:
- Environment variables:
DISCORD_TOKEN=your_discord_bot_token
DEFAULT_SERVER_ID=your_default_server_id # Optional
DEFAULT_CHANNEL_ID=your_default_channel_id # Optional
- Using the
--config
parameter when launching:
node path/to/mcp-discord/build/index.js --config "{\"DISCORD_TOKEN\":\"your_discord_bot_token\"}"
The project includes an enhanced startup script (start-discord.js
) that provides better debugging and error handling:
- Loads environment variables from the .env file
- Sets default server and channel IDs if not provided
- Redirects console.log to stderr to avoid JSON parsing issues in Claude Desktop
- Tests the Discord connection directly before starting the MCP server
- Provides detailed error information if anything goes wrong
To use this script:
node start-discord.js
-
Claude
{ "mcpServers": { "discord": { "command": "node", "args": [ "path/to/mcp-discord/start-discord.js" ], "env": { "DISCORD_TOKEN": "your_discord_bot_token", "DEFAULT_SERVER_ID": "your_default_server_id", "DEFAULT_CHANNEL_ID": "your_default_channel_id" } } } }
-
Cursor
{ "mcpServers": { "discord": { "command": "cmd", "args": [ "/c", "node", "path/to/mcp-discord/start-discord.js" ], "env": { "DISCORD_TOKEN": "your_discord_bot_token", "DEFAULT_SERVER_ID": "your_default_server_id", "DEFAULT_CHANNEL_ID": "your_default_channel_id" } } } }
discord_login
: Login to Discorddiscord_list_guilds
: List all available Discord servers (guilds) with their channelsdiscord_send
: Send a message to a specified channeldiscord_get_server_info
: Get Discord server information
discord_create_text_channel
: Create a text channeldiscord_delete_channel
: Delete a channel
discord_get_forum_channels
: Get a list of forum channelsdiscord_create_forum_post
: Create a forum postdiscord_get_forum_post
: Get a forum postdiscord_reply_to_forum
: Reply to a forum postdiscord_delete_forum_post
: Delete a forum post
discord_read_messages
: Read channel messagesdiscord_add_reaction
: Add a reaction to a messagediscord_add_multiple_reactions
: Add multiple reactions to a messagediscord_remove_reaction
: Remove a reaction from a messagediscord_delete_message
: Delete a specific message from a channel
discord_create_webhook
: Creates a new webhook for a Discord channeldiscord_send_webhook_message
: Sends a message to a Discord channel using a webhookdiscord_edit_webhook
: Edits an existing webhook for a Discord channeldiscord_delete_webhook
: Deletes an existing webhook for a Discord channel
# Development mode
npm run dev