Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.Oratorian/discord-node-mcp

NPM · @MAHESVARA/DISCORD-MCPSERVER · SCANNED SEP 20

MCP server for controlling Discord servers via bot token

+2 this week 92 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 41 of 147 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency96
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to Oratorian/discord-node-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 233 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability69
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 10274 tokens (~153/item across 67 items; 67 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
  • Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage99
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 97% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 15 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 67 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the io.github.Oratorian/discord-node-mcp server?

io.github.Oratorian/discord-node-mcp runs locally as an npm package, launched with npx -y @mahesvara/discord-mcpserver. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @mahesvara/discord-mcpserver

# add to Claude Code
claude mcp add oratorian-discord-node-mcp -- npx -y @mahesvara/discord-mcpserver
// .cursor/mcp.json
{
  "mcpServers": {
    "oratorian-discord-node-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@mahesvara/discord-mcpserver"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "oratorian-discord-node-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@mahesvara/discord-mcpserver"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add oratorian-discord-node-mcp -- npx -y @mahesvara/discord-mcpserver
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "oratorian-discord-node-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@mahesvara/discord-mcpserver"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add oratorian-discord-node-mcp --command npx --arg -y --arg @mahesvara/discord-mcpserver
# ~/.hermes/config.yaml
mcp_servers:
  oratorian-discord-node-mcp:
    command: "npx"
    args: ["-y", "@mahesvara/discord-mcpserver"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "oratorian-discord-node-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@mahesvara/discord-mcpserver"
      ]
    }
  }
}
# add to Vellum
assistant mcp add oratorian-discord-node-mcp -t stdio -c npx -a -y @mahesvara/discord-mcpserver
// mcp.json
{
  "mcpServers": {
    "oratorian-discord-node-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@mahesvara/discord-mcpserver"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 19 Sept 26 0
    • Security disclosure: unverified → fail functional
  • 18 Sept 26 −2
    • Security disclosure: fail → unverified functional
    • Stability: pass → 0.83 functional
  • 17 Sept 26 0
    • Stability: 0.97 → pass security
  • 16 Sept 26 +3
    • CVE-2026-82562 no longer affects this package security
    • CVE-2026-82417 no longer affects this package security
    • Known CVEs: fail → pass security
  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 −2
    • Stability: pass → 0.80 functional
  • 10 Sept 26 0
    • Stability: 0.97 → pass security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed npm/@mahesvara/discord-mcpserver@1.1.4

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo Oratorian/discord-node-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/Oratorian/discord-node-mcp/.github/workflows/publish.yml@refs/tags/v1.1.4
Rekor log index 870676883
Predicate type https://slsa.dev/provenance/v1
Subject digest sha512:c0c5aa854c24eb504ec5dc54f3b8e72c33e4d16726524ae3a42f9b78520b52ef64ca0318d35e517ef4150058f201661543f01d1f5db8708694a426f57

Background: How many MCP packages publish verified provenance →

Dependencies 147 packages
Packages resolved 147
Stale 41
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 67 exposed · ~10,274 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
discord_add_reaction ~120

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., '👍' or custom emoji format) Returns: Confirmation of reaction added

NameTypeReqDescription
channel_idstringyesDiscord channel ID (snowflake)
emojistringyesEmoji to react with (unicode emoji or custom emoji format)
message_idstringyesDiscord message ID (snowflake)

No output schema declared.

No examples provided.

discord_add_role ~108

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
role_idstringyesDiscord role ID (snowflake)
user_idstringyesDiscord user ID (snowflake)

No output schema declared.

No examples provided.

discord_ban_member ~158

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

NameTypeReqDescription
delete_message_daysintegerNumber of days of messages to delete (0-7)
guild_idstringyesDiscord server/guild ID (snowflake)
reasonstringReason for ban (visible in audit log)
user_idstringyesDiscord user ID (snowflake)

No output schema declared.

No examples provided.

discord_create_automod_rule ~294

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 (block_message, send_alert_message, timeout) - enabled (boolean): Whether rule is enabled (default: true) - exempt_roles (array, optional): Role IDs exempt from this rule - exempt_channels (array, optional): Channel IDs exempt from this rule Returns: Created rule details

NameTypeReqDescription
actionsarrayyesActions to take when rule is triggered
enabledbooleanWhether the rule is enabled
event_typestringyesEvent type that triggers the rule
exempt_channelsarrayChannels exempt from this rule
exempt_rolesarrayRoles exempt from this rule
guild_idstringyesDiscord server/guild ID (snowflake)
namestringyesRule name
trigger_metadataobjectTrigger configuration
trigger_typestringyesType of content that triggers the rule

No output schema declared.

No examples provided.

discord_create_channel ~538

Create a new channel or category in a Discord server. Args: - guild_id (string): Discord server/guild ID - name (string): Channel name - type ('text' | 'voice' | 'category' | 'forum'): Channel type (default: 'text') - topic (string, optional): Channel topic (text/forum channels only) - parent_id (string, optional): Category ID to create channel under (not for categories) - nsfw (boolean, optional): Whether the channel is NSFW (text/forum channels only) - bitrate (number, optional): Bitrate for voice channels (8000-384000) - user_limit (number, optional): User limit for voice channels (0 = unlimited) - default_reaction_emoji (string, optional): Default emoji for forum posts (emoji char or custom ID) - default_sort_order ('latest_activity' | 'creation_date', optional): Sort order for forum posts - default_forum_layout ('not_set' | 'list_view' | 'gallery_view', optional): Forum layout - available_tags (array, optional): Tags for forum posts (max 20) - name (string): Tag name (max 20 chars) - moderated (boolean, optional): Only mods can apply this tag - emoji_name (string, optional): Unicode emoji (e.g., '🎮') - emoji_id (string, optional): Custom emoji ID Returns: The created channel's details

NameTypeReqDescription
available_tagsarrayAvailable tags for forum posts (max 20 tags)
bitrateintegerBitrate for voice channels (8000-384000)
default_forum_layoutstringDefault layout for forum channel
default_reaction_emojistringDefault reaction emoji for forum posts - use emoji character (e.g., '👍') or custom emoji ID
default_sort_orderstringDefault sort order for forum posts
guild_idstringyesDiscord server/guild ID (snowflake)
namestringyesChannel name
nsfwbooleanWhether the channel is NSFW (text/forum channels only)
parent_idstringCategory ID to create channel under (not for categories)
topicstringChannel topic (text/forum channels only)
typestringChannel type: 'text', 'voice', 'category', or 'forum'
user_limitintegerUser limit for voice channels (0 = unlimited)

No output schema declared.

No examples provided.

discord_create_emoji ~145

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
image_urlstringyesURL of the image to use for the emoji
namestringyesEmoji name (2-32 alphanumeric characters)

No output schema declared.

No examples provided.

discord_create_event ~260

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 ID for stage/voice events - location (string, optional): Location for external events Returns: Created event details

NameTypeReqDescription
channel_idstringChannel ID for stage/voice events
descriptionstringEvent description
entity_metadataobjectMetadata for external events (location)
entity_typestringyesEvent type: stage instance, voice channel, or external location
guild_idstringyesDiscord server/guild ID (snowflake)
namestringyesEvent name
scheduled_end_timestringISO8601 timestamp for event end (required for external events)
scheduled_start_timestringyesISO8601 timestamp for event start

No output schema declared.

No examples provided.

discord_create_invite ~187

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

NameTypeReqDescription
channel_idstringyesDiscord channel ID (snowflake)
max_ageintegerInvite expiration in seconds (0 = never, max 604800 = 7 days)
max_usesintegerMax uses (0 = unlimited)
temporarybooleanWhether membership is temporary
uniquebooleanWhether to create a unique invite

No output schema declared.

No examples provided.

discord_create_role ~207

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

NameTypeReqDescription
colorintegerRole color as decimal (e.g., 16711680 for red)
guild_idstringyesDiscord server/guild ID (snowflake)
hoistbooleanWhether to display role members separately
mentionablebooleanWhether the role can be mentioned
namestringyesRole name
permissionsarrayArray of permission names (e.g., ['SendMessages', 'ManageChannels'])

No output schema declared.

No examples provided.

discord_create_webhook ~101

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

NameTypeReqDescription
avatar_urlstringURL of avatar image for the webhook
channel_idstringyesDiscord channel ID (snowflake)
namestringyesWebhook name

No output schema declared.

No examples provided.

discord_delete_automod_rule ~88

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
rule_idstringyesAuto moderation rule ID (snowflake)

No output schema declared.

No examples provided.

discord_delete_channel ~58

Delete a channel from a Discord server. This action is permanent! Args: - channel_id (string): Discord channel ID to delete Returns: Confirmation of deletion

NameTypeReqDescription
channel_idstringyesDiscord channel ID (snowflake)

No output schema declared.

No examples provided.

discord_delete_emoji ~81

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

NameTypeReqDescription
emoji_idstringyesDiscord emoji ID (snowflake)
guild_idstringyesDiscord server/guild ID (snowflake)

No output schema declared.

No examples provided.

discord_delete_event ~82

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

NameTypeReqDescription
event_idstringyesDiscord scheduled event ID (snowflake)
guild_idstringyesDiscord server/guild ID (snowflake)

No output schema declared.

No examples provided.

discord_delete_invite ~51

Delete an invite by its code. Args: - invite_code (string): The invite code to delete Returns: Confirmation of deletion

NameTypeReqDescription
invite_codestringyesInvite code to delete

No output schema declared.

No examples provided.

discord_delete_message ~77

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

NameTypeReqDescription
channel_idstringyesDiscord channel ID (snowflake)
message_idstringyesDiscord message ID (snowflake)

No output schema declared.

No examples provided.

discord_delete_role ~87

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
role_idstringyesDiscord role ID (snowflake)

No output schema declared.

No examples provided.

discord_delete_sticker ~81

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
sticker_idstringyesDiscord sticker ID (snowflake)

No output schema declared.

No examples provided.

discord_delete_webhook ~48

Delete a webhook. Args: - webhook_id (string): Discord webhook ID Returns: Confirmation of deletion

NameTypeReqDescription
webhook_idstringyesDiscord webhook ID (snowflake)

No output schema declared.

No examples provided.

discord_edit_automod_rule ~212

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 (array, optional): New exempt channels Returns: Updated rule details

NameTypeReqDescription
actionsarray
enabledboolean
event_typestring
exempt_channelsarray
exempt_rolesarray
guild_idstringyesDiscord server/guild ID (snowflake)
namestring
rule_idstringyesAuto moderation rule ID (snowflake)
trigger_metadataobject

No output schema declared.

No examples provided.

discord_edit_channel ~571

Edit a channel's properties including name, topic, category, position, and more. Args: - channel_id (string): Discord channel ID - name (string, optional): New channel name - topic (string, optional): New channel topic - parent_id (string, optional): Move to a different category (or 'none' to remove from category) - position (number, optional): New position of the channel - nsfw (boolean, optional): Whether the channel is NSFW - bitrate (number, optional): Bitrate for voice channels (8000-384000) - user_limit (number, optional): User limit for voice channels - default_reaction_emoji (string, optional): Default emoji for forum posts (emoji char or custom ID, 'none' to remove) - default_sort_order ('latest_activity' | 'creation_date', optional): Sort order for forum posts - default_forum_layout ('not_set' | 'list_view' | 'gallery_view', optional): Forum layout - available_tags (array, optional): Tags for forum posts (max 20) WARNING: This REPLACES all existing tags! To keep existing tags, first use discord_get_channel to get current tags with their IDs, then include them in this array with their id field. - id (string): Tag ID - REQUIRED to preserve existing tags, omit only for new tags - name (string): Tag name (max 20 chars) - moderated (boolean, optional): Only mods can apply this tag - emoji_name (string, optional): Unicode emoji (e.g., '🎮') - emoji_id (string, optional): Custom emoji ID Returns: Updated channel details

NameTypeReqDescription
available_tagsarrayAvailable tags for forum posts (max 20 tags)
bitrateintegerBitrate for voice channels
channel_idstringyesDiscord channel ID (snowflake)
default_forum_layoutstringDefault layout for forum channel
default_reaction_emojistringDefault reaction emoji for forum posts - use emoji character (e.g., '👍') or custom emoji ID, use 'none' to remove
default_sort_orderstringDefault sort order for forum posts
namestringNew channel name
nsfwbooleanWhether the channel is NSFW
parent_idMove channel to a different category (use 'none' to remove from category)
positionintegerNew position of the channel
topicstringNew channel topic
user_limitintegerUser limit for voice channels

No output schema declared.

No examples provided.

discord_edit_guild ~283

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_timeout (number, optional): AFK timeout in seconds - system_channel_id (string, optional): System messages channel - system_channel_flags (object, optional): System channel behavior Returns: Updated server details

NameTypeReqDescription
afk_channel_idstringAFK voice channel ID
afk_timeoutintegerAFK timeout in seconds (60, 300, 900, 1800, 3600)
default_notificationsstringDefault notification settings for new members
guild_idstringyesDiscord server/guild ID (snowflake)
namestringNew server name
system_channel_flagsobjectSystem channel behavior flags
system_channel_idSystem messages channel ID
verification_levelstringVerification level required for members

No output schema declared.

No examples provided.

discord_edit_message ~109

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

NameTypeReqDescription
channel_idstringyesDiscord channel ID (snowflake)
contentstringyesNew message content (max 2000 characters)
message_idstringyesDiscord message ID (snowflake)

No output schema declared.

No examples provided.

discord_edit_onboarding ~195

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 - enabled (boolean, optional): Enable/disable onboarding - mode ('onboarding_default' | 'onboarding_advanced', optional): Onboarding mode Returns: Updated onboarding configuration

NameTypeReqDescription
default_channel_idsarrayChannels shown to new members by default
enabledbooleanWhether onboarding is enabled
guild_idstringyesDiscord server/guild ID (snowflake)
modestringOnboarding mode
promptsarrayOnboarding prompts/questions

No output schema declared.

No examples provided.

discord_edit_role ~340

Edit a role's properties including name, color, and permissions. Common permission names: - Admin: Administrator (grants all permissions) - General: ManageGuild, ManageRoles, ManageChannels, KickMembers, BanMembers, ModerateMembers - Messages: SendMessages, ManageMessages, EmbedLinks, AttachFiles, ReadMessageHistory, MentionEveryone - Voice: Connect, Speak, MuteMembers, DeafenMembers, MoveMembers, Stream - Other: ManageEmojisAndStickers, ManageWebhooks, ManageEvents, ViewAuditLog Args: - guild_id (string): Discord server/guild ID - role_id (string): Discord role ID to edit - name (string, optional): New role name - color (number, optional): Role color as decimal integer (e.g., 16711680 for red) - mentionable (boolean, optional): Whether the role can be mentioned - hoist (boolean, optional): Whether to display role members separately - permissions (string[], optional): Permissions to grant (replaces existing). Examples: ['SendMessages', 'ViewChannel'] Returns: Updated role details

NameTypeReqDescription
colorintegerNew role color as decimal
guild_idstringyesDiscord server/guild ID (snowflake)
hoistbooleanWhether to display role members separately
mentionablebooleanWhether the role can be mentioned
namestringNew role name
permissionsarrayNew permission names array
role_idstringyesDiscord role ID (snowflake)

No output schema declared.

No examples provided.

discord_edit_webhook ~100

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

NameTypeReqDescription
channel_idstringMove webhook to a different channel
namestringNew webhook name
webhook_idstringyesDiscord webhook ID (snowflake)

No output schema declared.

No examples provided.

discord_edit_welcome_screen ~180

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 (channel_id, description, emoji) Returns: Updated welcome screen settings

NameTypeReqDescription
descriptionstringThe server description shown in the welcome screen (max 140 chars)
enabledbooleanWhether the welcome screen is enabled
guild_idstringyesDiscord server/guild ID (snowflake)
welcome_channelsarrayWelcome screen channels (max 5)

No output schema declared.

No examples provided.

discord_get_audit_log ~291

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, optional): Filter by user who performed action - action_type (number, optional): Filter by action type - limit (number): Number of entries (1-100, default 20) - response_format ('json' | 'markdown'): Output format Returns: Audit log entries with action, user, target, and changes

