Lark

集成飞书多维表格、消息、日历等核心功能的自动化工具。

已扫描
适合谁
企业IT管理员、团队协作自动化开发者
不适合谁
无飞书账号的个人用户、无需跨系统集成的初级用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @lucascheung/lark-mcp

Skill 说明

命令、参数、文件名以原文为准

飞书 / Lark 综合技能

前置条件:使用此技能前,必须先运行官方 Lark MCP 服务器。

安装命令:npx -y @larksuiteoapi/lark-mcp mcp -a <APP_ID> -s <APP_SECRET>

若需使用用户身份相关 API(useUAT),请先执行:npx -y @larksuiteoapi/lark-mcp login -a <APP_ID> -s <APP_SECRET>

启用视频会议 + 会议纪要功能,请添加参数:-t preset.calendar.default,vc.v1.reserve.apply,vc.v1.meeting.get,vc.v1.meetingRecording.get,minutes.v1.minute.get,minutes.v1.minuteTranscript.get,minutes.v1.minuteStatistic.get

完整文档:https://open.larkoffice.com/document/home/index


核心概念

工具命名规则

所有 MCP 工具均以 mcp__lark-mcp__ 为前缀。例如:

mcp__lark-mcp__im.v1.message.create

身份类型

参数含义
useUATtrue登录用户身份操作 —— 资源归属于该用户,可直接访问
useUATfalse(默认)应用/机器人身份操作 —— 资源归属于应用

建议大多数交互操作使用 useUAT: true。后台自动化任务可使用 false

标准参数结构

path:      # URL 路径参数(ID、令牌)
params:    # 查询字符串参数(分页、筛选、id_type)
data:      # 请求体数据
useUAT:    # true = 用户身份,false = 应用身份

常见 ID 类型

ID格式代表内容
app_tokenappXXXBitable 应用
table_idtblXXXBitable 表格
record_idrecXXXBitable 记录
open_idou_XXX用户(OpenID)
union_idon_XXX用户(UnionID,跨应用)
chat_idoc_XXX群组/私聊会话
message_idom_XXX单条消息
document_iddoxcXXX文档文件
file_token变化驱动文件
node_token变化Wiki 页面节点
event_uid变化日历事件
task_guid变化任务
approval_code变化审批模板

1. 消息通信(IM)

发送一条消息

工具mcp__lark-mcp__im.v1.message.create

params:
  receive_id_type: "chat_id"   # 或:open_id, union_id, email, user_id
data:
  receive_id: "oc_xxx"
  msg_type: "text"             # text | post | image | interactive | file | audio | media | sticker | share_chat | share_user
  content: '{"text":"Hello!"}'
useUAT: true

消息类型与内容格式说明:

  • text{"text": "Hello @user"}
  • post(富文本):{"zh_cn": {"title": "标题", "content": [[{"tag":"text","text":"正文"}]]}}
  • interactive(卡片):JSON 卡片定义 —— 推荐使用 https://open.larkoffice.com/cardkit 的卡片构建器
  • image{"image_key": "img_xxx"}(需先通过驱动上传图片)
  • share_chat{"chat_id": "oc_xxx"}

回复一条消息

工具mcp__lark-mcp__im.v1.message.reply

path:
  message_id: "om_xxx"
data:
  content: '{"text":"收到!"}'
  msg_type: "text"
  reply_in_thread: false   # true = 创建或延续线程
useUAT: true

列出会话中的消息

工具mcp__lark-mcp__im.v1.message.list

params:
  container_id_type: "chat"
  container_id: "oc_xxx"
  page_size: 20
  sort_type: "ByCreateTimeDesc"
  start_time: "1700000000"   # 可选,Unix 时间戳
  end_time: "1700100000"     # 可选,Unix 时间戳

获取单条消息详情

工具mcp__lark-mcp__im.v1.message.get

path:
  message_id: "om_xxx"

删除一条消息

工具mcp__lark-mcp__im.v1.message.delete

path:
  message_id: "om_xxx"
useUAT: true

更新/编辑消息(卡片或文本)

工具mcp__lark-mcp__im.v1.message.update

path:
  message_id: "om_xxx"
data:
  msg_type: "interactive"
  content: '{"config":{},"elements":[...]}'
useUAT: true

添加消息表情反应(Emoji)

工具mcp__lark-mcp__im.v1.messageReaction.create

path:
  message_id: "om_xxx"
data:
  reaction_type:
    emoji_type: "THUMBSUP"   # THUMBSUP, OK, HEART 等
useUAT: true

列出消息的表情反应

工具mcp__lark-mcp__im.v1.messageReaction.list

path:
  message_id: "om_xxx"
params:
  reaction_type: "THUMBSUP"   # 可选过滤条件

置顶/取消置顶消息

工具mcp__lark-mcp__im.v1.pin.create / mcp__lark-mcp__im.v1.pin.delete

data:
  message_id: "om_xxx"
  chat_id: "oc_xxx"
useUAT: true

查看已读回执(谁已读)

工具mcp__lark-mcp__im.v1.message.readUsers

path:
  message_id: "om_xxx"
params:
  user_id_type: "open_id"
  page_size: 50

2. 群组 / 会话管理

列出机器人所在的全部会话

工具mcp__lark-mcp__im.v1.chat.list

params:
  user_id_type: "open_id"
  page_size: 20

列出用户所在的会话

工具mcp__lark-mcp__im.v1.chat.list

params:
  user_id_type: "open_id"
  page_size: 20
useUAT: true

获取会话信息

工具mcp__lark-mcp__im.v1.chat.get

path:
  chat_id: "oc_xxx"
params:
  user_id_type: "open_id"

创建一个群组会话

工具mcp__lark-mcp__im.v1.chat.create

