Token导航 LogoToken导航

MCP Server · AI代理

Opencode Dingtalk MCP Server

钉钉 MCP 服务器是一个基于 Model Context Protocol 的服务器,用于连接钉钉机器人与 OpenCode AI 助手,实现实时双向通信。

未说明官方级别未说明来源级核验工具 4
团队协作实时通信JavaScriptWebSocket本地部署

快速开始

公开资料没有提供安装命令,按仓库或官方文档接入。
作者 / 组织
yewh
提供方
yewh

工具数量

4

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

2

仓库热度

收录来源

1 个

MCP World

选型结论

Opencode Dingtalk MCP Server 属于AI代理类 MCP Server,公开资料标注 4 个工具,通过传输方式未标注接入,客户端适配情况以官方文档为准,没有现成的安装命令;接入前先确认权限范围。

分类

AI代理

传输方式

未说明

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

公开目录没有给出安装命令,需要按仓库 README安装;下面按同类条目的通用流程说明。

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    先确认运行方式

    公开资料没有标注传输方式,先看仓库 README,确认是本地进程还是远程地址。

  2. 2

    获取服务

    公开目录没有给出安装命令,按仓库 README里的步骤安装或获取服务。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 4 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

公开资料仍需确认:安装命令

详细介绍

DingTalk MCP Server

钉钉 MCP 服务器 - 让 OpenCode 与钉钉机器人无缝集成,支持 Stream 模式实时双向通信。

English | 中文


📖 中文文档

🌟 项目简介

DingTalk MCP Server 是一个基于 Model Context Protocol (MCP) 的服务器,它将钉钉机器人与 OpenCode AI 助手连接起来,实现双向消息通信。

核心特性:

  • ✅ Stream 模式 - 实时双向通信,无需公网 IP
  • ✅ LRU 缓存 - 智能内存管理,防止 OOM
  • ✅ 异步队列 - 并发控制,吞吐量提升 3x
  • ✅ HTTP 连接池 - Keep-Alive 复用,发送速度提升 75%
  • ✅ 消息去重 - 防止重复处理同一消息
  • ✅ 频率限制 - 遵守钉钉 API 限制(20条/分钟)
  • ✅ 长消息分片 - 自动处理超过 20KB 的长消息

🏗️ 设计框架

系统架构
┌─────────────┐      WebSocket       ┌──────────────────┐
│   钉钉用户   │ ◄──────────────────► │  DingTalk Stream │
└─────────────┘                      │     (钉钉云端)    │
                                     └────────┬─────────┘
                                              │
                                     WebSocket│Stream
                                              │
                                     ┌────────▼─────────┐
                                     │  DingTalk MCP    │
                                     │     Server       │
                                     │  (本服务器)       │
                                     └────────┬─────────┘
                                              │
                                     MCP Stdio│Protocol
                                              │
                                     ┌────────▼─────────┐
                                     │     OpenCode     │
                                     │   (AI 助手)      │
                                     └──────────────────┘
核心组件

1. DingTalk Stream SDK 客户端

  • 使用 dingtalk-stream-sdk-nodejs 建立 WebSocket 连接
  • 支持 Stream 模式(非 Webhook),实时双向通信
  • 自动重连机制(指数退避,最多 10 次)

2. LRU 缓存管理器

  • 消息去重缓存:1000 条,5 分钟 TTL
  • 会话缓存:100 个,30 分钟 TTL
  • Webhook 缓存:100 个,2 小时 TTL
  • 自动清理过期数据,防止内存泄漏

3. 异步消息队列 (P-Queue)

  • 并发控制:默认 3 并发
  • 削峰填谷:消息缓冲,避免 WebSocket 阻塞
  • 队列监控:实时显示队列大小和堆积情况

4. HTTP 连接池 (Got)

  • Keep-Alive 连接复用
  • 最大连接数:10
  • 超时:10秒,重试:2次

5. MCP 服务器

  • STDIO 传输层
  • JSON-RPC 2.0 协议
  • 工具注册和调用处理

🔑 关键节点

1. 连接管理

DingTalk Stream 连接

