MCP Hub
Back to servers

feishu-user-plugin

All-in-one Feishu/Lark MCP for Claude Code & Codex. 84 tools, 3 auth layers, send-as-user.

Registry
Stars
1
Forks
1
Updated
May 9, 2026

Quick Install

npx -y feishu-user-plugin

feishu-user-plugin

License: MIT Node.js MCP Tools npm PRs Welcome

中文 · English · Docs · CHANGELOG · npm

飞书 / Lark MCP 服务器,覆盖 IM、文档、多维表格、知识库、云空间、日历、任务 v2、OKR、实时事件。84 tools · 3 auth layers · 9 MCP prompts · MIT licensed · Node ≥18

兼容 Claude Code、Codex、Cursor、Windsurf、VS Code、Claude Desktop、OpenClaw 等 MCP 客户端。

与其他飞书 MCP 的区别:基于 cookie + protobuf 协议路径,支持以用户本人身份发消息——飞书官方开放 API 没有 send_as_user 权限点,机器人 token 发出的消息一律标 sender_type: "app"

三层鉴权

鉴权层凭证覆盖能力工具数
用户身份(cookie + protobuf)LARK_COOKIE以用户身份发文本 / 图片 / 文件 / 富文本 / @ / 批量8
官方 API(机器人)LARK_APP_ID + LARK_APP_SECRET群消息读写、文档、多维表格、知识库、云空间、日历、任务 v2、OKR、联系人、实时事件 WS70+
用户 OAuth UATLARK_USER_ACCESS_TOKEN + LARK_USER_REFRESH_TOKENP2P 私聊读取、用户 chat 列表;写入文档 / Bitable / 日历 资源时以用户为 owner2 显式 + 全工具 UAT-first

三层独立 —— 配置任意一层,对应工具可用。

安装

npx feishu-user-plugin setup --app-id <APP_ID> --app-secret <APP_SECRET>
npx feishu-user-plugin oauth         # 拿用户 OAuth UAT
# 重启 Claude Code / Codex

cookie 获取:跟 Claude Code 说一句"帮我设置飞书 cookie"会自动经 Playwright 扫码登录抓取;手动方式在 feishu.cn DevTools Network 标签从请求头 Cookie 整行复制(不要用 document.cookie 或 Application > Cookies 标签—— HttpOnly 的 session / sl_session 拿不到)。

没有 APP_ID / SECRET 见下面 创建飞书应用

用法

你:帮我以我身份给王小明发:今天的代码 review 我看完了,有 3 个 nit
Claude:[调用 send_to_user]  Sent
你:总结"工程组"群今天 9 点之后的讨论,发个日报到 #日报频道
Claude:[read_messages → 总结 → send_to_group]  Sent

创建飞书应用

LARK_APP_ID / LARK_APP_SECRET 是用 Official API(70+ 工具)的前置条件:

  1. 飞书开放平台 登录 → 创建自建应用(不能选商店应用 / 第三方应用,否则 P2P 读取会被锁)
  2. 添加应用能力 → 启用机器人
  3. 权限管理 → 添加 scope:
    • 消息:im:messageim:message:readonlyim:chat:readonly
    • 文档:docx:documentbitable:recordwiki:wiki:readonlydrive:drive:readonly
    • 联系人:contact:user.base:readonly
    • 按需:okr:okr:readonlycalendar:calendar:readonlytask:taskdrive:drivedocs:document.media:uploadwiki:wiki
  4. 凭证与基础信息 → 复制 App ID(cli_xxx)+ App Secret
  5. 创建版本 → 提交审核 → 管理员审批
  6. 把 bot 加到要读消息的群里

工具索引(84 个)

完整工具列表 + 参数 + 跨域注意事项见 CLAUDE.md

用户身份 —— 消息(cookie protobuf,8 个)

