# 飞书 MCP Server - 表格功能实现
## 概述
本次更新为飞书 MCP Server 添加了文档内嵌表格支持,通过 `feishu_insert_table` 工具可以在飞书文档中插入表格。
## 新增功能
### feishu_insert_table
在飞书文档中插入表格,支持两种输入方式:
#### 1. Markdown 表格语法
```typescript
feishu_insert_table({
document_id: "xxx",
markdown_table: `
| 方案 | 优点 | 缺点 |
|------|------|------|
| A | 快 | 贵 |
| B | 便宜 | 慢 |
`
})
```
#### 2. 结构化数据
```typescript
feishu_insert_table({
document_id: "xxx",
headers: ["方案", "优点", "缺点"],
rows: [
["A", "快", "贵"],
["B", "便宜", "慢"]
],
header_row: true, // 可选,默认 true
column_width: [150, 150, 150] // 可选,默认 150px
})
```
### 参数说明
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| document_id | string | ✅ | 飞书文档 ID 或完整 URL |
| markdown_table | string | ⭕ | Markdown 格式的表格 |
| headers | string[] | ⭕ | 表头数组 |
| rows | string[][] | ⭕ | 数据行数组 |
| header_row | boolean | ❌ | 第一行是否为表头样式(默认 true)|
| column_width | number[] | ❌ | 列宽数组(像素),不指定则自动分配 |
| block_id | string | ❌ | 插入位置的 Block ID,不指定则追加到末尾 |
注:`markdown_table` 和 `headers + rows` 二选一。
## 技术实现
### 修改的文件
1. **src/types.ts** - 添加表格相关类型定义
- `TableProperty` - 表格属性
- `TableContent` - 表格内容
- `ParsedTable` - 解析后的 Markdown 表格
- `InsertTableOptions` - 插入表格选项
- 更新 `BlockType` 枚举
2. **src/schemas/feishu.ts** - 添加 Zod 验证 schema
- `InsertTableSchema` - 表格插入参数验证
3. **src/tools/table.ts** - 表格工具实现(新文件)
- `parseMarkdownTable()` - 解析 Markdown 表格
- `registerTableTools()` - 注册 MCP 工具
4. **src/index.ts** - 注册表格工具
### Block 结构
飞书文档表格使用 block_type=31,结构如下:
```
Table (block_type=31)
├── property: { row_size, column_size, column_width, header_row, header_column }
└── cells: [
[Text Block, ...], // 第一个单元格的内容块
[Text Block, ...], // 第二个单元格的内容块
... // 按行展开的所有单元格
]
```
## 验证方法
```bash
# 1. 重新构建 MCP Server
cd ~/.mcp-servers/feishu-mcp-server
npm run build
# 2. 重启 Copilot CLI 或终端以加载新工具
# 3. 测试插入表格
feishu_insert_table(
document_id: "ZHWGdjZYiorx3ZxnEHxcMW2on3g",
markdown_table: "| A | B |\n|---|---|\n| 1 | 2 |"
)
```
## 已知限制
1. 目前不支持合并单元格(merge_info)
2. 不支持富文本格式的单元格内容(仅支持纯文本)
3. 不支持表格样式自定义
## 后续计划
- [ ] 添加电子表格支持 (`feishu_create_spreadsheet`)
- [ ] 支持单元格富文本格式
- [ ] 支持合并单元格