DingTalk MCP Server V2 使用说明

项目简介

本项目是一个基于 Model Context Protocol (MCP) 构建的钉钉机器人服务器。它允许大型语言模型(LLM)通过标准化的 MCP 协议,调用钉钉开放API,实现与钉钉的集成,例如查询用户信息、日历事件、发送消息等。

主要功能点

  • 用户信息查询: 获取钉钉用户的详细信息,如姓名、部门、职位等。
  • 日历事件查询: 查询用户的日程安排,包括会议、日程等事件信息。
  • 消息发送: 向钉钉会话发送文本、Markdown等多种类型的消息。
  • 工具集成: 通过 MCP 协议将钉钉功能封装为工具,方便 LLM 调用。
  • 易于部署: 提供 Docker 镜像和本地运行方式,方便用户快速部署和使用。

安装步骤

  1. 环境准备: 确保已安装 Python 3.10+ 和 pip。
  2. 安装依赖: 克隆仓库到本地后,在项目根目录下运行命令安装依赖:
    pip install -r requirements.txt

服务器配置

为了让 MCP 客户端(如 Claude)连接到 DingTalk MCP Server,需要在客户端的配置文件中添加服务器配置信息。以下是 'claude_desktop_config.json' 的配置示例,请根据实际情况替换 'DINGTALK_APP_KEY' 和 'DINGTALK_APP_SECRET' 的值

{
  "mcpServers": {
    "dingding": {
      "command": "sh",
      "args": [
        "-c",
        "docker ps -a | grep mcp-dingding-v2 | awk '{print $1}' | xargs -r docker rm -f > /dev/null 2>&1; docker pull ghcr.io/wllcnm/mcp-dingding-v2:latest > /dev/null 2>&1; docker run -i --rm --name mcp-dingding-v2 -e DINGTALK_APP_KEY=你的AppKey -e DINGTALK_APP_SECRET=你的AppSecret ghcr.io/wllcnm/mcp-dingding-v2:latest"
      ]
    }
  }
}

配置参数说明:

  • '"dingding"': 服务器名称,可以自定义,在 Claude 客户端中引用时使用。
  • '"command": "sh"': 指定启动命令解释器为 'sh'。
  • '"args"': 启动参数列表,这里使用 Docker 命令启动 DingTalk MCP Server 容器。
    • 'docker ps -a | grep mcp-dingding-v2 | awk '{print $1}' | xargs -r docker rm -f': 查找并删除旧的 'mcp-dingding-v2' 容器(如果存在)。
    • 'docker pull ghcr.io/wllcnm/mcp-dingding-v2:latest': 拉取最新的 DingTalk MCP Server Docker 镜像。
    • 'docker run -i --rm --name mcp-dingding-v2 ... ghcr.io/wllcnm/mcp-dingding-v2:latest': 运行 Docker 容器。
      • '-i --rm': 以交互模式运行,并在容器退出时自动删除容器。
      • '--name mcp-dingding-v2': 指定容器名称为 'mcp-dingding-v2'。
      • '-e DINGTALK_APP_KEY=你的AppKey': 设置环境变量 'DINGTALK_APP_KEY',请替换为你的钉钉应用的 AppKey
      • '-e DINGTALK_APP_SECRET=你的AppSecret': 设置环境变量 'DINGTALK_APP_SECRET',请替换为你的钉钉应用的 AppSecret
      • 'ghcr.io/wllcnm/mcp-dingding-v2:latest': 使用的 Docker 镜像。

注意: 请务必将 '"你的AppKey"' 和 '"你的AppSecret"' 替换为你在钉钉开放平台创建应用后获得的 AppKeyAppSecret

基本使用方法

配置完成后,重启 Claude 客户端,即可使用 DingTalk MCP Server 提供的工具。

工具调用示例 (在 Claude 中)

  1. 查询用户日历事件:

    {
      "tool": "get_calendar_list",
      "arguments": {
        "userid": "用户工号",
        "start_time": 1704067200000,
        "end_time": 1704153600000,
        "max_results": 10
      }
    }

    将 '"用户工号"' 替换为实际的钉钉用户工号,'start_time' 和 'end_time' 为可选的时间戳参数。

  2. 获取用户详细信息:

    {
      "tool": "get_user_detail",
      "arguments": {
        "userid": "用户工号"
      }
    }

    将 '"用户工号"' 替换为实际的钉钉用户工号。

更多工具及其参数信息,请参考仓库 README.md 文件中 "API 工具" 部分的详细说明。

信息

分类

通信与社交