io.github.Oratorian/discord-node-mcp
NPM · @MAHESVARA/DISCORD-MCPSERVER · SCANNED SEP 20
MCP server for controlling Discord servers via bot token
Available components
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
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
claude mcp add oratorian-discord-node-mcp -- npx -y @mahesvara/discord-mcpserver
{
"mcpServers": {
"oratorian-discord-node-mcp": {
"command": "npx",
"args": [
"-y",
"@mahesvara/discord-mcpserver"
]
}
}
} {
"servers": {
"oratorian-discord-node-mcp": {
"command": "npx",
"args": [
"-y",
"@mahesvara/discord-mcpserver"
]
}
}
} codex mcp add oratorian-discord-node-mcp -- npx -y @mahesvara/discord-mcpserver
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"oratorian-discord-node-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"@mahesvara/discord-mcpserver"
],
"enabled": true
}
}
} openclaw mcp add oratorian-discord-node-mcp --command npx --arg -y --arg @mahesvara/discord-mcpserver
mcp_servers:
oratorian-discord-node-mcp:
command: "npx"
args: ["-y", "@mahesvara/discord-mcpserver"] {
"McpServers": {
"oratorian-discord-node-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"@mahesvara/discord-mcpserver"
]
}
}
} assistant mcp add oratorian-discord-node-mcp -t stdio -c npx -a -y @mahesvara/discord-mcpserver
{
"mcpServers": {
"oratorian-discord-node-mcp": {
"command": "npx",
"args": [
"-y",
"@mahesvara/discord-mcpserver"
]
}
}
} 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
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 →
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 →
discord_add_reaction Add Reaction to Message ~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
| Name | Type | Req | Description |
|---|---|---|---|
| channel_id | string | yes | Discord channel ID (snowflake) |
| emoji | string | yes | Emoji to react with (unicode emoji or custom emoji format) |
| message_id | string | yes | Discord message ID (snowflake) |
No output schema declared.
No examples provided.
discord_add_role Add Role to Member ~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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| role_id | string | yes | Discord role ID (snowflake) |
| user_id | string | yes | Discord user ID (snowflake) |
No output schema declared.
No examples provided.
discord_ban_member Ban Discord 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
| Name | Type | Req | Description |
|---|---|---|---|
| delete_message_days | integer | – | Number of days of messages to delete (0-7) |
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| reason | string | – | Reason for ban (visible in audit log) |
| user_id | string | yes | Discord user ID (snowflake) |
No output schema declared.
No examples provided.
discord_create_automod_rule Create Auto Moderation 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
| Name | Type | Req | Description |
|---|---|---|---|
| actions | array | yes | Actions to take when rule is triggered |
| enabled | boolean | – | Whether the rule is enabled |
| event_type | string | yes | Event type that triggers the rule |
| exempt_channels | array | – | Channels exempt from this rule |
| exempt_roles | array | – | Roles exempt from this rule |
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| name | string | yes | Rule name |
| trigger_metadata | object | – | Trigger configuration |
| trigger_type | string | yes | Type of content that triggers the rule |
No output schema declared.
No examples provided.
discord_create_channel Create Discord 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
| Name | Type | Req | Description |
|---|---|---|---|
| available_tags | array | – | Available tags for forum posts (max 20 tags) |
| bitrate | integer | – | Bitrate for voice channels (8000-384000) |
| default_forum_layout | string | – | Default layout for forum channel |
| default_reaction_emoji | string | – | Default reaction emoji for forum posts - use emoji character (e.g., '👍') or custom emoji ID |
| default_sort_order | string | – | Default sort order for forum posts |
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| name | string | yes | Channel name |
| nsfw | boolean | – | Whether the channel is NSFW (text/forum channels only) |
| parent_id | string | – | Category ID to create channel under (not for categories) |
| topic | string | – | Channel topic (text/forum channels only) |
| type | string | – | Channel type: 'text', 'voice', 'category', or 'forum' |
| user_limit | integer | – | User limit for voice channels (0 = unlimited) |
No output schema declared.
No examples provided.
discord_create_emoji 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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| image_url | string | yes | URL of the image to use for the emoji |
| name | string | yes | Emoji name (2-32 alphanumeric characters) |
No output schema declared.
No examples provided.
discord_create_event Create Scheduled 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
| Name | Type | Req | Description |
|---|---|---|---|
| channel_id | string | – | Channel ID for stage/voice events |
| description | string | – | Event description |
| entity_metadata | object | – | Metadata for external events (location) |
| entity_type | string | yes | Event type: stage instance, voice channel, or external location |
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| name | string | yes | Event name |
| scheduled_end_time | string | – | ISO8601 timestamp for event end (required for external events) |
| scheduled_start_time | string | yes | ISO8601 timestamp for event start |
No output schema declared.
No examples provided.
discord_create_invite 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
| Name | Type | Req | Description |
|---|---|---|---|
| channel_id | string | yes | Discord channel ID (snowflake) |
| max_age | integer | – | Invite expiration in seconds (0 = never, max 604800 = 7 days) |
| max_uses | integer | – | Max uses (0 = unlimited) |
| temporary | boolean | – | Whether membership is temporary |
| unique | boolean | – | Whether to create a unique invite |
No output schema declared.
No examples provided.
discord_create_role Create Discord 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
| Name | Type | Req | Description |
|---|---|---|---|
| color | integer | – | Role color as decimal (e.g., 16711680 for red) |
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| hoist | boolean | – | Whether to display role members separately |
| mentionable | boolean | – | Whether the role can be mentioned |
| name | string | yes | Role name |
| permissions | array | – | Array of permission names (e.g., ['SendMessages', 'ManageChannels']) |
No output schema declared.
No examples provided.
discord_create_webhook 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
| Name | Type | Req | Description |
|---|---|---|---|
| avatar_url | string | – | URL of avatar image for the webhook |
| channel_id | string | yes | Discord channel ID (snowflake) |
| name | string | yes | Webhook name |
No output schema declared.
No examples provided.
discord_delete_automod_rule Delete Auto Moderation 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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| rule_id | string | yes | Auto moderation rule ID (snowflake) |
No output schema declared.
No examples provided.
discord_delete_channel Delete Discord 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
| Name | Type | Req | Description |
|---|---|---|---|
| channel_id | string | yes | Discord channel ID (snowflake) |
No output schema declared.
No examples provided.
discord_delete_emoji 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
| Name | Type | Req | Description |
|---|---|---|---|
| emoji_id | string | yes | Discord emoji ID (snowflake) |
| guild_id | string | yes | Discord server/guild ID (snowflake) |
No output schema declared.
No examples provided.
discord_delete_event Delete Scheduled 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
| Name | Type | Req | Description |
|---|---|---|---|
| event_id | string | yes | Discord scheduled event ID (snowflake) |
| guild_id | string | yes | Discord server/guild ID (snowflake) |
No output schema declared.
No examples provided.
discord_delete_invite Delete Invite ~51
Delete an invite by its code. Args: - invite_code (string): The invite code to delete Returns: Confirmation of deletion
| Name | Type | Req | Description |
|---|---|---|---|
| invite_code | string | yes | Invite code to delete |
No output schema declared.
No examples provided.
discord_delete_message Delete Discord 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
| Name | Type | Req | Description |
|---|---|---|---|
| channel_id | string | yes | Discord channel ID (snowflake) |
| message_id | string | yes | Discord message ID (snowflake) |
No output schema declared.
No examples provided.
discord_delete_role Delete Discord 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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| role_id | string | yes | Discord role ID (snowflake) |
No output schema declared.
No examples provided.
discord_delete_sticker 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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| sticker_id | string | yes | Discord sticker ID (snowflake) |
No output schema declared.
No examples provided.
discord_delete_webhook Delete Webhook ~48
Delete a webhook. Args: - webhook_id (string): Discord webhook ID Returns: Confirmation of deletion
| Name | Type | Req | Description |
|---|---|---|---|
| webhook_id | string | yes | Discord webhook ID (snowflake) |
No output schema declared.
No examples provided.
discord_edit_automod_rule Edit Auto Moderation 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
| Name | Type | Req | Description |
|---|---|---|---|
| actions | array | – | – |
| enabled | boolean | – | – |
| event_type | string | – | – |
| exempt_channels | array | – | – |
| exempt_roles | array | – | – |
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| name | string | – | – |
| rule_id | string | yes | Auto moderation rule ID (snowflake) |
| trigger_metadata | object | – | – |
No output schema declared.
No examples provided.
discord_edit_channel Edit Discord 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
| Name | Type | Req | Description |
|---|---|---|---|
| available_tags | array | – | Available tags for forum posts (max 20 tags) |
| bitrate | integer | – | Bitrate for voice channels |
| channel_id | string | yes | Discord channel ID (snowflake) |
| default_forum_layout | string | – | Default layout for forum channel |
| default_reaction_emoji | string | – | Default reaction emoji for forum posts - use emoji character (e.g., '👍') or custom emoji ID, use 'none' to remove |
| default_sort_order | string | – | Default sort order for forum posts |
| name | string | – | New channel name |
| nsfw | boolean | – | Whether the channel is NSFW |
| parent_id | – | – | Move channel to a different category (use 'none' to remove from category) |
| position | integer | – | New position of the channel |
| topic | string | – | New channel topic |
| user_limit | integer | – | User limit for voice channels |
No output schema declared.
No examples provided.
discord_edit_guild Edit Discord Server ~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
| Name | Type | Req | Description |
|---|---|---|---|
| afk_channel_id | string | – | AFK voice channel ID |
| afk_timeout | integer | – | AFK timeout in seconds (60, 300, 900, 1800, 3600) |
| default_notifications | string | – | Default notification settings for new members |
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| name | string | – | New server name |
| system_channel_flags | object | – | System channel behavior flags |
| system_channel_id | – | – | System messages channel ID |
| verification_level | string | – | Verification level required for members |
No output schema declared.
No examples provided.
discord_edit_message Edit Discord 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
| Name | Type | Req | Description |
|---|---|---|---|
| channel_id | string | yes | Discord channel ID (snowflake) |
| content | string | yes | New message content (max 2000 characters) |
| message_id | string | yes | Discord message ID (snowflake) |
No output schema declared.
No examples provided.
discord_edit_onboarding Edit Server 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
| Name | Type | Req | Description |
|---|---|---|---|
| default_channel_ids | array | – | Channels shown to new members by default |
| enabled | boolean | – | Whether onboarding is enabled |
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| mode | string | – | Onboarding mode |
| prompts | array | – | Onboarding prompts/questions |
No output schema declared.
No examples provided.
discord_edit_role Edit Discord 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
| Name | Type | Req | Description |
|---|---|---|---|
| color | integer | – | New role color as decimal |
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| hoist | boolean | – | Whether to display role members separately |
| mentionable | boolean | – | Whether the role can be mentioned |
| name | string | – | New role name |
| permissions | array | – | New permission names array |
| role_id | string | yes | Discord role ID (snowflake) |
No output schema declared.
No examples provided.
discord_edit_webhook 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
| Name | Type | Req | Description |
|---|---|---|---|
| channel_id | string | – | Move webhook to a different channel |
| name | string | – | New webhook name |
| webhook_id | string | yes | Discord webhook ID (snowflake) |
No output schema declared.
No examples provided.
discord_edit_welcome_screen 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
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | The server description shown in the welcome screen (max 140 chars) |
| enabled | boolean | – | Whether the welcome screen is enabled |
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| welcome_channels | array | – | Welcome screen channels (max 5) |
No output schema declared.
No examples provided.
discord_get_audit_log 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
| Name | Type | Req | Description |
|---|---|---|---|
| action_type | integer | – | Filter by action type (Discord audit log action type number) |
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| limit | integer | – | Number of entries to retrieve |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
| user_id | string | – | Filter by user who performed actions |
No output schema declared.
No examples provided.
discord_get_automod_rule Get Auto Moderation 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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
| rule_id | string | yes | Auto moderation rule ID (snowflake) |
No output schema declared.
No examples provided.
discord_get_channel Get Discord Channel Info ~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
| Name | Type | Req | Description |
|---|---|---|---|
| channel_id | string | yes | Discord channel ID (snowflake) |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
No output schema declared.
No examples provided.
discord_get_channel_permissions 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
| Name | Type | Req | Description |
|---|---|---|---|
| channel_id | string | yes | Discord channel ID (snowflake) |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
No output schema declared.
No examples provided.
discord_get_community_settings 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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
No output schema declared.
No examples provided.
discord_get_guild Get Discord Server Info ~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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
No output schema declared.
No examples provided.
discord_get_member Get Discord 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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
| user_id | string | yes | Discord user ID (snowflake) |
No output schema declared.
No examples provided.
discord_get_messages Get Discord 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
| Name | Type | Req | Description |
|---|---|---|---|
| after | – | – | Get messages after this message ID |
| before | string | – | Get messages before this message ID |
| channel_id | string | yes | Discord channel ID (snowflake) |
| limit | integer | – | Number of messages to retrieve (1-100) |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
No output schema declared.
No examples provided.
discord_get_onboarding Get Server 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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
No output schema declared.
No examples provided.
discord_get_pinned_messages 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
| Name | Type | Req | Description |
|---|---|---|---|
| channel_id | string | yes | Discord channel ID (snowflake) |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
No output schema declared.
No examples provided.
discord_get_welcome_screen 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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
No output schema declared.
No examples provided.
discord_kick_member Kick Discord 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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| reason | string | – | Reason for kick (visible in audit log) |
| user_id | string | yes | Discord user ID (snowflake) |
No output schema declared.
No examples provided.
discord_leave_guild Leave Discord Server ~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
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | yes | Must be set to true to confirm leaving the server |
| guild_id | string | yes | Discord server/guild ID (snowflake) |
No output schema declared.
No examples provided.
discord_list_automod_rules List Auto Moderation 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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
No output schema declared.
No examples provided.
discord_list_bans 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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| limit | integer | – | Number of bans to return (1-1000) |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
No output schema declared.
No examples provided.
discord_list_channels List Discord 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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
| type | string | – | Filter by channel type |
No output schema declared.
No examples provided.
discord_list_emojis 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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
No output schema declared.
No examples provided.
discord_list_events List Scheduled 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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
No output schema declared.
No examples provided.
discord_list_guilds List Discord Servers ~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
| Name | Type | Req | Description |
|---|---|---|---|
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
No output schema declared.
No examples provided.
discord_list_invites 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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
No output schema declared.
No examples provided.
discord_list_members List Discord 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
| Name | Type | Req | Description |
|---|---|---|---|
| after | string | – | Get members after this user ID (for pagination) |
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| limit | integer | – | Maximum number of members to return |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
No output schema declared.
No examples provided.
discord_list_roles List Discord 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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
No output schema declared.
No examples provided.
discord_list_stickers 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
| Name | Type | Req | Description |
|---|---|---|---|
| guild_id | string | yes | Discord server/guild ID (snowflake) |
| response_format | string | – | Output format: 'markdown' for human-readable or 'json' for structured data |
No output schema declared.
No examples provided.
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.