Discord Node MCP server
io.github.Oratorian/discord-node-mcp·v1.1.4MCP server for controlling Discord servers via bot token
0 stars59 downloads/wk
Reviews
Write oneNobody has reviewed Discord Node yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Discord Node tools (67, 22 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
discord_add_reactionAdd an emoji reaction to a message. Args: - channel_id (string): Discord channel ID - message_id (string): Message ID to react to - emoji (string): Emoji to react with (e.g., '\u{1F44D}' or custom emoji format) Returns: Confirmation of reaction added
discord_add_roleAdd a role to a Discord member. Args: - guild_id (string): Discord server/guild ID - user_id (string): Discord user ID - role_id (string): Discord role ID to add Returns: Confirmation of role added
discord_ban_memberBan a member from a Discord server. Args: - guild_id (string): Discord server/guild ID - user_id (string): Discord user ID to ban - reason (string, optional): Reason for ban (visible in audit log) - delete_message_days (number): Days of messages to delete (0-7, default: 0) Returns: Confirmation of ban
discord_create_automod_rulewrite actionCreate a new auto moderation rule for a server. Args: - guild_id (string): Discord server/guild ID - name (string): Rule name - event_type ('message_send'): Event that triggers the rule - trigger_type ('keyword' | 'spam' | 'keyword_preset' | 'mention_spam'): Trigger type - trigger_metadata (object, optional): Trigger configuration (keyword_filter, presets, etc.) - actions (array): Actions to take
discord_create_channelwrite actiondiscord_create_emojiwrite actionCreate a custom emoji in a server. Args: - guild_id (string): Discord server/guild ID - name (string): Emoji name (2-32 chars, alphanumeric and underscores) - image_url (string): URL of image (PNG, JPG, GIF under 256KB) - roles (string[], optional): Role IDs that can use this emoji Returns: Created emoji details
discord_create_eventwrite actionCreate a scheduled event in a server. Args: - guild_id (string): Discord server/guild ID - name (string): Event name - description (string, optional): Event description - scheduled_start_time (string): ISO8601 timestamp for start - scheduled_end_time (string, optional): ISO8601 timestamp for end - entity_type ('stage' | 'voice' | 'external'): Type of event - channel_id (string, optional): Channel
discord_create_invitewrite actionCreate an invite link for a channel. Args: - channel_id (string): Discord channel ID - max_age (number): Duration in seconds (0 = never expires, max 604800 = 7 days) - max_uses (number): Max uses (0 = unlimited) - temporary (boolean): Kick members when they disconnect if not assigned a role - unique (boolean): Create new unique invite vs reuse existing Returns: Created invite URL
discord_create_rolewrite actionCreate a new role in a Discord server. Args: - guild_id (string): Discord server/guild ID - name (string): Role name - color (number, optional): Role color as decimal integer (e.g., 16711680 for red) - mentionable (boolean): Whether the role can be mentioned (default: false) - hoist (boolean): Whether to display role members separately (default: false) Returns: The created role's details
discord_create_webhookwrite actionCreate a webhook in a channel. Args: - channel_id (string): Discord channel ID - name (string): Webhook name - avatar_url (string, optional): Avatar image URL Returns: Created webhook details including URL
discord_delete_automod_rulewrite actionDelete an auto moderation rule from a server. Args: - guild_id (string): Discord server/guild ID - rule_id (string): Auto moderation rule ID to delete Returns: Confirmation of deletion
discord_delete_channelwrite actionDelete a channel from a Discord server. This action is permanent! Args: - channel_id (string): Discord channel ID to delete Returns: Confirmation of deletion
discord_delete_emojiwrite actionDelete a custom emoji from a server. Args: - guild_id (string): Discord server/guild ID - emoji_id (string): Discord emoji ID Returns: Confirmation of deletion
discord_delete_eventwrite actionDelete a scheduled event from a server. Args: - guild_id (string): Discord server/guild ID - event_id (string): Discord scheduled event ID Returns: Confirmation of deletion
discord_delete_invitewrite actionDelete an invite by its code. Args: - invite_code (string): The invite code to delete Returns: Confirmation of deletion
discord_delete_messagewrite actionDelete a message from a Discord channel. Args: - channel_id (string): Discord channel ID - message_id (string): Message ID to delete Returns: Confirmation of deletion
discord_delete_rolewrite actionDelete a role from a Discord server. This action is permanent! Args: - guild_id (string): Discord server/guild ID - role_id (string): Discord role ID to delete Returns: Confirmation of deletion
discord_delete_stickerwrite actionDelete a custom sticker from a server. Args: - guild_id (string): Discord server/guild ID - sticker_id (string): Discord sticker ID Returns: Confirmation of deletion
discord_delete_webhookwrite actionDelete a webhook. Args: - webhook_id (string): Discord webhook ID Returns: Confirmation of deletion
discord_edit_automod_ruleEdit an existing auto moderation rule. Args: - guild_id (string): Discord server/guild ID - rule_id (string): Auto moderation rule ID - name (string, optional): New rule name - trigger_metadata (object, optional): New trigger configuration - actions (array, optional): New actions - enabled (boolean, optional): Enable/disable rule - exempt_roles (array, optional): New exempt roles - exempt_channels
discord_edit_channeldiscord_edit_guildEdit server settings like name, verification level, and system channel. Args: - guild_id (string): Discord server/guild ID - name (string, optional): New server name - verification_level (string, optional): 'none', 'low', 'medium', 'high', 'very_high' - default_notifications (string, optional): 'all_messages' or 'only_mentions' - afk_channel_id (string, optional): AFK voice channel ID - afk_timeou
discord_edit_messageEdit a message sent by the bot. Args: - channel_id (string): Discord channel ID - message_id (string): Message ID to edit - content (string): New message content (max 2000 characters) Returns: Confirmation of edit
discord_edit_onboardingEdit the onboarding configuration for a server. Configure prompts/questions that new members answer to customize their server experience. Each prompt can assign roles or show channels based on member selections. Args: - guild_id (string): Discord server/guild ID - prompts (array, optional): Onboarding prompts with options - default_channel_ids (array, optional): Channels shown to all new members -
discord_edit_rolediscord_edit_webhookEdit an existing webhook. Args: - webhook_id (string): Discord webhook ID - name (string, optional): New webhook name - channel_id (string, optional): Move webhook to different channel Returns: Updated webhook details
discord_edit_welcome_screenEdit the welcome screen configuration for a server. Requires the server to have Community features enabled and bot must have MANAGE_GUILD permission. Args: - guild_id (string): Discord server/guild ID - enabled (boolean, optional): Enable/disable the welcome screen - description (string, optional): Server description (max 140 chars) - welcome_channels (array, optional): Up to 5 channels to show (c
discord_get_audit_logGet the audit log for a server. Shows who did what actions. Common action types: 1=GuildUpdate, 10=ChannelCreate, 11=ChannelUpdate, 12=ChannelDelete, 20=MemberKick, 22=MemberBanAdd, 23=MemberBanRemove, 24=MemberUpdate, 25=MemberRoleUpdate, 30=RoleCreate, 31=RoleUpdate, 32=RoleDelete, 72=MessageDelete, 73=MessageBulkDelete Args: - guild_id (string): Discord server/guild ID - user_id (string, option
discord_get_automod_ruleGet details of a specific auto moderation rule. Args: - guild_id (string): Discord server/guild ID - rule_id (string): Auto moderation rule ID - response_format ('markdown' | 'json'): Output format (default: 'json') Returns: Auto moderation rule details
discord_get_channelGet detailed information about a specific channel. Args: - channel_id (string): Discord channel ID - response_format ('markdown' | 'json'): Output format (default: 'json') Returns: Channel details including name, type, topic, and category
discord_get_channel_permissionsGet all permission overrides for a channel. Args: - channel_id (string): Discord channel ID - response_format ('markdown' | 'json'): Output format (default: 'json') Returns: List of permission overrides with allow/deny for each role/member
discord_get_community_settingsGet the community settings for a server. Shows rules channel, updates channel, and other community-related settings. Args: - guild_id (string): Discord server/guild ID - response_format ('markdown' | 'json'): Output format (default: 'json') Returns: Community settings including channels and features
discord_get_guildGet detailed information about a specific Discord server. Args: - guild_id (string): Discord server/guild ID - response_format ('markdown' | 'json'): Output format (default: 'json') Returns: Server details including name, member count, owner, and icon
discord_get_memberGet detailed information about a specific member. Args: - guild_id (string): Discord server/guild ID - user_id (string): Discord user ID - response_format ('markdown' | 'json'): Output format (default: 'json') Returns: Member details including username, nickname, roles, join date
discord_get_messagesRetrieve messages from a Discord channel. Args: - channel_id (string): Discord channel ID - limit (number): Number of messages to retrieve (1-100, default: 20) - before (string, optional): Get messages before this message ID - after (string, optional): Get messages after this message ID - response_format ('markdown' | 'json'): Output format (default: 'json') Returns: List of messages with content,
discord_get_onboardingGet the onboarding configuration for a server. Onboarding guides new members through a questionnaire to customize their experience. Args: - guild_id (string): Discord server/guild ID - response_format ('markdown' | 'json'): Output format (default: 'json') Returns: Onboarding settings including prompts, options, and default channels
discord_get_pinned_messagesGet all pinned messages in a channel. Args: - channel_id (string): Discord channel ID - response_format ('markdown' | 'json'): Output format (default: 'json') Returns: List of pinned messages
discord_get_welcome_screenGet the welcome screen configuration for a server. Requires the server to have Community features enabled. Args: - guild_id (string): Discord server/guild ID - response_format ('markdown' | 'json'): Output format (default: 'json') Returns: Welcome screen settings including description and channels
discord_kick_memberKick a member from a Discord server. Args: - guild_id (string): Discord server/guild ID - user_id (string): Discord user ID to kick - reason (string, optional): Reason for kick (visible in audit log) Returns: Confirmation of kick
discord_leave_guildLeave a Discord server (guild). The bot will no longer have access to this server. WARNING: This is a destructive action. The bot will need to be re-invited to rejoin. Args: - guild_id (string): Discord server/guild ID to leave - confirm (boolean): Must be set to true to confirm leaving Returns: Confirmation message with server details
discord_list_automod_rulesList all auto moderation rules for a server. Args: - guild_id (string): Discord server/guild ID - response_format ('markdown' | 'json'): Output format (default: 'json') Returns: List of auto moderation rules
discord_list_bansList all banned users in a server. Args: - guild_id (string): Discord server/guild ID - limit (number): Number of bans to return (1-1000, default 100) - response_format ('json' | 'markdown'): Output format Returns: List of banned users with reasons
discord_list_channelsList channels in a Discord server. Args: - guild_id (string): Discord server/guild ID - type ('text' | 'voice' | 'category' | 'all'): Filter by channel type (default: 'all') - response_format ('markdown' | 'json'): Output format (default: 'json') Returns: List of channels with id, name, type, topic, and category info
discord_list_emojisList all custom emojis in a server. Args: - guild_id (string): Discord server/guild ID - response_format ('json' | 'markdown'): Output format Returns: List of emojis with name, ID, and whether animated
discord_list_eventsList all scheduled events in a server. Args: - guild_id (string): Discord server/guild ID - response_format ('json' | 'markdown'): Output format Returns: List of events with name, time, location, and status
discord_list_guildsList all Discord servers (guilds) the bot has access to. Returns server names, IDs, member counts, and owner information. Args: - response_format ('markdown' | 'json'): Output format (default: 'json') Returns: List of guilds with id, name, memberCount, icon, ownerId
discord_list_invitesList all active invites in a server. Args: - guild_id (string): Discord server/guild ID - response_format ('json' | 'markdown'): Output format Returns: List of invites with code, uses, max uses, expiration
discord_list_membersList members in a Discord server. Args: - guild_id (string): Discord server/guild ID - limit (number): Maximum number of members (1-100, default: 20) - after (string, optional): Get members after this user ID (for pagination) - response_format ('markdown' | 'json'): Output format (default: 'json') Returns: List of members with username, nickname, roles, join date
discord_list_rolesList all roles in a Discord server. Args: - guild_id (string): Discord server/guild ID - response_format ('markdown' | 'json'): Output format (default: 'json') Returns: List of roles with name, color, position, permissions
discord_list_stickersList all custom stickers in a server. Args: - guild_id (string): Discord server/guild ID - response_format ('json' | 'markdown'): Output format Returns: List of stickers with name, description, and format
discord_list_webhooksList webhooks in a guild or channel. Args: - guild_id (string, optional): List all webhooks in the server - channel_id (string, optional): List webhooks for a specific channel - response_format ('json' | 'markdown'): Output format Returns: List of webhooks with name, channel, and URL
discord_move_memberMove a member to a different voice channel or disconnect them from voice. The member must currently be connected to a voice channel to be moved. Args: - guild_id (string): Discord server/guild ID - user_id (string): Discord user ID to move - channel_id (string | null): Target voice channel ID, or null to disconnect Returns: Confirmation of move or disconnect
discord_pin_messagePin a message in a channel. Args: - channel_id (string): Discord channel ID - message_id (string): Message ID to pin Returns: Confirmation of message pinned
discord_prune_memberswrite actionRemove inactive members from the server. Args: - guild_id (string): Discord server/guild ID - days (number): Days of inactivity required (1-30) - include_roles (string[], optional): Role IDs to include in prune (by default only members without roles) - dry_run (boolean): If true, returns count without actually pruning (default true) Returns: Number of members pruned (or would be pruned if dry_run)
discord_remove_channel_permissionswrite actionRemove all permission overrides for a role or member on a channel. Args: - channel_id (string): Discord channel ID - target_id (string): Role or User ID to remove permission overrides for Returns: Confirmation of removal
discord_remove_reactionwrite actionRemove the bot's emoji reaction from a message. Args: - channel_id (string): Discord channel ID - message_id (string): Message ID - emoji (string): Emoji to remove Returns: Confirmation of reaction removed
discord_remove_rolewrite actionRemove a role from a Discord member. Args: - guild_id (string): Discord server/guild ID - user_id (string): Discord user ID - role_id (string): Discord role ID to remove Returns: Confirmation of role removed
discord_send_messagewrite actionSend a message to a Discord channel. Args: - channel_id (string): Discord channel ID - content (string): Message content (max 2000 characters) - reply_to (string, optional): Message ID to reply to Returns: The sent message details including ID
discord_set_channel_permissionsdiscord_set_nicknameSet or clear a member's nickname. Args: - guild_id (string): Discord server/guild ID - user_id (string): Discord user ID - nickname (string, optional): New nickname (empty/null to reset) Returns: Confirmation of nickname change
discord_set_role_positionsReorder role hierarchy by setting role positions. Higher position = more authority in the hierarchy. The @everyone role is always at position 0. Roles can only manage other roles below them in the hierarchy. IMPORTANT: The bot can only move roles that are below its own highest role in the hierarchy. Args: - guild_id (string): Discord server/guild ID - positions (array): Array of objects with: - ro
discord_setup_communityConfigure the required channels for a Community server. Sets the rules channel and public updates channel which are required for Community features. The server must already have Community enabled in Discord Server Settings. Args: - guild_id (string): Discord server/guild ID - rules_channel_id (string): Channel for server rules (required) - public_updates_channel_id (string): Channel for Discord up
discord_setup_onboardingdiscord_sync_channel_permissionsSync a channel's permissions with its parent category. Args: - channel_id (string): Discord channel ID Returns: Confirmation of sync
discord_timeout_memberTimeout (mute) a member for a specified duration. They cannot send messages, react, or join voice. Args: - guild_id (string): Discord server/guild ID - user_id (string): Discord user ID to timeout - duration_minutes (number): Timeout duration in minutes (0 to remove, max 40320 = 28 days) - reason (string, optional): Reason for timeout (visible in audit log) Returns: Confirmation of timeout
discord_unban_memberwrite actionRemove a ban from a user. Args: - guild_id (string): Discord server/guild ID - user_id (string): Discord user ID to unban Returns: Confirmation of unban
discord_unpin_messageUnpin a message in a channel. Args: - channel_id (string): Discord channel ID - message_id (string): Message ID to unpin Returns: Confirmation of message unpinned
Public scan report
scanner v0.1.10 · 2026-09-28 · same rubric, same numbers if you re-run it
- Code scan61 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 240 days ago4/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How Discord Node compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 66/100
- higher than 23% of 48,273 servers
- Tools
- 67
- the typical server has 7
- Tools that change things
- 33%
- typical: 0%. Fewer write tools means less an agent can break
- Downloads a week
- 59
- more than 50% of 11,915 servers with a package
What its tools let an agent do: 45 read · 22 change
Install Discord Node in Claude Code, Cursor or VS Code
Runs npx -y @mahesvara/discord-mcpserver on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add discord-node-mcp -- npx -y @mahesvara/discord-mcpserver
Discord Node: common questions
- Is Discord Node MCP server safe?
- With care: it is graded C, so read the findings first (66/100). Read the Discord Node safety report
- How do I install Discord Node?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Discord Node need an API key?
- Yes. The registry entry asks for
DISCORD_BOT_TOKEN. - Is Discord Node maintained?
- The last commit was 275 days ago (2026-01-31). The latest release is v1.1.4.
- How does Discord Node compare with other MCP servers?
- safety score 66/100 (higher than 23% of 48,273 servers); tools 67 (the typical server has 7); tools that change things 33% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.