飞书MCP服务器
飞书MCP服务器是一个基于Model Context Protocol的服务,提供飞书API集成,使AI模型能够轻松与飞书服务交互。
目录
- 功能特点
- 项目架构
- 代码结构
- 设计原则
- 工作流程
- 快速开始
- 前提条件
- 安装步骤
- 运行服务
- 配置说明
- API文档
- 文档操作
- 机器人操作
- 聊天操作
- 多维表格操作
- 开发指南
- 代码规范
- 错误处理
- 提交规范
- 扩展指南
- 常见问题
- 许可证
- 贡献指南
功能特点
- 文档服务:读取飞书文档内容和元数据
- 机器人服务:发送文本消息和交互卡片到飞书聊天
- 聊天服务:管理群组和聊天会话
- 多模式支持:
- STDIO模式:通过标准输入/输出通信,适用于CLI环境和集成到其他应用
- HTTP模式:提供REST API和SSE连接,适用于Web服务和分布式部署
- 完善的错误处理:统一的错误处理机制,提供详细的错误信息
- 类型安全:基于TypeScript,提供完整的类型定义
- 模块化架构:易于扩展新功能和集成其他飞书API
项目架构
代码结构
/src
/client # API客户端实现(底层API请求封装)
/documents # 文档相关API客户端
/bots # 机器人API客户端
/chats # 聊天相关API客户端
/services # 服务层实现(业务逻辑和错误处理)
/documents # 文档相关服务
/bots # 机器人相关服务
/chats # 聊天相关服务
/server # MCP服务器实现
/tools # MCP工具注册和实现
/typings # 类型定义
/utils # 通用工具函数
/http # HTTP服务器实现
/logger # 日志服务
/consts # 常量定义
config.ts # 配置管理
index.ts # 入口点
设计原则
项目采用分层架构设计,确保关注点分离和职责明确:
1. 分层职责
客户端层(Client)
- 封装HTTP请求的细节
- 处理底层API参数和响应格式
- 管理认证和令牌刷新
- 不包含业务逻辑
服务层(Service)
- 使用客户端执行API操作
- 实现业务逻辑
- 处理和转换错误
- 提供友好的接口给上层使用
工具层(Tools)
- 实现MCP协议定义的工具
- 处理参数验证和格式转换
- 调用服务层完成实际操作
- 格式化返回结果
2. 依赖方向
- 服务层依赖客户端层
- 工具层依赖服务层
- 严格避免循环依赖
3. 错误处理策略
- 使用
FeiShuApiError
统一处理API错误 - 客户端层返回原始错误
- 服务层捕获并转换为业务相关错误
- 工具层处理所有异常并返回用户友好消息
工作流程
- MCP服务器接收请求(STDIO或HTTP)
- 工具层验证参数并调用相应服务
- 服务层实现业务逻辑并调用客户端
- 客户端执行实际API请求并返回结果
- 结果经由服务层处理后返回给工具层
- 工具层格式化结果并返回给MCP服务器
快速开始
前提条件
- Node.js 23.0或更高版本
- pnpm包管理器
- 有效的飞书开发者账号和已创建的自建应用
安装步骤
- 克隆仓库
git clone https://github.com/yourusername/feishu-mcp-server.git
cd feishu-mcp-server
- 安装依赖
pnpm install
- 创建
.env
文件
# 飞书应用凭证(必填)
FEISHU_APP_ID=your_app_id
FEISHU_APP_SECRET=your_app_secret
# 服务器配置(可选)
PORT=3344
LOG_LEVEL=info
运行服务
开发模式
# 开发模式(自动重启)
pnpm dev
# 或使用普通启动
pnpm start
生产模式
# 构建项目
pnpm build
# 运行编译后的代码
node dist/index.js
STDIO模式
# 方法1:使用环境变量
NODE_ENV=cli node dist/index.js
# 方法2:使用命令行参数
node dist/index.js --stdio
配置说明
选项 | 环境变量 | 命令行参数 | 默认值 | 描述 |
---|---|---|---|---|
飞书应用ID | FEISHU_APP_ID | --feishu-app-id | - | 飞书自建应用的App ID |
飞书应用密钥 | FEISHU_APP_SECRET | --feishu-app-secret | - | 飞书自建应用的App Secret |
服务器端口 | PORT | --port | 3344 | HTTP服务器端口号 |
日志级别 | LOG_LEVEL | --log-level | info | 日志级别(debug/info/warn/error) |
令牌缓存时间 | TOKEN_CACHE_DURATION | - | 7100 | 访问令牌缓存时间(秒) |
API文档
文档操作
get_feishu_doc_raw
获取飞书文档的原始内容。
参数:
docId
- 文档ID,通常在URL中找到 (例如:feishu.cn/docx/)
返回:
- 文档的文本内容
get_feishu_doc_info
获取飞书文档的元数据信息。
参数:
docId
- 文档ID
返回:
- 文档的元数据(JSON格式)
机器人操作
send_feishu_text_message
发送文本消息到飞书聊天。
参数:
chatId
- 聊天IDtext
- 要发送的文本内容
返回:
- 发送状态和消息ID
send_feishu_card
发送交互卡片到飞书聊天。
参数:
chatId
- 聊天IDcardContent
- 卡片内容(JSON字符串)
返回:
- 发送状态和消息ID
聊天操作
get_feishu_chat_info
获取飞书聊天的基本信息。
参数:
chatId
- 聊天ID
返回:
- 聊天的基本信息(JSON格式)
多维表格操作
get_feishu_sheet_meta
获取飞书多维表格的元数据信息。
参数:
appToken
- 多维表格ID,通常在URL中找到 (例如:feishu.cn/base/ 或 feishu.cn/app/)
get_feishu_sheet_tables
appToken
- 多维表格ID,通常在URL中找到 (例如:feishu.cn/base/ 或 feishu.cn/app/) pageSize
- 每页返回的数据表数量,可选,默认为20,最大为100pageToken
- 分页标记,可选,用于获取下一页数据
get_feishu_sheet_views
appToken
- 多维表格ID,通常在URL中找到 (例如:feishu.cn/base/ 或 feishu.cn/app/) tableId
- 数据表IDpageSize
- 每页返回的视图数量,可选,默认为20,最大为100pageToken
- 分页标记,可选,用于获取下一页数据
get_feishu_sheet_view
appToken
- 多维表格ID,通常在URL中找到 (例如:feishu.cn/base/ 或 feishu.cn/app/) tableId
- 数据表IDviewId
- 视图ID,要获取详细信息的视图
get_feishu_sheet_records
appToken
- 多维表格ID,通常在URL中找到 (例如:feishu.cn/base/ 或 feishu.cn/app/) tableId
- 数据表IDviewId
- 视图ID,可选,不指定时使用默认视图fieldIds
- 字段ID列表,可选,指定返回哪些字段filter
- 过滤条件,可选,使用FQL格式sort
- 排序条件,可选,使用JSON格式pageSize
- 每页返回的记录数量,可选,默认为20,最大为100pageToken
- 分页标记,可选,用于获取下一页数据
get_feishu_sheet_record
appToken
- 多维表格ID,通常在URL中找到 (例如:feishu.cn/base/ 或 feishu.cn/app/) tableId
- 数据表IDrecordId
- 记录IDfieldIds
- 字段ID列表,可选,指定返回哪些字段
开发指南
代码规范
# 运行代码检查
pnpm lint
# 运行代码检查并修复
pnpm lint:fix
# 运行代码格式化
pnpm format
错误处理
所有与飞书API相关的错误应使用 FeiShuApiError
类处理:
try {
// API操作
} catch (error) {
if (error instanceof FeiShuApiError) {
// 处理特定的API错误
logger.error(`FeiShu API Error (${error.code}): ${error.message}`);
} else {
// 处理通用错误
logger.error('Unexpected error:', error);
}
// 转换为用户友好消息
throw new FeiShuApiError('操作失败', { cause: error });
}
提交规范
<type>(<scope>): <subject>
扩展指南
常见问题
认证失败
令牌刷新问题
许可证
贡献指南
Project Details
- sdd330/feishu-mcp-server
- feishu-mcp-server
- MIT License
- Last Updated: 4/18/2025
Recomended MCP Servers
大家好!我是功能丰富的 MCP 服务,旨在打破设备与服务的隔阂,为用户带来便捷体验。 天气工具和气象平台联动,快速为用户推送全球实时天气,助力大家规划出行。控制浏览器工具模拟人工操作,自动搜索、浏览网页,大幅节省时间。摄像头工具调用本地摄像头拍照、录像,实现人脸识别,保障家庭安防。 为实现工具协同,我搭建了稳定框架,开发者可以基于现有服务进行拓展
An MCP server that helps you find MCP servers that are listed on PulseMCP.com
MCP Server for blockchain interactions with Web DApp for secure transaction signing
Azure API Management as AI Gateway to Remote MCP servers.
An MCP server for Tavily's search API
An open source framework for building AI-powered apps with familiar code-centric patterns. Genkit makes it easy to develop,...
MCP to provide secure IT tools for AI network troubleshooting (remote ssh, ping, nslookup, etc)
Fused MCP Agents: Setting up MCP Servers for Data Scientists
MCP server(s) for Aipolabs ACI.dev
MCP server for executing CMD commands. Can be hooked to claude for additional agentics.