data:
  name: "项目 Alpha"
  description: "在此讨论项目 Alpha"
  owner_id: "ou_xxx"           # 可选,默认为应用或用户
  user_id_list: ["ou_xxx", "ou_yyy"]
  bot_id_list: []
  chat_mode: "group"
  chat_type: "private"         # private | public
  external: false
useUAT: true

更新群组信息

工具mcp__lark-mcp__im.v1.chat.update

path:
  chat_id: "oc_xxx"
data:
  name: "新名称"
  description: "更新描述"
  owner_id: "ou_xxx"           # 转移所有权
  add_member_permission: "all_members"
  at_all_permission: "all_members"
  edit_permission: "all_members"
useUAT: true

解散一个群组

工具mcp__lark-mcp__im.v1.chat.delete

path:
  chat_id: "oc_xxx"
useUAT: true

获取聊天成员列表

工具: mcp__lark-mcp__im.v1.chatMembers.get

path:
  chat_id: "oc_xxx"
params:
  member_id_type: "open_id"
  page_size: 50

向聊天添加成员

工具: mcp__lark-mcp__im.v1.chatMembers.create

path:
  chat_id: "oc_xxx"
params:
  member_id_type: "open_id"
data:
  id_list: ["ou_xxx", "ou_yyy"]
useUAT: true

从聊天移除成员

工具: mcp__lark-mcp__im.v1.chatMembers.delete

path:
  chat_id: "oc_xxx"
params:
  member_id_type: "open_id"
data:
  id_list: ["ou_xxx"]
useUAT: true

搜索公开聊天

工具: mcp__lark-mcp__im.v1.chat.search

params:
  query: "design team"
  page_size: 20
useUAT: true

获取聊天标签列表

工具: mcp__lark-mcp__im.v1.chatTab.listTabs

path:
  chat_id: "oc_xxx"

获取聊天公告

工具: mcp__lark-mcp__im.v1.chatAnnouncement.get

path:
  chat_id: "oc_xxx"
params:
  user_id_type: "open_id"

更新聊天公告

工具: mcp__lark-mcp__im.v1.chatAnnouncement.patch

path:
  chat_id: "oc_xxx"
data:
  revision_id: 1
  requests: ['{"requestType":"InsertBlocksAtDocumentTail","insertBlocksAtDocumentTailRequest":{"payload":{"blocks":[{"blockType":2,"text":{"elements":[{"textRun":{"content":"New announcement"}}],"style":{}}}]}}}']
useUAT: true

3. Bitable(多维表格 / 数据库)

创建一个 Bitable 应用

工具: mcp__lark-mcp__bitable.v1.app.create

data:
  name: "Project Tracker"
  folder_token: ""   # 可选:指定存放的驱动文件夹
useUAT: true

获取 Bitable 应用信息

工具: mcp__lark-mcp__bitable.v1.app.get

path:
  app_token: "appXXX"

更新 Bitable 应用

工具: mcp__lark-mcp__bitable.v1.app.update

path:
  app_token: "appXXX"
data:
  name: "New Name"
  is_advanced: true   # 启用高级功能
useUAT: true

获取 Bitable 应用中的表格列表

工具: mcp__lark-mcp__bitable.v1.appTable.list

path:
  app_token: "appXXX"
params:
  page_size: 20

创建一个表格

工具: mcp__lark-mcp__bitable.v1.appTable.create

path:
  app_token: "appXXX"
data:
  table:
    name: "Tasks"
    default_view_name: "Grid View"
    fields:
      - field_name: "Task Name"
        type: 1   # 1=文本, 2=数字, 3=单选, 4=多选, 5=日期, 7=复选框, 11=人员, 15=链接, 99001=电话
      - field_name: "Status"
        type: 3
        property:
          options:
            - name: "To Do"
              color: 0
            - name: "In Progress"
              color: 1
            - name: "Done"
              color: 2
      - field_name: "Assignee"
        type: 11
      - field_name: "Due Date"
        type: 5
useUAT: true

删除一个表格

工具: mcp__lark-mcp__bitable.v1.appTable.delete

path:
  app_token: "appXXX"
  table_id: "tblXXX"
useUAT: true

获取表格中的字段列表

工具: mcp__lark-mcp__bitable.v1.appTableField.list

path:
  app_token: "appXXX"
  table_id: "tblXXX"
params:
  page_size: 50
  view_id: ""   # 可选:按视图过滤

创建一个字段

工具: mcp__lark-mcp__bitable.v1.appTableField.create

path:
  app_token: "appXXX"
  table_id: "tblXXX"
data:
  field_name: "Priority"
  type: 3   # 单选
  property:
    options:
      - name: "High"
        color: 0
      - name: "Medium"
        color: 1
      - name: "Low"
        color: 2
useUAT: true

更新一个字段

工具: mcp__lark-mcp__bitable.v1.appTableField.update

path:
  app_token: "appXXX"
  table_id: "tblXXX"
  field_id: "fldXXX"
data:
  field_name: "Renamed Field"
  property:
    options:
      - name: "Critical"
        color: 0
useUAT: true

删除一个字段

工具: mcp__lark-mcp__bitable.v1.appTableField.delete

path:
  app_token: "appXXX"
  table_id: "tblXXX"
  field_id: "fldXXX"
useUAT: true

搜索或获取记录列表

工具: mcp__lark-mcp__bitable.v1.appTableRecord.search

path:
  app_token: "appXXX"
  table_id: "tblXXX"
params:
  user_id_type: "open_id"
  page_size: 100
  page_token: ""   # 用于分页
data:
  view_id: ""   # 可选:指定视图
  field_names: ["Task Name", "Status", "Assignee"]   # 可选:仅返回指定字段
  sort:
    - field_name: "Due Date"
      desc: false
  filter:
    conjunction: "and"   # and | or
    conditions:
      - field_name: "Status"
        operator: "is"   # is | isNot | contains | doesNotContain | isEmpty | isNotEmpty | isGreater | isLess
        value: ["In Progress"]
  automatic_fields: false
