A community MCP server for the Discord REST API with traceable coverage
Connect Runs on your machine
claude mcp add discord-mcp -e DISCORD_TOKEN=<DISCORD_TOKEN> -e DISCORD_MCP_ALLOWED_GUILDS=<DISCORD_MCP_ALLOWED_GUILDS> -e DISCORD_MCP_TOOLSETS=<DISCORD_MCP_TOOLSETS> -e DISCORD_MCP_READ_ONLY=<DISCORD_MCP_READ_ONLY> -e DISCORD_MCP_APPROVAL=<DISCORD_MCP_APPROVAL> -e DISCORD_MCP_ALLOW_DMS=<DISCORD_MCP_ALLOW_DMS> -e DISCORD_MCP_FILE_ROOTS=<DISCORD_MCP_FILE_ROOTS> -e DISCORD_MCP_DOWNLOAD_DIR=<DISCORD_MCP_DOWNLOAD_DIR> -e DISCORD_MCP_MAX_DOWNLOAD_BYTES=<DISCORD_MCP_MAX_DOWNLOAD_BYTES> -e DISCORD_MCP_MAX_UPLOAD_BYTES=<DISCORD_MCP_MAX_UPLOAD_BYTES> -e DISCORD_MCP_REQUEST_TIMEOUT_MS=<DISCORD_MCP_REQUEST_TIMEOUT_MS> -e DISCORD_MCP_RATE_LIMIT_WAIT_MS=<DISCORD_MCP_RATE_LIMIT_WAIT_MS> -- npx -y @qungtai/[email protected]
{
"mcpServers": {
"discord-mcp": {
"command": "npx",
"args": [
"-y",
"@qungtai/[email protected]"
],
"env": {
"DISCORD_TOKEN": "<DISCORD_TOKEN>",
"DISCORD_MCP_ALLOWED_GUILDS": "<DISCORD_MCP_ALLOWED_GUILDS>",
"DISCORD_MCP_TOOLSETS": "<DISCORD_MCP_TOOLSETS>",
"DISCORD_MCP_READ_ONLY": "<DISCORD_MCP_READ_ONLY>",
"DISCORD_MCP_APPROVAL": "<DISCORD_MCP_APPROVAL>",
"DISCORD_MCP_ALLOW_DMS": "<DISCORD_MCP_ALLOW_DMS>",
"DISCORD_MCP_FILE_ROOTS": "<DISCORD_MCP_FILE_ROOTS>",
"DISCORD_MCP_DOWNLOAD_DIR": "<DISCORD_MCP_DOWNLOAD_DIR>",
"DISCORD_MCP_MAX_DOWNLOAD_BYTES": "<DISCORD_MCP_MAX_DOWNLOAD_BYTES>",
"DISCORD_MCP_MAX_UPLOAD_BYTES": "<DISCORD_MCP_MAX_UPLOAD_BYTES>",
"DISCORD_MCP_REQUEST_TIMEOUT_MS": "<DISCORD_MCP_REQUEST_TIMEOUT_MS>",
"DISCORD_MCP_RATE_LIMIT_WAIT_MS": "<DISCORD_MCP_RATE_LIMIT_WAIT_MS>"
}
}
}
}
{
"mcpServers": {
"discord-mcp": {
"command": "npx",
"args": [
"-y",
"@qungtai/[email protected]"
],
"env": {
"DISCORD_TOKEN": "<DISCORD_TOKEN>",
"DISCORD_MCP_ALLOWED_GUILDS": "<DISCORD_MCP_ALLOWED_GUILDS>",
"DISCORD_MCP_TOOLSETS": "<DISCORD_MCP_TOOLSETS>",
"DISCORD_MCP_READ_ONLY": "<DISCORD_MCP_READ_ONLY>",
"DISCORD_MCP_APPROVAL": "<DISCORD_MCP_APPROVAL>",
"DISCORD_MCP_ALLOW_DMS": "<DISCORD_MCP_ALLOW_DMS>",
"DISCORD_MCP_FILE_ROOTS": "<DISCORD_MCP_FILE_ROOTS>",
"DISCORD_MCP_DOWNLOAD_DIR": "<DISCORD_MCP_DOWNLOAD_DIR>",
"DISCORD_MCP_MAX_DOWNLOAD_BYTES": "<DISCORD_MCP_MAX_DOWNLOAD_BYTES>",
"DISCORD_MCP_MAX_UPLOAD_BYTES": "<DISCORD_MCP_MAX_UPLOAD_BYTES>",
"DISCORD_MCP_REQUEST_TIMEOUT_MS": "<DISCORD_MCP_REQUEST_TIMEOUT_MS>",
"DISCORD_MCP_RATE_LIMIT_WAIT_MS": "<DISCORD_MCP_RATE_LIMIT_WAIT_MS>"
}
}
}
}
{
"servers": {
"discord-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@qungtai/[email protected]"
],
"env": {
"DISCORD_TOKEN": "<DISCORD_TOKEN>",
"DISCORD_MCP_ALLOWED_GUILDS": "<DISCORD_MCP_ALLOWED_GUILDS>",
"DISCORD_MCP_TOOLSETS": "<DISCORD_MCP_TOOLSETS>",
"DISCORD_MCP_READ_ONLY": "<DISCORD_MCP_READ_ONLY>",
"DISCORD_MCP_APPROVAL": "<DISCORD_MCP_APPROVAL>",
"DISCORD_MCP_ALLOW_DMS": "<DISCORD_MCP_ALLOW_DMS>",
"DISCORD_MCP_FILE_ROOTS": "<DISCORD_MCP_FILE_ROOTS>",
"DISCORD_MCP_DOWNLOAD_DIR": "<DISCORD_MCP_DOWNLOAD_DIR>",
"DISCORD_MCP_MAX_DOWNLOAD_BYTES": "<DISCORD_MCP_MAX_DOWNLOAD_BYTES>",
"DISCORD_MCP_MAX_UPLOAD_BYTES": "<DISCORD_MCP_MAX_UPLOAD_BYTES>",
"DISCORD_MCP_REQUEST_TIMEOUT_MS": "<DISCORD_MCP_REQUEST_TIMEOUT_MS>",
"DISCORD_MCP_RATE_LIMIT_WAIT_MS": "<DISCORD_MCP_RATE_LIMIT_WAIT_MS>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
DISCORD_TOKENRequired, secret | Discord Bot Token |
DISCORD_MCP_ALLOWED_GUILDSOptional | Comma-separated list of allowed guild IDs. When set, operations outside these guilds are refused. |
DISCORD_MCP_TOOLSETSOptional | Comma-separated list of enabled toolsets. Available: core, messages, reactions, threads, channels, webhooks, guild, members, roles, moderation, events, invites. |
DISCORD_MCP_READ_ONLYOptional | Blocks all mutating actions and allows read-only tools only (true or false). Any other value stops startup. |
DISCORD_MCP_APPROVALOptional | Confirmation mode for destructive operations (elicitation or none). Any other value stops startup. |
DISCORD_MCP_ALLOW_DMSOptional | Permits direct messages and user-scoped operations alongside an active guild allowlist (true or false). Any other value stops startup. |
DISCORD_MCP_FILE_ROOTSOptional | Optional comma-separated list of absolute directory paths accessible for uploads. When unset, empty, or parsing to no entries, file access is open by default for any absolute path, except hidden files and directories. |
DISCORD_MCP_DOWNLOAD_DIROptional | Absolute directory path where attachment downloads are stored. Defaults to ~/Downloads/discord-mcp and is created recursively on first download. |
DISCORD_MCP_MAX_DOWNLOAD_BYTESOptional | Maximum download size in bytes for discord_download_attachment (defaults to 100 MiB). |
DISCORD_MCP_MAX_UPLOAD_BYTESOptional | Maximum upload size in bytes (defaults to 20 MiB). |
DISCORD_MCP_REQUEST_TIMEOUT_MSOptional | HTTP request timeout in milliseconds for Discord REST API requests. |
DISCORD_MCP_RATE_LIMIT_WAIT_MSOptional | Maximum wait duration in milliseconds when encountering a Discord rate limit before aborting. |
Details
| Package | @qungtai/[email protected] (NPM, stdio) |
| First published | 5 Nov 2026 |
| Last updated | 5 Nov 2026 |
| Registry name | io.github.qungtai/discord-mcp |
More communication servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
