{"id":46040507,"url":"https://github.com/oratorian/discord-node-mcp","last_synced_at":"2026-03-01T06:14:01.118Z","repository":{"id":334713491,"uuid":"1142443589","full_name":"Oratorian/discord-node-mcp","owner":"Oratorian","description":"An MCP (Model Context Protocol) server that enables LLMs to control Discord servers via a bot token. This server provides comprehensive Discord management tools including sending messages, managing members, roles, channels, permissions, and more.","archived":false,"fork":false,"pushed_at":"2026-01-26T20:39:40.000Z","size":56,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-27T01:53:42.030Z","etag":null,"topics":["ai","automation","chatbot","claude","claude-code","discord","discord-api","discord-bot","iscord-management","llm","mcp","model-context-protocol"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Oratorian.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-26T12:23:26.000Z","updated_at":"2026-01-26T20:39:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Oratorian/discord-node-mcp","commit_stats":null,"previous_names":["oratorian/discord-node-mcp"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Oratorian/discord-node-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oratorian%2Fdiscord-node-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oratorian%2Fdiscord-node-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oratorian%2Fdiscord-node-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oratorian%2Fdiscord-node-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Oratorian","download_url":"https://codeload.github.com/Oratorian/discord-node-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oratorian%2Fdiscord-node-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29962005,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T05:59:08.471Z","status":"ssl_error","status_checked_at":"2026-03-01T05:58:04.208Z","response_time":124,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","automation","chatbot","claude","claude-code","discord","discord-api","discord-bot","iscord-management","llm","mcp","model-context-protocol"],"created_at":"2026-03-01T06:14:00.451Z","updated_at":"2026-03-01T06:14:01.106Z","avatar_url":"https://github.com/Oratorian.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Build](https://img.shields.io/github/actions/workflow/status/Oratorian/discord-node-mcp/node.js.yml?branch=main\u0026style=for-the-badge\u0026label=Node%20BuildTest) ![License](https://img.shields.io/github/license/Oratorian/discord-node-mcp?style=for-the-badge) ![TAG](https://img.shields.io/github/v/tag/Oratorian/discord-node-mcp?style=for-the-badge\u0026label=Release)\n\n# Discord MCP Server\n\nAn MCP (Model Context Protocol) server that enables LLMs to control Discord servers via a bot token. This server provides comprehensive Discord management tools including sending messages, managing members, roles, channels, permissions, and more.\n\n## Features\n\n### Guild/Server Management\n- `discord_list_guilds` - List all servers the bot has access to\n- `discord_get_guild` - Get detailed info about a specific server\n- `discord_edit_guild` - Edit server settings (name, verification level, system channels, etc.)\n- `discord_leave_guild` - Leave a server\n\n### Channel Management\n- `discord_list_channels` - List channels in a server (filter by type)\n- `discord_get_channel` - Get channel details (includes forum tags for forum channels)\n- `discord_create_channel` - Create text/voice/forum channels and categories\n- `discord_edit_channel` - Edit channel name, topic, position, category, forum tags, and more\n- `discord_delete_channel` - Delete a channel or category\n\n### Forum Channel Features\n- Create forum channels with `type: \"forum\"`\n- Set default reaction emoji, sort order, and layout\n- Manage forum tags (create, edit, delete)\n- Tags support custom emojis and moderation settings\n\n### Permission Management\n- `discord_set_channel_permissions` - Set permission overrides for roles/members on channels\n- `discord_remove_channel_permissions` - Remove permission overrides\n- `discord_get_channel_permissions` - View all permission overrides on a channel\n- `discord_sync_channel_permissions` - Sync channel permissions with parent category\n\n### Message Operations\n- `discord_send_message` - Send messages (with optional reply)\n- `discord_get_messages` - Retrieve channel messages (with pagination)\n- `discord_edit_message` - Edit bot's messages\n- `discord_delete_message` - Delete messages\n- `discord_add_reaction` - Add emoji reactions\n- `discord_remove_reaction` - Remove bot's reactions\n- `discord_pin_message` - Pin a message\n- `discord_unpin_message` - Unpin a message\n- `discord_get_pinned_messages` - Get all pinned messages\n\n### Member Management\n- `discord_list_members` - List server members (with pagination)\n- `discord_get_member` - Get member details\n- `discord_kick_member` - Kick a member\n- `discord_ban_member` - Ban a member (with message deletion option)\n- `discord_unban_member` - Unban a user\n- `discord_set_nickname` - Set/clear member nickname\n- `discord_move_member` - Move member to a different voice channel\n- `discord_timeout_member` - Timeout/mute a member (up to 28 days)\n\n### Role Management\n- `discord_list_roles` - List all server roles\n- `discord_create_role` - Create a new role\n- `discord_edit_role` - Edit role name, color, permissions, and settings\n- `discord_delete_role` - Delete a role\n- `discord_add_role` - Assign role to member\n- `discord_remove_role` - Remove role from member\n- `discord_set_role_positions` - Reorder role hierarchy\n\n### Server Administration\n- `discord_list_bans` - List all banned users\n- `discord_prune_members` - Remove inactive members (with dry-run option)\n- `discord_get_audit_log` - View audit log entries\n\n### Community Features\n- `discord_get_community_settings` - View community settings (rules channel, features, etc.)\n- `discord_setup_community` - Configure community channels (rules, updates, safety alerts)\n\n### Welcome Screen\n- `discord_get_welcome_screen` - Get welcome screen configuration\n- `discord_edit_welcome_screen` - Edit welcome screen (description, channels, emojis)\n\n### Onboarding\n- `discord_get_onboarding` - Get onboarding configuration\n- `discord_edit_onboarding` - Edit existing onboarding settings\n- `discord_setup_onboarding` - Setup onboarding from scratch (prompts, default channels, roles)\n\n### Auto Moderation\n- `discord_list_automod_rules` - List auto moderation rules\n- `discord_get_automod_rule` - Get details of an auto mod rule\n- `discord_create_automod_rule` - Create auto moderation rule\n- `discord_edit_automod_rule` - Edit auto moderation rule\n- `discord_delete_automod_rule` - Delete auto moderation rule\n\n### Emoji Management\n- `discord_list_emojis` - List custom emojis\n- `discord_create_emoji` - Create emoji from image URL\n- `discord_delete_emoji` - Delete a custom emoji\n\n### Sticker Management\n- `discord_list_stickers` - List custom stickers\n- `discord_delete_sticker` - Delete a custom sticker\n\n### Invite Management\n- `discord_list_invites` - List active invites\n- `discord_create_invite` - Create channel invite\n- `discord_delete_invite` - Delete an invite\n\n### Webhook Management\n- `discord_list_webhooks` - List webhooks (guild or channel)\n- `discord_create_webhook` - Create a webhook\n- `discord_edit_webhook` - Edit webhook name or channel\n- `discord_delete_webhook` - Delete a webhook\n\n### Scheduled Events\n- `discord_list_events` - List scheduled events\n- `discord_create_event` - Create a scheduled event (stage, voice, or external)\n- `discord_delete_event` - Delete a scheduled event\n\n## Setup\n\n### 1. Create a Discord Bot\n\n1. Go to the [Discord Developer Portal](https://discord.com/developers/applications)\n2. Click \"New Application\" and give it a name\n3. Go to the \"Bot\" section and click \"Add Bot\"\n4. Copy the bot token (keep this secret!)\n5. Enable these **Privileged Gateway Intents**:\n   - Server Members Intent\n   - Message Content Intent\n\n### 2. Invite the Bot to Your Server\n\n1. Go to OAuth2 -\u003e URL Generator\n2. Select scopes: `bot`, `applications.commands`\n3. Select bot permissions (choose based on features you need):\n\n   **Core Permissions:**\n   - Manage Channels\n   - Manage Roles\n   - Manage Messages\n   - Read Message History\n   - Send Messages\n   - Add Reactions\n\n   **Member Management:**\n   - Kick Members\n   - Ban Members\n   - Manage Nicknames\n   - Moderate Members (for timeouts)\n\n   **Server Administration:**\n   - Manage Guild (for server settings)\n   - View Audit Log\n   - Manage Emojis and Stickers\n   - Manage Webhooks\n   - Manage Events\n   - Create Instant Invite\n\n4. Copy the generated URL and open it to invite the bot\n\n### 3. Install the MCP Server\n\n**Option A: Install globally from npm**\n\n```bash\nnpm install -g @mahesvara/discord-mcpserver\n```\n\n**Option B: Run directly with npx (no install required)**\n\n```bash\nnpx @mahesvara/discord-mcpserver\n```\n\n## Usage\n\n### MCP Client Configuration\n\nAdd to your MCP client configuration (e.g., Claude Desktop or Claude Code):\n\n**Using globally installed package:**\n\n```json\n{\n  \"mcpServers\": {\n    \"discord\": {\n      \"command\": \"discord-mcpserver\",\n      \"env\": {\n        \"DISCORD_BOT_TOKEN\": \"your_bot_token_here\"\n      }\n    }\n  }\n}\n```\n\n**Using npx (no install required):**\n\n```json\n{\n  \"mcpServers\": {\n    \"discord\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@mahesvara/discord-mcpserver\"],\n      \"env\": {\n        \"DISCORD_BOT_TOKEN\": \"your_bot_token_here\"\n      }\n    }\n  }\n}\n```\n\n### Environment Variables\n\nThe server supports loading environment variables from a `.env` file in the current directory:\n\n```env\nDISCORD_BOT_TOKEN=your_bot_token_here\nTRANSPORT=http\nPORT=3000\nHOST=localhost\n```\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `DISCORD_BOT_TOKEN` | Your Discord bot token (required) | - |\n| `TRANSPORT` | Transport mode: `stdio` or `http` | `stdio` |\n| `PORT` | HTTP server port (when using http transport) | `3000` |\n| `HOST` | HTTP server host (use `0.0.0.0` for remote access) | `localhost` |\n\n### HTTP Transport\n\nFor remote access, run the server with HTTP transport enabled:\n\n**Linux/macOS:**\n```bash\nDISCORD_BOT_TOKEN=your_token TRANSPORT=http PORT=3000 HOST=0.0.0.0 discord-mcpserver\n```\n\n**Windows (Command Prompt):**\n```cmd\nset DISCORD_BOT_TOKEN=your_token \u0026\u0026 set TRANSPORT=http \u0026\u0026 set PORT=3000 \u0026\u0026 set HOST=0.0.0.0 \u0026\u0026 discord-mcpserver\n```\n\n**Windows (PowerShell):**\n```powershell\n$env:DISCORD_BOT_TOKEN=\"your_token\"; $env:TRANSPORT=\"http\"; $env:PORT=\"3000\"; $env:HOST=\"0.0.0.0\"; discord-mcpserver\n```\n\n**Or use a `.env` file** (works on all platforms):\n```bash\ndiscord-mcpserver\n```\n\nThen configure your MCP client to connect via HTTP:\n\n```json\n{\n  \"mcpServers\": {\n    \"discord\": {\n      \"type\": \"http\",\n      \"url\": \"http://your-server-ip:3000/mcp\"\n    }\n  }\n}\n```\n\n## Tool Examples\n\n### Create a Forum Channel with Tags\n\n```json\n{\n  \"tool\": \"discord_create_channel\",\n  \"params\": {\n    \"guild_id\": \"1234567890123456789\",\n    \"name\": \"help-forum\",\n    \"type\": \"forum\",\n    \"topic\": \"Ask questions and get help\",\n    \"default_reaction_emoji\": \"✅\",\n    \"default_sort_order\": \"latest_activity\",\n    \"default_forum_layout\": \"list_view\",\n    \"available_tags\": [\n      { \"name\": \"Solved\", \"emoji_name\": \"✅\", \"moderated\": false },\n      { \"name\": \"Bug\", \"emoji_name\": \"🐛\", \"moderated\": false },\n      { \"name\": \"Question\", \"emoji_name\": \"❓\", \"moderated\": false },\n      { \"name\": \"Announcement\", \"emoji_name\": \"📢\", \"moderated\": true }\n    ]\n  }\n}\n```\n\n### Setup Server Onboarding\n\n```json\n{\n  \"tool\": \"discord_setup_onboarding\",\n  \"params\": {\n    \"guild_id\": \"1234567890123456789\",\n    \"default_channel_ids\": [\"1111111111111111111\"],\n    \"prompts\": [\n      {\n        \"type\": \"multiple_choice\",\n        \"title\": \"What are you interested in?\",\n        \"single_select\": false,\n        \"required\": true,\n        \"options\": [\n          { \"title\": \"Gaming\", \"emoji_name\": \"🎮\", \"role_ids\": [\"2222222222222222222\"] },\n          { \"title\": \"Tech\", \"emoji_name\": \"💻\", \"role_ids\": [\"3333333333333333333\"] }\n        ]\n      }\n    ]\n  }\n}\n```\n\n### Configure Community Settings\n\n```json\n{\n  \"tool\": \"discord_setup_community\",\n  \"params\": {\n    \"guild_id\": \"1234567890123456789\",\n    \"rules_channel_id\": \"1111111111111111111\",\n    \"public_updates_channel_id\": \"2222222222222222222\",\n    \"description\": \"A friendly gaming community\",\n    \"preferred_locale\": \"en-US\"\n  }\n}\n```\n\n### Edit Welcome Screen\n\n```json\n{\n  \"tool\": \"discord_edit_welcome_screen\",\n  \"params\": {\n    \"guild_id\": \"1234567890123456789\",\n    \"enabled\": true,\n    \"description\": \"Welcome to our server!\",\n    \"welcome_channels\": [\n      { \"channel_id\": \"1111111111111111111\", \"description\": \"Read the rules\", \"emoji_name\": \"📜\" },\n      { \"channel_id\": \"2222222222222222222\", \"description\": \"Introduce yourself\", \"emoji_name\": \"👋\" }\n    ]\n  }\n}\n```\n\n### Create a Category\n\n```json\n{\n  \"tool\": \"discord_create_channel\",\n  \"params\": {\n    \"guild_id\": \"1234567890123456789\",\n    \"name\": \"Bot Testing\",\n    \"type\": \"category\"\n  }\n}\n```\n\n### Create a Channel in a Category\n\n```json\n{\n  \"tool\": \"discord_create_channel\",\n  \"params\": {\n    \"guild_id\": \"1234567890123456789\",\n    \"name\": \"bot-commands\",\n    \"type\": \"text\",\n    \"topic\": \"Channel for bot interactions\",\n    \"parent_id\": \"CATEGORY_ID_HERE\"\n  }\n}\n```\n\n### Set Channel Permissions\n\n```json\n{\n  \"tool\": \"discord_set_channel_permissions\",\n  \"params\": {\n    \"channel_id\": \"1234567890123456789\",\n    \"target_id\": \"ROLE_ID_HERE\",\n    \"target_type\": \"role\",\n    \"allow\": [\"ViewChannel\", \"SendMessages\", \"ReadMessageHistory\"],\n    \"deny\": [\"CreatePublicThreads\"]\n  }\n}\n```\n\n### Common Permission Names\n\n**View \u0026 Access:**\n- `ViewChannel` - See the channel\n\n**Messages:**\n- `SendMessages`, `ReadMessageHistory`, `ManageMessages`\n- `EmbedLinks`, `AttachFiles`, `AddReactions`\n- `UseExternalEmojis`, `UseExternalStickers`\n- `MentionEveryone`\n\n**Threads:**\n- `CreatePublicThreads`, `CreatePrivateThreads`\n- `SendMessagesInThreads`, `ManageThreads`\n\n**Voice:**\n- `Connect`, `Speak`, `Stream`\n- `MuteMembers`, `DeafenMembers`, `MoveMembers`\n- `UseVAD`, `PrioritySpeaker`\n\n**Management:**\n- `ManageChannels`, `ManageRoles`, `ManageWebhooks`\n\n### Send a Message\n\n```json\n{\n  \"tool\": \"discord_send_message\",\n  \"params\": {\n    \"channel_id\": \"1234567890123456789\",\n    \"content\": \"Hello from the MCP server!\"\n  }\n}\n```\n\n### Assign a Role\n\n```json\n{\n  \"tool\": \"discord_add_role\",\n  \"params\": {\n    \"guild_id\": \"1234567890123456789\",\n    \"user_id\": \"9876543210987654321\",\n    \"role_id\": \"1111111111111111111\"\n  }\n}\n```\n\n## Response Formats\n\nMost read operations support two response formats:\n\n- **json** (default): Structured data for programmatic processing\n- **markdown**: Human-readable formatted output\n\n## Error Handling\n\nAll tools return clear error messages with suggestions when operations fail:\n\n- Missing permissions\n- Invalid IDs (guild, channel, user, role, message)\n- Rate limiting\n- Network issues\n\n## Security Notes\n\n- **Never commit your bot token** - use environment variables\n- The bot can only operate in servers it's been invited to\n- Destructive operations (delete, kick, ban) are marked with `destructiveHint: true`\n- All inputs are validated with Zod schemas\n\n## Required Bot Permissions\n\nDepending on which tools you use, your bot needs these permissions:\n\n| Tool Category | Required Permissions |\n|--------------|---------------------|\n| Messages | Send Messages, Read Message History, Manage Messages |\n| Channels | Manage Channels |\n| Permissions | Manage Roles (for channel permission overrides) |\n| Members | Kick Members, Ban Members, Manage Nicknames, Moderate Members |\n| Roles | Manage Roles |\n| Reactions | Add Reactions |\n| Server Settings | Manage Guild |\n| Emojis/Stickers | Manage Emojis and Stickers |\n| Invites | Create Instant Invite, Manage Guild |\n| Webhooks | Manage Webhooks |\n| Events | Manage Events |\n| Audit Log | View Audit Log |\n| Community/Onboarding | Manage Guild |\n\n## Tool Examples\n\n### Edit Role Permissions\n\n```json\n{\n  \"tool\": \"discord_edit_role\",\n  \"params\": {\n    \"guild_id\": \"1234567890123456789\",\n    \"role_id\": \"1111111111111111111\",\n    \"name\": \"Moderators\",\n    \"color\": 3447003,\n    \"permissions\": [\"KickMembers\", \"BanMembers\", \"ManageMessages\", \"ModerateMembers\"]\n  }\n}\n```\n\n### Reorder Role Hierarchy\n\n```json\n{\n  \"tool\": \"discord_set_role_positions\",\n  \"params\": {\n    \"guild_id\": \"1234567890123456789\",\n    \"positions\": [\n      { \"role_id\": \"1111111111111111111\", \"position\": 5 },\n      { \"role_id\": \"2222222222222222222\", \"position\": 4 }\n    ]\n  }\n}\n```\n\n### Timeout a Member\n\n```json\n{\n  \"tool\": \"discord_timeout_member\",\n  \"params\": {\n    \"guild_id\": \"1234567890123456789\",\n    \"user_id\": \"9876543210987654321\",\n    \"duration_minutes\": 60,\n    \"reason\": \"Spamming in chat\"\n  }\n}\n```\n\n### Create an Invite\n\n```json\n{\n  \"tool\": \"discord_create_invite\",\n  \"params\": {\n    \"channel_id\": \"1234567890123456789\",\n    \"max_age\": 86400,\n    \"max_uses\": 10,\n    \"temporary\": false\n  }\n}\n```\n\n### Create a Scheduled Event\n\n```json\n{\n  \"tool\": \"discord_create_event\",\n  \"params\": {\n    \"guild_id\": \"1234567890123456789\",\n    \"name\": \"Community Game Night\",\n    \"description\": \"Join us for games!\",\n    \"scheduled_start_time\": \"2024-12-01T20:00:00Z\",\n    \"entity_type\": \"voice\",\n    \"channel_id\": \"1111111111111111111\"\n  }\n}\n```\n\n### Role Permission Names\n\nWhen editing roles, use these permission names:\n\n**General:**\n- `Administrator` - Full access (use with caution)\n- `ManageGuild`, `ManageRoles`, `ManageChannels`\n- `KickMembers`, `BanMembers`, `ModerateMembers`\n- `ViewAuditLog`, `ViewGuildInsights`\n\n**Messages:**\n- `SendMessages`, `ManageMessages`, `ReadMessageHistory`\n- `EmbedLinks`, `AttachFiles`, `AddReactions`\n- `MentionEveryone`, `UseExternalEmojis`\n\n**Voice:**\n- `Connect`, `Speak`, `Stream`\n- `MuteMembers`, `DeafenMembers`, `MoveMembers`\n\n**Other:**\n- `ManageWebhooks`, `ManageEmojisAndStickers`\n- `ManageEvents`, `CreateEvents`\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foratorian%2Fdiscord-node-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foratorian%2Fdiscord-node-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foratorian%2Fdiscord-node-mcp/lists"}