Skip to main content
Glama

@yoreland/lark-cli-mcp

One-line npx MCP server that lets AI clients (Amazon Quick Desktop, Claude Desktop, …) operate Feishu / Lark as your own user identity — send, read, reply, and search messages.

It wraps the official lark-cli (bundled as a dependency, no separate install) and exposes 19 tools over MCP stdio — messaging, cloud docs, Wiki, Drive, and Bitable. Because every call runs with --as user, the sender/creator shown in Feishu is you, not a bot.


Quick start (for workshop attendees)

1) One-time login (in a terminal)

# Bind the shared Feishu app (scan the QR code)
npx -y @yoreland/lark-cli-mcp -- config init --new

# OAuth device-flow login as yourself
npx -y @yoreland/lark-cli-mcp auth

# Sanity check (should report logged-in)
npx -y @yoreland/lark-cli-mcp doctor

2) Add the MCP server in Amazon Quick Desktop

Go to Settings → Capabilities → MCP → + Add MCP:

Quick Desktop — MCP list / Add MCP

In the dialog, use Paste JSON config and paste:

{
  "command": "npx",
  "args": ["-y", "@yoreland/lark-cli-mcp"]
}

Quick Desktop — Paste JSON config

Click Apply → Save. The server should show 19 tools · Connected ✅

Manual form instead of JSON? Connection type = Local, Command = npx, Arguments = -y @yoreland/lark-cli-mcp. Arguments are space-split (no spaces inside the package name, so this is safe).

Settings → Capabilities → Skills → Upload, then select skill/feishu-lark/SKILL.md. Toggle it Active.

Quick Desktop — upload skill

The skill teaches Quick when and how to use the 19 tools (resolve chat_id/open_id first, confirm before sending, Bitable field handling, etc.) — the MCP provides the tools, the skill makes Quick use them well.

4) Try it

  • "看看 XX 群最近聊了什么"

  • "帮我找一下某人"

  • "搜一下我的飞书文档里有没有 …"

  • "列一下这个多维表格 <URL> 的记录"


Related MCP server: Lark MCP Custom

Prerequisites

  • Node.js v18+ (node -v)

  • An MCP client (Amazon Quick Desktop / Claude Desktop / etc.)

  • A Feishu/Lark account in the org running the workshop

  • Network access to npm registry and Feishu OAuth

The Feishu App ID / Secret is provided centrally by the workshop host and baked into the shared lark-cli config — attendees only do the OAuth login step. (See Host setup.)

Behind the Great Firewall? Use a mirror: npm config set registry https://registry.npmmirror.com


Commands

npx -y @yoreland/lark-cli-mcp            # start MCP server (stdio) — what the client runs
npx -y @yoreland/lark-cli-mcp auth       # OAuth device-flow login (user identity)
npx -y @yoreland/lark-cli-mcp status     # show auth status
npx -y @yoreland/lark-cli-mcp logout     # clear token
npx -y @yoreland/lark-cli-mcp doctor     # environment + login self-check
npx -y @yoreland/lark-cli-mcp -- <args>  # passthrough to bundled lark-cli

The tools

Messaging (IM)

Tool

What it does

feishu_send_message

Send a message

feishu_get_messages

Read recent messages

feishu_reply_message

Reply (thread optional)

feishu_search_messages

Search messages

feishu_list_chats

Find group chats

feishu_search_user

Find a user (→ open_id)

feishu_get_thread

View a thread

Docs / Wiki / Drive

Tool

What it does

feishu_search_docs

Search docs / wiki / sheets

feishu_doc_fetch

Read a document

feishu_doc_create

Create a document (markdown)

feishu_doc_update

Update a document

feishu_drive_search

Search Drive files (type filters)

feishu_wiki_node_list

List wiki nodes

feishu_wiki_node_get

Get a wiki node (accepts URL)

Bitable (multi-dimensional tables)

Tool

What it does

feishu_base_table_list

List tables in a base

feishu_base_field_list

List fields of a table

feishu_base_record_list

List records (filter/sort)

feishu_base_record_search

Search records

feishu_base_record_upsert

Create/update a record

Talk to it naturally

Goal

