This guide walks through the complete setup of the CCMS Discord MCP connector in Claude Desktop — from generating your Discord token to verifying that Claude can read and post in your server. The whole process takes about 10 minutes.
If you're new to MCP and haven't set it up before, read How to Set Up MCP in Claude Desktop first — it covers the config file format and general setup process that all connectors follow, including this one.
Prerequisites
- Claude Desktop installed on Mac or Windows
- Node.js 18+ with
npxavailable in your PATH - A Discord account with access to the server(s) you want Claude to reach
- Either a Discord Bot Token (recommended for teams) or a User Token (personal use)
Step 1 — Get a Discord Bot Token
The recommended approach is to create a dedicated Discord application and bot for the connector. This gives you a clean, revocable token scoped only to the permissions the connector needs.
- Go to the Discord Developer Portal
- Click New Application, name it something clear like "Claude MCP" or "CCMS Connector"
- Click Bot in the left sidebar
- Click Reset Token, confirm, and copy the token — you'll only see it once
- Under Privileged Gateway Intents, enable:
- Message Content Intent (required to read message text)
- Server Members Intent (optional, for member context)
- Click Save Changes
Step 2 — Invite the Bot to Your Server
- In the Developer Portal, click OAuth2 → URL Generator
- Under Scopes, check bot
- Under Bot Permissions, check:
- Read Messages / View Channels
- Read Message History
- Send Messages (only if you want Claude to post)
- Copy the generated URL and open it in your browser
- Select the server to add the bot to and authorize
Step 3 — Get Your Server and Channel IDs
You'll need the IDs of the servers and channels you want to authorize. To get them:
- In Discord, open Settings → Advanced and enable Developer Mode
- Right-click a server name → Copy Server ID
- Right-click a channel name → Copy Channel ID
Collect the IDs for every channel you want Claude to be able to access. Only channels you explicitly list will be accessible — the connector does not grant blanket server access.
Step 4 — Configure claude_desktop_config.json
Open your Claude Desktop config file:
| OS | Path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
Add the Discord connector entry under mcpServers:
{
"mcpServers": {
"discord": {
"command": "npx",
"args": ["-y", "@ccms/discord-mcp"],
"env": {
"DISCORD_TOKEN": "your-bot-token-here",
"ALLOWED_SERVERS": "1234567890123456789",
"ALLOWED_CHANNELS": "9876543210987654321,1122334455667788990",
"READ_HISTORY_LIMIT": "100"
}
}
}
}
Configuration options:
DISCORD_TOKEN— your bot token from Step 1ALLOWED_SERVERS— comma-separated server IDs Claude can accessALLOWED_CHANNELS— comma-separated channel IDs. If omitted, all channels in the allowed server(s) are accessible to the botREAD_HISTORY_LIMIT— how many recent messages to fetch per channel request (default: 50, max: 200)
If you're also running other CCMS connectors like
MAILsimple,
add the Discord entry alongside them in the same mcpServers object:
{
"mcpServers": {
"mailsimple": {
"command": "npx",
"args": ["-y", "@ccms/mailsimple-mcp"],
"env": {
"IMAP_HOST": "imap.yourprovider.com",
"IMAP_PORT": "993",
"IMAP_USER": "you@yourdomain.com",
"IMAP_PASSWORD": "your-app-password",
"SMTP_HOST": "smtp.yourprovider.com",
"SMTP_PORT": "587"
}
},
"discord": {
"command": "npx",
"args": ["-y", "@ccms/discord-mcp"],
"env": {
"DISCORD_TOKEN": "your-bot-token-here",
"ALLOWED_SERVERS": "1234567890123456789",
"ALLOWED_CHANNELS": "9876543210987654321"
}
}
}
}
Step 5 — Restart Claude Desktop and Verify
- Fully quit Claude Desktop (don't just close the window)
- Reopen Claude Desktop and start a new conversation
- Click the tools icon (hammer) in the input area — you should see Discord tools listed
- Test it: "What are the most recent messages in #general?"
If Claude returns channel content, the connector is working. If the tool doesn't appear, check the troubleshooting section below.
Troubleshooting
Discord tools don't appear after restart
- Verify your JSON syntax — a single missing comma in
claude_desktop_config.jsonsilently breaks the entire config. Validate at jsonlint.com - Confirm
npx --versionworks in your terminal — Node.js must be installed - On macOS, if
npxis installed via nvm or a version manager, Claude Desktop may not inherit the PATH. Use the absolute path tonpxinstead: runwhich npxin terminal and replace"command": "npx"with the full path
Claude can see the tool but gets permission errors
- Confirm the bot has been added to the server (Step 2) and has the correct channel permissions
- Verify the server and channel IDs are correct — right-click in Discord with Developer Mode on to copy IDs
- Make sure Message Content Intent is enabled in the Developer Portal (Step 1)
Claude can read but not post
- The bot needs Send Messages permission in the specific channel
- Check that the channel isn't read-only for bots at the Discord server level