DingTalk MCP Server V2

DingTalk MCP Server V2

A Model Control Protocol server for integrating with DingTalk, enabling users to send messages, retrieve conversation/user information, and query calendar events through Claude.

wllcnm

Communication
Calendar Management
Python
Visit Server

README

DingTalk MCP Server V2

这是一个基于 MCP (Model Control Protocol) 的钉钉机器人服务器实现。它提供了与钉钉进行交互的各种功能,包括发送消息、获取会话信息、用户信息和日历事件等。

功能特性

  • 发送消息到钉钉会话
  • 获取钉钉会话信息
  • 获取钉钉用户信息
  • 查询用户日历事件
  • 支持多种消息类型(文本、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: 消息内容
    • msg_type: 消息类型(可选,默认为 text)

2. get_conversation_info

获取钉钉会话信息

  • 参数:
    • conversation_id: 会话 ID

3. get_user_info

获取钉钉用户信息

  • 参数:
    • user_id: 用户 ID

4. get_calendar_list

查询用户的日历事件列表

  • 参数:
    • userid: 用户 ID(必填)
    • start_time: 开始时间的时间戳(毫秒,可选)
    • end_time: 结束时间的时间戳(毫秒,可选)
    • max_results: 最大返回结果数(可选,默认 50)
    • next_token: 分页 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, DingTalk!",
    "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

Recommended Servers

graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Apple MCP Server

Apple MCP Server

Enables interaction with Apple apps like Messages, Notes, and Contacts through the MCP protocol to send messages, search, and open app content using natural language.

Featured
Local
TypeScript
google-calendar-mcp

google-calendar-mcp

Lets LLMs read and manage Google Calendar events.

Featured
Local
TypeScript
DuckDuckGo MCP Server

DuckDuckGo MCP Server

A Model Context Protocol (MCP) server that provides web search capabilities through DuckDuckGo, with additional features for content fetching and parsing.

Featured
Python
YouTube Transcript MCP Server

YouTube Transcript MCP Server

This server retrieves transcripts for given YouTube video URLs, enabling integration with Goose CLI or Goose Desktop for transcript extraction and processing.

Featured
Python
@kazuph/mcp-gmail-gas

@kazuph/mcp-gmail-gas

Model Context Protocol server for Gmail integration. This allows Claude Desktop (or any MCP client) to interact with your Gmail account through Google Apps Script.

Featured
JavaScript
MCP Server Trello

MCP Server Trello

Facilitates interaction with Trello boards via the Trello API, offering features like rate limiting, type safety, input validation, and error handling for seamless management of cards, lists, and board activities.

Featured
TypeScript
Tavily MCP Server

Tavily MCP Server

Provides AI-powered web search capabilities using Tavily's search API, enabling LLMs to perform sophisticated web searches, get direct answers to questions, and search recent news articles.

Featured
Python
Linear MCP Server

Linear MCP Server

A Model Context Protocol server that integrates with Linear's issue tracking system, allowing LLMs to create, update, search, and comment on Linear issues through natural language interactions.

Featured
JavaScript
Todoist MCP Server

Todoist MCP Server

An MCP server that integrates Claude with Todoist, enabling natural language task management including creating, updating, completing, and deleting tasks.

Featured
JavaScript