项目简介

'discord-mcp' 是一个MCP服务器实现,它将Discord机器人的功能和数据封装成LLM可以理解和调用的资源(Resources)、工具(Tools)以及潜在的Prompt模板。这意味着LLM客户端可以通过这个服务器访问Discord用户数据、执行机器人命令(如获取延迟),从而在与用户的对话中获取并利用实时Discord信息。

主要功能点

  • Discord集成: 托管一个Discord机器人,使其功能和数据可通过MCP服务器暴露给LLM。
  • 资源访问: 允许LLM客户端读取Discord相关信息作为资源,例如获取特定用户的信息。
  • 工具调用: 允许LLM客户端调用Discord机器人的功能作为工具,例如获取机器人的当前延迟。
  • 可扩展性: 支持通过插件机制扩展更多Discord功能。
  • 多传输协议: 支持通过标准输入/输出(STDIO)和HTTP协议与LLM客户端通信。
  • 中间件支持: 内置日志、限速、权限检查等中间件功能。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/FallenDeity/discord-mcp.git
    cd discord-mcp
  2. 创建虚拟环境并安装依赖:
    poetry install
  3. 设置Discord机器人令牌: 在项目根目录下创建一个 '.env' 文件,并添加你的Discord机器人令牌:
    DISCORD_TOKEN="YOUR_DISCORD_BOT_TOKEN_HERE"
    确保 'YOUR_DISCORD_BOT_TOKEN_HERE' 替换为你的实际Discord机器人令牌。

服务器配置

'discord-mcp' 服务器支持STDIO和HTTP两种运行模式,你可以根据LLM客户端的要求选择配置。

  • STDIO模式 (适用于Claude桌面客户端): 将以下JSON配置添加到你的Claude桌面客户端配置文件(通常位于 '$env:APPDATA\Claude\claude_desktop_config.json')中的 'mcpServers' 部分。

    {
        "mcpServers": {
            "discord": { // 服务器名称,可自定义
                "command": "poetry", // 启动命令
                "args": [ // 启动参数列表
                    "--directory",
                    "C:\\Users\\<username>\\<projects_directory>\\discord-mcp", // **请替换为你的discord-mcp项目所在路径**
                    "run",
                    "python",
                    "-m",
                    "discord_mcp",
                    "--file-logging", // 可选:启用文件日志
                    "--server-type",
                    "STDIO" // 指定服务器类型为STDIO
                ]
            }
        }
    }

    请注意:

    • '"discord"' 是你在客户端中为该服务器命名的名称,可以根据需要修改。
    • '"C:\Users\<username>\<projects_directory>\discord-mcp"' 必须替换为你的 'discord-mcp' 项目在本地文件系统中的绝对路径。
  • HTTP模式 (适用于远程或Web客户端): 首先,在命令行中启动服务器:

    poetry --directory "C:\\Users\\<username>\\<projects_directory>\\discord-mcp" run python -m discord_mcp --file-logging --server-type HTTP

    服务器将在 'http://localhost:8000/mcp' 运行。 在LLM客户端中配置远程MCP连接时,指定服务器URL为 'http://localhost:8000/mcp' 即可。

基本使用方法

成功启动服务器并连接LLM客户端后,LLM即可通过MCP协议调用Discord功能。例如:

  • 获取当前机器人用户: LLM可以调用名为 'get_current_user' 的工具来获取机器人的详细信息。
  • 获取特定用户数据: LLM可以调用 'get_user_by_id' 工具并提供用户ID来获取该用户的信息,或者读取URI为 'resource://discord/user/{user_id}' 的资源。
  • 检查机器人延迟: LLM可以调用 'get_latency' 工具来获取机器人的当前延迟(以毫秒为单位)。

这些功能将以结构化的JSON格式返回给LLM,供其进一步处理和利用。

信息

分类

通信与社交