MCP-Discord Stream
A Discord MCP server with unlimited message streaming, forum archiving, and time-range filtering. Enables reading all Discord history, archiving forums, and batch operations across channels.
README
MCP-Discord Stream
A Discord MCP (Model Context Protocol) server with unlimited message streaming, forum archiving, and time-range filtering capabilities.
Fork Notice: This is an enhanced fork of barryyip0625/mcp-discord with added streaming capabilities for reading unlimited Discord history.
Overview
MCP-Discord Stream provides comprehensive Discord integration with powerful streaming features:
🆕 Streaming Features (New!)
- Unlimited Message History - Read ALL messages from channels/forums (not limited to 100 messages)
- Time Range Filtering - Fetch messages from specific date ranges (default: last 10 days)
- Forum Archiving - Archive entire forums with all threads and messages
- Batch Operations - Stream from multiple channels/forums simultaneously
- Progress Tracking - Real-time progress updates during long operations
- Rate Limit Handling - Gracefully handles Discord rate limits with partial data returns
Standard Features
- Login to Discord bot
- List servers the bot is a member of
- Get server information
- Search messages in a server
- Read/delete channel messages
- Send messages to specified channels
- Retrieve forum channel lists
- Create/delete/reply to forum posts
- Create/delete text channels
- Add/remove message reactions
- Create/edit/delete/use webhooks
Table of Contents
- Prerequisites
- Installation
- Configuration
- Usage Examples
- Tools Documentation
- Streaming Features Explained
- Development
- License
Prerequisites
-
Node.js (v18.0.0 or higher)
-
npm (v7.0.0 or higher)
-
A Discord bot with appropriate permissions
- Bot token (obtainable from the Discord Developer Portal)
- Message Content Intent enabled (Required!)
- Server Members Intent enabled
- Presence Intent enabled
-
Permissions required in your Discord server:
Easiest Setup
- Administrator (Recommended for quick setup and full functionality)
Or, select only the required permissions:
- View Channel
- Read Message History (Required for streaming!)
- Send Messages
- Create Public Threads
- Send Messages in Threads
- Manage Messages
- Manage Threads
- Manage Channels
- Manage Webhooks
- Add Reactions
-
Add your Discord bot to your server
- To add your Discord bot to your server, use one of the following invite links (replace
INSERT_CLIENT_ID_HEREwith your bot's client ID):- Administrator (full access): https://discord.com/oauth2/authorize?client_id=INSERT_CLIENT_ID_HERE&scope=bot&permissions=8
- Custom permissions (minimum required): https://discord.com/oauth2/authorize?client_id=INSERT_CLIENT_ID_HERE&scope=bot&permissions=52076489808
- To add your Discord bot to your server, use one of the following invite links (replace
Important: According to Discord's security model, a bot can only access information from servers it has been explicitly added to. With "Read Message History" permission, the bot CAN read messages sent before it was added to the server!
Installation
Installing via NPM
npm install -g @yangyifei/mcp-discord-stream
Or use directly via npx:
npx @yangyifei/mcp-discord-stream --config ${DISCORD_TOKEN}
Manual Installation
# Clone the repository
git clone https://github.com/Yv3s-y4ng/mcp-discord-stream.git
cd mcp-discord-stream
# Install dependencies
npm install
# Compile TypeScript
npm run build
Configuration
A Discord bot token is required for proper operation. The server supports two transport methods: stdio and streamable HTTP.
Transport Methods
-
stdio (Default)
- Traditional stdio transport for basic usage
- Suitable for simple integrations
-
streamable HTTP
- HTTP-based transport for more advanced scenarios
- Supports stateless operation
- Configurable port number
Configuration Options
You can provide configuration in two ways:
- Environment variables:
DISCORD_TOKEN=your_discord_bot_token
- Using command line arguments:
# For stdio transport (default)
node build/index.js --config "your_discord_bot_token"
# For streamable HTTP transport
node build/index.js --transport http --port 3000 --config "your_discord_bot_token"
Usage with Claude/Cursor
Claude Desktop
- Using stdio transport:
{
"mcpServers": {
"discord": {
"command": "npx",
"args": [
"@yangyifei/mcp-discord-stream",
"--config",
"your_discord_bot_token"
]
}
}
}
- Using streamable HTTP transport:
{
"mcpServers": {
"discord": {
"command": "npx",
"args": [
"@yangyifei/mcp-discord-stream",
"--transport",
"http",
"--port",
"3000",
"--config",
"your_discord_bot_token"
]
}
}
}
Cursor
- Using stdio transport:
{
"mcpServers": {
"discord": {
"command": "cmd",
"args": [
"/c",
"npx",
"@yangyifei/mcp-discord-stream",
"--config",
"your_discord_bot_token"
]
}
}
}
Usage Examples
Example 1: Stream ALL Messages from a Channel
// Fetch last 30 days of messages (unlimited)
discord_read_messages_stream({
channelId: "123456789",
afterDate: "2024-01-01T00:00:00Z" // Optional: start from this date
})
Example 2: Archive Entire Forum
// Archive all forum threads with messages from last 60 days
discord_archive_forum_stream({
forumChannelId: "987654321",
afterDate: "2024-01-01T00:00:00Z",
includeArchived: true
})
Example 3: Batch Archive Multiple Forums
// Archive 3 forums at once
discord_archive_multiple_forums({
forumChannelIds: ["111", "222", "333"],
afterDate: "2024-01-01T00:00:00Z"
})
Tools Documentation
🆕 Streaming Tools (New!)
discord_read_messages_stream
Streams messages from a Discord channel with unlimited history and time-range filtering.
Parameters:
channelId(string, required) - The ID of the channel to read fromafterDate(string, optional) - ISO 8601 date string (e.g., "2024-01-01T00:00:00Z") - only fetch messages after this datebeforeDate(string, optional) - ISO 8601 date string - only fetch messages before this date
Default: If no date range is provided, fetches messages from the last 10 days.
Returns:
- Stream events including
batch,progress,rate_limited, andcompleteevents - Each batch contains up to 100 messages with full message data (content, author, timestamp, attachments, etc.)
discord_read_multiple_channels
Streams messages from multiple channels sequentially.
Parameters:
channelIds(string[], required) - Array of channel IDs to read fromafterDate(string, optional) - ISO 8601 date stringbeforeDate(string, optional) - ISO 8601 date string
Returns: Aggregated results from all channels with success/error status for each.
discord_get_channel_list
Lists all channels in a Discord server with optional type filtering.
Parameters:
guildId(string, required) - The ID of the Discord serverchannelTypes(number[], optional) - Array of Discord ChannelType numbers to filter by0= Text Channel2= Voice Channel4= Category15= Forum Channel- Full ChannelType list
Returns: List of channels with id, name, type, and parentId.
discord_get_forum_post_stream
Streams all messages from a single forum post/thread with unlimited history.
Parameters:
threadId(string, required) - The ID of the forum threadafterDate(string, optional) - ISO 8601 date stringbeforeDate(string, optional) - ISO 8601 date string
Returns: Stream events with all messages from the thread.
discord_archive_forum_stream
Archives an entire forum channel by streaming all threads and their messages.
Parameters:
forumChannelId(string, required) - The ID of the forum channelafterDate(string, optional) - ISO 8601 date stringbeforeDate(string, optional) - ISO 8601 date stringincludeArchived(boolean, optional, default: true) - Whether to include archived threads
Returns:
threads_foundevent with total thread countthread_progressevents for each thread being processed- Message batches from all threads
completeorpartial_completeevent with summary
discord_archive_multiple_forums
Archives multiple forum channels at once.
Parameters:
forumChannelIds(string[], required) - Array of forum channel IDsafterDate(string, optional) - ISO 8601 date stringbeforeDate(string, optional) - ISO 8601 date stringincludeArchived(boolean, optional, default: true) - Include archived threads
Returns: Aggregated results from all forums.
Basic Functions
discord_login: Login to Discord using the configured tokendiscord_list_servers: List all Discord servers the bot is a member ofdiscord_send: Send a message to a specified channel (supports both channel ID and channel name)discord_get_server_info: Get Discord server information
Channel Management
discord_create_text_channel: Create a text channeldiscord_delete_channel: Delete a channeldiscord_create_category: Create a channel categorydiscord_edit_category: Edit a categorydiscord_delete_category: Delete a category
Forum Functions
discord_get_forum_channels: Get a list of forum channelsdiscord_create_forum_post: Create a forum postdiscord_get_forum_post: Get a forum post (limited to 10 messages - usediscord_get_forum_post_streamfor more)discord_list_forum_threads: List all threads in a forumdiscord_reply_to_forum: Reply to a forum postdiscord_delete_forum_post: Delete a forum post
Messages and Reactions
discord_search_messages: Search messages in a serverdiscord_read_messages: Read channel messages (limited to 100 - usediscord_read_messages_streamfor more)discord_add_reaction: Add a reaction to a messagediscord_add_multiple_reactions: Add multiple reactions to a messagediscord_remove_reaction: Remove a reaction from a messagediscord_delete_message: Delete a specific message from a channel
Webhook Management
discord_create_webhook: Creates a new webhook for a Discord channeldiscord_send_webhook_message: Sends a message to a Discord channel using a webhookdiscord_edit_webhook: Edits an existing webhook for a Discord channeldiscord_delete_webhook: Deletes an existing webhook for a Discord channel
Streaming Features Explained
Time Range Filtering
All streaming tools support time-range filtering via ISO 8601 date strings:
// Fetch messages from a specific time range
{
afterDate: "2024-01-01T00:00:00Z", // Start date (inclusive)
beforeDate: "2024-12-31T23:59:59Z" // End date (inclusive)
}
// Fetch messages from last X days (omit both dates to use default 10 days)
{
afterDate: "2024-01-15T00:00:00Z" // Last 10+ days
}
// Fetch ALL messages (no time limit - use with caution!)
{
afterDate: "2015-01-01T00:00:00Z" // Discord's founding year
}
Stream Event Types
Streaming tools return different event types to provide real-time feedback:
progress- Periodic progress updates during fetchingbatch- Contains message data (up to 100 messages per batch)threads_found- (Forums only) Total number of threads discoveredthread_progress- (Forums only) Current thread being processedrate_limited- Discord rate limit hit, includes retry wait timecomplete- All data fetched successfullypartial_complete- Partial data returned (e.g., due to rate limits or errors)
Rate Limit Handling
When Discord rate limits are hit:
- The tool returns a
rate_limitedevent with wait time - Already-fetched data is returned as
partial_complete - You can retry the request after the wait period
Performance Tips
- Use specific date ranges - Narrow time ranges = faster responses
- Process channels sequentially - Use
discord_read_multiple_channelsinstead of parallel requests - Monitor rate limits - Discord has per-channel and global rate limits
- Archive during off-peak hours - Large archives work best when server activity is low
Development
# Install dependencies
npm install
# Development mode with auto-reload
npm run dev
# Run tests
npm test
# Build for production
npm run build
# Run built version
npm start
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
Acknowledgments
This project is a fork of barryyip0625/mcp-discord with significant enhancements for unlimited message streaming and archiving capabilities.
Special thanks to:
- Barry Yip (@barryyip0625) for the original MCP-Discord implementation
- The Anthropic team for the Model Context Protocol
- Discord.js community for the excellent Discord API library
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。