NameTypeReqDescription
action_typeintegerFilter by action type (Discord audit log action type number)
guild_idstringyesDiscord server/guild ID (snowflake)
limitintegerNumber of entries to retrieve
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data
user_idstringFilter by user who performed actions

No output schema declared.

No examples provided.

discord_get_automod_rule ~130

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data
rule_idstringyesAuto moderation rule ID (snowflake)

No output schema declared.

No examples provided.

discord_get_channel ~102

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

NameTypeReqDescription
channel_idstringyesDiscord channel ID (snowflake)
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data

No output schema declared.

No examples provided.

discord_get_channel_permissions ~104

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

NameTypeReqDescription
channel_idstringyesDiscord channel ID (snowflake)
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data

No output schema declared.

No examples provided.

discord_get_community_settings ~116

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data

No output schema declared.

No examples provided.

discord_get_guild ~109

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data

No output schema declared.

No examples provided.

discord_get_member ~131

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data
user_idstringyesDiscord user ID (snowflake)

No output schema declared.

No examples provided.

discord_get_messages ~192

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, author, timestamp, attachments

NameTypeReqDescription
afterGet messages after this message ID
beforestringGet messages before this message ID
channel_idstringyesDiscord channel ID (snowflake)
limitintegerNumber of messages to retrieve (1-100)
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data

