Cloud Discord
Provides tools for interacting with Discord servers, including messaging, moderation, roles, channels, forums, reactions, pins, files, voice notes, server info, invites, and polls.
Integrates with ElevenLabs to generate text-to-speech voice notes sent to Discord.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Cloud DiscordCreate a new role called Moderator"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Cloud Discord
A full-featured Discord MCP (Model Context Protocol) server that runs on Cloudflare Workers. Gives AI agents complete admin control over Discord servers — 59 tools covering messaging, moderation, forums, roles, files, voice notes, and more.
Deploy once, connect from any MCP-compatible client (Claude Code, Claude Desktop, Cursor, etc.).
Features
59 tools across 12 categories:
Category | Tools | What You Can Do |
Messaging | 8 | Send, edit, delete, bulk delete, read history, send embeds, read/send DMs |
Moderation | 4 | Kick, ban, unban, timeout members |
Roles | 7 | Create, edit, delete, assign, remove roles, list member roles |
Channels | 6 | Create, edit, delete channels, set slowmode, set permissions, list all |
Threads | 3 | Create, manage (archive/lock), delete threads |
Forums | 9 | Create/edit/list posts, manage tags, set layout/sort/guidelines |
Reactions | 3 | Add, remove, get reactions |
Pins | 3 | Pin, unpin, list pinned messages |
Files | 2 | Send files to channels or DMs (via URL or base64) |
Voice | 1 | Text-to-speech voice notes via ElevenLabs (optional) |
Server | 4 | Guild info, audit log, list servers, member list |
Invites | 3 | Create, list, delete invites |
Polls | 1 | Create native Discord polls |
Plus:
/vibeslash command — AI-powered channel vibe check (requires Anthropic API key)Direct file upload endpoint — send files from your machine without base64 encoding
Secret-path authentication — your MCP endpoint is only accessible with your secret URL
Rate limit handling with automatic retry
Related MCP server: Remote MCP Server Authless
Prerequisites
A Cloudflare account (free tier works)
Node.js 18+
A Discord bot with appropriate permissions
Setup
1. Create a Discord Bot
Go to the Discord Developer Portal
Click New Application, give it a name
Go to the Bot tab:
Click Reset Token and save the token — you'll need it later
Enable Message Content Intent under Privileged Gateway Intents
Go to the General Information tab:
Copy the Application ID (you'll need this for the
/vibecommand)Copy the Public Key (you'll need this for
wrangler.toml)
Go to OAuth2 > URL Generator:
Select scopes:
bot,applications.commandsSelect bot permissions:
Administrator(or select individual permissions you need)Copy the generated URL and open it in your browser to invite the bot to your server
2. Clone and Install
git clone https://github.com/codependentai/cloud-discord.git
cd cloud-discord
npm install3. Configure
Edit wrangler.toml:
[vars]
# Generate a random secret: openssl rand -base64 24
MCP_SECRET_PATH = "your-random-secret-here"
# From Discord Developer Portal > General Information > Public Key
DISCORD_PUBLIC_KEY = "your-public-key-here"4. Add Secrets
These are stored securely in Cloudflare — they never appear in your code:
# Required — your Discord bot token
npx wrangler secret put DISCORD_BOT_TOKEN
# Paste your bot token when prompted
# Optional — needed for the /vibe slash command
npx wrangler secret put ANTHROPIC_API_KEY
# Optional — needed for voice notes (discord_send_voice_note)
npx wrangler secret put ELEVENLABS_API_KEY5. Deploy
npx wrangler deployYour MCP server is now live at:
https://cloud-discord.<your-subdomain>.workers.dev/mcp/<your-secret-path>6. Connect to Your MCP Client
Add the server to your MCP client's configuration. For example, in Claude Code's .mcp.json:
{
"mcpServers": {
"discord": {
"type": "url",
"url": "https://cloud-discord.<your-subdomain>.workers.dev/mcp/<your-secret-path>"
}
}
}For Claude Desktop, add it to claude_desktop_config.json under mcpServers with the same format.
Optional: Register the /vibe Slash Command
The /vibe command lets anyone in your Discord server run an AI-powered vibe check on the current channel. It reads the last 20 messages and summarizes what's happening.
Requires ANTHROPIC_API_KEY to be set.
DISCORD_APP_ID=your_app_id DISCORD_BOT_TOKEN=your_token npx tsx src/register-commands.tsThen in Discord Developer Portal, set the Interactions Endpoint URL to:
https://cloud-discord.<your-subdomain>.workers.dev/interactionsOptional: Voice Notes
The discord_send_voice_note tool generates speech using ElevenLabs and sends it as an audio file to Discord.
Sign up at ElevenLabs and get an API key
Add the secret:
npx wrangler secret put ELEVENLABS_API_KEYFind your voice ID in the Voice Lab
Use the tool with
voice_idandtextparameters
If ELEVENLABS_API_KEY is not set, the tool will return an error when called but won't affect any other tools.
Direct File Upload
For sending local files (images, audio, documents) without base64 encoding, use the direct upload endpoint:
# Send to a channel
curl -F "channel_id=CHANNEL_ID" \
-F "file=@/path/to/file.mp3" \
-F "message=Optional message" \
https://cloud-discord.<your-subdomain>.workers.dev/mcp/<your-secret>/upload
# Send as DM
curl -F "user_id=USER_ID" \
-F "file=@/path/to/image.png" \
https://cloud-discord.<your-subdomain>.workers.dev/mcp/<your-secret>/uploadThis is useful when the MCP tool's base64 parameter would be too large (e.g., audio files).
Tool Reference
Messaging
Tool | Description |
| Read channel message history (1-100 messages) |
| Read DM history with a user |
| Send a message, optionally as a reply |
| Send a direct message to a user |
| Edit a bot message |
| Delete a message |
| Delete 2-100 messages at once (must be <14 days old) |
| Send a rich embed with title, fields, images, colors |
Moderation
Tool | Description |
| Kick a member from the server |
| Ban a member, optionally delete their recent messages |
| Unban a user |
| Timeout (mute) a member for up to 28 days |
Roles
Tool | Description |
| List all roles in a server |
| Create a role with name, color, hoist, mentionable |
| Edit role name or color |
| Delete a role |
| Give a role to a member |
| Remove a role from a member |
| Get all roles for a member |
Channels
Tool | Description |
| List all channels organized by category |
| List all servers the bot is in |
| Create text, voice, category, or forum channels |
| Edit name, topic, NSFW, position, category |
| Delete a channel |
| Set slowmode (0-21600 seconds) |
| Set permission overwrites for roles/users |
Threads
Tool | Description |
| Create a thread, optionally from a message |
| Archive, unarchive, lock, unlock threads |
| Delete a thread |
Forums
Tool | Description |
| Create a forum post with optional tags |
| Edit title, archive, lock, pin, change tags |
| List active posts in a forum |
| List archived/closed posts |
| Get available tags |
| Add a tag (max 20 per forum) |
| Edit a tag's name, emoji, moderated status |
| Delete a tag |
| Set default reaction emoji for new posts |
| Configure layout, sort order, guidelines, require tags |
Reactions & Pins
Tool | Description |
| Add an emoji reaction |
| Remove a reaction (own or others) |
| Get all reactions on a message |
| Pin a message |
| Unpin a message |
| List all pinned messages |
Files & Voice
Tool | Description |
| Send a file via URL or base64 |
| Send a file as DM via URL or base64 |
| Generate TTS audio and send (requires ElevenLabs) |
Server & Members
Tool | Description |
| Server details: name, members, boosts, verification |
| View audit log, filter by action type or user |
| List server members |
| Get user details |
| Change the bot's nickname |
Invites & Polls
Tool | Description |
| Create a channel invite with expiry and use limits |
| List all server invites |
| Revoke an invite |
| Create a native Discord poll (2-10 options) |
Images
Tool | Description |
| Fetch a message attachment as base64 |
| Fetch a DM attachment as base64 |
Architecture
This is a single Cloudflare Worker (~330 KB) that:
Receives MCP JSON-RPC requests at
/mcp/<secret-path>Translates tool calls into Discord REST API requests
Returns formatted results to the MCP client
No database, no state, no containers. Auth is handled by the secret path in the URL — anyone with the URL can use all tools, so treat it like an API key.
The /vibe slash command handles Discord interactions at /interactions using signature verification.
Development
# Run locally
npx wrangler dev
# Type check
npx tsc --noEmit
# Deploy
npx wrangler deployLicense
MIT — see LICENSE.
Built by Codependent AI.
Support
Built by Codependent AI.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/codependentai/cloud-discord'
If you have feedback or need assistance with the MCP directory API, please join our Discord server