const dingtalkClient = new DWClient({
  clientId: process.env.DINGTALK_CLIENT_ID,
  clientSecret: process.env.DINGTALK_CLIENT_SECRET,
});

dingtalkClient
  .registerCallbackListener("/v1.0/im/bot/messages/get", handleMessage)
  .connect();

自动重连机制

连接断开
   ↓
触发 onError 回调
   ↓
指数退避重连策略
   ↓
第1次:等待 5秒
第2次:等待 10秒
第3次:等待 20秒
...最多 10 次
2. 消息处理流程

接收消息流程

钉钉用户发送消息
   ↓
钉钉 Stream 服务器 (WebSocket)
   ↓
DingTalk MCP Server
   ├─ 消息解析 (JSON.parse)
   ├─ 去重检查 (LRU Cache)
   ├─ 保存 Webhook
   ├─ 查找/创建 OpenCode 会话
   ↓
OpenCode AI 处理
   ↓
获取 AI 回复
   ↓
通过 sessionWebhook 发送回钉钉
3. 数据流

发送消息流程

OpenCode 调用 MCP 工具
   ↓
dingtalk_send_message
   ├─ 查找 sessionWebhook (LRU Cache)
   ├─ 检查频率限制
   ├─ 发送 HTTP POST (连接池)
   ↓
钉钉用户收到消息

🚀 快速开始

1. 获取钉钉应用凭证
  1. 访问 钉钉开放平台
  2. 创建企业内部应用
  3. 获取 Client ID 和 Client Secret
2. 安装依赖
git clone 
cd dingtalk-mcp-server
npm install
3. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,填入你的凭证
DINGTALK_CLIENT_ID=your_client_id
DINGTALK_CLIENT_SECRET=your_client_secret
OPENCODE_SERVER_URL=http://127.0.0.1:4096
4. 启动服务器
npm start
5. 配置 OpenCode

在 OpenCode 配置文件(~/.config/opencode/opencode.json)中添加:

{
  "mcp": {
    "dingtalk": {
      "type": "local",
      "command": [
        "node",
        "/path/to/dingtalk-mcp-server/index.mjs"
      ],
      "enabled": true
    }
  }
}
6. 启动OpenCode serve
opencode serve
6. 测试

在钉钉中给机器人发送消息,观察终端输出。

📖 使用方式

方式 1:直接运行
npm start

服务器会自动:

  • 连接到钉钉 Stream
  • 接收消息并转发给 OpenCode
  • 将 OpenCode 回复发送回钉钉
方式 2:在 OpenCode 中使用 MCP 工具

获取统计信息

使用 dingtalk 工具获取统计信息

发送消息

使用 dingtalk 工具发送消息 "你好" 到会话 [conversationId]

列出会话

使用 dingtalk 工具列出会话

获取性能数据

使用 dingtalk 工具获取性能数据
获取 Conversation ID
  1. 启动服务器
  2. 在钉钉中发送消息
  3. 查看终端输出,复制 会话ID
  4. 使用该 ID 发送消息

⚙️ 性能配置

可在代码中调整 CONFIG 对象:

const CONFIG = {
  QUEUE: {
    CONCURRENCY: 3,        // 并发数(1-5)
  },
  CACHE: {
    PROCESSED_MESSAGES_MAX: 1000,  // 消息缓存大小
    SESSIONS_MAX: 100,             // 会话缓存大小
  },
  HTTP: {
    MAX_SOCKETS: 10,       // 连接池大小
  },
};

🐛 故障排除

问题 1:连接失败

  • 检查 Client ID 和 Client Secret
  • 确认钉钉应用已启用
  • 检查网络连接

问题 2:无法发送消息

  • 先在钉钉中发送一条消息获取 sessionWebhook
  • 检查会话 ID 是否正确
  • 确认 sessionWebhook 未过期

问题 3:内存占用过高

  • 减小 CACHE 配置中的 max 值
  • 缩短 TTL 时间
  • 检查是否有内存泄漏

🤝 贡献

欢迎提交 Issue 和 PR!

📄 许可证

MIT License


📖 English Documentation

🌟 Introduction

DingTalk MCP Server is a Model Context Protocol (MCP) based server that connects DingTalk bots with OpenCode AI assistants, enabling bidirectional message communication.

