Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
MCP server for Discord integration
This project exposes Discord actions through Model Context Protocol so an agent can work with a server instead of only reading text. It supports message, channel, role, moderation, webhook, invite, scheduled event, permission, forum, and emoji tools.
Builders who want their MCP agent to operate Discord servers and messages.
You can let your agent send messages, manage channels, and handle moderation inside Discord.
What it does
Server and user lookup
Gets server details and finds a Discord user ID by name for mention usage.
Message and DM tools
Sends, edits, deletes, and reads channel messages and private messages, including attachment metadata and cursors.
Channel and category management
Creates, edits, deletes, finds, lists, and moves text channels and categories.
Webhook and invite tools
Creates and manages webhooks and invites, and sends messages through webhooks.
Role and moderation tools
Lists, creates, edits, deletes, assigns, and removes roles, and supports kick, ban, timeout, nickname, and voice moderation actions.
Forum, event, and emoji tools
Creates and manages forum channels and posts, scheduled events, permissions, and custom emoji.
How to get it
- 1Run
export DISCORD_TOKEN="YOUR_DISCORD_BOT_TOKEN" export DISCORD_GUILD_ID="OPTIONAL_DEFAULT_SERVER_ID" export SPRING_PROFILES_ACTIVE=http
- 2Run
docker run -d -i \ --name discord-mcp \ --restart unless-stopped \ -p 8085:8085 \ -e SPRING_PROFILES_ACTIVE \ -e DISCORD_TOKEN \ -e DISCORD_GUILD_ID \ saseq/discord-mcp:latest
- 3Run
git clone https://github.com/SaseQ/discord-mcp
- 4Run
cd discord-mcp
- 5Run
cat > .env <<EOF SPRING_PROFILES_ACTIVE=http DISCORD_TOKEN=<YOUR_DISCORD_BOT_TOKEN> DISCORD_GUILD_ID=<OPTIONAL_DEFAULT_SERVER_ID> EOF
- 6Run
docker compose up -d --build
README
π Description
A Model Context Protocol (MCP) server for the Discord API using (JDA), designed to integrate Discord bots with MCP-compatible applications such as Claude, ChatGPT etc. It allows AI assistants to interact with Discord by managing channels, sending messages, and retrieving server information. Ideal for building powerful Discord automation and AI-driven workflows.
π¬ Installation
βΊ π³ Docker Installation (Recommended)
[!NOTE] Docker installation is required. Full instructions can be found on docker.com.
1) Set local env variables
export DISCORD_TOKEN="YOUR_DISCORD_BOT_TOKEN"
export DISCORD_GUILD_ID="OPTIONAL_DEFAULT_SERVER_ID"
export SPRING_PROFILES_ACTIVE=http
[!IMPORTANT] Instructions for creating a Discord bot and retrieving its token can be found here.
[!TIP] The
DISCORD_GUILD_IDenv variable is optional.When provided, it sets a default Discord server ID so any tool that accepts a
guildIdparameter can omit it.
2) Run the Docker container
docker run -d -i \
--name discord-mcp \
--restart unless-stopped \
-p 8085:8085 \
-e SPRING_PROFILES_ACTIVE \
-e DISCORD_TOKEN \
-e DISCORD_GUILD_ID \
saseq/discord-mcp:latest
Default MCP endpoint URL (HTTP profile): http://localhost:8085/mcp
π Docker Compose Installation
1) Clone the repository
git clone https://github.com/SaseQ/discord-mcp
2) Go to the project directory
cd discord-mcp
3) Create local runtime env
cat > .env <<EOF
SPRING_PROFILES_ACTIVE=http
DISCORD_TOKEN=<YOUR_DISCORD_BOT_TOKEN>
DISCORD_GUILD_ID=<OPTIONAL_DEFAULT_SERVER_ID>
EOF
4) Start one shared MCP server container
docker compose up -d --build
5) Verify
docker ps --filter name=discord-mcp
curl -fsS http://localhost:8085/actuator/health
[!TIP] You do not need to set
LOGGING_PATTERN_CONSOLEmanually. Logging is configured automatically for bothhttpand legacystdiomodes.
Default MCP endpoint URL (HTTP profile): http://localhost:8085/mcp
Health endpoint (Actuator): http://localhost:8085/actuator/health
π§ Manual Installation
1) Clone the repository
git clone https://github.com/SaseQ/discord-mcp
2) Build the project
NOTE: Maven installation is required to use the mvn command. Full instructions can be found here.
cd discord-mcp
mvn clean package # The jar file will be available in the /target directory
3) Configure AI client
Run the JAR as a long-running server:
DISCORD_TOKEN=<YOUR_DISCORD_BOT_TOKEN> \
DISCORD_GUILD_ID=<OPTIONAL_DEFAULT_SERVER_ID> \
SPRING_PROFILES_ACTIVE=http \
java -jar /absolute/path/to/discord-mcp-1.0.0.jar
NOTE: The
DISCORD_GUILD_IDenvironment variable is optional. When provided, it sets a default Discord server ID so any tool that accepts aguildIdparameter can omit it.
Default MCP endpoint URL (HTTP profile): http://localhost:8085/mcp
π Connections
βΊ ποΈ Default config.json Connection
Recommended (HTTP singleton mode):
{
"mcpServers": {
"discord-mcp": {
"url": "http://localhost:8085/mcp"
}
}
}
Legacy mode (stdio, starts a new process/container per client session):
{
"mcpServers": {
"discord-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"DISCORD_TOKEN=<YOUR_DISCORD_BOT_TOKEN>",
"-e",
"DISCORD_GUILD_ID=<OPTIONAL_DEFAULT_SERVER_ID>",
"saseq/discord-mcp:latest"
]
}
}
}
β¨οΈ Claude Code Connection
Recommended (HTTP singleton mode):
claude mcp add discord-mcp --transport http http://localhost:8085/mcp
Legacy mode (stdio, starts a new process/container per client session):
claude mcp add discord-mcp -- docker run --rm -i -e DISCORD_TOKEN=<YOUR_DISCORD_BOT_TOKEN> -e DISCORD_GUILD_ID=<OPTIONAL_DEFAULT_SERVER_ID> saseq/discord-mcp:latest
π€ Codex CLI Connection
codex mcp add discord-mcp --url http://localhost:8085/mcp
codex mcp list
π¦ OpenClaw Connection
Run this command:
openclaw mcp set discord-mcp '{"url":"http://localhost:8085/mcp","transport":"streamable-http"}'
openclaw mcp list
OR
Pasting the following configuration into your OpenClaw ~/.openclaw/config.json file:
{
"mcp": {
"servers": {
"discord-mcp": {
"url": "http://localhost:8085/mcp",
"transport": "streamable-http"
}
}
}
}
π² Cursor Connection
Go to: Settings -> Cursor Settings -> MCP -> Add new global MCP server
Pasting the following configuration into your Cursor ~/.cursor/mcp.json file is the recommended approach. You may also install in a specific project by creating .cursor/mcp.json in your project folder. See Cursor MCP docs for more info.
{
"mcpServers": {
"discord-mcp": {
"url": "http://localhost:8085/mcp"
}
}
}
π n8n Connection
Connect in n8n
- Open n8n and add an MCP Client node.
- Choose HTTP or Streamable HTTP transport (depending on your n8n version/node options).
- Set the server URL to:
http://localhost:8085/mcp - Save the node and test the connection.
- After connecting, you can use the available Discord tools exposed by
discord-mcpinside your workflow.
Notes
- If n8n is running in Docker,
localhostmay point to the n8n container itself, not your host machine. - In that case, use the Docker service name or another reachable host, for example:
http://discord-mcp:8085/mcp
π₯ Claude Desktop Connection
STDIO local config (Default, legacy):
Past the following configuration into your Claude Desktop
claude_desktop_config.jsonfile.
{
"mcpServers": {
"discord-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"DISCORD_TOKEN=<YOUR_DISCORD_BOT_TOKEN>",
"-e",
"DISCORD_GUILD_ID=<OPTIONAL_DEFAULT_SERVER_ID>",
"saseq/discord-mcp:latest"
]
}
}
}
Remote MCP Connector:
- Open Claude Desktop and go to
Settings->Connectors. - Add a custom connector and set MCP URL to your server endpoint (for example
https://<PUBLIC_HOST>/mcp). - Save and reconnect.
Claude Desktop remote connectors are managed via Connectors UI (not
claude_desktop_config.json).http://localhost:8085/mcpis reachable only from your machine. For Claude Desktop remote connectors, expose the endpoint with public HTTPS (for example tunnel/reverse proxy).
π οΈ Available Tools
Server Information
get_server_info: Get detailed discord server information
User Management
get_user_id_by_name: Get a Discord user's ID by username in a guild for ping usage<@id>send_private_message: Send a private message to a specific useredit_private_message: Edit a private message from a specific userdelete_private_message: Delete a private message from a specific userread_private_messages: Read private message history from a specific user (includes attachment metadata, supportscount1-100 and optional cursor:beforeorafteroraround)
Message Management
send_message: Send a message to a specific channeledit_message: Edit a message from a specific channeldelete_message: Delete a message from a specific channelread_messages: Read message history from a specific channel (includes attachment metadata, supportscount1-100 and optional cursor:beforeorafteroraround)add_reaction: Add a reaction (emoji) to a specific messageremove_reaction: Remove a specified reaction (emoji) from a message
Channel Management
create_text_channel: Create a new text channeledit_text_channel: Edit settings of a text channel (name, topic, nsfw, slowmode, category, position)delete_channel: Delete a channelfind_channel: Find a channel type and ID using name and server IDlist_channels: List of all channelsget_channel_info: Get detailed information about a channelmove_channel: Move a channel to another category and/or change its position
Category Management
create_category: Create a new category for channelsedit_category: Edit a category (rename or move position)delete_category: Delete a categoryfind_category: Find a category ID using name and server IDlist_channels_in_category: List of channels in a specific category
Webhook Management
create_webhook: Create a new webhook on a specific channeldelete_webhook: Delete a webhooklist_webhooks: List of webhooks on a specific channelsend_webhook_message: Send a message via webhook
Role Management
list_roles: Get a list of all roles on the server with their detailscreate_role: Create a new role on the serveredit_role: Modify an existing role's settingsdelete_role: Permanently delete a role from the serverassign_role: Assign a role to a userremove_role: Remove a role from a user
Moderation and User Management
kick_member: Kicks a member from the serverban_member: Bans a user from the serverunban_member: Removes a ban from a usertimeout_member: Disables communication for a member for a specified durationremove_timeout: Removes a timeout (unmute) from a member before it expiresset_nickname: Changes a member's nickname on the serverget_bans: Returns a list of banned users on the server with ban reasons
Voice & Stage Channel Management
create_voice_channel: Create a new voice channel in a guildcreate_stage_channel: Create a new stage channel for audio eventsedit_voice_channel: Edit settings of a voice or stage channel (name, bitrate, user limit, region)move_member: Move a member to another voice channeldisconnect_member: Disconnect a member from their current voice channelmodify_voice_state: Server mute or deafen a member in voice channels
Scheduled Events Management
create_guild_scheduled_event: Schedule a new event on the server (voice, stage, or external)edit_guild_scheduled_event: Modify event details or change its status (start, complete, cancel)delete_guild_scheduled_event: Permanently delete a scheduled eventlist_guild_scheduled_events: List all active and scheduled events on the serverget_guild_scheduled_event_users: Get list of users interested in a scheduled event
Channel Permission Overwrites
list_channel_permission_overwrites: List all permission overwrites for a channel with role/member breakdownupsert_role_channel_permissions: Create or update permission overwrite for a role on a channelupsert_member_channel_permissions: Create or update permission overwrite for a member on a channeldelete_channel_permission_overwrite: Delete a permission overwrite for a role or member from a channel
Invite Management
create_invite: Create a new invite link for a specific channellist_invites: List all active invites on the server with their statisticsdelete_invite: Delete (revoke) an invite so the link stops workingget_invite_details: Get details about a specific invite (works for any public invite)
Forum Management
create_forum_channel: Create a new forum channeledit_forum_channel: Edit settings of a forum channel (name, topic, nsfw, slowmode, category, position, default sort, default layout)list_forum_channels: List all forum channels in the serverget_forum_channel_info: Get detailed information about a forum channel including tags and settingslist_forum_tags: List all available tags in a forum channelcreate_forum_post: Create a new forum post (thread) with an initial message in a forum channellist_forum_posts: List active posts (threads) in a forum channelmodify_forum_post: Modify a forum post: lock/unlock, archive/unarchive, pin/unpin, or change applied tags
Emoji Management
list_emojis: List all custom emojis on the serverget_emoji_details: Get detailed information about a specific custom emojicreate_emoji: Upload a new custom emoji to the server (base64 or image URL, max 256KB)edit_emoji: Edit an existing emoji's name or role restrictionsdelete_emoji: Permanently delete a custom emoji from the server
If
DISCORD_GUILD_IDis set, theguildIdparameter becomes optional for all tools above.
A more detailed examples can be found in the Wiki.
Files in the repo
- .github
- assets
- src
- .env.example
- .gitignore
- docker-compose.yml
- Dockerfile
- LICENSE
- pom.xml
- README.md
Discussion (0)
Ask about usage, or say what you built with itSign in to join the discussion.
No comments yet. Be the first to say what this is good for.
More connectors
High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph β average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.

Universal provider proxy for OpenAI Codex & Claude Code β use any LLM (Claude, Gemini, Grok, DeepSeek, Ollamaβ¦) with Codex CLI, App, SDK, and Claude Code
Git-native persistent memory for AI coding agents. Implements Google OKF v0.2 with sub-300Β΅s in-memory BM25 search, embedded MCP server, and progressive disclosure. Slashes token bloat by 80% with zero external databases or dependencies. Built in pure Go.
Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.
Stop your AI from making things up β it proposes, deterministic tools decide, every claim checked against ground truth with evidence. Grounded facts and context survive resets. Reverse engineering is the proving ground. MCP server + CLI.