Back to MCP directory
publicPublicdnsLocal runtime

钉钉文档解析

一个用于解析钉钉文档内容并生成HTML的MCP服务器,提供Python和Node.js两个版本实现,支持智能Cookie管理、自动登录和多种文档元素渲染。

article

README

🚀 钉钉文档解析 MCP 服务器

🎯 这是一个用于解析钉钉文档内容并生成 HTML 的 MCP (Model Context Protocol) 服务器,能帮助你高效处理钉钉文档。

MCP Python Node.js TypeScript

✨ 主要特性

  • 🔐 完整解析流程:通过 GET 请求提取 dentryKey,再进行 POST 请求,最终生成 HTML。
  • 📊 多元素支持:支持解析段落、表格、图片、代码块、富文本等多种文档元素。
  • 🎨 美观渲染:采用渐变色 UI 和深色代码主题,呈现美观的视觉效果。
  • 📋 代码复制:代码块支持一键复制,方便用户操作。
  • 🌐 灵活输入:既支持输入完整的文档 URL,也支持输入 NODE_ID。
  • 📁 智能归档:可按文档标题自动创建文件夹,便于管理。
  • 🍪 智能 Cookie 管理:Node.js 版本可自动检测 Cookie 失效并引导用户登录。

🚀 快速开始

本项目提供 PythonNode.js 两个版本,功能相同,你可根据自己的技术栈进行选择。

📁 目录结构

mcp-dingtalk-doc/
├── README.md              # 本文件
├── .gitignore            # Git 忽略配置
├── mcp_config_example.json  # 配置示例
├── python/               # Python 版本 🐍
│   ├── server.py         # MCP 服务器
│   ├── cookie_manager.py # Cookie 管理
│   ├── pyproject.toml    # 项目配置
│   ├── requirements.txt  # 依赖列表
│   └── README.md         # Python 版本文档
└── nodejs/               # Node.js/TypeScript 版本 ⚡
    ├── src/              # TypeScript 源码
    │   ├── index.ts      # MCP 服务器入口
    │   ├── cookie-manager.ts  # Cookie 管理
    │   ├── smart-cookie.ts    # 智能 Cookie
    │   └── ...
    ├── dist/             # 编译后的 JS
    ├── package.json      # 项目配置
    ├── tsconfig.json     # TypeScript 配置
    └── README.md         # Node.js 版本文档

选择版本

🐍 Python 版本 - 查看详细文档

# 1. 进入 Python 目录
cd python

# 2. 安装依赖
pip install -e .

# 3. 配置 Cookie(环境变量)
export DINGTALK_COOKIE="your_cookie_here"

# 4. 配置 MCP
# 编辑 ~/.cursor/mcp.json 或 %APPDATA%\Cursor\mcp.json

⚡ Node.js 版本 - 查看详细文档 (推荐)

# 1. 进入 Node.js 目录
cd nodejs

# 2. 安装依赖
npm install

# 3. 构建项目
npm run build

# 4. 自动登录获取 Cookie(推荐)
npm run cookie:login
# 浏览器会自动打开,扫码登录后自动保存 Cookie

# 5. 配置 MCP
# 编辑 ~/.cursor/mcp.json 或 %APPDATA%\Cursor\mcp.json

💻 使用示例

在 Cursor 中使用

配置完成后,在 Cursor 聊天框中直接输入:

请帮我解析这个钉钉文档:
https://alidocs.dingtalk.com/i/nodes/Y1OQX0akWm3ZoLgLhADaaXPMJGlDd3mE

AI 会自动调用 MCP 工具解析文档!

可用工具

1. parse_document - 完整解析并保存

解析钉钉文档,提取内容并生成 HTML 文件。

参数

  • url_or_node_id (必需):钉钉文档 URL 或 NODE_ID
  • cookie (可选):Cookie,未提供则使用环境变量或自动登录
  • save_files (可选):是否保存文件,默认 true
  • output_dir (可选):输出目录路径

示例

{
  "url_or_node_id": "https://alidocs.dingtalk.com/i/nodes/xxx",
  "save_files": true
}

输出

~/Documents/cursor-mcp/dingDoc/文档标题/
├── {NODE_ID}_mainsite.json      # GET 请求数据
├── {NODE_ID}_document.json      # POST 请求数据
├── {NODE_ID}_content.json       # 文档详细内容
└── {NODE_ID}.html               # 生成的 HTML ⭐

2. get_html - 快速获取 HTML

