
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_ID和DINGTALK_Client_Secret。通过ACTIVE_PROFILES环境变量激活所需的功能模块(如dingtalk-contacts,dingtalk-calendar),设置为ALL则激活全部服务。其他可选变量包括ROBOT_CODE、ROBOT_ACCESS_TOKEN和DINGTALK_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传输协议。
Basic information
More Other MCP servers
Unity MCP ✨
justinpbarnettUnity MCP acts as a bridge between AI assistants and your Unity Editor. Give your LLM tools to manage assets, control scenes, edit scripts, and automate tasks within Unity.
Blender
ahujasidOpen-source MCP to use Blender with any LLM
Awesome Mlops
visengerA curated list of references for MLOps
Codelf
unbugA search tool helps dev to solve the naming things problem.
AutoBrowser MCP
autobrowser-aiBrowser MCP is a Model Context Provider (MCP) server that allows AI applications to control your browser
Comments