No output schema declared.

No examples provided.

discord_get_onboarding ~120

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data

No output schema declared.

No examples provided.

discord_get_pinned_messages ~97

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

NameTypeReqDescription
channel_idstringyesDiscord channel ID (snowflake)
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data

No output schema declared.

No examples provided.

discord_get_welcome_screen ~114

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data

No output schema declared.

No examples provided.

discord_kick_member ~115

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
reasonstringReason for kick (visible in audit log)
user_idstringyesDiscord user ID (snowflake)

No output schema declared.

No examples provided.

discord_leave_guild ~124

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

NameTypeReqDescription
confirmbooleanyesMust be set to true to confirm leaving the server
guild_idstringyesDiscord server/guild ID (snowflake)

No output schema declared.

No examples provided.

discord_list_automod_rules ~104

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data

No output schema declared.

No examples provided.

discord_list_bans ~135

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
limitintegerNumber of bans to return (1-1000)
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data

No output schema declared.

No examples provided.

discord_list_channels ~148

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data
typestringFilter by channel type

No output schema declared.

No examples provided.

discord_list_emojis ~102

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data

No output schema declared.

No examples provided.

discord_list_events ~102

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data

No output schema declared.

No examples provided.

discord_list_guilds ~103

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

NameTypeReqDescription
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data

