{"name":"io.github.Oratorian/discord-node-mcp","slug":"oratorian-discord-node-mcp","title":null,"description":"MCP server for controlling Discord servers via bot token","url":"https://mcp.market/server/oratorian-discord-node-mcp","rating":null,"grade":"C","score":66,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":12,"stars":0,"forks":0,"downloads_week":59,"last_push_at":"2026-01-31T05:58:39.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/Oratorian/discord-node-mcp","website":null,"version":"1.1.4","remotes":[],"packages":[{"registryType":"npm","identifier":"@mahesvara/discord-mcpserver","version":"1.1.4","transport":{"type":"stdio"},"environmentVariables":[{"description":"Your Discord bot token","isRequired":true,"isSecret":true,"name":"DISCORD_BOT_TOKEN"},{"description":"Transport type: stdio or http","default":"stdio","name":"TRANSPORT"},{"description":"Port for HTTP transport","default":"3000","name":"PORT"},{"description":"Host for HTTP transport","default":"localhost","name":"HOST"}]}],"tools":[{"name":"discord_add_reaction","description":"Add 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_add_role","description":"Add 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_ban_member","description":"Ban 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_create_automod_rule","description":"Create 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 ","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_create_channel","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_create_emoji","description":"Create 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","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_create_event","description":"Create 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 ","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_create_invite","description":"Create 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","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_create_role","description":"Create 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","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_create_webhook","description":"Create 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","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_delete_automod_rule","description":"Delete 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","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_delete_channel","description":"Delete a channel from a Discord server. This action is permanent! Args: - channel_id (string): Discord channel ID to delete Returns: Confirmation of deletion","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_delete_emoji","description":"Delete a custom emoji from a server. Args: - guild_id (string): Discord server/guild ID - emoji_id (string): Discord emoji ID Returns: Confirmation of deletion","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_delete_event","description":"Delete 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","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_delete_invite","description":"Delete an invite by its code. Args: - invite_code (string): The invite code to delete Returns: Confirmation of deletion","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_delete_message","description":"Delete a message from a Discord channel. Args: - channel_id (string): Discord channel ID - message_id (string): Message ID to delete Returns: Confirmation of deletion","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_delete_role","description":"Delete 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","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_delete_sticker","description":"Delete a custom sticker from a server. Args: - guild_id (string): Discord server/guild ID - sticker_id (string): Discord sticker ID Returns: Confirmation of deletion","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_delete_webhook","description":"Delete a webhook. Args: - webhook_id (string): Discord webhook ID Returns: Confirmation of deletion","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_edit_automod_rule","description":"Edit 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_edit_channel","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_edit_guild","description":"Edit 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_edit_message","description":"Edit 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_edit_onboarding","description":"Edit 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 -","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_edit_role","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_edit_webhook","description":"Edit 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_edit_welcome_screen","description":"Edit 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_get_audit_log","description":"Get 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_get_automod_rule","description":"Get 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_get_channel","description":"Get 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_get_channel_permissions","description":"Get 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_get_community_settings","description":"Get 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_get_guild","description":"Get 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_get_member","description":"Get 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_get_messages","description":"Retrieve 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,","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_get_onboarding","description":"Get 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_get_pinned_messages","description":"Get 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_get_welcome_screen","description":"Get 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_kick_member","description":"Kick 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_leave_guild","description":"Leave 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_list_automod_rules","description":"List 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_list_bans","description":"List 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_list_channels","description":"List 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_list_emojis","description":"List 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_list_events","description":"List 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_list_guilds","description":"List 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_list_invites","description":"List 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_list_members","description":"List 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_list_roles","description":"List 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_list_stickers","description":"List 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_list_webhooks","description":"List 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_move_member","description":"Move 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_pin_message","description":"Pin a message in a channel. Args: - channel_id (string): Discord channel ID - message_id (string): Message ID to pin Returns: Confirmation of message pinned","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_prune_members","description":"Remove 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)","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_remove_channel_permissions","description":"Remove 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","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_remove_reaction","description":"Remove 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","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_remove_role","description":"Remove 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","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_send_message","description":"Send 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","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_set_channel_permissions","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_set_nickname","description":"Set 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_set_role_positions","description":"Reorder 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_setup_community","description":"Configure 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_setup_onboarding","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_sync_channel_permissions","description":"Sync a channel's permissions with its parent category. Args: - channel_id (string): Discord channel ID Returns: Confirmation of sync","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_timeout_member","description":"Timeout (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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discord_unban_member","description":"Remove 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","write_action":true,"price_micros":0,"input_schema":null},{"name":"discord_unpin_message","description":"Unpin a message in a channel. Args: - channel_id (string): Discord channel ID - message_id (string): Message ID to unpin Returns: Confirmation of message unpinned","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":66,"grade":"C","scanned_at":"2026-09-28T14:30:05.366Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-09-28T14:30:05.318Z","components":{"code":{"score":25,"max":25,"notes":["61 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":4,"max":15,"notes":["last push 240 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@mahesvara/discord-mcpserver","version":"1.1.4","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":5,"publishedAt":"2026-01-29T18:26:18.838Z","repositoryUrl":"git+https://github.com/Oratorian/discord-node-mcp.git","weeklyDownloads":59}],"repo":{"found":true,"owner":"Oratorian","repo":"discord-node-mcp","archived":false,"pushedAt":"2026-01-31T05:58:39Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/18353000?v=4","ownerCreatedAt":"2016-04-08T16:44:18Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/18353000?v=4&s=128","source":"github"},"presence":{"stars":0,"forks":0,"downloadsWeek":59,"license":"MIT","lastPushAt":"2026-01-31T05:58:39.000Z","score":12}}}},"grade_history":[],"reviews":[]}