Lark MCP Custom
by venchuian
README.md
# 自定义飞书 MCP Server
## 项目结构
```
lark-mcp-custom/
├── src/
│ ├── index.ts # 入口:初始化 MCP Server + 注册工具
│ ├── lark-client.ts # 飞书 SDK 客户端封装
│ └── tools/
│ ├── im-tools.ts # 消息工具(发消息、群列表、消息历史)
│ ├── calendar-tools.ts # 日历工具(查询事件、创建事件)
│ └── docs-tools.ts # 文档工具(搜索文档、多维表格读写)
├── .env.example
├── package.json
├── tsconfig.json
└── claude_desktop_config.example.json
```
## 已实现工具
| 工具名 | 功能 |
|--------|------|
| `lark_send_message` | 发送文本消息到群或用户 |
| `lark_list_chats` | 获取机器人所在群列表 |
| `lark_get_messages` | 获取群内最近消息 |
| `lark_calendar_events` | 查询日历事件 |
| `lark_create_event` | 创建日历事件 |
| `lark_search_docs` | 搜索云空间文档 |
| `lark_bitable_list_records` | 读取多维表格记录 |
| `lark_bitable_create_record` | 向多维表格写入记录 |
## 安装和运行
### 前置条件
- Node.js >= 20
- 飞书企业自建应用(App ID + App Secret)
### 步骤
1. 安装依赖
```bash
npm install
```
2. 配置环境变量
```bash
cp .env.example .env
# 编辑 .env,填入 FEISHU_APP_ID 和 FEISHU_APP_SECRET
```
3. 构建
```bash
npm run build
```
4. 测试运行
```bash
FEISHU_APP_ID=cli_xxx FEISHU_APP_SECRET=xxx node dist/index.js
```
5. 配置 Claude 桌面版(见下方)
## 配置 Claude 桌面版
编辑 Claude 配置文件:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"lark-mcp-custom": {
"command": "node",
"args": ["/你的绝对路径/lark-mcp-custom/dist/index.js"],
"env": {
"FEISHU_APP_ID": "cli_你的AppID",
"FEISHU_APP_SECRET": "你的AppSecret"
}
}
}
}
```
重启 Claude 桌面版后即可使用。
## 飞书应用权限配置
在飞书开放平台(https://open.feishu.cn/app)为应用开启以下权限:
**IM(消息)**
- `im:message` 读写消息
- `im:chat:readonly` 查看群信息
**日历**
- `calendar:calendar` 读写日历
**云文档 & 多维表格**
- `drive:drive:readonly` 搜索文档
- `bitable:app` 多维表格读写
## 扩展开发
新增工具只需两步:
1. 在 `src/tools/` 下创建新文件,导出 `registerXxxTools(server, client)` 函数
2. 在 `src/index.ts` 中 import 并调用
工具定义格式:
```typescript
server.tool(
"工具唯一名称",
"工具功能描述(Claude 会看这个来决定何时调用)",
{ 参数: z.string().describe("参数说明") },
async (params) => {
// 调用飞书 API
return { content: [{ type: "text", text: "返回结果" }] };
}
);
```
TDQS
B3.4/5.0
Scored across 8 tools
Disambiguation5/5
Each tool targets a distinct resource and action: bitable records, calendar events, chats/messages, and document search. No overlapping purposes.
Naming Consistency4/5
Most tools follow a lark_<domain>_<verb>_<noun> pattern, but lark_calendar_events deviates by lacking a verb (should be lark_list_calendar_events). Otherwise consistent.
Tool Count5/5
8 tools is well-scoped for a Lark integration covering bitable, calendar, messaging, and docs. Each tool adds distinct value.
Completeness3/5
Notable gaps: bitable lacks update/delete, calendar lacks update/delete, messaging lacks delete, and docs only have search. Core workflows covered but lifecycle incomplete.
Maintenance
ActivityInactive
ResponsivenessNo issues