快速获取 HTML 内容(不保存文件)。

参数

  • url_or_node_id (必需):钉钉文档 URL 或 NODE_ID
  • cookie (可选):Cookie

📚 详细文档

支持的文档元素

| 元素 | 标签 | 功能 | |------|------|------| | 段落 | p | 文本段落、富文本 | | 文本样式 | span | 粗体、斜体、颜色、字号 | | 表格 | table | 完整表格、单元格合并 | | 图片 | img | 图片显示、懒加载 | | 代码块 | code | 11 种语言、语法高亮、一键复制 |

HTML 样式特点

  • 🌈 渐变色背景(紫色系)
  • 📱 响应式设计,支持移动端
  • 💻 深色代码主题(VS Code Dark+)
  • ✨ 流畅动画效果
  • 📋 代码块一键复制
  • 🖼️ 图片自适应显示

版本对比详情

Python 版本优势

  • ✅ 成熟稳定,已在多个项目中使用
  • ✅ Python 生态丰富,易于扩展
  • ✅ 适合 Python 技术栈的团队
  • ✅ 依赖简单,安装快速

Node.js 版本优势

  • 启动速度快 5 倍(100ms vs 500ms)
  • 📦 包体积小 40%(30MB vs 50MB)
  • 🔥 智能 Cookie 管理:自动检测失效并引导登录
  • 🌐 Playwright 自动登录:无需手动复制 Cookie
  • 💾 Cookie 持久化:7 - 30 天内无需重新登录
  • MCP 官方 SDK:更好的兼容性和支持
  • 🎯 TypeScript 类型安全:更少的运行时错误
  • 原生异步:性能更优

Cookie 管理对比

Python 版本

# 手动获取 Cookie
# 1. 浏览器打开钉钉文档
# 2. F12 → Network → 复制 Cookie
# 3. 设置环境变量
export DINGTALK_COOKIE="your_cookie"

Node.js 版本(智能管理)

# 方式 1:自动登录(推荐)
npm run cookie:login
# 浏览器自动打开 → 扫码登录 → 自动保存 ✅

# 方式 2:智能获取
npm run cookie:auto
# 如果 Cookie 有效就用现有的,无效则自动登录 ✅

# 方式 3:检查有效性
npm run cookie:check

配置示例

Python 版本配置

{
  "mcpServers": {
    "dingtalk-doc-python": {
      "command": "python",
      "args": ["C:/path/to/python/server.py"],
      "env": {
        "DINGTALK_COOKIE": "your_cookie"
      }
    }
  }
}

Node.js 版本配置

{
  "mcpServers": {
    "dingtalk-doc-nodejs": {
      "command": "node",
      "args": ["C:/path/to/nodejs/dist/index.js"],
      "env": {
        "DINGTALK_COOKIE": "your_cookie (可选,会自动登录)"
      }
    }
  }
}

🔧 技术细节

已知限制

  • ⚠️ OSS 加密的文档内容暂不支持完整解密
  • ⚠️ 部分特殊元素(列表、引用块等)待支持
  • ⚠️ Cookie 会过期(Python 版本需要手动更新,Node.js 版本会自动处理)

更新日志

v2.0.0 (2025-12-01) - Node.js 版本

  • ✅ 新增 Node.js/TypeScript 实现
  • 🔥 智能 Cookie 管理(自动检测失效并引导登录)
  • 🌐 Playwright 自动登录支持
  • ⚡ 启动速度提升 5 倍
  • 📦 包体积减少 40%
  • 🎯 TypeScript 类型安全
  • ✅ MCP 官方 SDK

v1.0.0 (2025-11-03) - Python 版本

  • ✅ 初始版本(Python)
  • ✅ 支持文档解析和 HTML 生成
  • ✅ 支持 5 种文档元素
  • ✅ 代码块一键复制功能

🤝 贡献

欢迎提交 Issue 和 Pull Request!

两个版本都需要维护,如果你:

  • 熟悉 Python → 可以改进 Python 版本
  • 熟悉 Node.js/TypeScript → 可以改进 Node.js 版本

📄 许可证

MIT License - 本项目仅供学习和研究使用。

👨‍💻 作者

  • 原作者:黄云堃 (Yunkun Huang) - Python 版本
  • Node.js 版本:shinjiyu - TypeScript 重写 + 智能 Cookie 管理

🔗 相关链接


快速开始:选择你喜欢的版本 → 查看对应的 README → 安装配置 → 使用!🚀

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client