useUAT: true

获取单条记录

工具: mcp__lark-mcp__bitable.v1.appTableRecord.get

path:
  app_token: "appXXX"
  table_id: "tblXXX"
  record_id: "recXXX"
params:
  user_id_type: "open_id"

创建一条记录

工具: mcp__lark-mcp__bitable.v1.appTableRecord.create

path:
  app_token: "appXXX"
  table_id: "tblXXX"
params:
  user_id_type: "open_id"
data:
  fields:
    "Task Name": "Fix login bug"
    "Status": "To Do"
    "Assignee": [{"id": "ou_xxx"}]
    "Due Date": 1700000000000   # 毫秒时间戳
useUAT: true

批量创建记录

工具: mcp__lark-mcp__bitable.v1.appTableRecord.batchCreate

path:
  app_token: "appXXX"
  table_id: "tblXXX"
params:
  user_id_type: "open_id"
data:
  records:
    - fields:
        "Task Name": "Task 1"
        "Status": "To Do"
    - fields:
        "Task Name": "Task 2"
        "Status": "In Progress"
useUAT: true

更新一条记录

工具: mcp__lark-mcp__bitable.v1.appTableRecord.update

path:
  app_token: "appXXX"
  table_id: "tblXXX"
  record_id: "recXXX"
params:
  user_id_type: "open_id"
data:
  fields:
    "Status": "Done"
useUAT: true

批量更新记录

工具: mcp__lark-mcp__bitable.v1.appTableRecord.batchUpdate

path:
  app_token: "appXXX"
  table_id: "tblXXX"
params:
  user_id_type: "open_id"
data:
  records:
    - record_id: "recXXX"
      fields:
        "Status": "Done"
    - record_id: "recYYY"
      fields:
        "Status": "In Progress"
useUAT: true

删除一条记录

工具: mcp__lark-mcp__bitable.v1.appTableRecord.delete

path:
  app_token: "appXXX"
  table_id: "tblXXX"
  record_id: "recXXX"
useUAT: true

批量删除记录

工具: mcp__lark-mcp__bitable.v1.appTableRecord.batchDelete

path:
  app_token: "appXXX"
  table_id: "tblXXX"
data:
  records: ["recXXX", "recYYY"]
useUAT: true

获取视图列表

工具: mcp__lark-mcp__bitable.v1.appTableView.list

path:
  app_token: "appXXX"
  table_id: "tblXXX"
params:
  page_size: 20

创建视图

工具: mcp__lark-mcp__bitable.v1.appTableView.create

path:
  app_token: "appXXX"
  table_id: "tblXXX"
data:
  view_name: "看板"
  view_type: "kanban"   # grid | kanban | gallery | gantt | form
useUAT: true

管理 Bitable 协作者

工具: mcp__lark-mcp__bitable.v1.appRoleMember.create

path:
  app_token: "appXXX"
  role_id: "roleXXX"
data:
  member_id: "ou_xxx"
  member_id_type: "open_id"
useUAT: true

4. 文档(Docs)

搜索文档

