Client compatibility
The dependable compatibility contract is capability-based, not a hard-coded client version matrix. Client releases change independently, so verify the features you need in the current client rather than relying on an old “yes/no” table.
Minimum contract
Section titled “Minimum contract”A client can use discord-mcp’s core surface when it can:
- start a local process as an MCP server;
- communicate with it over stdio;
- pass
DISCORD_TOKENand other environment variables; and - list and call MCP tools.
That contract is enough for the 192 Discord tools. Resources, subscriptions, and sampling are optional extensions with narrower use cases.
Feature requirements
Section titled “Feature requirements”| discord-mcp feature | Client capability | Behavior when absent |
|---|---|---|
| Discord tool catalog | tools | Core functionality is unavailable. |
| Components V2 schema/template catalog | resources list/read | Use the tool reference and builder tools instead. |
| Live Gateway notifications | resource subscriptions | The client cannot receive push updates; REST tools still work. |
| Intelligence tools | sampling | The tool returns a host-processing fallback payload rather than a completed LLM analysis. |
| Confirmation gate | none beyond tools | The __confirm contract is a tool argument; discord-mcp does not use MCP elicitation. |
Generate the client config
Section titled “Generate the client config”discord-mcp init --client claude-desktopMerge the generated entry into Claude Desktop’s mcpServers object and fully restart the app.
discord-mcp init --client claude-codeMerge the output into the user or project MCP config supported by your Claude Code release.
discord-mcp init --client cursorMerge the output into Cursor’s user or project MCP config and restart the editor.
discord-mcp init --client genericPlace the standard mcpServers entry where your client documents local stdio servers.
If you did not install the CLI globally, the scoped one-off command is
npx --yes @discord-mcp/cli@latest. Do not substitute an unscoped package name.
Verify instead of assuming
Section titled “Verify instead of assuming”For every client and release:
- Run
discord-mcp doctor --onlinein a terminal withDISCORD_TOKENset. - Restart the client and confirm
users_get_currentsucceeds. - Confirm
channels_listcan discover a test channel. - If you need intelligence, run its smallest example and inspect whether the response is a completed result or a host-processing fallback.
- If you need Gateway events, verify one real subscription update after starting with
--gateway; do not infer support from the initialization capability alone.
Server-side controls
Section titled “Server-side controls”MCP_CATEGORIESlimits which tool categories are registered.MCP_DRY_RUNaffects only tools that declare the confirmation precondition.OTEL_ENABLEDchanges server-side observability, not the client capability contract.
Continue with Client setup, the sampling architecture, or Gateway architecture.