MCP.so
Sign In

Dingtalk MCP

@open-dingtalk

About Dingtalk MCP

钉钉OpenAPI MCP Server.

Config

Add this server to your MCP-compatible client using the configuration below.

{
  "mcpServers": {
    "dingtalk": {
      "command": "npx",
      "args": [
        "-y",
        "dingtalk-mcp@latest"
      ],
      "env": {
        "DINGTALK_Client_ID": "your dingtalk app client id",
        "DINGTALK_Client_Secret": "your dingtalk app cliengt secret",
        "ACTIVE_PROFILES": "ALL"
      }
    }
  }
}

Tools

98

创建企业内部应用,支持H5微应用和小程序两种类型

更新企业内部应用信息,包括应用名称、描述、图标、链接等

获取企业所有应用列表,包括基础应用、自建应用和第三方应用

获取企业内部所有应用列表,仅限内部开发的应用

获取指定用户可使用的企业应用列表及应用信息

获取企业内部应用的可使用范围信息(用户、部门、角色)

更新企业内部应用的可使用范围,支持增删用户、部门、角色

发布企业内部小程序版本,支持线上版本和体验版本

回滚企业内部小程序到历史版本

获取企业内部小程序的所有版本信息

分页获取企业内部小程序历史版本列表

创建一个新的日程,支持设置时间、地点、参与者、提醒、重复规则等

修改已存在的日程信息

删除指定的日程

查询单个日程的详细信息

添加日程参与者,每次最多支持操作500人

删除日程参与者,每次最多支持操作500人

获取日程参与者列表

查询日程视图,按时间范围获取日程列表

获取部门用户签到记录,以部门维度获取员工签到记录进行统计分析

获取指定用户的签到记录,可获取指定人员的签到记录进行统计分析

获取当前日期和时间

根据姓名搜索钉钉通讯录用户的userId。

查询用户详情 - 根据userId获取用户的详细信息,包含用户的unionId。

根据手机号获取用户的userId。

根据unionId获取用户的userId。

获取指定部门下的所有成员的userId。

获取指定部门的详细信息,包括部门名称、父部门、管理员、权限设置等完整信息

根据部门名称搜索部门ID,支持部门名称或拼音搜索

获取指定部门的下一级子部门基础信息列表

获取指定部门下的所有直属子部门ID列表

获取指定部门的所有父部门ID列表,从当前部门到根部门的完整路径

获取指定用户所属的所有父级部门路径,返回用户所有部门归属的层级结构

使用机器人发送 DING 消息(高优先级提醒)。只有当用户明确提到“发 DING”、“DING 一下”、“钉一下””等关键词时,才调用此工具。 DING 消息通常带有强提醒,不同于普通消息。未明确要求时,请勿调用。

撤回机器人发送的DING消息

给组织内的员工颁发荣誉,支持单人或多人批量颁发。 颁发后员工会收到荣誉推送消息,可以选择佩戴荣誉挂件。 注意:同一个颁发人不允许并发执行,需要串行调用。

查询当前企业下可颁发的荣誉列表,包括荣誉ID、名称、描述、图标等信息。 支持分页查询,可用于展示荣誉选择列表。

查询某个员工获得的组织荣誉记录,包括荣誉ID、名称、授予时间、发放人等信息。 可用于展示员工的荣誉墙或荣誉历史。

创建企业荣誉勋章模板。创建后会流入钉钉后台审核,一般5个工作日内审核完毕。 注意事项: 1. 需要主管理员或子管理员权限 2. 企业每周的审核次数有限制(标准版每周10次/专业版每周20次) 3. 不允许并发调用,如需批量创建请串行执行 4. 图片需要先调用上传媒体文件接口获取media_id

撤销员工已获得的荣誉勋章。 撤销后员工将无法继续佩戴该荣誉。

AI表格/多维表支持的搜索过滤条件

AI表格/多维表支持的字段类型和额外属性

AI表格/多维表记录值格式

根据名称查询AI表格/多维表

获取AI表格/多维表的单个数据表的ID和名称

获取AI表格/多维表的所有数据表

更新AI表格/多维表的单个数据表的名称

创建AI表格/多维表的数据表

删除AI表格/多维表的单个数据表

获取AI表格/多维表里指定数据表的多行记录

获取AI表格/多维表里指定数据表的单行记录

删除AI表格/多维表里指定数据表的多行记录

在AI表格/多维表里指定数据表中新增行记录

更新AI表格/多维表里指定数据表的多行记录

获取AI表格/多维表里指定数据表的所有字段

在AI表格/多维表里指定数据表中创建字段

删除AI表格/多维表里指定数据表的字段

更新AI表格/多维表里指定数据表的字段,建议先从「getNotableAllFields」Tool中获取要更新字段的类型。

