Discord Node Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Discord Node Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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 eventbot, applications.commandsCore Permissions:
Member Management:
Server Administration:
Option A: Install globally from npm
npm install -g @mahesvara/discord-mcpserverOption B: Run directly with npx (no install required)
npx @mahesvara/discord-mcpserverAdd 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-mcpserverWindows (Command Prompt):
set DISCORD_BOT_TOKEN=your_token && set TRANSPORT=http && set PORT=3000 && set HOST=0.0.0.0 && discord-mcpserverWindows (PowerShell):
$env:DISCORD_BOT_TOKEN="your_token"; $env:TRANSPORT="http"; $env:PORT="3000"; $env:HOST="0.0.0.0"; discord-mcpserverOr use a `.env` file (works on all platforms):
discord-mcpserverThen 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
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.