Discord MCP
The Discord MCP server exposes Discord bot actions as tools, allowing LLM clients to interact with and manage Discord servers programmatically.
Guild Management
List all guilds the bot is in and fetch detailed guild information.
Channel Management
Create, edit, delete, and list channels within a guild.
Messaging
Send messages (with optional rich embeds), fetch recent messages, edit existing messages, add emoji reactions, and create threads from messages.
Role Management
List, create, edit, and delete roles; assign or remove roles from members.
Member Management
List and fetch member info, edit member properties (nickname, mute/deafen state).
Moderation
Kick, ban, or temporarily timeout members (up to 28 days).
Webhooks
Create, list, execute (with optional embeds and custom username), and delete webhooks.
Invites
Generate invite links for channels and list all active invites for a guild.
Provides tools for interacting with Discord's API, enabling AI agents to manage servers, channels, messages, roles, members, and more.
Discord MCP

An MCP (Model Context Protocol) server that exposes Discord bot actions as tools for LLM clients (e.g. Claude Desktop, Claude Code).
Requirements
Python 3.10+
uvfor dependency management and running the serverA Discord bot application with a bot token (Discord Developer Portal)
Related MCP server: Globalping
Installation
git clone https://github.com/EncryptMan/discord-mcp discord-mcp
cd discord-mcp
uv syncConfiguration
The server reads its Discord bot token from the DISCORD_BOT_TOKEN environment variable.
Add the server to your MCP client config (e.g. claude_desktop_config.json):
{
"mcpServers": {
"discord": {
"command": "uv",
"args": [
"run",
"--project",
"/absolute/path/to/discord-mcp",
"python",
"/absolute/path/to/discord-mcp/main.py"
],
"env": {
"DISCORD_BOT_TOKEN": "your-bot-token-here"
}
}
}
}Restart your MCP client after editing the config so it picks up the new server.
Bot permissions
Make sure the bot is invited to your server with at least the following permissions/intents enabled in the Developer Portal, depending on which tools you use:
botscope + relevant OAuth2 permissions (Send Messages, Manage Roles, Manage Channels, Kick/Ban Members, etc.)Privileged Gateway Intents:
SERVER MEMBERS INTENT(for member lookups/roles) andMESSAGE CONTENT INTENT(for reading message content)
Tools
Update this list to match what
main.pyactually implements.
Tool | Description |
| List guilds (servers) the bot is in |
| Fetch guild (server) information |
| List channels in a guild |
| Manage channels |
| Send or edit messages |
| List roles in a guild |
| Manage roles |
| Assign/remove roles on a member |
| List or fetch guild member(s) |
| Edit nickname, mute/deafen state |
| Moderation actions |
| Manage and use webhooks |
| React to a message |
| Create a thread from a message |
| Manage invites |
Running standalone
uv run --project /absolute/path/to/discord-mcp python /absolute/path/to/discord-mcp/main.pyThe server communicates over stdio, so it's meant to be launched by an MCP client rather than run interactively.
Security notes
Never commit your
DISCORD_BOT_TOKEN— keep it in your MCP client config or a local.envfile that's gitignored.Scope the bot's server permissions to only what these tools need; avoid granting Administrator unless required.
License
Add a license of your choice (MIT, Apache-2.0, etc.).
Available Tools
29 toolsadd_member_roleC
Assign a role to a guild member.
Inputs: role_id (required), user_id (required), guild_id (required).
add_reactionB
Add a reaction to a message. emoji should be URL-encoded unicode or name:id for custom emoji.
Inputs: emoji (required), channel_id (required), message_id (required).
ban_memberC
Ban a member from the guild.
Inputs: user_id (required), guild_id (required), reason, delete_message_seconds.
create_channelC
Create a text channel.
Inputs: name (required), guild_id (required).
create_inviteA
Create an invite link for a channel. max_age in seconds (0 = never expires), max_uses (0 = unlimited).
Inputs: channel_id (required), max_age, max_uses.
create_roleC
Create a new role in a guild.
Inputs: name (required), guild_id (required), color, hoist, +2 more.
create_threadC
Create a thread from an existing message.
Inputs: name (required), channel_id (required), message_id (required), auto_archive_duration.
create_webhookB
Create a webhook in a channel — useful for posting alerts without full bot permissions.
Inputs: name (required), channel_id (required).
delete_channelD
Delete a channel.
Inputs: channel_id (required).
delete_roleC
Delete a role from a guild.
Inputs: role_id (required), guild_id (required).
delete_webhookC
Delete a webhook.
Inputs: webhook_id (required).
edit_channelC
Modify channel settings.
Inputs: channel_id (required), name, topic.
edit_memberC
Edit a guild member (nickname, voice mute/deafen state).
Inputs: user_id (required), guild_id (required), deaf, mute, +1 more.
edit_messageC
Edit an existing message.
Inputs: content (required), channel_id (required), message_id (required).
edit_roleC
Edit an existing role's settings.
Inputs: role_id (required), guild_id (required), name, color, +1 more.
execute_webhookC
Send a message via webhook, with optional embeds.
Inputs: webhook_id (required), webhook_token (required), embeds, content, +1 more.
get_channel_webhooksB
Fetch all webhooks for a channel.
Inputs: channel_id (required).
get_guildC
Fetch guild information.
Inputs: guild_id (required).
get_guild_channelsC
Fetch all channels in a guild.
Inputs: guild_id (required).
get_guild_invitesC
Fetch all active invites for a guild.
Inputs: guild_id (required).
get_guild_memberC
Fetch a single guild member's info.
Inputs: user_id (required), guild_id (required).
get_guild_membersA
Fetch members of a guild (up to limit, max 1000 per Discord's API).
Inputs: guild_id (required), limit.
get_guild_rolesC
Fetch all roles in a guild.
Inputs: guild_id (required).
get_guildsA
Fetch all guilds (servers) the bot belongs to.
Inputs: no named parameters.
get_messagesC
Fetch recent messages from a channel.
Inputs: channel_id (required), limit.
kick_memberC
Kick a member from the guild.
Inputs: user_id (required), guild_id (required), reason.
remove_member_roleC
Remove a role from a guild member.
Inputs: role_id (required), user_id (required), guild_id (required).
send_messageB
Send a message to a channel. embeds is a list of Discord embed objects (title, description, color, fields, etc.).
Inputs: channel_id (required), embeds, content.
timeout_memberA
Timeout a member for duration_seconds (max 28 days = 2419200s). Pass 0 to remove timeout.
Inputs: user_id (required), guild_id (required), duration_seconds (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 29 tools
Each tool targets a distinct action and resource (e.g., send_message vs create_webhook, add_reaction vs timeout_member). No two tools overlap in purpose.
All tools use snake_case with a verb_noun pattern (e.g., delete_channel, add_member_role). Naming is uniform and predictable.
29 tools is slightly high but reasonable given the broad domain coverage (channels, roles, members, webhooks, etc.). Each tool serves a clear need.
Covers most common Discord operations (CRUD for channels, roles, messages, members, webhooks). Missing delete_message and thread lifecycle beyond creation, but core workflows are present.
Maintenance
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
An MCP server that integrates with Discord to provide AI-powered features.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server that provides LLMs access to other LLMs449 npm82MIT

Globalpingofficial
FlicenseNot gradedqualityBmaintenanceRemote MCP server that gives LLMs access to run network commands66-- AlicenseNot gradedqualityDmaintenanceA production-ready MCP server that gives an LLM agent standalone-equivalent control over a Mineflayer Minecraft bot — movement, mining, crafting, inventory, combat, containers, chat, and much more — exposed as 110 strongly-typed tools across 23 groups, with full bot lifecycle management and dual (poll + push) event streaming.142 npm8MIT
- AlicenseAqualityDmaintenanceAn MCP server that enables LLMs to control Discord servers via a bot token, providing comprehensive management tools for messages, members, roles, channels, permissions, and more.6781 npmMIT