Discord MCP Server avatar

Discord MCP Server

Pricing

from $2.00 / 1,000 discord data retrievals

Go to Apify Store
Discord MCP Server

Discord MCP Server

Discord MCP Server connects Claude, ChatGPT, Cursor and VS Code to Discord servers through an official read-only bot. It exposes 6 MCP tools for guilds, channels, threads, message history, message context and channel search, returning compact data for LLM summaries and Q&A.

Pricing

from $2.00 / 1,000 discord data retrievals

Rating

0.0

(0)

Developer

MrBridge

MrBridge

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

Discord MCP Server is a read-only MCP server for Claude, ChatGPT, Cursor, VS Code, and other MCP-compatible AI clients. It runs on Apify Standby and exposes 6 Discord tools for listing guilds, listing channels and threads, reading messages, fetching message context, and scanning one channel for matching messages.

Ask your assistant to summarize the last 24 hours in #general, find what a teammate said about a project decision, or build a digest from one Discord thread. The server returns compact raw Discord data; summarization and reasoning stay inside your LLM client.

What Is Discord MCP Server?

Discord MCP Server connects an official Discord bot to AI clients through the Model Context Protocol. It is strictly read-only: it cannot send messages, add reactions, moderate users, delete content, or use user tokens.

  • Read Discord guilds, channels, active threads, and message windows.
  • Return chronological message blocks optimized for LLM context windows.
  • Resolve user, channel, and role mentions into readable names when metadata is available.
  • Include attachments, embeds, reactions, edit markers, replies, and optional jump URLs.
  • Use Apify Standby for a persistent HTTPS endpoint at /mcp.
  • Use Pay-per-Event billing only after successful tool results.

Quick Start

  1. Create a Discord application and bot in the Discord Developer Portal.
  2. Enable the privileged Message Content Intent for the bot.
  3. Invite the bot to the target server with View Channels and Read Message History.
  4. Set DISCORD_BOT_TOKEN as a secret environment variable in the Apify Console.
  5. Connect your MCP client to:
https://mrbridge--discord-mcp-server.apify.actor/mcp?fpr=mrbridge

Use your Apify API token for the Apify endpoint authorization. Use the Discord bot token only as the Actor secret environment variable; never paste it into client prompts, query parameters, logs, or Actor input.

Discord Bot Setup

Create the bot:

  1. Open the Discord Developer Portal.
  2. Create an application.
  3. Open Bot, then create or reset the bot token.
  4. Copy the token once and store it as DISCORD_BOT_TOKEN in the Actor environment variables.
  5. In Bot settings, enable Message Content Intent. Without this privileged intent, Discord can return empty content fields.

Invite the bot:

  1. Open OAuth2 -> URL Generator.
  2. Select bot scope.
  3. Select these permissions: View Channels and Read Message History.
  4. Open the generated invite URL and add the bot to the server.

The bot must be able to see every channel you want to read. Discord channel-level permissions still apply.

Connection Setup

Claude Desktop

Use Streamable HTTP if your Claude client supports remote MCP servers:

{
"mcpServers": {
"discord": {
"type": "http",
"url": "https://mrbridge--discord-mcp-server.apify.actor/mcp?fpr=mrbridge",
"headers": {
"Authorization": "Bearer YOUR_APIFY_API_TOKEN"
}
}
}
}

Claude Code

claude mcp add --transport http --scope user discord \
--header "Authorization: Bearer YOUR_APIFY_API_TOKEN" \
https://mrbridge--discord-mcp-server.apify.actor/mcp?fpr=mrbridge

ChatGPT Custom Connector

Create a custom connector that targets the MCP endpoint:

https://mrbridge--discord-mcp-server.apify.actor/mcp?fpr=mrbridge

Use bearer token authentication with your Apify API token. The Discord bot token remains server-side in the Actor environment.

Cursor or VS Code

{
"mcpServers": {
"discord": {
"type": "http",
"url": "https://mrbridge--discord-mcp-server.apify.actor/mcp?fpr=mrbridge",
"headers": {
"Authorization": "Bearer YOUR_APIFY_API_TOKEN"
}
}
}
}

Tools Exposed

