The author's stated difference from Feishu's official server is not coverage but shape: API-to-tool conversion produces tools too large to use in Cursor, so the complex ones here — block creation, nested blocks — were reworked to fit. Scope matters when you choose it: documents are what ships today, while spreadsheets and Bitable are listed as future plans, not features.
A remote MCP server for Feishu (Lark) documents that you deploy to Cloudflare Workers yourself. Users sign in with their Feishu account and the server manages and refreshes the `user_access_token` for them, so nothing has to be pasted into a client config. It is adapted from Cloudflare's remote-mcp-github-oauth demo with GitHub OAuth replaced by Feishu OAuth.
- Document structure: fetch a document's block tree, and get the creation-parameter schema for a block type before creating one
- Document editing: create blocks of the supported types, including nested blocks, update block content, and batch-delete blocks
- Tables inside documents, image, video and file upload and insertion, and media management
- Markdown import, and document search
- Development-documentation search and recall
- An OAuth 2.1 implementation that authenticates MCP clients and keeps Feishu tokens in Cloudflare KV
- Per-user state through Durable Objects, so which tools a user sees can depend on who signed in
- An `/sse` endpoint reachable directly by URL from Cursor, or through `npx -y mcp-remote` for clients that need a stdio bridge
A Cloudflare account and a Feishu Open Platform application, plus Node.js 18+ and npm. Set `FEISHU_APP_ID`, `FEISHU_APP_SECRET` and `COOKIE_ENCRYPTION_KEY` as Wrangler secrets, create the `OAUTH_KV` namespace, and register `https://feishu-mcp-server.<your-subdomain>.workers.dev/callback` as the redirect URL in the app's security settings; locally the same values go in `.dev.vars` against `http://localhost:8788/callback`. The app needs permissions including `auth:user.id:read`, `task:task:read`, `offline_access` and `user_profile`. Access control is simple and worth knowing: every authenticated Feishu user can reach every tool.
One command plus a key — npx -y mcp-remote ${URL}, then supply credentials
