feishu-user-plugin — Claude Code MCP server: 85 Feishu tools
An MCP server and CLI for Feishu/Lark with 85 tools, three auth layers, and user-identity messaging over cookie plus protobuf.
claude mcp add --env LARK_COOKIE=<LARK_COOKIE> --env LARK_APP_ID=<LARK_APP_ID> --env LARK_APP_SECRET=<LARK_APP_SECRET> --env LARK_USER_ACCESS_TOKEN=<LARK_USER_ACCESS_TOKEN> --env LARK_USER_REFRESH_TOKEN=<LARK_USER_REFRESH_TOKEN> --transport stdio feishu-user-plugin -- npx -y feishu-user-pluginWhat feishu-user-plugin does
The server covers IM, docs, Bitable, wiki, drive, calendar, Tasks v2, OKR and live events. There are 85 tools and 9 MCP prompts exposed as slash commands: /send, /reply, /digest, /search, /doc, /table, /wiki, /drive and /status. Auth is split into three independent layers, and you do not need all of them — whichever credentials you have, those tools work. The cookie layer sends text and rich-text posts as you. The official bot API handles reading and writing in groups, documents and tables. A user OAuth token is what unlocks P2P chat reads and makes you the owner of resources you create.
Setup runs through npx feishu-user-plugin setup --app-id <APP_ID> --app-secret <APP_SECRET>, then npx feishu-user-plugin oauth to fetch the user token, then a client restart. A cookie expires after 12–24 hours without a heartbeat, so you log into feishu.cn and grab a fresh one now and then. The protocol layer rides on the Feishu web client, so a change on their side can break it; bot capabilities are unaffected.
Sending images and files as a user is a two-step affair: the send itself goes over cookie, but image_key and file_key must first come from the official API (upload_image, upload_file). Cards never go out over cookie — the server blocks that channel and always uses the bot. Live events work on feishu.cn only, since the international Lark WSClient at lark.com does not support them.
What it helps with
- send a Feishu message as yourself without registering an app
- read P2P chats and a user's chat list
- digest a group discussion over a chosen window
- pull a document or Bitable into an agent workflow
- run several Feishu accounts from one machine
Example prompts for the agent
- Send this as me on Feishu: reviewed the code, three nits left
- Read today's messages in the 工程组 group and write a digest
- Check all three auth layers with
/status
How to install feishu-user-plugin
Platform CLI
claude mcp add --env LARK_COOKIE=<LARK_COOKIE> --env LARK_APP_ID=<LARK_APP_ID> --env LARK_APP_SECRET=<LARK_APP_SECRET> --env LARK_USER_ACCESS_TOKEN=<LARK_USER_ACCESS_TOKEN> --env LARK_USER_REFRESH_TOKEN=<LARK_USER_REFRESH_TOKEN> --transport stdio feishu-user-plugin -- npx -y feishu-user-pluginReplace <…> with your own values
Platform CLI
codex mcp add feishu-user-plugin --env LARK_COOKIE=<LARK_COOKIE> --env LARK_APP_ID=<LARK_APP_ID> --env LARK_APP_SECRET=<LARK_APP_SECRET> --env LARK_USER_ACCESS_TOKEN=<LARK_USER_ACCESS_TOKEN> --env LARK_USER_REFRESH_TOKEN=<LARK_USER_REFRESH_TOKEN> -- npx -y feishu-user-pluginReplace <…> with your own values
Config file
{
"mcpServers": {
"feishu-user-plugin": {
"command": "npx",
"args": [
"-y",
"feishu-user-plugin"
],
"env": {
"LARK_COOKIE": "<LARK_COOKIE>",
"LARK_APP_ID": "<LARK_APP_ID>",
"LARK_APP_SECRET": "<LARK_APP_SECRET>",
"LARK_USER_ACCESS_TOKEN": "<LARK_USER_ACCESS_TOKEN>",
"LARK_USER_REFRESH_TOKEN": "<LARK_USER_REFRESH_TOKEN>"
}
}
}
}Replace <…> with your own values
Config file
{
"servers": {
"feishu-user-plugin": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"feishu-user-plugin"
],
"env": {
"LARK_COOKIE": "<LARK_COOKIE>",
"LARK_APP_ID": "<LARK_APP_ID>",
"LARK_APP_SECRET": "<LARK_APP_SECRET>",
"LARK_USER_ACCESS_TOKEN": "<LARK_USER_ACCESS_TOKEN>",
"LARK_USER_REFRESH_TOKEN": "<LARK_USER_REFRESH_TOKEN>"
}
}
}
}Replace <…> with your own values
Platform CLI
gemini mcp add -e LARK_COOKIE=<LARK_COOKIE> -e LARK_APP_ID=<LARK_APP_ID> -e LARK_APP_SECRET=<LARK_APP_SECRET> -e LARK_USER_ACCESS_TOKEN=<LARK_USER_ACCESS_TOKEN> -e LARK_USER_REFRESH_TOKEN=<LARK_USER_REFRESH_TOKEN> feishu-user-plugin npx -y feishu-user-pluginReplace <…> with your own values
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about feishu-user-plugin
How do I install feishu-user-plugin in Claude Code?
Run `claude mcp add feishu-user-plugin -e LARK_COOKIE=<LARK_COOKIE> -e LARK_APP_SECRET=<LARK_APP_SECRET> -e LARK_USER_ACCESS_TOKEN=<LARK_USER_ACCESS_TOKEN> -e LARK_USER_REFRESH_TOKEN=<LARK_USER_REFRESH_TOKEN> -- npx -y feishu-user-plugin`, then restart Claude.
What does feishu-user-plugin do?
It is an MCP server and CLI for Feishu/Lark with 85 tools: user-identity messaging, group and P2P reads, docs, Bitable, wiki, calendar, Tasks v2, OKR and live events.
Do I need to create a Feishu app for it to work?
Not for user-identity text and rich-text posts over cookie. Group reads, docs, tables, calendar, tasks and OKR need LARK_APP_ID and LARK_APP_SECRET from a self-built app.