项目简介

'mcp-dingdingbot-server' 是一个基于 Model Context Protocol (MCP) 构建的服务器应用,它作为一个桥梁,允许 LLM 客户端通过 MCP 协议调用钉钉机器人,实现向钉钉群组发送各种消息,例如文本、Markdown、图片、图文消息和模板卡片等。这使得 LLM 应用能够方便地集成钉钉的消息通知和互动能力。

主要功能点

  • 消息类型丰富:支持发送文本、Markdown、图片、图文(链接)、模板卡片等多种类型的钉钉消息。
  • 文件上传:支持上传文件到钉钉机器人,方便进行文件共享。
  • 群组通知:可以向钉钉群组发送消息,并支持 '@' 提醒特定成员或全体成员。
  • 安全增强:支持签名验证,提高消息发送的安全性(可选配置)。
  • 易于集成:作为 MCP 服务器,可以与任何支持 MCP 协议的 LLM 客户端轻松集成。

安装步骤

  1. 克隆仓库

    git clone https://github.com/HundunOnline/mcp-dingdingbot-server.git
    cd mcp-dingdingbot-server
  2. 构建可执行文件: 确保已安装 Go 环境和 Make 工具,然后执行以下命令编译:

    make build

    构建成功后,可在 'dist' 目录下找到可执行文件 'mcp-dingdingbot-server_xxx_xxxx',其中 'xxx_xxxx' 代表你的操作系统和架构。

  3. 安装到系统路径 (可选): 为了方便使用,可以将可执行文件链接到系统路径,例如 '/usr/local/bin':

    sudo ln -s $PWD/dist/mcp-dingdingbot-server_xxx_xxxx /usr/local/bin/mcp-dingdingbot-server

    请将 '$PWD/dist/mcp-dingdingbot-server_xxx_xxxx' 替换为实际的可执行文件路径和名称。

服务器配置

MCP 客户端需要配置以下 JSON 信息来启动 'mcp-dingdingbot-server' 并与之建立连接。

{
  "serverName": "mcp-dingdingbot-server",
  "command": "mcp-dingdingbot-server",
  "args": [],
  "env": {
    "DINGDING_BOT_WEBHOOK_KEY": "YOUR_DINGDING_BOT_WEBHOOK_KEY",  // 必须:你的钉钉机器人 Webhook 密钥,请替换为实际密钥
    "DINGDING_BOT_SIGN_KEY": "YOUR_DINGDING_BOT_SIGN_KEY"     // 可选:钉钉机器人签名密钥,用于增强安全性,建议配置
  }
}

配置参数说明

  • 'serverName': MCP 服务器的名称,客户端用于识别和管理连接。
  • 'command': 启动 MCP 服务器的命令,这里是 'mcp-dingdingbot-server' (假设已将其添加到系统路径,否则需要使用可执行文件的完整路径)。
  • 'args': 启动命令的参数,本服务器不需要命令行参数,所以为空数组 '[]'。
  • 'env': 环境变量配置,用于传递钉钉机器人所需的密钥信息:
    • 'DINGDING_BOT_WEBHOOK_KEY': 必需。这是你的钉钉机器人 Webhook 地址中的 'access_token' 值。你需要在钉钉群机器人配置中获取。
    • 'DINGDING_BOT_SIGN_KEY': 可选,但推荐配置。如果你的钉钉机器人启用了签名验证,则需要配置此项。在钉钉机器人安全设置中获取。

获取钉钉机器人 Webhook 密钥和签名密钥

请参考钉钉官方文档配置自定义机器人并获取 'DINGDING_BOT_WEBHOOK_KEY' 和 'DINGDING_BOT_SIGN_KEY' (如果启用签名): https://open.dingtalk.com/document/robots/custom-robot-access

基本使用方法

'mcp-dingdingbot-server' 提供了以下工具 (Tools) 供 MCP 客户端调用,以实现不同的钉钉消息发送功能:

  • send_text: 发送文本消息。

    • 参数:
      • 'content': 文本消息内容 (必需)
      • 'at_mobiles': 需要 '@' 的手机号码列表,多个号码用逗号分隔 (可选)
      • 'at_user_ids': 需要 '@' 的用户 ID 列表,多个 ID 用逗号分隔 (可选)
      • 'is_at_all': 是否 '@' 全体成员,布尔值 (可选)
  • send_markdown: 发送 Markdown 消息。

    • 参数:
      • 'title': Markdown 消息标题 (必需)
      • 'content': Markdown 格式的消息内容 (必需)
      • 'at_mobiles', 'at_user_ids', 'is_at_all': '@' 提醒参数,同 'send_text' (可选)
  • send_image: 发送图片消息。

    • 参数:
      • 'base64_data': 图片内容的 Base64 编码字符串 (必需)
      • 'md5': 图片内容的 MD5 哈希值 (必需)
  • send_news: 发送图文链接消息。

    • 参数:
      • 'title': 图文消息标题 (必需)
      • 'text': 图文消息描述 (必需)
      • 'message_url': 点击图文消息跳转的 URL (必需)
      • 'pic_url': 图文消息的图片 URL (可选)
  • send_template_card: 发送模板卡片消息。

    • 参数:
      • 'title': 模板卡片标题 (必需)
      • 'text': 模板卡片内容 (必需)
      • 'single_title': 卡片上按钮的标题 (必需)
      • 'single_url': 卡片上按钮点击跳转的 URL (必需)
      • 'btn_orientation': 按钮排列方向,'0' 表示垂直排列,'1' 表示水平排列 (可选,默认为 '0')
  • upload_file: 上传文件到钉钉。

    • 参数:
      • 'file_path': 要上传的文件路径 (必需)

使用示例

假设你的 LLM 客户端需要调用 'send_text' 工具发送一条文本消息,你需要构造符合 MCP 协议的 JSON-RPC 请求,指定工具名为 'send_text',并在 'params.arguments' 中提供相应的参数,例如:

{
  "jsonrpc": "2.0",
  "method": "call_tool",
  "params": {
    "tool_name": "send_text",
    "arguments": {
      "content": "这是一条来自 MCP 客户端的测试消息!"
    }
  },
  "id": "123"
}

LLM 客户端发送此请求给 'mcp-dingdingbot-server' 后,服务器会调用钉钉机器人 API 发送消息,并将执行结果通过 JSON-RPC 响应返回给客户端。

请根据具体的工具功能和参数要求,参考仓库 'README.md' 中的示例 Prompt 和 'main.go' 中的工具定义,构建你的 MCP 客户端请求。

信息

分类

通信与社交