Key Features:

  • ✅ Stream Mode - Real-time bidirectional communication, no public IP needed
  • ✅ LRU Cache - Smart memory management, prevents OOM
  • ✅ Async Queue - Concurrency control, 3x throughput improvement
  • ✅ HTTP Connection Pool - Keep-Alive reuse, 75% faster sending
  • ✅ Message Deduplication - Prevents duplicate message processing
  • ✅ Rate Limiting - Respects DingTalk API limits (20 msg/min)
  • ✅ Long Message Chunking - Auto-handles messages > 20KB

🏗️ Design Framework

System Architecture
┌─────────────┐      WebSocket       ┌──────────────────┐
│ DingTalk    │ ◄──────────────────► │ DingTalk Stream  │
│   User      │                      │   (DingTalk Cloud)│
└─────────────┘                      └────────┬─────────┘
                                              │
                                     WebSocket│Stream
                                              │
                                     ┌────────▼─────────┐
                                     │ DingTalk MCP     │
                                     │    Server        │
                                     │  (This Server)   │
                                     └────────┬─────────┘
                                              │
                                     MCP Stdio│Protocol
                                              │
                                     ┌────────▼─────────┐
                                     │    OpenCode      │
                                     │  (AI Assistant)  │
                                     └──────────────────┘

🚀 Quick Start

1. Get DingTalk App Credentials
  1. Visit DingTalk Open Platform
  2. Create an enterprise internal application
  3. Get Client ID and Client Secret
2. Install Dependencies
git clone 
cd dingtalk-mcp-server
npm install
3. Configure Environment Variables
cp .env.example .env
# Edit .env file with your credentials
DINGTALK_CLIENT_ID=your_client_id
DINGTALK_CLIENT_SECRET=your_client_secret
OPENCODE_SERVER_URL=http://127.0.0.1:4096
4. Start the Server
npm start
5. Configure OpenCode

Add to your OpenCode config file (~/.config/opencode/opencode.json):

{
  "mcp": {
    "dingtalk": {
      "type": "local",
      "command": [
        "node",
        "/path/to/dingtalk-mcp-server/index.mjs"
      ],
      "enabled": true
    }
  }
}
6. Test

Send a message to your bot in DingTalk and observe the terminal output.

📄 License

MIT License


Made with ❤️ for the OpenCode Community

工具与能力

工具数量

4

资源数量

0

提示词数量

0

能力标签

钉钉集成JavaScript本地部署实时通信AI助手MCP协议WebSocket

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

多步任务编排

把拆解、检索、执行串成一条链,模型按步骤调用工具。

长期上下文

把会话、笔记和知识放到外部存储,换个会话还能接着做。

接自有流程

把内部系统和模型连起来,让助手调用已有的工作流。

选择建议

值得选的地方

  • 只提供 4 个工具,职责集中,接入后不容易误操作。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • 公开资料没有可直接复制的安装命令,第一次接入要自己找入口。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在AI代理场景里让模型直接调用外部能力的人。
  • 愿意照着官方文档一步步配环境的人。

不太适合

  • 希望一条命令就装好、不想看文档的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Opencode Dingtalk MCP Server

MCP World · 本页

4未说明未标注1 个2026-05-17
Everything Claude Code

MCP World

0stdio有1 个2026-05-17
Filesystem 560c4363

MCP World

13未说明未标注2 个2026-05-17
Time 7365cb6d

MCP.so

2SSE有2 个2026-05-17
Server Everything (everything)

MCP World

11stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Opencode Dingtalk MCP Server 怎么安装?

公开目录没有给出可以直接复制的安装命令,需要按仓库 README里的步骤安装;装好后写进客户端的 MCP 配置再重启。

Opencode Dingtalk MCP Server 怎么在 Claude Desktop、Cursor 里配置?

它是传输方式未标注,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

Opencode Dingtalk MCP Server 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Opencode Dingtalk MCP Server 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

Opencode Dingtalk MCP Server 支持哪些客户端?

公开资料没有标注具体客户端;能配置本地 MCP 命令的客户端都能接,配置方式参照官方文档。

来源信息

继续浏览同类 MCP