工具说明
send_to_user按名搜用户 + 发文本,一步完成
send_to_group按名搜群 + 发文本,一步完成
send_as_user按 chat ID 发文本,支持回复线程(root_id / parent_id
send_image_as_user以用户身份发图(v1.3.9)
send_file_as_user以用户身份发文件(需先 upload_file
send_post_as_user富文本:标题 + 段落 + @ + 超链
send_card_as_user飞书交互卡片(机器人通道;cookie 通道服务端关闭,仅 bot 路径可用)
batch_send一次发多条到不同 chat(text / image / file / post)

用户身份 —— 联系人 / 信息(cookie,5 个)

工具说明
search_contacts搜用户 / bot / 群
create_p2p_chat创建或获取 P2P chat
get_chat_info群详情(接受 oc_xxx 或 numeric)
get_user_info用户名 / 头像查询
get_login_status三层鉴权健康检查(实际跑一次 UAT 调用,不只看配置)

用户 OAuth UAT —— P2P 读取(2 个)

工具说明
read_p2p_messages读私聊历史(外部群自动 fallback)
list_user_chats用户加入的所有群(仅群,不含 P2P;P2P 用 search_contactscreate_p2p_chat

官方 API —— IM(15 个)

工具说明
list_chats列 bot 加入的所有 chat
read_messages读群消息(接受 chat 名 / oc_xxx / numeric;外部群自动 UAT fallback;merge_forward 自动展开)
send_message_as_bot机器人发消息
reply_message机器人回复
forward_message转发到其他 chat(自动识别 receive_id_type)
delete_message撤回 / 删除 bot 消息
update_message编辑已发消息(仅支持 text / interactive)
add_reaction / delete_reaction表情回应
pin_message置顶
create_group / update_group建群 / 改群
list_members / manage_members群成员 list / add / remove(注意 member_id_type 与 ID 类型匹配)
download_message_resource下载消息附件(image / file,> 2 MiB 必须 save_path

官方 API —— 文档(7 个)

工具说明
search_docs关键词搜文档
read_doc结构化 JSON
read_doc_markdownv1.3.9 直接返回 markdown,~60% token 节省(适合 RAG / 总结)
get_doc_blocks块树
create_doc创建文档(可选 wiki_space_id 直接落知识库)
manage_doc_block块 create / update / delete(image_path / file_path / image_token / file_token 快捷)
download_doc_image下载文档内嵌图片

官方 API —— 多维表格 Bitable(6 个,v1.3.7 整合)

工具actions说明
manage_bitable_appcreate / copy / get_meta应用级(创建可指定 wiki_space_id 直接落 Wiki)
manage_bitable_tablelist / create / update / delete数据表 CRUD
manage_bitable_fieldlist / create / update / delete字段(update 必须传 type 即使只改名)
manage_bitable_viewlist / create / delete视图(grid / kanban / gallery / form / gantt / calendar)
manage_bitable_recordsearch / get / create / update / delete记录 CRUD(数组:单条或最多 500)
upload_bitable_attachment上传附件,返回 file_token

官方 API —— 知识库 Wiki(9 个)

工具说明
list_wiki_spaces列空间(UAT-first)
search_wiki搜知识库
list_wiki_nodes列节点
get_wiki_node节点 → obj_token 解析(接受 wiki node token 或 obj_token)
create_wiki_node创建节点(doc / sheet / bitable / mindnote / file / docx / slides)
update_wiki_node改名(内容编辑用 docx / bitable 工具)
move_wiki_node移动
copy_wiki_node深拷贝
delete_wiki_node删除 wiki 节点指针(底层 drive 资源用 manage_drive_file(action=delete) 删)

官方 API —— 云空间 Drive(5 个)

工具说明
list_files列文件夹内文件
create_folder建文件夹
manage_drive_filecopy / move / delete(必须传 type
upload_image / upload_file上传图片 / 文件,返回 key
upload_drive_file上传到 Drive 文件夹(可选 wiki_space_id 直接挂 Wiki 节点)

官方 API —— OKR(6 个)

工具说明
list_user_okrs列指定用户的 OKR(必须传 user_id)
get_okrs批量取详情(objectives + key results + progress + alignments)
list_okr_periods列周期(季度 / 年度)
create_okr_progress_record添加进展记录(v1.3.7,需 okr:okr.content:write
list_okr_progress_records列进展记录(从 get_okrs 提取 triples)
delete_okr_progress_record删进展记录

官方 API —— 日历(8 个,写入 v1.3.7)

工具说明
list_calendars列日历(primary + 共享 + 订阅)
list_calendar_events列事件(指定时间窗)
get_calendar_event事件详情(参与人 / 地点 / 会议链接 / 附件)
create_calendar_event建事件(需 calendar:calendar.event:write
update_calendar_event改事件
delete_calendar_event删事件(可选 meeting_chat_id 同时解散关联会议群)
respond_calendar_eventRSVP(accept / decline / tentative)
get_freebusy多人 freebusy 查询

官方 API —— 任务 v2(7 个,v1.3.7 新域)

标识符是 task_guid(不是 v1 的 numeric task_id),需 task:task scope。

工具说明
list_tasks列当前用户任务
get_task详情
create_task建任务(summary 必填)
update_task改任务(必传 update_fields=[...],飞书只 patch 列出字段)
complete_task完成 / 取消完成
delete_task
manage_task_membersadd / remove 成员(assignee / follower)

插件层 —— 诊断与多账号(4 个)

工具说明
get_login_status三层鉴权健康检查
list_profiles列可用 profile(默认 + LARK_PROFILES_JSON / credentials.json)
switch_profile切 profile(缓存的 client 实例下次调用重建)
manage_profile_hints查 / 改 / 清 自动切换缓存(list / set / clear)

插件层 —— 实时事件(2 个,v1.3.9)

工具说明
get_new_events拉取增量事件(peek=true 不推进 cursor;filter by event_type / chat_id / since_seconds / profile)
manage_ws_statusinfo / reconnect / claim / rotate / reconfig(诊断 / 重连 / 抢锁 / 强制 events.jsonl 轮转 / 不重启重新订阅)

9 个 MCP prompts(slash commands)

Prompt说明
/send以用户身份发消息
/reply读最近消息然后回
/digest群 / P2P 最近消息总结
/search搜联系人 / 群
/doc搜 / 读 / 建文档
/table操作多维表格
/wiki搜知识库
/drive列云空间 / 建文件夹
/status检查三层鉴权状态

客户端配置

环境变量配置一致,配置文件路径和顶层键不同。

统一 env 块

{
  "command": "npx",
  "args": ["-y", "feishu-user-plugin"],
  "env": {
    "LARK_COOKIE": "your-cookie-string",
    "LARK_APP_ID": "cli_xxxxxxxxxxxx",
    "LARK_APP_SECRET": "your-app-secret",
    "LARK_USER_ACCESS_TOKEN": "your-uat",
    "LARK_USER_REFRESH_TOKEN": "your-refresh-token"
  }
}

安放位置

客户端配置文件顶层键
Claude Code~/.claude.json(推荐全局) / .mcp.jsonmcpServers.feishu-user-plugin
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json (macOS)mcpServers.feishu
Codex~/.codex/config.toml[mcp_servers.feishu-user-plugin](TOML)
Cursor.cursor/mcp.json(项目级)mcpServers.feishu
VS Code (Copilot).vscode/mcp.jsonservers.feishu(注意是 servers,不是 mcpServers
OpenClaw~/.openclaw/openclaw.jsonmcp.servers.feishu-user-plugin
Windsurf~/.codeium/windsurf/mcp_config.jsonmcpServers.feishu

自动化设置

npx feishu-user-plugin setup                       # 默认写 Claude Code (~/.claude.json)
npx feishu-user-plugin setup --client codex        # Codex (~/.codex/config.toml)
npx feishu-user-plugin setup --client both         # Claude Code + Codex 都写
npx feishu-user-plugin setup --activate            # 激活当前 profile

各客户端完整 JSON 模板见 README.en.md MCP Client Configuration

多账号(v1.3.8 / v1.3.9)

~/.feishu-user-plugin/credentials.json 支持多 profile(默认 + 任意附加),单台机器一处配置覆盖多个飞书账号 / 多个企业。

npx feishu-user-plugin list-profiles
npx feishu-user-plugin switch-profile <name>
npx feishu-user-plugin keepalive --all       # 跨 profile keepalive

读路径工具(read_* / list_* / get_* / search_* / download_*)失败码 91403 / 1254301 / 1254000 / 99991672 / HTTP 403 时自动跨 profile retry。写路径不自动切(避免错号创建资源)。

单调用覆盖:传 via_profile: "<name>" 钉到指定 profile,传 via_profile: "auto" 给写路径开自动切换。

详见 CLAUDE.md "Multi-profile auto-switch" 段

实时事件(v1.3.9 机器级 SSOT)

机器上单进程持有 WS owner 锁(~/.feishu-user-plugin/ws-owner.lockO_CREAT|O_EXCL,30s stale),所有 MCP 进程共享 ~/.feishu-user-plugin/events.jsonl(10 MB 软 / 20 MB 硬限自动轮转),events.cursor.json 是全机所有 harness 共享的 drain cursor —— 每条事件全机恰好一次。

mcp call manage_ws_status --action info        # 谁在持锁、当前订阅、events.jsonl 大小
mcp call manage_ws_status --action claim --force true   # 跨进程抢锁

默认订阅 ["im.message.receive_v1"]。要订阅其他事件(审批 / 日历 / vc / etc),编辑 credentials.json::profiles[<active>].events,然后 manage_ws_status(action=reconfig) 不重启重新订阅。

仅支持 feishu.cn —— Lark 国际版(lark.com)的 WSClient 当前不支持。

工程细节

Token 生命周期

鉴权层Token有效期续期
Cookiesl_session12h max-age4h 心跳自动刷新
Apptenant_access_token2hSDK 自动管理
User OAuthuser_access_token~2hrefresh_token 自动刷新,写回 credentials.json
Refresh Token7 天keepalive cron 防过期
crontab -e
# 0 */4 * * * npx feishu-user-plugin keepalive >> /tmp/feishu-keepalive.log 2>&1

UAT 刷新失败 invalid_grant —— refresh token 过期 / 被撤销,重跑 npx feishu-user-plugin oauth 然后重启 Claude Code / Codex。

凭证存储(v1.3.7+)

单一可信源 ~/.feishu-user-plugin/credentials.json(mode 0600),多 harness 共享。schema 见 docs/CREDENTIALS-FORMAT.md

npx feishu-user-plugin migrate              # dry-run
npx feishu-user-plugin migrate --confirm    # 真写

自动 sync hooks

阶段触发文件作用
pre-commitCLAUDE.md staged同步到 AGENTS.md + skill 引用
pre-commitpackage.json / plugin.json / SKILL.md staged三角等价检查(version 必须一致)
pre-commitsrc/server.js / src/tools/* staged工具个数 + README 84 tools 徽章必须一致
pre-commitsrc/* stagedsmoke test
post-merge (main)任意自动开 team-skills sync PR

CI(.github/workflows/validate.yml)每个 PR 跑同样的 gate。

已知限制

  • Cookie 寿命:12-24 小时无心跳过期,需重新登录 feishu.cn 拿 cookie
  • 协议变化:cookie + protobuf 层依赖飞书 web 客户端的协议,飞书更新可能失效(机器人能力不受影响)
  • 卡片:cookie 通道发卡片服务端不可用,机器人通道可发
  • Lark 国际版:实时事件 WS 不支持
  • 未实现search_messages(v1.3.10 计划)、md → wiki 同步(v1.3.10 主线)

完整 ROADMAP 见 ROADMAP.md

贡献

Issues / PR 欢迎。提交前先看 CONTRIBUTING.md

飞书改协议导致功能挂掉 —— 开 issue 带错误日志即可。

License

MIT

致谢

Reviews

No reviews yet

Sign in to write a review