这是一个用于访问飞书(Lark)电子表格数据的模型上下文协议(MCP)服务器。该包在 PyPI 上提供,便于安装和 MCP 集成。
安装包:
pip install lark-sheet-mcp
添加到你的 MCP 配置(选择一种方法):
方法 1:使用 pipx(推荐)
{
"mcpServers": {
"lark-sheet-mcp": {
"command": "pipx",
"args": ["run", "lark-sheet-mcp", "--app-id", "your_app_id", "--app-secret", "your_app_secret"]
}
}
}
方法 2:使用 uv
{
"mcpServers": {
"lark-sheet-mcp": {
"command": "uvx",
"args": ["lark-sheet-mcp", "--app-id", "your_app_id", "--app-secret", "your_app_secret"]
}
}
}
方法 3:预安装
{
"mcpServers": {
"lark-sheet-mcp": {
"command": "lark-sheet-mcp",
"args": ["--app-id", "your_app_id", "--app-secret", "your_app_secret"]
}
}
}
开始使用:当需要时,包会自动安装(方法 1-2),或者使用预安装版本(方法 3)!
此 MCP 服务器为 AI 助手提供了通过标准化接口读取和查询飞书(Lark)电子表格数据的能力。它支持的操作包括列出电子表格、读取单元格范围、搜索内容以及检索工作表信息。
该包现在可在 PyPI 上获得:
pip install lark-sheet-mcp
pip install git+https://github.com/LupinLin1/lark-sheet-mcp.git
# 克隆仓库
git clone https://github.com/LupinLin1/lark-sheet-mcp.git
cd lark-sheet-mcp
# 在开发模式下安装
pip install -e .
# 安装开发依赖
pip install -e ".[dev]"
由于该包在 PyPI 上可用,您可以在您的 MCP 客户端中进行配置。选择最适合您设置的方法:
选项 A:使用 pipx 自动安装(推荐)
{
"mcpServers": {
"lark-sheet-mcp": {
"command": "pipx",
"args": ["run", "lark-sheet-mcp", "--app-id", "your_app_id", "--app-secret", "your_app_secret"]
}
}
}
选项 B:使用 uv 自动安装
{
"mcpServers": {
"lark-sheet-mcp": {
"command": "uvx",
"args": ["lark-sheet-mcp", "--app-id", "your_app_id", "--app-secret", "your_app_secret"]
}
}
}
选项 C:使用预安装包
{
"mcpServers": {
"lark-sheet-mcp": {
"command": "lark-sheet-mcp",
"args": ["--app-id", "your_app_id", "--app-secret", "your_app_secret"]
}
}
}
注意:请将 your_app_id 和 your_app_secret 替换为您实际的飞书应用凭证。
参见 mcp-config-example.json 获取完整的配置示例。
或者设置以下环境变量:
export FEISHU_APP_ID="your_app_id"
export FEISHU_APP_SECRET="your_app_secret"
或者作为命令行参数传递:
lark-sheet-mcp --app-id your_app_id --app-secret your_app_secret
# 使用环境变量
lark-sheet-mcp
# 使用命令行参数
lark-sheet-mcp --app-id your_app_id --app-secret your_app_secret
# 设置自定义日志级别
lark-sheet-mcp --log-level DEBUG
# 生成示例配置文件
lark-sheet-mcp --create-config config.json
| 选项 | 环境变量 | 描述 | 默认值 |
|---|---|---|---|
--app-id | FEISHU_APP_ID | 飞书应用 ID | 必填 |
--app-secret | FEISHU_APP_SECRET | 飞书应用密钥 | 必填 |
--config | - | 配置文件路径 | 无 |
--log-level | - | 日志级别(DEBUG/INFO/WARNING/ERROR) | INFO |
--create-config | - | 生成示例配置文件 | - |
获取您飞书账户中可访问的电子表格列表。
参数:
folder_token(可选):指定文件夹的 token,以列出该文件夹中的电子表格page_size(可选):每页的电子表格数量(默认:50,最大:200)示例响应:
[
{
"token": "shtxxxxx",
"name": "我的电子表格",
"url": "https://example.com/sheets/shtxxxxx",
"type": "sheet",
"created_time": "2023-01-01T00:00:00Z",
"modified_time": "2023-01-01T00:00:00Z",
"owner_id": "ou_xxxxx"
}
]
获取特定电子表格的工作表信息。
参数:
spreadsheet_token(必填):电子表格的 token示例响应:
[
{
"sheet_id": "sheet1",
"title": "Sheet1",
"index": 0,
"row_count": 1000,
"column_count": 26,
"frozen_row_count": 0,
"frozen_column_count": 0,
"resource_type": "sheet"
}
]
从特定单元格范围读取数据。
参数:
spreadsheet_token(必填):电子表格的 tokenrange_spec(必填):范围规范(例如:"Sheet1!A1:B10")value_render_option(可选):如何呈现值("ToString", "Formula", "FormattedValue", "UnformattedValue")date_time_render_option(可选):如何呈现日期("FormattedString")示例响应:
{
"range": "Sheet1!A1:B2",
"major_dimension": "ROWS",
"values": [
["姓名", "年龄"],
["John", "25"]
],
"revision": 12345
}
批量读取多个单元格范围的数据。
参数:
spreadsheet_token(必填):电子表格的 tokenranges(必填):范围规范列表(最多 100 个范围)value_render_option(可选):如何呈现值date_time_render_option(可选):如何呈现日期示例响应:
[
{
"range": "Sheet1!A1:B2",
"major_dimension": "ROWS",
"values": [["姓名", "年龄"], ["John", "25"]],
"revision": 12345
},
{
"range": "Sheet1!C1:D2",
"major_dimension": "ROWS",
"values": [["城市", "国家"], ["纽约", "美国"]],
"revision": 12345
}
]
在范围内查找符合特定标准的单元格。
参数:
spreadsheet_token(必填):电子表格的 tokensheet_id(必填):工作表的 IDrange_spec(必填):要搜索的范围(例如:"A1:Z100")find_text(必填):要搜索的文本或正则表达式模式match_case(可选):是否区分大小写(默认:false)match_entire_cell(可选):是否匹配整个单元格内容(默认:false)search_by_regex(可选):是否使用正则表达式搜索(默认:false)include_formulas(可选):是否仅搜索公式(默认:false)示例响应:
{
"matched_cells": ["A1:A1", "B5:B5"],
"matched_formula_cells": [],
"rows_count": 2
}
app_id 和 app_secretspreadsheets:read - 读取电子表格数据drive:read - 访问文件列表应用需要以下 OAuth 范围:
spreadsheets:read - 读取电子表格内容drive:read - 列出文件和文件夹服务器实现了全面的错误处理机制,包括:
常见错误代码:
1310213:权限被拒绝1310214:电子表格未找到1310215:工作表未找到1310216:无效的范围格式1310217:超出速率限制1310218:数据大小超出限制问题:99991663 - 应用未找到
解决方案:
app_id 和 app_secret 是否正确问题:1310213 - 权限被拒绝
解决方案:
spreadsheets:read,drive:read)问题:1310217 - 超出速率限制
解决方案:
问题:1310218 - 数据大小超出限制
解决方案:
read_multiple_ranges 将大范围拆分问题:1310216 - 无效的范围格式
解决方案:
SheetName!A1:B10启用调试日志以查看详细的请求/响应信息:
lark-sheet-mcp --log-level DEBUG
或者设置环境变量:
export FEISHU_LOG_LEVEL=DEBUG
read_multiple_ranges 比多次调用 read_range 更高效A: 使用 list_spreadsheets 工具获取可访问电子表格的 token,或从飞书电子表格 URL 中提取。
A: 飞书 API 每个请求有 10MB 的限制。如果超过此限制,服务器将返回错误。
A: 该服务器目前仅支持读取操作。出于安全原因,写入操作尚未实现。
A: 服务器会自动管理租户访问令牌,包括刷新和缓存,带有 5 分钟的过期缓冲。
A: 服务器会实现自动重试并采用指数退避。您不需要手动处理速率限制。
A: 是的,该服务器使用标准的飞书开放平台 API,这些 API 支持国际使用。
# 运行所有测试
pytest
# 运行覆盖率测试
pytest --cov=feishu_spreadsheet_mcp --cov-report=html
# 运行特定测试文件
pytest tests/test_data_models.py
# 格式化代码
black feishu_spreadsheet_mcp tests
# 排序导入
isort feishu_spreadsheet_mcp tests
# 代码检查
flake8 feishu_spreadsheet_mcp tests
# 类型检查
mypy feishu_spreadsheet_mcp
feishu_spreadsheet_mcp/
├── __init__.py
├── main.py # 入口点
├── server.py # MCP 服务器实现
├── models/ # 数据模型
│ ├── __init__.py
│ └── data_models.py
├── services/ # 业务逻辑
│ ├── __init__.py
│ ├── auth_manager.py # 认证管理
│ └── api_client.py # 飞书 API 客户端
└── tools/ # MCP 工具
├── __init__.py
└── spreadsheet_tools.py
MIT 许可证