No output schema declared.

No examples provided.

discord_list_invites ~103

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data

No output schema declared.

No examples provided.

discord_list_members ~173

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

NameTypeReqDescription
afterstringGet members after this user ID (for pagination)
guild_idstringyesDiscord server/guild ID (snowflake)
limitintegerMaximum number of members to return
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data

No output schema declared.

No examples provided.

discord_list_roles ~106

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data

No output schema declared.

No examples provided.

discord_list_stickers ~101

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

NameTypeReqDescription
guild_idstringyesDiscord server/guild ID (snowflake)
response_formatstringOutput format: 'markdown' for human-readable or 'json' for structured data

No output schema declared.

No examples provided.

Common questions

What is the io.github.Oratorian/discord-node-mcp server?

io.github.Oratorian/discord-node-mcp is listed in the public MCP registry as io.github.Oratorian/discord-node-mcp. MCP server for controlling Discord servers via bot token. This page covers its npm package (@mahesvara/discord-mcpserver).

Is the io.github.Oratorian/discord-node-mcp server safe to use?

io.github.Oratorian/discord-node-mcp scores 92 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.Oratorian/discord-node-mcp server expose?

io.github.Oratorian/discord-node-mcp exposes 67 tools: discord_list_guilds, discord_get_guild, discord_leave_guild, discord_edit_guild, discord_list_channels, and 62 more. Their descriptions and schemas cost roughly 10,274 tokens of context every time the server is loaded.

Is the io.github.Oratorian/discord-node-mcp server still maintained?

io.github.Oratorian/discord-node-mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.Oratorian/discord-node-mcp server under?

io.github.Oratorian/discord-node-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.