A side-by-side look at the Feishu User Plugin and Founders Os MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Feishu User Plugin for workplace & productivity work as a local process; choose Founders Os for workplace & productivity as a local process. You can also run both side by side in one block.
mcpServersLARK_COOKIE, LARK_APP_ID, LARK_APP_SECRET, LARK_USER_ACCESS_TOKEN, LARK_USER_REFRESH_TOKEN.manage_bitable_app, manage_bitable_table, manage_bitable_field.SUPABASE_URL, SUPABASE_SECRET_KEY, FOUNDERS_OS_COMPANY_ID, FOUNDERS_OS_USER_ID, FOUNDERS_OS_TIMEZONE, EMBEDDING_PROVIDER, EMBEDDING_MODEL, EMBEDDING_DIM.ping, get_version, get_usage_guide.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Workplace & Productivity | Workplace & Productivity |
| Quality signal | 63/100 · Good | 61/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | API key required |
| Pricing | Not declared | BYOK (pay the provider) |
| Required env vars | LARK_COOKIELARK_APP_IDLARK_APP_SECRETLARK_USER_ACCESS_TOKENLARK_USER_REFRESH_TOKEN | SUPABASE_URLSUPABASE_SECRET_KEYFOUNDERS_OS_COMPANY_IDFOUNDERS_OS_USER_IDFOUNDERS_OS_TIMEZONEEMBEDDING_PROVIDEREMBEDDING_MODELEMBEDDING_DIM |
| Verified owner | Community listing | Community listing |
| GitHub stars | 10 | 19 |
| Directory activity | 1 views 0 installs 0 upvotes | 4 views 0 installs 0 upvotes |
| Tools | 85 | 102 |
| Full listing | View Feishu User Plugin | View Founders Os |
manage_bitable_app[Official API] Manage a Bitable app. action=create (new app, optional wiki_space_id to attach), copy (duplicate an existing app), get_meta (read app metadata).manage_bitable_table[Official API] Manage a table inside a Bitable app. action=list, create (with optional initial fields), update (rename), delete.manage_bitable_field[Official API] Manage fields (columns) inside a Bitable table. action=list, create, update (Feishu requires `type` even when only renaming), delete.manage_bitable_view[Official API] Manage views inside a Bitable table. action=list, create, delete. (Feishu open API does not expose view update — recreate with a new name to change.)manage_bitable_record[Official API] Manage records (rows) inside a Bitable table. action=search, get, create, update, delete. create/update/delete accept arrays — single record or up to 500.list_calendars[Official API + UAT] List the current user's calendars (primary + shared + subscribed). Requires UAT — app identity only sees calendars it was explicitly invited to. Requires `calendar:calendar:readonly` scope on the OAuth.list_calendar_events[Official API + UAT] List events in a calendar within an optional time range. Typical usage: first list_calendars to find calendar_id (primary calendar has type="primary"), then list events in e.g. [now, now+7d] (Unix seconds).get_calendar_event[Official API + UAT] Get full details of a single calendar event (summary, description, start/end, attendees, location, attachments, meeting link).create_calendar_event[Official API + UAT, v1.3.7] Create a new calendar event. Requires `calendar:calendar.event:create` scope (re-run `npx feishu-user-plugin oauth` after enabling). The current identity (UAT-first) must have writer or owner permission on the calendar.
Time fields: A time object: {timestamp:"<unix-seconds>", timezone?:"Asia/Shanghai"} OR {date:"YYYY-MM-DD"} for all-day events.update_calendar_event[Official API + UAT, v1.3.7] Patch fields on an existing calendar event. Pass only the fields you want to change. Requires `calendar:calendar.event:update` scope.delete_calendar_event[Official API + UAT, v1.3.7] Delete a calendar event. Requires `calendar:calendar.event:delete` scope.respond_calendar_event[Official API + UAT, v1.3.7] Respond to an event invitation. The current identity must be in the event's attendee list. Requires `calendar:calendar.event:reply` scope.pingTest tool — returns pong.get_versionReturns the running version of @ourthinktank/founders-os, the rendering contract version (used to detect plugin/server drift), how the connector was launched (launchMethod: npx | global | local | unknown) with a tailored howToUpdate string, the release channel (channel: stable | prerelease), the published head of that channel, and the database schema status (dbSchemaStatus: current | behind | ahead | untracked | unknown) with a howToUpdateDb step when action is needed. Version comparison is semver-aware and channel-aware: stable builds compare against the `latest` tag, prerelease builds against the `next` tag, so a prerelease that is ahead of stable is NOT reported as an update. versionStatus is one of current | update-available | ahead | unknown; updateAvailable is true only when a genuinely newer version exists on your channel (with updateTo naming it). Call at session start; if updateAvailable is true relay current vs updateTo and the howToUpdate step, and if dbSchemaStatus is behind or untracked relay the howToUpdateDb step.get_usage_guideReturns a detailed guide on how to use Founders OS - covering all six domains (CRM, Tasks, Tags, Finance, Feeds, Memory), surface tools, search protocols, common workflows, and tips. Call this when uncertain about how to approach a task.show_capabilitiesReturns example prompts and workflows organized by domain (CRM, Tasks, Finance, Feeds, Memory, Surfaces). Call this when a user asks 'what can you do?', 'show me what I can do', 'help me get started', or wants to explore what Founders OS offers. Lighter than the full usage guide - focused on natural-language examples rather than technical reference.list_demosReturns available interactive demo walkthroughs bundled with Founders OS. When called without a name, returns a summary list of available demos. When called with a demo name, returns the full script (with shared presentation rules prepended) so the AI agent can run it directly. Call this when a user asks about demos, wants to explore features, or is onboarding.add_customerCreate a new customer record. Customers are organizations or individuals that your business works with or is pursuing. If similar customers already exist, a `conflict` response is returned with options to use an existing record or create a new one. Pass skip_duplicate_check=true to bypass this on retry.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"ethanqc-feishu-user-plugin": {
"command": "npx",
"args": [
"-y",
"feishu-user-plugin"
],
"env": {
"LARK_COOKIE": "YOUR_LARK_COOKIE_HERE",
"LARK_APP_ID": "YOUR_LARK_APP_ID_HERE",
"LARK_APP_SECRET": "YOUR_LARK_APP_SECRET_HERE",
"LARK_USER_ACCESS_TOKEN": "YOUR_LARK_USER_ACCESS_TOKEN_HERE",
"LARK_USER_REFRESH_TOKEN": "YOUR_LARK_USER_REFRESH_TOKEN_HERE"
}
}
}
}
{
"mcpServers": {
"ourthinktank-founders-os": {
"command": "npx",
"args": [
"-y",
"@ourthinktank/founders-os@latest"
],
"env": {
"SUPABASE_URL": "YOUR_SUPABASE_URL_HERE",
"SUPABASE_SECRET_KEY": "YOUR_SUPABASE_SECRET_KEY_HERE",
"FOUNDERS_OS_COMPANY_ID": "YOUR_FOUNDERS_OS_COMPANY_ID_HERE",
"FOUNDERS_OS_USER_ID": "YOUR_FOUNDERS_OS_USER_ID_HERE",
"FOUNDERS_OS_TIMEZONE": "YOUR_FOUNDERS_OS_TIMEZONE_HERE",
"EMBEDDING_PROVIDER": "YOUR_EMBEDDING_PROVIDER_HERE",
"EMBEDDING_MODEL": "YOUR_EMBEDDING_MODEL_HERE",
"EMBEDDING_DIM": "YOUR_EMBEDDING_DIM_HERE"
}
}
}
}
get_customerGet a single customer with their contacts, recent interactions, and open tasks.update_customerUpdate fields on an existing customer record.search_customersSearch customers by name, notes, city, state, or tags. Returns matching customers with summary info.list_customersList customers with optional filters. Returns paginated results with summary info. Response includes a render field with tiered rendering guidance - check it before composing your reply.remove_customerRemove a customer by archiving (sets phase to inactive, recoverable) or permanently deleting. On first call, returns a `conflict` with ARCHIVE / DELETE / CANCEL options. Pass mode after the user decides. Contacts cascade on delete; history is preserved on archive.add_contactAdd a contact person to a customer organization. Contacts are individuals you interact with at that company.