lark-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@lark-mcpcreate a doc titled 'Q3 Planning' in my folder"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
lark-mcp
A FastMCP (Python) server that wraps lark-cli to expose
Lark/Feishu (IM, calendar, contacts, docs, drive, base, task) as MCP tools, gated by OAuth 2.1.
PUBLIC_BASE_URL/authorizefederates to Lark's real login (OAuthProxy) purely to identify the caller byopen_id— it does not grant any Lark API scope itself.Acting as a specific person (rather than the shared bot) is handled separately, via
lark-cli's own device-flow login (lark_login_start/lark_login_confirmtools), sincelark-clionly trusts tokens it obtained itself.Each linked user gets an isolated
$HOMEon the shared PVC (/data/homes/<open_id>), solark-cli's per-user token store doesn't collide across identities under one app-id.
Deploying
Build the image:
docker build -t <your-registry>/lark-mcp:latest .Fill in
lark-mcp-deployment.yaml'sSecret(app-id/app-secret from the Lark Developer Console, and a signing key viaopenssl rand -hex 32) and your own hostname/TLS secret name.Register
https://<your-hostname>/auth/callbackas a redirect URI for your Lark app.kubectl apply -f lark-mcp-deployment.yaml -n <namespace>
Related MCP server: Feishu/Lark OpenAPI MCP
Using with Amazon Quick Desktop
Quick Desktop's Remote connection type (native HTTP + OAuth) has a track record of failing
against otherwise spec-compliant MCP servers with a bare 401 — several confirmed cases in
AWS's own Quick community forum, independent of this server. The reliable path is Quick's
Local connection type via mcp-remote as a
stdio bridge: mcp-remote performs the full browser-based OAuth handshake itself, and Quick
just talks to it over stdio, never touching OAuth directly.
In Quick Desktop: Settings → Capabilities → MCP Servers → Add → Local
Field | Value |
Name |
|
Command |
|
Args |
|
--auth-timeout 300 matters: the default is 30 seconds, which isn't enough time to click
through the consent screen and log into Lark interactively — the flow will otherwise fail
right at the final redirect with "site can't be reached," even though everything up to that
point worked.
The first tool call opens a real browser window to approve access once; mcp-remote caches
the resulting token in ~/.mcp-auth/ afterward.
Known gotcha: stale local port on re-auth
mcp-remote reuses the same local callback port (e.g. 9210) across runs. If Quick Desktop
doesn't cleanly kill a previous mcp-remote process before spawning a new one for re-auth,
the new one crashes with EADDRINUSE — the browser still shows "Authorization successful"
(caught by the old, orphaned process), but Quick never receives a working credential from its
own new attempt and just waits indefinitely.
Fix: find and kill the stale listener, then retry.
lsof -i :9210 # note the PID in LISTEN state
kill -9 <PID>Amazon Quick / Amazon Q Developer has a known bug in its OAuth state machine when handling re-authentication on expired tokens:
It spawns multiple overlapping authorization states (visible in the logs as duplicate /authorize requests with different state IDs). When the browser sends the callback to localhost:9210, the local HTTP handler responds with success HTML to the browser, but fails to dispatch the event to the waiting MCP client thread.
What the logs show
Looking directly at the Kubernetes pod logs during your re-auth attempt:
MCP Server initiated the flow correctly:
Server returned 401 Unauthorized when the token expired.
Amazon Quick requested GET /authorize?...&redirect_uri=http://localhost:9210/oauth/callback...
Lark authorization completed and returned to the server at /auth/callback.
MCP Server completed its handoff:
The MCP server issued an HTTP 302 Found redirecting your browser back to Amazon Quick's local listener (http://localhost:9210/oauth/callback?code=...&state=...).
Amazon Quick received the browser callback:
The webpage displaying "Authorized, you can close this tab" was served by Amazon Quick's local server running on localhost:9210.
Amazon Quick failed to complete the exchange:
After receiving the authorization code, Amazon Quick was supposed to send a POST /token request to https://larkmcp.uzzikie.com/token to exchange the code for the session token.
No POST /token request was ever made to the MCP server.
Amazon Quick's internal connection worker hung/lost the event from its own localhost:9210 listener and remained stuck waiting in the UI.
How to resolve it
Restart Amazon Quick / Reload IDE Window:
Fully restart Amazon Quick (or in VS Code / JetBrains: Developer: Reload Window or restart the IDE).
This kills the orphaned localhost:9210 listener and clears the stuck internal state.
Re-connect with a clean initial auth:
Reconnect or click authorize after the restart. Fresh/initial authentication succeeds cleanly, unlike the in-place re-auth flow.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Let AI agents query data and act across all your business apps via MCP.
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
- ZapierOAuthcom.zapier
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP-based service that enables AI models to seamlessly interact with Feishu (Lark) platform, supporting document reading and chatbot messaging capabilities.2554MIT
- -licenseNot gradedqualityNot gradedmaintenanceA 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.7,954-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Feishu/Lark platform through comprehensive OpenAPI integration, supporting message management, document operations, calendar scheduling, group chats, Bitable operations, and more automation scenarios with dual authentication support.7,954MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Feishu/Lark Open Platform APIs for tasks like document processing, chat management, and calendar scheduling.7,954MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/uzzikie/lark-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server