Discord MCP

A MCP Server for Interacting with Discord Servers

Discord MCP Server

A production-grade Model Context Protocol (MCP) server for Discord built with FastMCP and discord.py. Provides a complete API surface for managing channels, roles, permissions, messages, moderation, and server settings via MCP.


Features

  • Per-token bot sessions with automatic session management
  • Channel management: create, edit, delete, move, and reorder via position
  • Role management: create, edit (including position), delete, assign, remove
  • Permission configuration for channels, categories, and roles
  • "View as role/member" permission inspection across guild and channels
  • Message operations: send, edit, delete, bulk delete, retrieve
  • Moderation actions: timeout, kick, ban, enforce role policies
  • Guild/server settings management
  • Polls: create, end, and get results
  • Scheduled events: create, edit, delete, list, get attendees
  • Threads & forums: create, edit, delete, manage members, forum posts
  • Webhooks: create, send messages, list, delete
  • Invites: create, list, delete
  • Emoji & stickers: create, delete, list
  • Reactions: add, remove, list users, clear
  • AutoMod: create, edit, delete, list rules
  • Audit log: query with filters
  • Member info: get details, list members, edit nicknames/mute/deafen
  • Status endpoints for bot sessions

Installation

uv sync

Configuration

Copy the template .env file and modify it as needed:

cp .env.template .env

Default bind is local-only:

MCP_HOST=127.0.0.1
MCP_PORT=8000

Usage

Run the MCP server locally:

uv run python -m discord_mcp.main

Or use it without a local setup:

uv run --with git+https://github.com/ExilProductions/discord-mcp discord-mcp

MCP Client Configuration Example

Example configuration for OpenCode using a remote MCP server:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "discord-mcp": {
      "type": "remote",
      "url": "http://localhost:8000/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "YOUR_DISCORD_BOT_TOKEN"
      }
    }
  }
}

This can be used by any client that supports MCP.

MCP Tools

Channel Management

  • create_channel - Create a text, voice, news, stage, forum, media, or category channel
  • edit_channel - Edit a channel's settings
  • delete_channel - Delete a channel
  • move_channel - Move channel to a category
  • edit_channel with position - Reorder channels/categories
  • get_channel - Get channel information
  • get_channels - List all channels in guild

Role Management

  • create_role - Create a new role
  • edit_role - Edit a role (including position for reorder)
  • delete_role - Delete a role
  • assign_role - Assign role to member
  • remove_role - Remove role from member
  • get_role - Get role information
  • get_roles - List all roles in guild

Permission Management

  • set_channel_permissions - Set channel permissions
  • set_category_permissions - Set category permissions
  • set_role_permissions - Update role permissions
  • get_channel_permissions - Get channel permission overwrites
  • get_category_permissions - Get category permission overwrites
  • remove_channel_permissions - Remove permission overwrites
  • inspect_role_permissions - Compact-by-default role permission summary (counts, previews, key capabilities)
  • inspect_member_permissions - Compact-by-default member permission summary (counts, previews, key capabilities)
  • inspect_target_channel_permissions - Full effective permissions for one target in one channel (detail drill-down)
  • list_target_accessible_channels - Compact list of channels a role/member can access
  • list_target_inaccessible_channels - Compact list of channels a role/member cannot access

Permission inspection is optimized for AI agent workflows: call summary tools first, then request channel detail only when needed.

Message Operations

  • send_message - Send a message (supports embeds, TTS, mentions, references)
  • edit_message - Edit a message
  • delete_message - Delete a message
  • bulk_delete_messages - Bulk delete messages
  • get_message - Get a message
  • get_channel_messages - Get channel message history

Moderation

  • timeout_user - Timeout a member
  • remove_timeout - Remove timeout from member
  • kick_user - Kick a member
  • ban_user - Ban a member
  • unban_user - Unban a member
  • enforce_role_policy - Enforce role policy (kick/ban members missing required roles)
  • get_guild_bans - List guild bans
  • get_member_timeout_status - Check timeout status

Guild Management

  • get_guild_settings - Get server settings (name, description, verification level, etc.)
  • edit_guild_settings - Edit server settings

Polls

  • create_poll - Create a poll in a channel
  • end_poll - End an active poll
  • get_poll_results - Get poll vote counts and results

Scheduled Events

  • create_scheduled_event - Create a scheduled event (voice, stage, or external)
  • edit_scheduled_event - Edit a scheduled event
  • delete_scheduled_event - Delete a scheduled event
  • list_scheduled_events - List all scheduled events in a guild
  • get_scheduled_event_users - Get users interested in an event

Threads & Forums

  • create_thread - Create a thread (optionally from a message)
  • edit_thread - Edit thread settings (name, archive, lock, slowmode)
  • delete_thread - Delete a thread
  • list_threads - List active and archived threads in a channel
  • add_thread_member - Add a member to a thread
  • remove_thread_member - Remove a member from a thread
  • create_forum_post - Create a forum post with tags

Webhooks

  • create_webhook - Create a webhook for a channel
  • send_webhook_message - Send a message via webhook
  • list_webhooks - List webhooks for a guild or channel
  • delete_webhook - Delete a webhook

Invites

  • create_invite - Create a channel invite
  • list_invites - List all guild invites
  • delete_invite - Delete an invite

Emoji & Stickers

  • create_emoji - Create a custom emoji
  • delete_emoji - Delete a custom emoji
  • list_emojis - List all custom emojis in a guild
  • list_stickers - List all stickers in a guild

Reactions

  • add_reaction - Add a reaction to a message
  • remove_reaction - Remove a reaction from a message
  • get_reaction_users - Get users who reacted with a specific emoji
  • clear_reactions - Clear all or specific reactions from a message

AutoMod

  • create_automod_rule - Create an automod rule (keyword, spam, preset, mention spam)
  • edit_automod_rule - Edit an automod rule
  • delete_automod_rule - Delete an automod rule
  • list_automod_rules - List all automod rules in a guild

Audit Log

  • get_audit_log - Query audit log with filters (user, action type, limit)

Members

  • get_member_info - Get detailed member profile info
  • list_members - List guild members
  • edit_member - Edit member (nickname, mute, deafen)

Status

  • get_bot_status - Get bot status and session info

Serveurs connexes

NotebookLM Web Importer

Importez des pages web et des vidéos YouTube dans NotebookLM en un clic. Utilisé par plus de 200 000 utilisateurs.

Installer l'extension Chrome