Skip to Content

MCP Relay

View original on GitHub 

This MCP server allows Claude to send messages and prompts to a Discord channel and receive responses.

Setup Instructions

1. Create a Discord Application and Bot

  1. Go to the Discord Developer Portal 
  2. Click β€œNew Application” and give it a name
  3. Go to the β€œBot” section in the left sidebar
  4. Under the bot’s token section, click β€œReset Token” and copy the new token
    • Keep this token secure! Don’t share it publicly
  5. Under β€œPrivileged Gateway Intents”, enable:
    • Message Content Intent
    • Server Members Intent
    • Presence Intent

2. Invite the Bot to Your Server

  1. Go to the β€œOAuth2” section in the left sidebar
  2. Select β€œURL Generator”
  3. Under β€œScopes”, select:
    • bot
    • applications.commands
  4. Under β€œBot Permissions”, select:
    • Send Messages
    • Embed Links
    • Read Message History
  5. Copy the generated URL and open it in your browser
  6. Select your server and authorize the bot

3. Get Channel ID

  1. In Discord, enable Developer Mode:
    • Go to User Settings > App Settings > Advanced
    • Turn on β€œDeveloper Mode”
  2. Right-click the channel you want to use
  3. Click β€œCopy Channel ID”

4. Configure MCP Settings

The server requires configuration in your MCP settings file. Add the following to your configuration file:

{ "mcpServers": { "discord-relay": { "command": "node", "args": [ "/ABSOLUTE/PATH/TO/MCP Relay/build/index.js" ], "env": { "DISCORD_TOKEN": "your_bot_token_here", "DISCORD_CHANNEL_ID": "your_channel_id_here" } } } }

Replace:

  • /ABSOLUTE/PATH/TO/MCP Relay with the actual path to your MCP Relay project
  • your_bot_token_here with your Discord bot token
  • your_channel_id_here with your Discord channel ID

Note: Make sure to use absolute paths in the configuration.

Usage

The server provides a tool called send-message that accepts the following parameters:

{ type: 'prompt' | 'notification', // Type of message title: string, // Message title content: string, // Message content actions?: Array<{ // Optional action buttons label: string, // Button label value: string // Value returned when clicked }>, timeout?: number // Optional timeout in milliseconds }

Message Types

  1. Notification: Simple message that doesn’t expect a response

    { "type": "notification", "title": "Hello", "content": "This is a notification" }
  2. Prompt: Message that waits for a response

    { "type": "prompt", "title": "Question", "content": "Do you want to proceed?", "actions": [ { "label": "Yes", "value": "yes" }, { "label": "No", "value": "no" } ], "timeout": 60000 // Optional: 1 minute timeout }

Notes:

  • Prompts can be answered either by clicking action buttons or sending a text message
  • Only one response is accepted per prompt
  • If a timeout is specified, the prompt will fail after the timeout period
  • Notifications don’t wait for responses and return immediately
Last updated on