Say to your assistant

Read a group

"看看 XX 群最近聊了什么"

Send

"在 XX 群说:明天会议改到 3 点"

Reply

"回复那条消息:收到,我来跟进"

Search

"搜一下谁提过客户报价"

Find someone

"帮我找一下张三的 open_id"

View a thread

"看看那条消息下面的讨论"


Host setup

The workshop host creates one Feishu custom app and configures it so attendees share the same App ID/Secret but each authorize their own account.

  1. Feishu Open Platform → create an internal custom app → note App ID / App Secret.

  2. Enable User token scopes matching the im, contact, search domains (message read/write, reply, chat read, user search, message search).

  3. Distribute the App ID/Secret to attendees via lark-cli config (or a pre-bound config). The login step requests scopes via --domain im,contact,docs,wiki,drive,base.

auth uses OAuth Device Flow, so no redirect URL / localhost:3000 callback configuration is required.


Troubleshooting

missing required scope(s) — re-login with the needed domain:

npx -y @yoreland/lark-cli-mcp auth --domain im,contact,docs,wiki,drive,base

Client shows "No tools loaded" — run npx -y @yoreland/lark-cli-mcp doctor; confirm Node ≥18 and that auth status is OK.

Token expired — just re-run auth.


Known limitations

  • No image/file attachment sending (text + markdown only)

  • No interactive cards

  • No group creation

  • Tokens expire; re-run auth when they do


How it works

MCP client (Quick Desktop / Claude Desktop)
    │  stdio (MCP / JSON-RPC)
    ▼
@yoreland/lark-cli-mcp  (server.mjs)
    │  child_process.execFile (no shell → injection-safe)
    ▼
lark-cli --as user   (bundled dependency)
    │  OAuth user_access_token (device flow)
    ▼
Feishu / Lark Open API

License

MIT

Available Tools

7 tools
feishu_get_messagesB

查看群聊或私聊的最近消息记录

Inputs: chat_id, user_id, count, start_time, +1 more.

feishu_get_threadB

查看某条消息的完整线程讨论

Inputs: message_id (required), count.

feishu_list_chatsB

搜索飞书群聊列表(按关键词找 chat_id)

Inputs: keyword.

feishu_reply_messageB

回复某条飞书消息(支持线程回复)

Inputs: message_id (required), text (required), in_thread.

feishu_search_messagesC

跨群搜索飞书消息(用户身份)

Inputs: keyword (required), chat_id, start_time, end_time.

feishu_search_userA

按名字/邮箱搜索飞书用户,拿到 open_id

Inputs: query (required).

feishu_send_messageB

以用户身份发送飞书/Lark 消息到群聊或个人(支持纯文本与 Markdown)

Inputs: chat_id, user_id, text, markdown.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 7 tools

    Disambiguation5/5

    Each tool targets a distinct action: sending, replying, retrieving messages, listing chats, searching messages, searching users, and viewing threads. No two tools have overlapping purposes, making it easy for an agent to select the correct one.

    Naming Consistency5/5

    All tools follow a consistent 'feishu_verb_noun' pattern (e.g., feishu_send_message, feishu_list_chats). This uniform convention aids predictability and reduces cognitive load.

    Tool Count5/5

    With 7 tools, the server is well-scoped for a messaging-focused MCP server. Each tool addresses a core function without redundancy, and the count is right-sized for the domain.

    Completeness4/5

    The set covers essential messaging operations: send, reply, retrieve messages, search, and list chats. Minor gaps exist (e.g., creating chats, marking messages as read), but the core workflow is fully supported.

    Related MCP Connectors

    Related MCP Servers

    • -
      license
      Not graded
      quality
      Not graded
      maintenance
      A tool designed to help users connect AI Agents with the Feishu/Lark platform, encapsulating Feishu/Lark Open Platform API interfaces as MCP tools for document processing, conversation management, calendar scheduling and more.
      35,462 npm
      -
    • A
      license
      Not graded
      quality
      C
      maintenance
      MCP server for Feishu/Lark API integration, enabling AI agents to send messages, manage groups, create and edit documents and spreadsheets, and search knowledge bases.
      MIT