Discord MCP Server
Enables LLMs to read messages, discover channels, send messages, and monitor Discord communities using the Discord HTTP API.
README
Discord MCP Server
A Model Context Protocol (MCP) server that lets LLMs read messages, discover channels, send messages, and monitor Discord communities using the Discord HTTP API.
Features
- List Discord servers and channels you have access to
- Read recent messages with time filtering (newest first)
- Send messages to Discord channels (automatically splits long messages)
- Send messages with file attachments
- Read direct messages (1-on-1 and group DMs)
- Token-based authentication (automatic extraction supported)
- Fast API-based approach - no browser automation needed at runtime
Quick Start with Claude Code
# Add Discord MCP server (with token)
claude mcp add discord-mcp -s user -e DISCORD_TOKEN=your_token -- uvx --from git+https://github.com/waelsamy/discord-mcp.git discord-mcp
# Or with email/password (auto-extracts token on first use)
claude mcp add discord-mcp -s user -e DISCORD_EMAIL=your_email@example.com -e DISCORD_PASSWORD=your_password -- uvx --from git+https://github.com/waelsamy/discord-mcp.git discord-mcp
# Start Claude Code
claude
Usage Examples
# List your Discord servers
> use get_servers to show me all my Discord servers
# Read recent messages (max_messages is required)
> read the last 20 messages from channel ID 123 in server ID 456
# Send a message (long messages automatically split)
> send "Hello!" to channel 123 in server 456
# Send a message with attachment
> send a file /path/to/image.png to channel 123 in server 456
# List DM conversations
> show me my direct message conversations
# Read DMs from a user
> read the last 10 messages from my DM with johndoe123
# Monitor communities
> summarize discussions from the last 24 hours across my Discord servers
Available Tools
get_servers- List all Discord servers you have access toget_channels(server_id)- List channels in a specific serverread_messages(server_id, channel_id, max_messages, hours_back?)- Read recent messages (newest first)send_message(server_id, channel_id, content)- Send messages to channels (automatically splits long messages)send_message_with_attachment(server_id, channel_id, content, file_path, filename?)- Send a message with a file attachmentget_dm_conversations()- List all direct message conversationsread_dm_messages(name, max_messages, hours_back?)- Read messages from a DM by username or display name
Manual Setup
Prerequisites
- Python 3.10+ with
uvpackage manager - Discord token or account credentials
Installation
git clone https://github.com/waelsamy/discord-mcp.git
cd discord-mcp
uv sync
uv run playwright install # Only needed for token extraction
Configuration
Option 1: Using Discord Token (Recommended)
DISCORD_TOKEN=your_discord_token_here
To extract your token, run:
uv run python get_token.py
Option 2: Using Email/Password
DISCORD_EMAIL=your_email@example.com
DISCORD_PASSWORD=your_password
The server will automatically extract and cache your token on first use.
Run Server
uv run python main.py
Claude Desktop Integration
Add to ~/.claude/claude_desktop_config.json:
{
"mcpServers": {
"discord": {
"command": "uvx",
"args": ["--from", "git+https://github.com/waelsamy/discord-mcp.git", "discord-mcp"],
"env": {
"DISCORD_TOKEN": "your_token_here"
}
}
}
}
Or with email/password:
{
"mcpServers": {
"discord": {
"command": "uvx",
"args": ["--from", "git+https://github.com/waelsamy/discord-mcp.git", "discord-mcp"],
"env": {
"DISCORD_EMAIL": "your_email@example.com",
"DISCORD_PASSWORD": "your_password"
}
}
}
}
Development
# Type checking
uv run pyright
# Formatting
uvx ruff format .
# Linting
uvx ruff check --fix --unsafe-fixes .
# Testing
uv run pytest -v tests/
Security Notes
- Token is cached securely at
~/.discord_mcp_tokenwith 0o600 permissions - Never commit your token or
.envfile to git - Consider using a dedicated Discord account for automation
- Server includes delays to avoid rate limiting (0.5s between split messages)
- If your token is exposed, change your Discord password to invalidate it
Troubleshooting
- Token extraction fails: Run
uv run python get_token.pyinteractively - MFA/2FA enabled: Use
get_token.pyto complete authentication manually - Rate limits: Reduce
max_messages, monitor for Discord warnings - Token expired: Server automatically detects 401 errors; re-run token extraction if needed
- Browser errors: Run
uv run playwright install --force
Legal Notice
Ensure compliance with Discord's Terms of Service. Only access information you would normally have access to as a user. Use for legitimate monitoring and research purposes.
Author
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。