项目简介
'mcp-dingdingbot-server' 是一个基于 Model Context Protocol (MCP) 构建的服务器应用,它作为一个桥梁,允许 LLM 客户端通过 MCP 协议调用钉钉机器人,实现向钉钉群组发送各种消息,例如文本、Markdown、图片、图文消息和模板卡片等。这使得 LLM 应用能够方便地集成钉钉的消息通知和互动能力。
主要功能点
- 消息类型丰富:支持发送文本、Markdown、图片、图文(链接)、模板卡片等多种类型的钉钉消息。
- 文件上传:支持上传文件到钉钉机器人,方便进行文件共享。
- 群组通知:可以向钉钉群组发送消息,并支持 '@' 提醒特定成员或全体成员。
- 安全增强:支持签名验证,提高消息发送的安全性(可选配置)。
- 易于集成:作为 MCP 服务器,可以与任何支持 MCP 协议的 LLM 客户端轻松集成。
安装步骤
-
克隆仓库:
git clone https://github.com/HundunOnline/mcp-dingdingbot-server.git cd mcp-dingdingbot-server -
构建可执行文件: 确保已安装 Go 环境和 Make 工具,然后执行以下命令编译:
make build构建成功后,可在 'dist' 目录下找到可执行文件 'mcp-dingdingbot-server_xxx_xxxx',其中 'xxx_xxxx' 代表你的操作系统和架构。
-
安装到系统路径 (可选): 为了方便使用,可以将可执行文件链接到系统路径,例如 '/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 客户端请求。
信息
分类
通信与社交