发送工作通知消息,支持 markdown 消息类型

获取工作通知消息的发送结果,查询消息发送状态和统计信息

获取工作通知消息的发送进度,实时查询消息发送进度

撤回已发送的工作通知消息,消息撤回后接收人将无法看到该消息

创建并发送工作日志到指定接收人。 【重要提示】contents参数格式复杂,必须严格按照以下格式构造: 1. 每个content对象必须包含5个字段:content_type, sort, type, content, key 2. content_type固定为"markdown" 3. sort和type的值需要从getTemplateDetail接口获取 4. key为字段名称,content为实际填写的内容 【使用流程】 1. 先调用getTemplateDetail获取模板字段信息 2. 根据返回的fields构造contents数组 3. 调用本接口创建日志 【完整示例】 对于"空白日志"模板: { "template_id": "1740b290d90f07517b0d3b14da2b4b7b", "contents": [ { "content_type": "markdown", "sort": 0, "type": 1, "content": "今天完成了项目开发工作", "key": "内容" } ], "userid": "0420131813787933", "to_chat": true, "dd_from": "MCP_ASSISTANT", "to_userids": ["0420131813787933"] } 【常见参数组合】 - 发送给自己:to_userids=["自己的userid"], to_chat=true - 发送给他人:to_userids=["他人userid1", "他人userid2"], to_chat=true - 发送到群:to_cids=["群id1"], to_chat=false

保存日志内容供后续编辑和发送(草稿功能)。 此接口用于保存日志内容但不立即发送,可以后续在钉钉中编辑和发送。 contents参数格式与「createReport」相同,必须包含完整的字段结构。 【使用场景】 - 需要保存日志但暂不发送 - 创建模板供后续使用 - 批量准备多个日志内容 【参数格式】与createLog的contents参数完全相同

