项目简介

钉钉MCP服务器是一个基于 Model Context Protocol (MCP) 实现的应用后端,旨在将钉钉的开放接口能力暴露给支持MCP协议的大模型客户端。通过该服务器,大模型可以直接调用钉钉提供的各种API,例如管理组织架构、员工信息、角色权限、外部联系人等,从而实现智能化的企业管理和办公自动化。

主要功能点

  • 钉钉接口集成: 将钉钉开放平台提供的丰富API封装为可供大模型调用的“工具(Tools)”。
  • 组织架构管理: 支持创建、更新、删除部门,获取部门详情、子部门列表、父部门列表等。
  • 员工信息管理: 支持创建、更新、删除员工(包括不同类型的企业账号),搜索员工,获取员工详情、离职记录、管理员列表等。
  • 角色与权限管理: 支持创建、更新、删除角色、角色组,批量增删员工角色,设定角色成员管理范围。
  • 通讯录可见性控制: 支持新增、修改、删除通讯录隐藏设置和限制查看设置,设置用户属性可见性,设置部门可见性优先级。
  • 外部联系人管理: 支持添加、更新、删除、获取外部联系人及其标签列表。
  • 企业与账号信息查询: 支持获取企业认证信息、邀请信息、钉钉指数、企业账号状态和拥有的组织等。
  • 大模型友好接口: 遵循MCP协议,将复杂的钉钉API转换为结构化的工具定义,方便大模型理解和调用。
  • 安全通信: 通过环境变量配置AppKey和AppSecret,实现与钉钉API的安全认证。

安装步骤

  1. 环境准备: 确保您的系统已安装 Python 环境。
  2. 创建钉钉应用:钉钉开发者后台创建一个企业内部应用。
  3. 配置应用权限: 为创建的应用授予调用所需钉钉开放接口的权限。
  4. 获取密钥: 在钉钉开发者后台获取应用的 AppKey 和 AppSecret。
  5. 克隆仓库: 将 dingtalk_mcp_server 仓库克隆到本地。
  6. 创建配置文件: 参考仓库中的 '.env.example' 文件,创建 '.env' 文件,并在其中配置您在步骤4中获取的 AppKey 和 AppSecret。
  7. 安装依赖: 在项目根目录,使用 pip 安装项目所需的依赖库。
    pip install -r requirements.txt # 假设存在requirements.txt,或根据实际情况安装uv和aiohttp等
    或者如果使用uv:
    # 安装 uv
    # 安装项目依赖
    uv sync

服务器配置(供MCP客户端使用)

此服务器设计为由支持MCP协议的客户端(如 Cursor, Cline 或其他自定义客户端)通过标准输入/输出(Stdio)协议启动和通信。您需要在客户端的MCP配置中添加如下信息:

{
  "mcpServers": {
    "dingtalk-connector": { // 服务器的唯一标识名称,可自定义
      "command": "uv", // 启动服务器的可执行命令
      "args": ["run", "src/main.py"], // 传递给命令的参数,用于运行入口文件
      "env": {} // 可选:需要传递给服务器进程的环境变量
      // 其他可能的客户端配置字段(如 disable, autoApprove 等)
    }
  }
}

参数说明:

  • 'command': 启动 dingtalk_mcp_server 进程的命令。通常指向 Python 环境中的 'uv' 或 'python' 可执行文件。
  • 'args': 传递给 'command' 的参数列表。'run src/main.py' 表示使用 uv 运行项目入口文件 'src/main.py'。如果直接使用 python,可能是 '["src/main.py"]'。请根据实际安装和运行方式调整。
  • 'env': 启动服务器进程时需要设置的环境变量。在本例中,AppKey 和 AppSecret 是通过 '.env' 文件加载的,通常不需要在此处单独配置。但如果有其他特殊环境变量需求,可在此添加。

基本使用方法

  1. 配置客户端: 按照上述“服务器配置”部分,在您使用的MCP客户端(如 Cursor, Cline)中添加 dingtalk_mcp_server 的启动配置。
  2. 启动客户端: 启动您的MCP客户端。客户端会根据配置自动启动 dingtalk_mcp_server 进程并建立连接。
  3. 通过大模型交互: 在MCP客户端中,通过与大模型的对话或交互界面,大模型即可识别并调用 dingtalk_mcp_server 提供的钉钉相关工具。例如,您可以向大模型提问“帮我查询一下部门ID为12345的部门详情”,大模型可能会自动调用 'get_department_detail' 工具并返回结果。

信息

分类

AI与计算