by SaseQ
A MCP server for the Discord integration. Enable your AI assistants to seamlessly interact with Discord. Enhance your Discord experience with powerful automation capabilities.
# Add to your Claude Code skills
git clone https://github.com/SaseQ/discord-mcpA Model Context Protocol (MCP) server for the Discord API (JDA), allowing seamless integration of Discord Bot with MCP-compatible applications like Claude Desktop.
Enable your AI assistants to seamlessly interact with Discord. Manage channels, send messages, and retrieve server information effortlessly. Enhance your Discord experience with powerful automation capabilities.
[!NOTE] Docker installation is required. Full instructions can be found on docker.com.
cat > .env <<EOF
SPRING_PROFILES_ACTIVE=http
DISCORD_TOKEN=<YOUR_DISCORD_BOT_TOKEN>
DISCORD_GUILD_ID=<OPTIONAL_DEFAULT_SERVER_ID>
EOF
docker compose up -d --build
docker ps --filter name=discord-mcp
curl -fsS http://localhost:8085/actuator/health
Default MCP endpoint URL (HTTP profile): http://localhost:8085/mcp
Health endpoint (Actuator): http://localhost:8085/actuator/health
git clone https://github.com/SaseQ/discord-mcp
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
No comments yet. Be the first to share your thoughts!
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
Then configure your MCP client to connect over HTTP to:
http://localhost:8085/mcp
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.
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"
]
}
}
}
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 mcp add discord-mcp --url http://localhost:8085/mcp
codex mcp list
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"
}
}
}
}
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"
}
}
}
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:
Settings -> Connectors.https://<PUBLIC_HOST>/mcp).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).
get_server_info: Get detailed discord server informationget_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 recent message history from a specific usersend_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 recent message history from a specific channeladd_reaction: Add a reaction (emoji) to a specific messageremove_reaction: Remove a specified reaction (emoji) from a messagecreate_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 positioncreate_category: Create a new category for channelsdelete_category: Delete a categoryfind_category: Find a category ID using name and server IDlist_channels_in_category: List of channels in a specific categorycreate_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 webhooklist_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 userkick_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 reasonscreate_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 ch