Discord消息中继服务

MCP Relay是一个允许Claude通过Discord频道发送和接收消息的服务,支持通知和交互式提示两种消息类型。

  • by emiliobool
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 emiliobool/mcp-relay

使用说明

MCP继电器

此MCP服务器允许Claude向Discord通道发送消息和提示并接收响应。

安装说明

1.创建Discord应用程序和Bot

  1. 转到 Discord开发者门户
  2. 点击“新建应用程序”并为其命名
  3. 转到左侧边栏中的“Bot”部分
  4. 在机器人的令牌部分,单击“重置令牌”并复制新令牌
    • 请确保此令牌安全!不要公开分享
  5. 在“特权网关意图”下,启用:
    • 消息内容意图
    • 服务器成员意图
    • 出席意向

2.邀请机器人到您的服务器

  1. 转到左侧边栏中的“OAuth2”部分
  2. 选择“URL生成器”
  3. 在“范围”下,选择:
    • 机器人
    • applications命令
  4. 在“Bot权限”下,选择:
    • 发送消息
    • 嵌入链接
    • 读取消息历史记录
  5. 复制生成的URL并在浏览器中打开
  6. 选择您的服务器并授权机器人

3.获取频道ID

  1. 在Discord中,启用开发人员模式:
    • 前往用户设置>应用设置>高级
    • 开启“开发者模式”
  2. 右键单击要使用的频道
  3. 点击“复制频道ID”

4.配置MCP设置

服务器需要在MCP设置文件中进行配置。将以下内容添加到配置文件中:

{
    "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"
            }
        }
    }
}

替换:

  • /ABSOLUTE/PATH/TO/MCP Relay 与您的MCP Relay项目的实际路径
  • your_bot_token_here 使用您的Discord机器人令牌
  • your_channel_id_here 使用您的Discord频道ID

注意:请确保在配置中使用绝对路径。

用法

服务器提供了一个名为 send-message 它接受以下参数:

{
  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
}

消息类型

  1. 通知:不需要回复的简单消息

    {
      "type": "notification",
      "title": "Hello",
      "content": "This is a notification"
    }
    
  2. 提示:等待响应的消息

    {
      "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
    }
    

笔记:

  • 可以通过单击操作按钮或发送短信来回答提示
  • 每个提示只接受一个响应
  • 如果指定了超时,则提示将在超时后失败
  • 通知不会等待响应并立即返回