ToolWhen to use itMain parametersReturns
list_guildsDiscover servers the bot can access.noneGuild IDs and names.
list_channelsFind text, announcement, forum, media, and thread channels in a guild.guild_id, include_threadsChannel metadata and notes for forum/media channels.
get_messagesRead a message window for summaries or Q&A.channel_id, limit, before, after, since, untilChronological messages plus compact text.
get_message_contextRead around one known message ID.channel_id, message_id, before, afterContext messages and target index.
search_messagesScan one channel/thread for a keyword when native bot search is unavailable.channel_id, query, author, since, until, limit, scan_capMatches, scanned count, cap, and next_before.
list_active_threadsFind active threads, especially forum posts.guild_idActive thread IDs and names.

Search limits

Discord bot REST does not provide a native global message search endpoint. search_messages scans messages in one channel or thread and filters locally. The default scan_cap is 1000 messages and the maximum is 2000 messages. If the response includes next_before, call search_messages again with that cursor to continue.

Time bounds

since and until are ISO 8601 timestamps. They are converted to Discord snowflake cursors internally so the server can avoid unnecessary scanning where possible. Explicit before and after cursors take precedence over until and since.

Output Format

Every tool returns:

  • content: a compact text block for the LLM, for example [2026-07-09 14:32] @alice -> decision text.
  • structuredContent: JSON containing IDs, timestamps, authors, messages, attachments, reactions, cursor metadata, and billing notes where relevant.

Message outputs include:

  • UTC ISO timestamps.
  • edited marker.
  • Reply parent IDs when Discord provides them.
  • Attachments with filename, content type, URL, size, and url_expires: true.
  • Embeds summarized into one line.
  • Reactions aggregated as emojixcount.
  • Optional stable Discord jump URLs.

Discord CDN attachment URLs can expire after a short period, often around 24 hours. Jump URLs are stable as long as the user has Discord permission to view the message.

Standby Mechanics

The Actor runs in Apify Standby mode as a persistent HTTP server. It listens on the Apify-provided Standby port and exposes MCP at /mcp and /mcp/ without redirects.

Cold starts depend on Apify platform state and image availability. Once warm, the server keeps a short in-memory metadata cache for guilds, channels, roles, and members. Message content is never durably cached.

The suggested baseline is 256 MB memory, 512 MB max, and a 5-minute idle timeout. Verify the effective memory and idle timeout in the Apify Console Standby settings after deployment.

Pricing

Discord MCP Server uses Apify Pay-per-Event billing. Users also pay Apify platform usage for the Standby run while it is warm; the event fees and platform usage are separate billing components.

See the live Pricing tab for event prices. The project follows the same MrBridge MCP pricing pattern as France Map and Open Science: tool-read for successful read tools and tool-analysis for search_messages. initialize, tools/list, failed tool calls, invalid input, permission errors, rate-limit errors, and missing-token errors are not charged. Returned matches from search_messages are included in the tool-analysis cost.

Set ACTOR_MAX_TOTAL_CHARGE_USD if you want a per-run cost cap. If the cap is reached, the server returns a clear MCP error instead of silently continuing unpaid work.

Known Limits

  • Official Discord bot tokens only. User tokens and self-bots are not supported and should not be used.
  • Message Content Intent is required for reliable message text.
  • Discord returns at most 100 messages per REST request.
  • Rate limits are bucketed by route and enforced by Discord; the REST client queues requests and respects 429 responses.
  • Forum and media channels are containers. Read their posts by listing active threads and calling get_messages on a thread ID.
  • The server intentionally does not call List Guild Members, because that requires the privileged GUILD_MEMBERS intent and is unnecessary for this read-only use case.

Local Development

npm install
npm run build
npm test
npm run dev
npm run inspector

Smoke test a local server:

$bash scripts/smoke-local.sh

The smoke script only calls http://localhost. It performs initialize, tools/list, and a list_guilds tool call. Without DISCORD_BOT_TOKEN, the tool call should return an actionable MCP error while the server remains healthy.

Use this Actor only with Discord servers where you are authorized to install a bot and read message history. You are responsible for complying with Discord terms, workspace rules, privacy law, and internal data policies.

The Actor is read-only and does not store message content durably. Apify run logs must never include bot tokens or message content.

Read Apify's legal overview for broader context: Is web scraping legal?.

Feedback

Open an issue on the Actor's Issues tab if a Discord permission error, channel type, or MCP client behaves unexpectedly.

More tools, scrapers, MCP servers, and data studies from the same team: mr-bridge.com.