Discord Research MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Discord Research MCPsearch the archive for messages about the release plan in #engineering"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Discord Research MCP
Discord Research MCP is a read-only research bridge for Discord. It combines an explicitly authorized Discord Desktop local-RPC/OAuth2 acquisition path with a small Discord-focused MCP surface for current channel snapshots and local archive research.
The product is designed for evidence gathering, not account automation. It does not use normal-user session tokens, self-bot techniques, Discord Client Experiment APIs, message writes, read-state mutations, or attachment-binary acquisition.
Architecture
The same image can run three roles:
forward owns the Discord Desktop IPC/OAuth2 session, selected-source subscriptions, observation normalization, token rotation state, coverage health, and the private live-read control socket.
archive-bridge connects only to a loopback msgvault read-only MCP endpoint and republishes a curated archive-query subset over a private Unix socket.
mcp exposes the agent-facing Discord tools. It has no Discord credentials and talks only to the two Unix sockets.
Durable archive storage, SQLite/FTS query behavior, and single-writer ownership remain with msgvault. The archive bridge never opens the archive database directly.
Related MCP server: discord-mcp
Agent tools
The MCP surface is intentionally small:
search_messages
get_message
list_messages
search_thread
read_channel
See docs/tools.md for inputs, limits, provenance, and failure behavior.
Coverage and provenance
Every result is explicit about what it proves.
read_channel returns acquisition=live_rpc, complete_history=false, and exactly one bounded Discord GET_CHANNEL snapshot.
Direct archived observations return acquisition=local_rpc_observation, complete_history=false.
Public mirror evidence returns acquisition=public_git_mirror, complete_history=false, plus stored repository/commit provenance and an optional deployment-supplied mirror cutoff.
An archive miss is terminal. It never falls back to Discord.
Requirements
A Discord Desktop client whose local IPC socket is available to the collector.
A Discord OAuth2 application authorized for the scopes required by your deployment. The intended research baseline is rpc,identify,guilds,messages.read.
A selected-source configuration file.
For archive tools: a msgvault release whose read-only MCP get_message response exposes the sanitized source_provenance field for imported mirror evidence.
Node.js 22 for source development, or the published container image for deployment.
Configuration
Collector: forward
Required deployment values are supplied at runtime; none are shipped as product defaults.
Variable | Purpose |
DISCORD_CLIENT_ID | OAuth2 application/client ID. |
DISCORD_SCOPES | Comma-separated OAuth2 scopes. |
DISCORD_REDIRECT_URI | Registered OAuth2 redirect URI. |
DISCORD_CLIENT_SECRET_FILE | Read-only file containing the client secret. |
DISCORD_REFRESH_TOKEN_FILE | Read-only bootstrap refresh-token file. |
DISCORD_TOKEN_STATE_FILE | Private application-owned latest refresh-token state. |
DISCORD_SELECTION_FILE | Versioned selected-source JSON file. |
DISCORD_HEALTH_FILE | Content-free acquisition health record. |
DISCORD_IMPORT_HEALTH_FILE | Content-free importer health record. |
DISCORD_OBSERVATION_DIR | Private JSONL handoff directory. |
DISCORD_CONTROL_SOCKET | Private Unix socket used by read_channel. |
Forum-thread state is optional and configured with DISCORD_FORUM_THREAD_STATE_FILE when the deployment uses persisted explicit thread seeds.
Archive bridge: archive-bridge
Variable | Purpose |
DISCORD_ARCHIVE_SOCKET | Private Unix socket created for the MCP façade. |
DISCORD_ARCHIVE_MCP_URL | msgvault read-only MCP URL. Only HTTP loopback endpoints with path /mcp are accepted. |
DISCORD_SELECTION_FILE | Used to derive the allowed local archive source identifiers. |
DISCORD_MIRROR_CUTOFF | Optional evidence cutoff attached only to public-mirror results. |
The intended deployment keeps the msgvault writer and its read-only MCP helper inside a network-isolated namespace. archive-bridge joins that same isolated namespace and exports only a Unix socket.
Agent MCP: mcp
Variable | Purpose |
DISCORD_CONTROL_SOCKET | Live-read collector socket. |
DISCORD_ARCHIVE_SOCKET | Archive bridge socket. |
DISCORD_MCP_HOST | HTTP listen host. |
DISCORD_MCP_PORT | HTTP listen port. |
DISCORD_MCP_ALLOWED_HOSTS | Optional comma-separated Host-header allowlist. |
Source selection
Selection is configuration, never a product default. Example:
{
"version": 1,
"sources": [
{"guild_id": "700", "channel_id": "800"},
{"guild_id": "700", "channel_id": "801"}
]
}The IDs above are synthetic. A selected forum parent may admit only provider-validated child thread channels whose guild, type, and parent_id bind them to that selected parent.
Observation handoff
The collector publishes private version-1 JSONL observations. A deployment may import them through msgvault's import-discord-observations command, but the deployment must preserve msgvault's single-writer contract. Docker invocation, host paths, acknowledgement cleanup, backup wiring, and scheduling are deliberately outside this product.
Development
npm ci --ignore-scripts
npm test
python3 scripts/public-scrub.py
docker build -t discord-research-mcp:dev .Security
Read SECURITY.md and docs/security-provider-boundary.md before deploying. The archive adapter is intentionally loopback-only and the agent-facing surface contains no write/delete/stage/export tools.
License
MIT. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Durable technocore-chat archive plus DID activity, filler-bot and identity-rate analysis.
Machine-native research commons for agent evidence, discovery, rooms, and bounded research quests.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Live X/Twitter and Reddit research. 10 read-only MCP tools, Google/GitHub sign-in. Free tier.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables local AI agents to securely search and read Discord messages and channels visible to the current client, without requiring a bot or user token.-
- AlicenseNot gradedqualityBmaintenanceEnables reading and acting on Discord through your own running desktop client, including messages, direct messages, group chats, threads, forum posts, search, and write operations like sending, editing, reacting, and managing threads.181 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables safe, least-privilege reads and audits of Discord guilds and allowlisted direct conversations, with reviewed administrative actions through an operator-owned bot.157 npm1AGPL 3.0
- AlicenseNot gradedqualityAmaintenanceEnables AI clients to read Discord channels, recent messages, and searchable history, then turn that evidence into freshness-aware team context, briefs, decision baselines, and signed checkpoint diffs through remote MCP and GPT Actions. It keeps Discord access read-only while supporting OAuth/Bearer authentication for multiple clients.Apache 2.0