返回市场
钉钉_mcp_v2

钉钉_mcp_v2

作者:wllcnm5 星标更新:2025-01-06

项目介绍

钉钉 MCP 服务器 V2

这是一个基于MCP(模型控制协议)实现的机器人服务器,提供了与钉钉交互的各种功能,包括发送消息、获取会话信息、用户信息以及日历事件。

功能

  • 向钉钉会话发送消息
  • 获取钉钉会话信息
  • 获取钉钉用户信息
  • 查询用户的日历事件
  • 支持多种消息类型(文本、Markdown、链接等)

环境要求

  • Python 3.10+
  • MCP 0.1.0+
  • aiohttp 3.9.1+

环境变量配置

在使用之前,需要设置以下环境变量:

  • DINGTALK_APP_KEY:钉钉应用的AppKey
  • DINGTALK_APP_SECRET:钉钉应用的AppSecret

在Claude客户端中的使用

  1. 在你的claude_desktop_config.json中添加以下配置:
{
  "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"
      ]
    }
  }
}
  1. 重启Claude客户端

注意:上述启动命令将:

  1. 查找并删除所有旧的mcp-dingding-v2容器
  2. 从GitHub拉取最新镜像
  3. 使用--name参数给容器分配一个固定的名称
  4. 使用--rm参数,在容器停止时自动删除

命令说明:

  • docker ps -a | grep mcp-dingding-v2 | awk '{print $1}' | xargs -r docker rm -f:删除所有旧容器
  • docker pull ghcr.io/wllcnm/mcp-dingding-v2:latest:拉取最新镜像
  • docker run -i --rm --name mcp-dingding-v2 ...:运行一个新的容器
  • > /dev/null 2>&1:隐藏不必要的输出信息

本地开发

安装

pip install -r requirements.txt

运行

直接运行服务器:

python src/server.py

使用Docker运行:

# 清理旧容器
docker ps -a | grep mcp-dingding-v2 | awk '{print $1}' | xargs -r docker rm -f

# 构建并运行新容器
docker build -t dingding-mcp-v2 .
docker run -i --rm --name mcp-dingding-v2 \
  -e DINGTALK_APP_KEY=your_app_key \
  -e DINGTALK_APP_SECRET=your_app_secret \
  dingding-mcp-v2

API 工具

1. send_message

向钉钉会话发送消息

  • 参数
    • conversation_id:会话 ID
    • Message:消息内容
    • Msd_type:消息类型(可选,默认为文本)

2. get_conversation_info

获取钉钉会话信息

  • 参数
    • conversation_id:会话 ID

3. get_user_info

获取钉钉用户信息

  • 参数
    • user_id:用户 ID

4. get_calendar_list

查询用户的日历事件列表

  • 参数
    • User ID:用户 ID(必填)
    • Start_time:开始时间的时间戳(毫秒,可选)
    • End_time:结束时间的时间戳(毫秒,可选)
    • X_results:最大返回结果数(可选,默认为50)
    • Next_token:分页标记(可选)
  • 返回值:
    • Events:日历事件列表
      • Summary:事件标题
      • Start_time:开始时间
      • End_time:结束时间
      • Location:地点
      • Organizer:组织者
      • Description:描述
      • Status:状态
      • Attendees:参与者列表
    • next_token:下一页的 token
    • Total:本次返回的事件数量

使用示例

在Claude中,你可以这样使用工具:

{
  "tool": "send_message",
  "arguments": {
    "conversation_id": "你的会话ID",
    "message": "Hello, 钉钉!",
    "msg_type": "text"
  }
}

日历查询示例:

{
  "tool": "get_calendar_list",
  "arguments": {
    "userid": "用户ID",
    "start_time": 1704067200000,  // 2024-01-01 00:00:00
    "end_time": 1704153600000,    // 2024-01-02 00:00:00
    "max_results": 10
  }
}

注意事项

  1. 安全性

    • 请确保您的钉钉API凭证安全可靠
    • 不要在公共场合分享您的配置文件
    • 建议使用环境变量而不是硬编码凭证
  2. 故障排除

    • 检查API凭证是否正确
    • 确保网络连接正常
    • 查看日志输出以获取详细的错误信息

许可证

MIT