Dingtalk Ai Table — Dingtalk AI Table
v0.6.0钉钉 AI 表格(多维表)操作技能。使用 mcporter 命令行工具 连接钉钉官方新版 AI 表格 MCP server,基于 baseId / tableId / fieldId / recordId 体系执行 Base、Table、Field、Record 的查询与增删改。适用于创建 AI 表格、搜索表格、读取表结构、批量增删改记录、批量建字段、更新字段配置、按模板建表等场景。需要配置 DINGTALK_MCP_URL 或直接使用 流able HTTP URL。
运行时依赖
安装命令
点击复制技能文档
钉钉 AI 表格操作(新版 MCP) 🚀 5 分钟快速开始 1️⃣ 列出我的表格 mcporter call '' .列出_bases limit=5
2️⃣ 创建新表格 mcporter call '' .创建_base baseName='我的项目'
3️⃣ 添加记录 mcporter call '' .创建_records \ --args '{"baseId":"base_xxx","tableId":"tbl_xxx","records":[{"cells":{"fld_name":"张三"}}]}'
4️⃣ 查询记录 mcporter call '' .查询_records \ --args '{"baseId":"base_xxx","tableId":"tbl_xxx","limit":10}'
5️⃣ 批量导入 python3 scripts/导入_records.py base_xxx tbl_xxx data.csv
核心概念
按 新版 MCP 模式 工作:
Base:baseId Table:tableId Field:fieldId Record:recordId
不要再用旧版 dentryUuid / sheetIdOrName / fieldIdOrName。
推荐使用 mcporter 0.8.1 及以上版本。
输出模式兼容说明:
mcporter 0.8.1+ 可直接调用 更低版本需要显式加 --输出 text AI 表格 MCP 无论使用哪种模式,返回体本身都是标准 JSON;差异主要在 mcporter 的输出处理方式 版本守门规则(每个 MCP Server 地址只强制检查一次)
在真正开始任何 AI 表格操作前,必须先检查当前 mcporter 注册的 dingtalk-AI-table MCP server 实际返回的 工具s 模式。但这个检查不该每次都重复做;同一个 MCP Server 地址只需要强制检查一次。
一次性检查策略 先读取当前 mcporter 里 dingtalk-AI-table 对应的 MCP Server 地址。 用这个地址生成一个本地检查标记(例如基于完整 URL 或其 哈希)。 在工作区保存检查结果,例如放到: ~/.OpenClaw/workspace/.缓存/dingtalk-AI-table/
建议文件名模式:
模式-检查-.json
如果当前地址对应的检查标记已经存在,并且结果是“已确认新版 模式”,则跳过重复检查,直接继续后续 AI 表格操作。 只有在以下情况才重新强制检查: 第一次运行,没有检查标记 mcporter 里的 MCP Server 地址变了 之前检查结果是旧版 模式 / 检查失败 用户明确要求重新验证 强制检查时执行 mcporter 列出 dingtalk-AI-table --模式
判断标准
如果返回的 工具s 仍然是旧版这一套,例如出现:
获取_root_node_of_my_document 创建_base_应用 列出_base_tables 添加_base_record 搜索_base_record 列出_base_field
或者整体仍然基于:
dentryUuid sheetIdOrName fieldIdOrName
那么说明:虽然 技能 文件已经是新版,但 mcporter 里注册的 MCP server 地址还是旧的,不能继续操作。
遇到旧版 模式 时的强制提示
此时必须明确提示用户:
打开这个页面: https://mcp.dingtalk.com/#/detAIl?mcpId=9555&detAIlType=marketMcpDetAIl 点击右侧 「获取 MCP Server 配置」 按钮 复制新的 MCP Server 地址 用新的地址替换 mcporter 里已经注册的 dingtalk-AI-table 地址 替换完成后,再重新执行: mcporter 列出 dingtalk-AI-table --模式
只有当返回的 工具s 已经变成新版 模式,例如出现:
列出_bases 获取_base 获取_tables 获取_fields 查询_records 创建_records 更新_records 删除_records prepare_attachment_上传
才允许继续真正的 AI 表格操作。
通过检查后的处理
一旦确认当前 MCP Server 地址返回的是新版 模式,就把结果写入本地检查标记。后续只要 mcporter 里的 dingtalk-AI-table 地址没变,就不要再重复做这一步守门检查。
用户提示文案(可直接复用) 当前 mcporter 里注册的 dingtalk-AI-table 还是旧版 MCP 模式,暂时不能按新版技能操作。 请打开 https://mcp.dingtalk.com/#/detAIl?mcpId=9555&detAIlType=marketMcpDetAIl ,点击右侧“获取 MCP Server 配置”按钮,复制新的 MCP Server 地址,并替换 mcporter 里已注册的 dingtalk-AI-table 地址。替换后重新检查 模式,确认出现 列出_bases / 获取_base / 创建_records 等新版 工具s 后,再继续操作 AI 表格。
前置要求 安装 mcporter 命令行工具 npm 安装 -g mcporter # 或 bun 安装 -g mcporter
验证:
mcporter --version
配置 MCP Server
在钉钉 MCP 广场 https://mcp.dingtalk.com/#/detAIl?mcpId=9555&detAIlType=marketMcpDetAIl 获取新版钉钉 AI 表格 MCP 的 流able HTTP URL。
方式一:直接配置到 mcporter
mcporter config 添加 dingtalk-AI-table --url "<流able_HTTP_URL>"
方式二:使用环境变量
导出 DINGTALK_MCP_URL="<流able_HTTP_URL>"
这个 URL 带访问令牌,等同密码,不要泄露。
工作区沙箱
脚本读取本地文件时,会优先使用 OpenClaw_WORKSPACE 作为允许根目录:
导出 OpenClaw_WORKSPACE="$HOME/.OpenClaw/workspace"
未设置时默认使用当前工作目录。
核心工具集 Base 层 列出_bases 搜索_bases 获取_base 创建_base 更新_base 删除_base 搜索_templates Table 层 获取_tables 创建_table 更新_table 删除_table Field 层 获取_fields 创建_fields 更新_field 删除_field Record 层 查询_records 创建_records 更新_records 删除_records 附件层 prepare_attachment_上传 推荐工作流
- 先找 Base
- 再拿 Table 目录
- 再展开表结构
- 字段复杂时读完整配置
- 再查 / 写记录
mcporter call dingtalk-AI-table 创建_records \ --args '{"baseId":"base_xxx","tableId":"tbl_xxx","records":[{"cells":{"fld_name":"张三"}}]}'
- 写入附件字段
attachment 字段支持三种写法:
方式一:先上传,再写 file令牌(推荐,可靠)
# Step 1:申请上传地址(返回 上传Url 和 file令牌) mcporter call dingtalk-AI-table prepare_attachment_上传 \ --args '{"baseId":"base_xxx","fileName":"报告.pdf","size":102400,"mimeType":"应用/pdf"}'
# Step 2:把文件 PUT 到 上传Url(必须带 Content-Type,值必须与 mimeType 完全一致) curl -X PUT "<上传Url>" \ -H "Content-Type: 应用/pdf" \ --data-binary @报告.pdf
# Step 3:把 file令牌 写入记录 mcporter call dingtalk-AI-table 创建_records \ --args '{"baseId":"base_xxx","tableId":"tbl_xxx","records":[{"cells":{"fld_attach":[{"file令牌":"ft_xxx"}]}}]}'
方式二:直接传外链 URL(异步转存,best-effort)
mcporter call dingtalk-AI-table 创建_records \ --args '{"baseId":"base_xxx","tableId":"tbl_xxx","records":[{"cells":{"fld_attach":[{"url":"https://example.com/file.pdf"}]}}]}'
URL 转存是 best-effort 异步链路,返回成功仅表示已受理,不保证立即可读。可靠写入请用 file令牌 方式。
方式三:原样回传已有