MCP server for controlling Discord servers via bot token
MCP server for controlling Discord servers via bot token
Valid MCP server (3 strong, 1 medium validity signals). 5 known CVEs in dependencies (0 critical, 2 high severity) Package registry verified. Imported from the Official MCP Registry.
4 files analyzed · 6 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: DISCORD_BOT_TOKEN
Environment variable: TRANSPORT
Environment variable: PORT
Environment variable: HOST
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-oratorian-discord-node-mcp": {
"env": {
"HOST": "your-host-here",
"PORT": "your-port-here",
"TRANSPORT": "your-transport-here",
"DISCORD_BOT_TOKEN": "your-discord-bot-token-here"
},
"args": [
"-y",
"@mahesvara/discord-mcpserver"
],
"command": "npx"
}
}
}From the project's GitHub README.
An MCP (Model Context Protocol) server that enables LLMs to control Discord servers via a bot token. This server provides comprehensive Discord management tools including sending messages, managing members, roles, channels, permissions, and more.
discord_list_guilds - List all servers the bot has access todiscord_get_guild - Get detailed info about a specific serverdiscord_edit_guild - Edit server settings (name, verification level, system channels, etc.)discord_leave_guild - Leave a serverdiscord_list_channels - List channels in a server (filter by type)discord_get_channel - Get channel details (includes forum tags for forum channels)discord_create_channel - Create text/voice/forum channels and categoriesdiscord_edit_channel - Edit channel name, topic, position, category, forum tags, and morediscord_delete_channel - Delete a channel or categorytype: "forum"discord_set_channel_permissions - Set permission overrides for roles/members on channelsdiscord_remove_channel_permissions - Remove permission overridesdiscord_get_channel_permissions - View all permission overrides on a channeldiscord_sync_channel_permissions - Sync channel permissions with parent categorydiscord_send_message - Send messages (with optional reply)discord_get_messages - Retrieve channel messages (with pagination)discord_edit_message - Edit bot's messagesdiscord_delete_message - Delete messagesdiscord_add_reaction - Add emoji reactionsdiscord_remove_reaction - Remove bot's reactionsdiscord_pin_message - Pin a messagediscord_unpin_message - Unpin a messagediscord_get_pinned_messages - Get all pinned messagesdiscord_list_members - List server members (with pagination)discord_get_member - Get member detailsdiscord_kick_member - Kick a memberdiscord_ban_member - Ban a member (with message deletion option)discord_unban_member - Unban a userdiscord_set_nickname - Set/clear member nicknamediscord_move_member - Move member to a different voice channeldiscord_timeout_member - Timeout/mute a member (up to 28 days)discord_list_roles - List all server rolesdiscord_create_role - Create a new rolediscord_edit_role - Edit role name, color, permissions, and settingsdiscord_delete_role - Delete a rolediscord_add_role - Assign role to memberdiscord_remove_role - Remove role from memberdiscord_set_role_positions - Reorder role hierarchydiscord_list_bans - List all banned usersdiscord_prune_members - Remove inactive members (with dry-run option)discord_get_audit_log - View audit log entriesdiscord_get_community_settings - View community settings (rules channel, features, etc.)discord_setup_community - Configure community channels (rules, updates, safety alerts)discord_get_welcome_screen - Get welcome screen configurationdiscord_edit_welcome_screen - Edit welcome screen (description, channels, emojis)discord_get_onboarding - Get onboarding configurationdiscord_edit_onboarding - Edit existing onboarding settingsdiscord_setup_onboarding - Setup onboarding from scratch (prompts, default channels, roles)discord_list_automod_rules - List auto moderation rulesdiscord_get_automod_rule - Get details of an auto mod rulediscord_create_automod_rule - Create auto moderation rulediscord_edit_automod_rule - Edit auto moderation rulediscord_delete_automod_rule - Delete auto moderation rulediscord_list_emojis - List custom emojisdiscord_create_emoji - Create emoji from image URLdiscord_delete_emoji - Delete a custom emojidiscord_list_stickers - List custom stickersdiscord_delete_sticker - Delete a custom stickerdiscord_list_invites - List active invitesdiscord_create_invite - Create channel invitediscord_delete_invite - Delete an invitediscord_list_webhooks - List webhooks (guild or channel)discord_create_webhook - Create a webhookdiscord_edit_webhook - Edit webhook name or channeldiscord_delete_webhook - Delete a webhookdiscord_list_events - List scheduled eventsdiscord_create_event - Create a scheduled event (stage, voice, or external)discord_delete_event - Delete a scheduled eventGo to OAuth2 -> URL Generator
Select scopes: bot, applications.commands
Select bot permissions (choose based on features you need):
Core Permissions:
Member Management:
Server Administration:
Copy the generated URL and open it to invite the bot
Option A: Install globally from npm
npm install -g @mahesvara/discord-mcpserver
Option B: Run directly with npx (no install required)
npx @mahesvara/discord-mcpserver
Add to your MCP client configuration (e.g., Claude Desktop or Claude Code):
Using globally installed package:
{
"mcpServers": {
"discord": {
"command": "discord-mcpserver",
"env": {
"DISCORD_BOT_TOKEN": "your_bot_token_here"
}
}
}
}
Using npx (no install required):
{
"mcpServers": {
"discord": {
"command": "npx",
"args": ["-y", "@mahesvara/discord-mcpserver"],
"env": {
"DISCORD_BOT_TOKEN": "your_bot_token_here"
}
}
}
}
The server supports loading environment variables from a .env file in the current directory:
DISCORD_BOT_TOKEN=your_bot_token_here
TRANSPORT=http
PORT=3000
HOST=localhost
| Variable | Description | Default |
|---|---|---|
DISCORD_BOT_TOKEN | Your Discord bot token (required) | - |
TRANSPORT | Transport mode: stdio or http | stdio |
PORT | HTTP server port (when using http transport) | 3000 |
HOST | HTTP server host (use 0.0.0.0 for remote access) | localhost |
For remote access, run the server with HTTP transport enabled:
Linux/macOS:
DISCORD_BOT_TOKEN=your_token TRANSPORT=http PORT=3000 HOST=0.0.0.0 discord-mcpserver
Windows (Command Prompt):
set DISCORD_BOT_TOKEN=your_token && set TRANSPORT=http && set PORT=3000 && set HOST=0.0.0.0 && discord-mcpserver
Windows (PowerShell):
$env:DISCORD_BOT_TOKEN="your_token"; $env:TRANSPORT="http"; $env:PORT="3000"; $env:HOST="0.0.0.0"; discord-mcpserver
Or use a .env file (works on all platforms):
discord-mcpserver
Then configure your MCP client to connect via HTTP:
{
"mcpServers": {
"discord": {
"type": "http",
"url": "http://your-server-ip:3000/mcp"
}
}
}
{
"tool": "discord_create_channel",
"params": {
"guild_id": "1234567890123456789",
"name": "help-forum",
"type": "forum",
"topic": "Ask questions and get help",
"default_reaction_emoji": "✅",
"default_sort_order": "latest_activity",
"default_forum_layout": "list_view",
"available_tags": [
{ "name": "Solved", "emoji_name": "✅", "moderated": false },
{ "name": "Bug", "emoji_name": "🐛", "moderated": false },
{ "name": "Question", "emoji_name": "❓", "moderated": false },
{ "name": "Announcement", "emoji_name": "📢", "moderated": true }
]
}
}
{
"tool": "discord_setup_onboarding",
"params": {
"guild_id": "1234567890123456789",
"default_channel_ids": ["1111111111111111111"],
"prompts": [
{
"type": "multiple_choice",
"title": "What are you interested in?",
"single_select": false,
"required": true,
"options": [
{ "title": "Gaming", "emoji_name": "🎮", "role_ids": ["2222222222222222222"] },
{ "title": "Tech", "emoji_name": "💻", "role_ids": ["3333333333333333333"] }
]
}
]
}
}
{
"tool": "discord_setup_community",
"params": {
"guild_id": "1234567890123456789",
"rules_channel_id": "1111111111111111111",
"public_updates_channel_id": "2222222222222222222",
"description": "A friendly gaming community",
"preferred_locale": "en-US"
}
}
{
"tool": "discord_edit_welcome_screen",
"params": {
"guild_id": "1234567890123456789",
"enabled": true,
"description": "Welcome to our server!",
"welcome_channels": [
{ "channel_id": "1111111111111111111", "description": "Read the rules", "emoji_name": "📜" },
{ "channel_id": "2222222222222222222", "description": "Introduce yourself", "emoji_name": "👋" }
]
}
}
{
"tool": "discord_create_channel",
"params": {
"guild_id": "1234567890123456789",
"name": "Bot Testing",
"type": "category"
}
}
{
"tool": "discord_create_channel",
"params": {
"guild_id": "1234567890123456789",
"name": "bot-commands",
"type": "text",
"topic": "Channel for bot interactions",
"parent_id": "CATEGORY_ID_HERE"
}
}
{
"tool": "discord_set_channel_permissions",
"params": {
"channel_id": "1234567890123456789",
"target_id": "ROLE_ID_HERE",
"target_type": "role",
"allow": ["ViewChannel", "SendMessages", "ReadMessageHistory"],
"deny": ["CreatePublicThreads"]
}
}
View & Access:
ViewChannel - See the channelMessages:
SendMessages, ReadMessageHistory, ManageMessagesEmbedLinks, AttachFiles, AddReactionsUseExternalEmojis, UseExternalStickersMentionEveryoneThreads:
CreatePublicThreads, CreatePrivateThreadsSendMessagesInThreads, ManageThreadsVoice:
Connect, Speak, StreamMuteMembers, DeafenMembers, MoveMembersUseVAD, PrioritySpeakerManagement:
ManageChannels, ManageRoles, ManageWebhooks{
"tool": "discord_send_message",
"params": {
"channel_id": "1234567890123456789",
"content": "Hello from the MCP server!"
}
}
{
"tool": "discord_add_role",
"params": {
"guild_id": "1234567890123456789",
"user_id": "9876543210987654321",
"role_id": "1111111111111111111"
}
}
Most read operations support two response formats:
All tools return clear error messages with suggestions when operations fail:
destructiveHint: trueDepending on which tools you use, your bot needs these permissions:
| Tool Category | Required Permissions |
|---|---|
| Messages | Send Messages, Read Message History, Manage Messages |
| Channels | Manage Channels |
| Permissions | Manage Roles (for channel permission overrides) |
| Members | Kick Members, Ban Members, Manage Nicknames, Moderate Members |
| Roles | Manage Roles |
| Reactions | Add Reactions |
| Server Settings | Manage Guild |
| Emojis/Stickers | Manage Emojis and Stickers |
| Invites | Create Instant Invite, Manage Guild |
| Webhooks | Manage Webhooks |
| Events | Manage Events |
| Audit Log | View Audit Log |
| Community/Onboarding | Manage Guild |
{
"tool": "discord_edit_role",
"params": {
"guild_id": "1234567890123456789",
"role_id": "1111111111111111111",
"name": "Moderators",
"color": 3447003,
"permissions": ["KickMembers", "BanMembers", "ManageMessages", "ModerateMembers"]
}
}
{
"tool": "discord_set_role_positions",
"params": {
"guild_id": "1234567890123456789",
"positions": [
{ "role_id": "1111111111111111111", "position": 5 },
{ "role_id": "2222222222222222222", "position": 4 }
]
}
}
{
"tool": "discord_timeout_member",
"params": {
"guild_id": "1234567890123456789",
"user_id": "9876543210987654321",
"duration_minutes": 60,
"reason": "Spamming in chat"
}
}
{
"tool": "discord_create_invite",
"params": {
"channel_id": "1234567890123456789",
"max_age": 86400,
"max_uses": 10,
"temporary": false
}
}
{
"tool": "discord_create_event",
"params": {
"guild_id": "1234567890123456789",
"name": "Community Game Night",
"description": "Join us for games!",
"scheduled_start_time": "2024-12-01T20:00:00Z",
"entity_type": "voice",
"channel_id": "1111111111111111111"
}
}
When editing roles, use these permission names:
General:
Administrator - Full access (use with caution)ManageGuild, ManageRoles, ManageChannelsKickMembers, BanMembers, ModerateMembersViewAuditLog, ViewGuildInsightsMessages:
SendMessages, ManageMessages, ReadMessageHistoryEmbedLinks, AttachFiles, AddReactionsMentionEveryone, UseExternalEmojisVoice:
Connect, Speak, StreamMuteMembers, DeafenMembers, MoveMembersOther:
ManageWebhooks, ManageEmojisAndStickersManageEvents, CreateEventsMIT
Be the first to review this server!
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.
by Microsoft · Content & Media
Convert files (PDF, Word, Excel, images, audio) to Markdown for LLM consumption