查询用户发出的日志列表。 可以根据时间范围、模板名称、用户等条件查询日志列表。 支持分页查询,适用于批量处理和数据分析。 【使用场景】 - 查看个人的日志历史 - 统计团队日志数据 - 查找特定时间段的日志 【时间参数说明】 - start_time和end_time最多相隔180天 - 时间格式为Unix时间戳(毫秒) - 可使用JavaScript的Date.now()或new Date().getTime()获取 【查询示例】 查询最近7天的所有日志: { "start_time": 1703145600000, // 7天前的时间戳 "end_time": 1703750400000, // 当前时间戳 "cursor": 0, "size": 10 }

获取用户可见的日志模板列表。 返回当前用户有权限查看和使用的所有日志模板。 模板包含基本信息如名称、ID等,不包含详细字段信息。 【使用场景】 - 查看可用的日志模板 - 获取模板基本信息 - 为用户选择提供模板列表 【返回信息】 - template_list: 模板列表 - 每个模板包含:name(名称)、report_code(ID)等 【后续操作】 获取到模板列表后,可使用getTemplateDetail获取具体模板的字段信息。

查看日志模板的详细字段和配置信息。 返回模板的完整字段定义,这是构造createLog的contents参数的关键信息。 每个字段包含field_name、sort、type等属性,用于构造正确的日志内容。 【重要性】 此接口是使用createLog的前置条件!必须先获取模板详情才能正确构造contents参数。 【返回字段说明】 - fields数组:模板的所有字段定义 - 每个field包含: - field_name: 字段名称(用于contents的key) - sort: 排序序号(用于contents的sort) - type: 字段类型(用于contents的type,1=文本) 【使用示例】 1. 调用此接口获取模板详情 2. 根据返回的fields构造contents数组 3. 调用createLog创建日志 对于"空白日志"模板的响应示例: { "fields": [ { "field_name": "内容", "sort": 0, "type": 1 } ], "id": "1740b290d90f07517b0d3b14da2b4b7b", "name": "空白日志" }

向群聊发送普通消息(非 DING、非待办)。 例如,当用户说“在群里说一下”、“通知到XX群”但未提及“DING”或“钉一下”时使用。

撤回机器人发送的群消息

使用机器人向一个或多个个人用户发送消息。适用于一对一单聊场景。 当用户明确表示要给一个或多个个人发送消息(非群聊)时,使用此工具。 注意:此工具仅用于单聊,不能用于群组。如果目标是群,请使用 sendMessageToGroupByCustomRobot 或者 sendMessageToGroupByRobot。

批量撤回机器人给人发送的消息

使用群自定义机器人向指定群发送消息。 仅在用户明确要求“使用自定义机器人”或“通过自定义机器人发消息”时调用此工具。 注意:此工具只能用于向群(group)发送消息,不能用于单聊或个人用户。 如果用户未明确提及自定义机器人,请不要调用此工具。

发送服务窗单人消息

批量发送服务窗消息

获取关注服务窗的单个用户信息

批量获取关注服务窗用户的信息

获取用户的服务窗关注状态

获取企业下的服务窗列表,以获取服务窗帐号IDaccountId

查询钉钉待办/任务列表

删除钉钉待办

创建待办

更新待办

更新执行人待办状态

创建项目

根据项目名称模糊查询项目信息

根据项目ID查询项目状态信息

根据项目ID查询项目成员信息

添加项目成员

添加项目成员

查询项目中的任务列表

查询用户项目任务信息列表

查询项目任务详情

创建项目任务

删除项目任务

更新项目任务备注

更新项目任务标题

更新项目任务执行者

更新项目任务参与者

Overview

What is 钉钉MCP Server?

钉钉MCP Server是一个基于Model Context Protocol(MCP)的服务器,它将钉钉开放平台的多项API封装为MCP工具,使AI助手能够通过自然语言调用钉钉功能。该服务器面向需要使用AI操作钉钉通讯录、部门、机器人消息、待办、日程、签到、工作通知、应用管理、服务窗等场景的开发者和企业。

How to use 钉钉MCP Server?

通过配置MCP客户端(如Claude Desktop)的mcpServers,添加名为dingtalk-mcp的服务器,使用npx -y dingtalk-mcp@latest命令运行,并设置环境变量DINGTALK_Client_IDDINGTALK_Client_Secret。通过ACTIVE_PROFILES环境变量激活所需的功能模块(如dingtalk-contacts,dingtalk-calendar),设置为ALL则激活全部服务。其他可选变量包括ROBOT_CODEROBOT_ACCESS_TOKENDINGTALK_AGENT_ID

Key features of 钉钉MCP Server

  • 提供钉钉通讯录与部门管理工具
  • 支持机器人发送消息和DING通知
  • 管理钉钉待办事项(读写权限)
  • 操作钉钉日程、签到、工作通知
  • 集成钉钉企业文化荣誉管理
  • 覆盖钉钉应用管理与服务窗接口

Use cases of 钉钉MCP Server

  • 通过AI助手快速查询企业内部员工通讯录
  • 自动向钉钉群发送定时消息或DING提醒
  • 创建和跟踪团队待办任务
  • 管理员工日程并查看签到情况
  • 发送工作通知到指定人员或部门

FAQ from 钉钉MCP Server

如何获取钉钉Client ID和Client Secret?

需要先在钉钉开放平台注册成为开发者,创建应用后从应用详情页的“凭证与基础信息”中获取Client ID和Client Secret,并根据启用的MCP服务添加相应的API权限。

如何获取机器人Code用于发送消息?

参考钉钉官方文档“创建机器人”,在应用中配置机器人后获得机器人Code,再通过环境变量ROBOT_CODE设置即可。

环境变量ACTIVE_PROFILES如何配置?

该变量用于激活指定的MCP服务,多个服务用逗号分隔,例如dingtalk-contacts,dingtalk-calendar;设置为ALL则激活全部已列出的服务。默认激活通讯录和机器人发送消息两个模块。

有哪些依赖或运行环境要求?

需要Node.js环境,通过npx运行;无需本地安装,但需要外网访问钉钉开放平台的API。钉钉Client ID和Client Secret必须提前获取。

支持哪些传输和认证方式?

使用钉钉OAuth 2.0的Client ID和Client Secret进行认证,通过环境变量传入;服务器与MCP客户端之间采用标准的stdio传输协议。

Frequently asked questions

如何获取钉钉Client ID和Client Secret?

需要先在[钉钉开放平台](https://open.dingtalk.com)注册成为开发者,创建应用后从应用详情页的“凭证与基础信息”中获取Client ID和Client Secret,并根据启用的MCP服务添加相应的API权限。

如何获取机器人Code用于发送消息?

参考钉钉官方文档“创建机器人”,在应用中配置机器人后获得机器人Code,再通过环境变量`ROBOT_CODE`设置即可。

环境变量ACTIVE_PROFILES如何配置?

该变量用于激活指定的MCP服务,多个服务用逗号分隔,例如`dingtalk-contacts,dingtalk-calendar`;设置为`ALL`则激活全部已列出的服务。默认激活通讯录和机器人发送消息两个模块。

有哪些依赖或运行环境要求?

需要Node.js环境,通过`npx`运行;无需本地安装,但需要外网访问钉钉开放平台的API。钉钉Client ID和Client Secret必须提前获取。

支持哪些传输和认证方式?

使用钉钉OAuth 2.0的Client ID和Client Secret进行认证,通过环境变量传入;服务器与MCP客户端之间采用标准的stdio传输协议。

Comments

More Other MCP servers