Feishu/Lark Cloud Sync Setup
Sibyl can sync research progress, papers, and data tables to Feishu (飞书) / Lark cloud workspace.
Sibyl uses a dual-MCP architecture for Feishu:
MCP Server
Auth
Purpose
| lark (Official) |
Tenant access token |
Bitable (multidimensional tables), instant messaging |
| feishu (Community) |
User OAuth token |
Document creation, folders, native tables |
Both are needed for full functionality because the official Lark MCP focuses on Bitable/IM, while document operations require the community Feishu MCP.
- Go to Feishu Open Platform (or Lark Developer)
- Create a new app
- Note your App ID and App Secret
- Configure permissions:
- docs:doc — Document read/write
- drive:drive — File management
- bitable:app — Bitable read/write
- im:message — Send messages
2. Install Official Lark MCP
npm install -g @larksuiteoapi/lark-mcp
Add to ~/.mcp.json:
{
"mcpServers": {
"lark": {
"command": "npx",
"args": ["-y", "@larksuiteoapi/lark-mcp"],
"env": {
"LARK_APP_ID": "your-app-id",
"LARK_APP_SECRET": "your-app-secret"
}
}
}
}
3. Install Community Feishu MCP
Search for feishu-mcp community implementations. Add to ~/.mcp.json:
{
"mcpServers": {
"feishu": {
"command": "feishu-mcp",
"args": [],
"env": {
"FEISHU_USER_ACCESS_TOKEN": "your-user-access-token"
}
}
}
}
The user access token requires OAuth authorization flow. Refer to the Feishu MCP documentation for the token acquisition process.
lark_enabled: true # Default: true
- After each eligible pipeline stage, cli_record() appends a trigger to {workspace}/lark_sync/pending_sync.jsonl and returns sync_requested: true
- The main Claude session launches sibyl-lark-sync in the background (non-blocking)
- The sibyl-lark-sync skill:
- Creates/updates a Feishu document for the research project
- Uploads experiment results as native tables (NOT code blocks)
- Syncs research diary and stage summaries
- Uploads compiled PDF papers
- Token registry stored in {workspace}/lark_sync/registry.json
- Latest result is stored in {workspace}/lark_sync/sync_status.json
- Tables must use create_feishu_table (native tables), NOT code block rendering
- Documents are split by iteration, each volume ≤ 20KB
- Each # Iteration section becomes a separate document volume
lark_enabled: false
When disabled, background sync triggers are skipped entirely. All research data remains available locally in the workspace.
Trigger sync at any time:
/sibyl-research:sync <project>