1. Your client chooses a tool
Tool descriptions and JSON Schemas tell the client when a tool fits and which Discord IDs it requires.
Discord tools for MCP clients
tool messages_send
input { channel_id, content }
out { message_id, jump_url } 192 tools · 28 categoriesLocal stdio transportStructured resultsPre-1.0
discord-mcp runs as a child process of your MCP client. The client discovers typed tools, sends structured arguments over local stdio, and receives machine-readable results after the server calls Discord’s API. There is no hosted relay and no separate account to create.
1. Your client chooses a tool
Tool descriptions and JSON Schemas tell the client when a tool fits and which Discord IDs it requires.
2. discord-mcp enforces the contract
Validation, category controls, resilience, telemetry, and configured safety checks run before and around the Discord request.
3. Discord returns structured data
IDs, jump URLs, counts, and timestamps can feed the next tool call without being rebuilt from conversational prose.
Install the CLI, generate a snippet for your client, and merge it into the client’s existing
mcpServers object. The full quickstart begins with a read-only identity check before any
message is sent.
npm install -g @discord-mcp/clidiscord-mcp init --client claude-desktopnpm install -g @discord-mcp/clidiscord-mcp init --client claude-codenpm install -g @discord-mcp/clidiscord-mcp init --client cursornpm install -g @discord-mcp/clidiscord-mcp init --client genericRequires Node.js 22.12 or newer. You also need a Discord bot installed in a test server. Follow the verified quickstart →
discord-mcp cannot do more than the bot can do in Discord, so bot roles and channel
overrides are the primary access boundary. Tool annotations describe risk, but ordinary
writes can execute immediately. Only tools explicitly marked Confirmation required use
the two-part __confirm and MCP_DRY_RUN gate.
Before production use:
MCP_CATEGORIES;Searchable reference
Filter every tool by name, task, category, and risk. Leaf pages stay searchable without taking over navigation.
Source-linked contracts
Generated pages link their Edit action to the TypeScript definition and expose the full input and output JSON Schemas.
Operational controls
OpenTelemetry, retries, timeouts, circuit breaking, bulkheads, category filtering, and audit sinks are configured through explicit environment variables.
Discord-native output
Components V2, webhooks, threads, roles, moderation, scheduled events, and other Discord surfaces return reusable structured fields.
Need help? Use Troubleshooting or open a GitHub issue with secrets removed.