工具: mcp__lark-mcp__drive.v1.file.search(或 docx.builtin.search

params:
  query: "Q4 报告"
  page_size: 20
useUAT: true

获取文档内容(纯文本)

工具: mcp__lark-mcp__docx.v1.document.rawContent

path:
  document_id: "doxcXXX"
params:
  lang: 0   # 0=默认
useUAT: true

获取文档元数据

工具: mcp__lark-mcp__docx.v1.document.get

path:
  document_id: "doxcXXX"
useUAT: true

创建新文档

工具: mcp__lark-mcp__docx.v1.document.create

data:
  folder_token: ""   # 可选:驱动文件夹
  title: "会议纪要 - 2026-03-06"
useUAT: true

列出文档块

工具: mcp__lark-mcp__docx.v1.documentBlock.list

path:
  document_id: "doxcXXX"
params:
  page_size: 50
  document_revision_id: -1   # -1 = 最新版本
useUAT: true

更新文档块(插入内容)

工具: mcp__lark-mcp__docx.v1.documentBlockChildren.batchUpdate

path:
  document_id: "doxcXXX"
  block_id: "doxcXXX"   # 父块(文档根节点 = document_id)
data:
  requests:
    - insertBlocksAfterBlockRequest:
        targetBlockId: "blockXXX"
        payload:
          blocks:
            - blockType: 2   # 2=文本, 3=标题1, 4=标题2, 12=项目符号, 22=代码
              text:
                elements:
                  - textRun:
                      content: "新段落内容"
  revision_id: -1   # -1 = 最新版本
useUAT: true

5. 云盘(Drive)

列出根目录或文件夹中的文件

工具: mcp__lark-mcp__drive.v1.file.list

params:
  folder_token: ""   # 空值 = 根目录(“我的网盘”)
  page_size: 20
  order_by: "EditedTime"   # EditedTime | CreatedTime | Name
  direction: "DESC"
useUAT: true

创建文件夹

工具: mcp__lark-mcp__drive.v1.file.createFolder

data:
  name: "Q1 报告"
  folder_token: ""   # 父文件夹,空值 = 根目录
useUAT: true

移动文件

工具: mcp__lark-mcp__drive.v1.file.move

path:
  file_token: "xxx"
data:
  type: "doc"   # doc | sheet | bitable | mindnote | file | wiki | docx
  folder_token: "targetFolderToken"
useUAT: true

复制文件

工具: mcp__lark-mcp__drive.v1.file.copy

path:
  file_token: "xxx"
data:
  name: "报告副本"
  type: "docx"
  folder_token: "targetFolderToken"
useUAT: true

删除文件

工具: mcp__lark-mcp__drive.v1.file.delete

path:
  file_token: "xxx"
params:
  type: "docx"
useUAT: true

获取文件统计信息

工具: mcp__lark-mcp__drive.v1.fileStatistics.get

path:
  file_token: "xxx"
  file_type: "docx"   # docx | sheet | bitable | file

管理文件权限(添加协作者)

工具: mcp__lark-mcp__drive.v1.permissionMember.create

path:
  token: "xxx"
  type: "docx"
data:
  member_type: "openid"   # openid | unionid | email | opendepartmentid | groupid
  member_id: "ou_xxx"
  perm: "view"   # view | edit | full_access
useUAT: true

列出文件协作者

工具: mcp__lark-mcp__drive.v1.permissionMember.list

path:
  token: "xxx"
  type: "docx"
useUAT: true

获取文件评论

工具: mcp__lark-mcp__drive.v1.fileComment.list

path:
  file_token: "xxx"
  file_type: "docx"
params:
  is_solved: false
  page_size: 20
useUAT: true

添加文件评论

工具: mcp__lark-mcp__drive.v1.fileComment.create

path:
  file_token: "xxx"
  file_type: "docx"
data:
  reply_list:
    replies:
      - content:
          elements:
            - type: "text_run"
              text_run:
                text: "这部分做得很好!"
useUAT: true

6. 日历

列出所有日历

工具: mcp__lark-mcp__calendar.v4.calendar.list

params:
  page_size: 20
useUAT: true

获取主日历

工具: mcp__lark-mcp__calendar.v4.calendar.primary

params:
  user_id_type: "open_id"
useUAT: true

创建日历

工具: mcp__lark-mcp__calendar.v4.calendar.create

data:
  summary: "团队日历"
  description: "共享团队日程"
  permissions: "public"   # private | show_only_free_busy | public
  color: -1
  summary_alias: ""
useUAT: true

列出事件

工具: mcp__lark-mcp__calendar.v4.calendarEvent.list

path:
  calendar_id: "primary"   # 或具体日历 ID
params:
  start_time: "1700000000"
  end_time: "1702600000"
  page_size: 50
useUAT: true

获取日历事件

工具: mcp__lark-mcp__calendar.v4.calendarEvent.get

path:
  calendar_id: "primary"
  event_id: "xxx"
params:
  user_id_type: "open_id"
useUAT: true

创建日历事件

工具: mcp__lark-mcp__calendar.v4.calendarEvent.create

path:
  calendar_id: "primary"
data:
  summary: "团队站会"
  description: "每日同步"
  start_time:
    timestamp: "1700000000"
    timezone: "Asia/Shanghai"
  end_time:
    timestamp: "1700003600"
    timezone: "Asia/Shanghai"
  attendees:
    - type: "user"
      user_id: "ou_xxx"
  need_notification: true
  visibility: "default"   # default | public | private
  free_busy_status: "busy"   # busy | free
  color: -1
  reminders:
    - minutes: 10
  recurrence_rule: ""   # 例如 "FREQ=DAILY;COUNT=5" 表示重复事件
useUAT: true

更新日历事件

工具: mcp__lark-mcp__calendar.v4.calendarEvent.patch

path:
  calendar_id: "primary"
  event_id: "xxx"
data:
  summary: "已更新会议标题"
  description: "已更新描述"
useUAT: true

删除日历事件

工具: mcp__lark-mcp__calendar.v4.calendarEvent.delete

path:
  calendar_id: "primary"
  event_id: "xxx"
params:
  need_notification: true
useUAT: true

列出事件参会人员

工具: mcp__lark-mcp__calendar.v4.calendarEventAttendee.list

path:
  calendar_id: "primary"
  event_id: "xxx"
params:
  user_id_type: "open_id"
  page_size: 50
useUAT: true

为事件添加参会人员

工具: mcp__lark-mcp__calendar.v4.calendarEventAttendee.create

path:
  calendar_id: "primary"
  event_id: "xxx"
data:
  attendees:
    - type: "user"
      user_id: "ou_xxx"
  need_notification: true
useUAT: true

获取用户空闲/忙碌状态

工具: mcp__lark-mcp__calendar.v4.freebusy.list

data:
  time_min: "2026-03-06T09:00:00+08:00"
  time_max: "2026-03-06T18:00:00+08:00"
  user_id_list: ["ou_xxx", "ou_yyy"]
useUAT: true

7. 任务

列出任务

工具: mcp__lark-mcp__task.v2.task.list

params:
  completed: false
  type: "my"   # my | created | assigned
  page_size: 50
useUAT: true

获取任务

工具: mcp__lark-mcp__task.v2.task.get

path:
  task_guid: "xxx"
params:
  user_id_type: "open_id"
useUAT: true

创建任务

工具: mcp__lark-mcp__task.v2.task.create

params:
  user_id_type: "open_id"
data:
  summary: "撰写第四季度报告"
  description: "汇总所有指标并撰写第四季度总结报告"
  due:
    timestamp: "1700000000000"   # 毫秒
    is_all_day: false
  origin:
    platform_i18n_name: '{"zh_cn":"来自OpenClaw","en_us":"From OpenClaw"}'
  members:
    - id: "ou_xxx"
      type: "user"
      role: "assignee"   # assignee | follower
  task_list_configs:
    - tasklist_guid: "tsklistXXX"   # 可选:添加到任务列表
  repeat_rule: ""   # 例如 "FREQ=WEEKLY;BYDAY=MO" 表示每周重复
useUAT: true

更新任务

工具: mcp__lark-mcp__task.v2.task.patch

path:
  task_guid: "xxx"
params:
  user_id_type: "open_id"
data:
  task:
    summary: "已更新任务名称"
    due:
      timestamp: "1700100000000"
  update_fields: ["summary", "due"]   # 指定需要更新的字段
useUAT: true

完成任务

工具: mcp__lark-mcp__task.v2.task.complete

path:
  task_guid: "xxx"
useUAT: true

取消完成任务

工具: mcp__lark-mcp__task.v2.task.uncomplete

path:
  task_guid: "xxx"
useUAT: true

删除任务

工具: mcp__lark-mcp__task.v2.task.delete

path:
  task_guid: "xxx"
useUAT: true

添加任务评论

工具: mcp__lark-mcp__task.v2.taskComment.create

path:
  task_guid: "xxx"
data:
  content: "进度更新:已完成80%"
  reply_to_comment_id: ""   # 可选
useUAT: true

列出任务评论

工具: mcp__lark-mcp__task.v2.taskComment.list

path:
  task_guid: "xxx"
params:
  page_size: 20
useUAT: true

列出任务列表

工具: mcp__lark-mcp__task.v2.tasklist.list

params:
  user_id_type: "open_id"
  page_size: 20
useUAT: true

创建任务列表

工具: mcp__lark-mcp__task.v2.tasklist.create

data:
  name: "冲刺 12"
  members:
    - id: "ou_xxx"
      type: "user"
      role: "editor"
useUAT: true

将任务添加到任务列表

工具: mcp__lark-mcp__task.v2.task.addTasklist

path:
  task_guid: "xxx"
data:
  tasklist_guid: "tsklistXXX"
  section_guid: ""   # 可选:指定具体章节
useUAT: true

8. 联系人(用户与部门)

根据 Open ID 获取用户

工具: mcp__lark-mcp__contact.v3.user.get

path:
  user_id: "ou_xxx"
params:
  user_id_type: "open_id"
useUAT: true

批量根据邮箱或手机号获取用户

工具: mcp__lark-mcp__contact.v3.user.batchGetId

params:
  user_id_type: "open_id"
data:
  emails: ["user@company.com"]
  mobiles: ["+8613800000000"]
useUAT: true

按部门搜索用户

工具: mcp__lark-mcp__contact.v3.user.findByDepartment

params:
  user_id_type: "open_id"
  department_id_type: "open_department_id"
  department_id: "od_xxx"
  page_size: 50
useUAT: true

获取当前用户信息

工具: mcp__lark-mcp__authen.v1.userInfo.get

useUAT: true

列出部门

工具: mcp__lark-mcp__contact.v3.department.children

params:
  department_id_type: "open_department_id"
  parent_department_id: "0"   # "0" = 根部门
  page_size: 50
  fetch_child: false
useUAT: true

获取部门信息

工具: mcp__lark-mcp__contact.v3.department.get

path:
  department_id: "od_xxx"
params:
  department_id_type: "open_department_id"
  user_id_type: "open_id"
useUAT: true

9. Wiki / 知识库

列出 Wiki 空间

工具: mcp__lark-mcp__wiki.v2.space.list

params:
  page_size: 20
useUAT: true

获取 Wiki 空间信息

工具: mcp__lark-mcp__wiki.v2.space.get

path:
  space_id: "xxx"
useUAT: true

列出 Wiki 节点

工具: mcp__lark-mcp__wiki.v2.spaceNode.list

path:
  space_id: "xxx"
params:
  parent_node_token: ""   # 空值表示根级别
  page_size: 50
useUAT: true

搜索 Wiki

工具: mcp__lark-mcp__wiki.v2.spaceNode.search

path:
  space_id: "xxx"
params:
  keyword: "onboarding guide"
  page_size: 20
useUAT: true

获取 Wiki 节点信息

工具: mcp__lark-mcp__wiki.v2.spaceNode.get

params:
  token: "wikcXXX"
useUAT: true

创建 Wiki 节点(新建页面)

工具: mcp__lark-mcp__wiki.v2.spaceNode.create

path:
  space_id: "xxx"
data:
  node_type: "origin"   # origin = 新文档;copy = 复制现有内容
  parent_node_token: "wikcXXX"   # 父级页面令牌
  title: "新页面标题"
useUAT: true

移动 Wiki 节点

工具: mcp__lark-mcp__wiki.v2.spaceNode.move

path:
  space_id: "xxx"
  node_token: "wikcXXX"
data:
  target_parent_token: "wikcYYY"
  target_space_id: ""   # 空值表示同一空间内移动
useUAT: true

10. 审批流程

获取审批定义

工具: mcp__lark-mcp__approval.v4.approval.get

path:
  approval_code: "xxx"
params:
  locale: "zh-CN"   # zh-CN | en-US | ja-JP

创建审批实例(提交审批)

工具: mcp__lark-mcp__approval.v4.instance.create

data:
  approval_code: "xxx"
  open_id: "ou_xxx"   # 提交人
  form: '[{"id":"widget1","type":"input","value":"费用报销 $500"}]'
  node_approver_open_id_list: []   # 可选:为每个审批节点指定审批人
useUAT: true

获取审批实例

工具: mcp__lark-mcp__approval.v4.instance.get

path:
  instance_id: "xxx"
params:
  locale: "zh-CN"
  user_id: "ou_xxx"
  user_id_type: "open_id"
useUAT: true

列出审批实例

工具: mcp__lark-mcp__approval.v4.instance.list

params:
  approval_code: "xxx"
  start_time: "1700000000000"
  end_time: "1702600000000"
  page_size: 100

审批实例

工具: mcp__lark-mcp__approval.v4.instance.approve

data:
  approval_code: "xxx"
  instance_code: "xxx"
  user_id: "ou_xxx"
  task_id: "xxx"
  comment: "看起来没问题,已批准!"
useUAT: true

拒绝实例

工具: mcp__lark-mcp__approval.v4.instance.reject

data:
  approval_code: "xxx"
  instance_code: "xxx"
  user_id: "ou_xxx"
  task_id: "xxx"
  comment: "请修改预算数据"
useUAT: true

取消审批实例

工具: mcp__lark-mcp__approval.v4.instance.cancel

data:
  approval_code: "xxx"
  instance_code: "xxx"
  user_id: "ou_xxx"
useUAT: true

为审批实例添加评论

工具: mcp__lark-mcp__approval.v4.instanceComment.create

path:
  instance_id: "xxx"
data:
  content: "请检查附件中的凭证"
  at_info_list:
    - user_id: "ou_xxx"
      name: "John"
      offset: "14"
useUAT: true

11. 常用工作流

工作流:查找用户并发送私信

1. mcp__lark-mcp__contact.v3.user.batchGetId
   → emails: ["user@company.com"] → 获取 open_id

2. mcp__lark-mcp__im.v1.message.create
   → receive_id_type: "open_id"
   → receive_id: <步骤1获取的 open_id>
   → 发送消息

工作流:创建 Bitable 表格并填充数据

1. mcp__lark-mcp__bitable.v1.app.create → 获取 app_token
2. mcp__lark-mcp__bitable.v1.appTable.create → 定义字段结构 → 获取 table_id
3. mcp__lark-mcp__bitable.v1.appTableRecord.batchCreate → 批量插入记录(每次最多500条)

工作流:每周报告发送至群组

1. mcp__lark-mcp__bitable.v1.appTableRecord.search
   → 过滤条件:Status = "Done",Due Date 在最近7天内
   → 收集已完成事项

2. 格式化为富文本帖子或交互卡片

3. mcp__lark-mcp__im.v1.message.create
   → msg_type: "post" 或 "interactive"
   → 发送到项目群组 chat_id

工作流:安排会议并检查空闲时间

1. mcp__lark-mcp__calendar.v4.freebusy.list
   → 检查所有参会人目标时间段内的可用性

2. 选择一个空闲时段

3. mcp__lark-mcp__calendar.v4.calendarEvent.create
   → 添加所有参会人,设置提醒

4. mcp__lark-mcp__im.v1.message.create
   → 通知参会人会议详情

工作流:提交并跟踪审批

1. mcp__lark-mcp__approval.v4.approval.get → 查看表单字段

2. mcp__lark-mcp__approval.v4.instance.create
   → 填写表单数据,提交

3. mcp__lark-mcp__approval.v4.instance.get
   → 轮询状态:PENDING | APPROVED | REJECTED | CANCELED

工作流:创建任务并分配

1. mcp__lark-mcp__contact.v3.user.batchGetId → 通过邮箱解析 assignee → open_id

2. mcp__lark-mcp__task.v2.task.create
   → 设置摘要、描述、截止日期,成员角色为 "assignee"

3. 可选:mcp__lark-mcp__im.v1.message.create
   → 通过私信通知负责人

12. 错误参考

错误代码含义解决方法
99991663Token 已过期重新登录或刷新 Token
99991664无效 Token检查应用凭证配置
99991400权限不足在开发者控制台中授予所需权限范围
230001机器人未加入聊天先将机器人添加到群组
1254502记录不存在确认 record_id 是否正确
1254520字段不存在检查 field_name 拼写是否完全一致
1300006事件不存在确认 event_id 和 calendar_id 正确
1100003会议不存在会议可能已结束或 reserve_id 错误
1100007会议未激活先使用 reserve.get 检查状态
1100032不是会议主持人仅主持人可执行该操作
1700001会议纪要不存在检查 minute_token 格式(如 obcn...)
1700002会议纪要未就绪转录仍在处理中,稍后重试

常见问题

  • "Tool not found":MCP 服务器未运行。请使用命令 npx -y @larksuiteoapi/lark-mcp mcp -a <APP_ID> -s <APP_SECRET> 启动。
  • 资源无法访问:使用 useUAT: true —— 由机器人身份创建的资源可能对用户不可见。
  • 权限错误:在飞书开放平台控制台中,启用所需的权限范围(例如 bitable:appim:messagecalendar:calendartask:task:write)。
  • message_id 不存在:消息已过期,或需要 im:message:send_as_bot 权限范围。
  • user_access_token 过期:运行 npx -y @larksuiteoapi/lark-mcp login 刷新令牌(有效期 2 小时,可通过 offline_access 范围刷新)。

13. 视频会议 (vc.v1)

注意:视频会议 API 需要 vc:meeting 权限家族,并通常需要 useUAT: true(用户身份)。可通过在 lark-mcp 中使用 -t vc.v1.* 或单独添加来启用。

安排/预订会议

工具mcp__lark-mcp__vc.v1.reserve.apply

data:
  end_time: "1700003600"          # Unix 时间戳(秒)
  meeting_settings:
    topic: "Q4 规划会议"
    action_permissions:
      - permission: 1             # 1=邀请成员 2=共享屏幕 3=录制
        permission_checker_type: 1  # 1=仅主持人 2=所有人
    meeting_initial_type: 1       # 1=视频 2=音频
    auto_record: false
    enable_waiting_room: false
    allow_screen_sharing: true
    only_employee_join: false
    join_meeting_permission: 1    # 1=任意飞书用户 2=仅受邀者 3=仅组织成员
    push_question_to_vc: false
    meeting_reminder: true
useUAT: true

返回:reserve_idreserve_token —— 请保存以用于后续管理。

更新会议预订

工具mcp__lark-mcp__vc.v1.reserve.update

path:
  reserve_id: "xxx"
data:
  end_time: "1700007200"
  meeting_settings:
    topic: "更新后的会议标题"
useUAT: true

删除/取消预订

工具mcp__lark-mcp__vc.v1.reserve.delete

path:
  reserve_id: "xxx"
useUAT: true

获取预订详情

工具mcp__lark-mcp__vc.v1.reserve.get

path:
  reserve_id: "xxx"
params:
  with_meeting_info: true     # 同时返回当前会议信息
useUAT: true

从预订获取正在进行的会议

工具mcp__lark-mcp__vc.v1.reserve.getActiveMeeting

path:
  reserve_id: "xxx"
params:
  with_participants: true
useUAT: true

通过 meeting_id 获取会议详情

工具mcp__lark-mcp__vc.v1.meeting.get

path:
  meeting_id: "xxx"
params:
  with_participants: true
  with_meeting_ability: true
useUAT: true

按会议号(meeting number)列出会议

工具mcp__lark-mcp__vc.v1.meeting.listByNo

params:
  meeting_no: "123456789"   # UI 中显示的 9 位会议号
  start_time: "1700000000"
  end_time: "1700100000"
  page_size: 20
useUAT: true

邀请参会人员

工具mcp__lark-mcp__vc.v1.meeting.invite

path:
  meeting_id: "xxx"
data:
  invitees:
    - id: "ou_xxx"
      type: 1             # 1=飞书用户, 2=群组, 3=电话, 5=SIP/H323
useUAT: true

将参会人员踢出会议

工具mcp__lark-mcp__vc.v1.meeting.kickout

path:
  meeting_id: "xxx"
data:
  kickout_users:
    - id: "ou_xxx"
      type: 1
useUAT: true

设置会议主持人

工具mcp__lark-mcp__vc.v1.meeting.setHost

path:
  meeting_id: "xxx"
data:
  host_user:
    id: "ou_xxx"
    type: 1
  old_host_user:
    id: "ou_yyy"
    type: 1
useUAT: true

结束会议

工具mcp__lark-mcp__vc.v1.meeting.end

path:
  meeting_id: "xxx"
useUAT: true

列出会议参与者

工具mcp__lark-mcp__vc.v1.participant.list

params:
  meeting_id: "xxx"
  meeting_start_time: "1700000000"
  meeting_end_time: "1700003600"
  page_size: 100
useUAT: true

获取会议录制文件

工具mcp__lark-mcp__vc.v1.meetingRecording.get

path:
  meeting_id: "xxx"
useUAT: true

返回:录制文件 URL、时长、大小。

设置录制权限

工具mcp__lark-mcp__vc.v1.meetingRecording.setPermission

path:
  meeting_id: "xxx"
data:
  permission_objects:
    - id: "ou_xxx"
      type: 1             # 1=用户, 2=部门
      permission: 1       # 1=可查看
  action_type: 1          # 1=设置 2=添加 3=移除
useUAT: true

导出会议出席报告

工具mcp__lark-mcp__vc.v1.export.meetingList

data:
  start_time: "1700000000"
  end_time: "1700100000"
  meeting_status: 3       # 1=未开始, 2=进行中, 3=已结束
  page_size: 100
useUAT: true

导出参会者质量报告

工具mcp__lark-mcp__vc.v1.export.participantList

data:
  meeting_start_time: "1700000000"
  meeting_end_time: "1700003600"
  meeting_no: "123456789"
  page_size: 100
useUAT: true

获取会议室信息

工具mcp__lark-mcp__vc.v1.room.get

path:
  room_id: "xxx"
params:
  user_id_type: "open_id"

列出会议室

工具mcp__lark-mcp__vc.v1.room.list

params:
  page_size: 20
  room_level_id: ""       # 可选:按楼栋/楼层筛选

14. 会议纪要 (minutes.v1)

飞书妙记(Minutes)是基于 AI 的会议转录与笔记产品。

注意:会议纪要 API 需要 minutes:minute:readonly 权限。目前仅支持通过 API 读取(无写入接口)。

会议纪要由视频会议录制内容或上传的音视频文件自动生成。

获取会议纪要元数据

工具mcp__lark-mcp__minutes.v1.minute.get

path:
  minute_token: "obcnXXXXXX"   # 来自会议纪要链接中的 token:feishu.cn/minutes/obcnXXX
params:
  user_id_type: "open_id"
useUAT: true

返回:标题、时长、所有者、创建时间、视频状态、转录状态。

获取会议纪要全文(转录文本)

工具mcp__lark-mcp__minutes.v1.minuteTranscript.get

path:
  minute_token: "obcnXXXXXX"
params:
  user_id_type: "open_id"
useUAT: true

返回:转录段落数组,每个段落包含:

  • start_time / end_time(毫秒)
  • paragraph — 口语内容
  • speaker_id, speaker_name — 发言人

会议纪要统计信息 / 参与人员列表

工具mcp__lark-mcp__minutes.v1.minuteStatistic.get

path:
  minute_token: "obcnXXXXXX"
params:
  user_id_type: "open_id"
useUAT: true

返回:参与人员列表及其发言时长和字数统计。

获取会议纪要音频/视频文件(仅元数据)

工具mcp__lark-mcp__minutes.v1.minuteMedia.get

path:
  minute_token: "obcnXXXXXX"
params:
  type: 1     # 1=视频文件 2=音频文件
useUAT: true

返回:原始录音文件的下载链接。

⚠️ 飞书 MCP 不支持直接的文件下载或上传。请使用该链接在外部进行流媒体播放或访问。

如何获取 minute_token

会议纪要令牌可通过以下方式获取:

  1. 会议结束后,在会议记录页面中查看纪要 URL
  2. 会议后的日历事件详情中包含该令牌
  3. 格式为以 obcn 开头,后接字母数字字符(例如:obcn6qGKMiZy0eNFSKl6e8XXXXX

工作流:会后总结发送至群组

1. mcp__lark-mcp__minutes.v1.minuteTranscript.get
   → 获取全部转录段落

2. 使用大模型对转录内容进行摘要(由 OpenClaw 自动处理)

3. mcp__lark-mcp__minutes.v1.minuteStatistic.get
   → 获取参会人员列表及发言统计数据

4. mcp__lark-mcp__im.v1.message.create
   → 将摘要和参会人员统计数据以富文本卡片形式发送至会议群聊

15. 增强型群组聊天工作流

本节涵盖超越基础增删改查的高级群组聊天场景。

通过名称查找群组

1. mcp__lark-mcp__im.v1.chat.list → 获取所有群组(需分页处理)
2. 客户端侧根据 name 字段过滤
   或
   mcp__lark-mcp__im.v1.chat.search → 参数:query: "群组名称"

发送 @提及消息

# 工具:mcp__lark-mcp__im.v1.message.create
data:
  receive_id: "oc_xxx"
  msg_type: "text"
  content: '{"text":"<at user_id=\"ou_xxx\">John</at> 请审阅此内容"}'
  # @所有人示例:
  # content: '{"text":"<at user_id=\"all\">全体成员</at> 会议将在5分钟后开始"}'
useUAT: true

向群组发送交互式卡片

# 工具:mcp__lark-mcp__im.v1.message.create
data:
  receive_id: "oc_xxx"
  msg_type: "interactive"
  content: |
    {
      "config": {"wide_screen_mode": true},
      "header": {
        "title": {"tag": "plain_text", "content": "需要处理"},
        "template": "red"
      },
      "elements": [
        {
          "tag": "div",
          "text": {"tag": "lark_md", "content": "**任务**:请审批 Q4 预算\n**截止时间**:明天下午5点"}
        },
        {
          "tag": "action",
          "actions": [
            {"tag": "button", "text": {"tag": "plain_text", "content": "批准"}, "type": "primary", "value": {"action": "approve"}},
            {"tag": "button", "text": {"tag": "plain_text", "content": "拒绝"}, "type": "danger", "value": {"action": "reject"}}
          ]
        }
      ]
    }
useUAT: true

创建专属项目群组并添加机器人与成员

1. mcp__lark-mcp__contact.v3.user.batchGetId
   → 将成员邮箱转换为 open_id

2. mcp__lark-mcp__im.v1.chat.create
   → 群组名称:"Project X - Team"
   → 成员列表:[所有 open_id]
   → 群组类型:private

3. mcp__lark-mcp__im.v1.message.create
   → 发送欢迎卡片消息,介绍项目背景

设置群组全员公告

1. mcp__lark-mcp__im.v1.chatAnnouncement.patch
   → 在文档末尾插入新的公告内容块
   → 所有成员可在聊天顶部看到置顶公告

监听群组消息(事件驱动)

在飞书开放平台注册 im.message.receive_v1 事件,可接收机器人所在群组的所有消息。OpenClaw 的飞书频道在配置后会自动处理,无需轮询。

事件负载包含:message_id, chat_id, sender.open_id, message.content, message.msg_type

批量通知多个群组

1. 准备 chat_ids 列表(通过 mcp__lark-mcp__im.v1.chat.list 获取)
2. 循环调用 mcp__lark-mcp__im.v1.message.create
   → 建议控制频率:每秒约 5 次请求,避免触发限流

回复群组中特定消息(线程回复)

# 工具:mcp__lark-mcp__im.v1.message.reply
path:
  message_id: "om_xxx"      # 要回复的具体消息 ID
data:
  content: '{"text":"感谢更新!"}'
  msg_type: "text"
  reply_in_thread: true     # 创建或延续消息线程
useUAT: true

将消息转发至其他聊天

# 工具:mcp__lark-mcp__im.v1.message.forward
path:
  message_id: "om_xxx"
params:
  receive_id_type: "chat_id"
data:
  receive_id: "oc_yyy"
useUAT: true

合并转发多条消息

# 工具:mcp__lark-mcp__im.v1.message.mergeForward
params:
  receive_id_type: "chat_id"
data:
  receive_id: "oc_yyy"
  message_id_list: ["om_xxx", "om_yyy", "om_zzz"]
useUAT: true

获取某用户的未读消息

# 工具:mcp__lark-mcp__im.v1.message.list
params:
  container_id_type: "chat"
  container_id: "oc_xxx"
  sort_type: "ByCreateTimeDesc"
  page_size: 50
useUAT: true
# 然后客户端侧筛选出最后已读时间之后的消息

转移群组所有权

# 工具:mcp__lark-mcp__im.v1.chat.update
path:
  chat_id: "oc_xxx"
data:
  owner_id: "ou_new_owner"
useUAT: true

工作流:视频会议结束后向群组发送会议纪要

1. [会议结束] → 从日历事件或会议录制中获取 minute_token

2. mcp__lark-mcp__minutes.v1.minuteTranscript.get
   → 获取完整会议记录

3. 使用 AI 总结 → 提取关键决策、待办事项及负责人

4. mcp__lark-mcp__im.v1.message.create
   → msg_type: "interactive"
   → 向会议群组发送结构化卡片,包含:
      - 会议摘要
      - 待办事项(项目符号列表)
      - 录制链接
      - 参与人员

5. mcp__lark-mcp__task.v2.task.create (每个待办事项重复执行一次)
   → 分配给相关团队成员
   → 关联讨论中提到的截止日期

16. 所需应用权限参考

功能所需权限范围
发送消息im:message
读取消息im:message:readonly
群组管理im:chat, im:chat:write
转发消息im:message
Bitable(读取)bitable:app:readonly
Bitable(写入)bitable:app
文档(读取)docs:doc:readonly
文档(写入)docs:doc
云盘drive:drive
日历(读取)calendar:calendar:readonly
日历(写入)calendar:calendar
任务task:task:write
联系人contact:user.base:readonly
Wikiwiki:wiki:readonly
审批approval:approval:readonly, approval:instance
视频会议(预约/管理)vc:meeting
视频会议(参与者)vc:meeting:readonly
视频会议(录制)vc:record
视频会议(会议室)vc:room:readonly
视频会议(导出报告)vc:export
会议纪要(读取转录内容)minutes:minute:readonly
L
@lucascheung

已收录 1 个 Skill

相关推荐