feishu-enhance-mcp

feishu-enhance-mcp

Enables real-time Feishu message monitoring, sending, file upload to cloud documents, and supports async and scheduled tasks via MCP.

Category
访问服务器

README

FeiShu Enhance MCP Server

飞书消息监控与文档处理MCP服务器,提供完整的飞书消息收发、监控、文件上传、异步任务功能。

功能特性

  • 消息监听:实时接收飞书消息,支持主群聊自动处理和@触发
  • 消息发送:发送文本消息、回复消息、上传文件
  • 异步任务:支持耗时任务异步处理,不阻塞消息接收
  • 定时任务:支持Cron和Interval定时任务
  • 文档处理:上传文件到飞书云文档

安装

方式一:从GitHub克隆安装(推荐)

# 克隆仓库
git clone https://github.com/jiaxinghit/feishu-enhance-mcp.git
cd feishu-enhance-mcp

# 安装依赖
pip install -e .

方式二:从PyPI安装

# 从PyPI直接安装
pip install feishu-enhance-mcp

# 如果需要更新到最新版本
pip install --upgrade feishu-enhance-mcp

方式三:Trae IDE中安装

步骤1:安装包

pip install feishu-enhance-mcp

步骤2:在Trae中配置

  1. 打开 Trae → Settings → AI Management → MCP → Add Manually
  2. 粘贴以下配置:
{
  "mcpServers": {
    "feishu-enhance": {
      "command": "python",
      "args": ["-m", "feishu_enhance_mcp.server"],
      "env": {
        "APP_ID": "your_app_id",
        "APP_SECRET": "your_app_secret",
        "PRIMARY_CHAT_ID": "oc_xxx"
      }
    }
  }
}
  1. 点击确认,MCP Server 将自动添加

方式四:直接从GitHub安装

# 从GitHub直接安装
pip install git+https://github.com/jiaxinghit/feishu-enhance-mcp.git

# 如果需要指定分支(如main分支)
pip install git+https://github.com/jiaxinghit/feishu-enhance-mcp.git@main

# 如果需要更新到最新版本
pip install --upgrade git+https://github.com/jiaxinghit/feishu-enhance-mcp.git

配置

1. 获取飞书应用凭证

  1. 访问 飞书开放平台
  2. 创建企业自建应用
  3. 在应用详情页获取 App IDApp Secret
  4. 配置应用权限(见下方权限要求)

2. 配置MCP客户端

将以下配置添加到 MCP 客户端配置文件中:

Claude Desktop 配置文件位置:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

标准配置(安装后直接使用):

{
  "mcpServers": {
    "feishu-enhance": {
      "command": "python",
      "args": ["-m", "feishu_enhance_mcp.server"],
      "env": {
        "APP_ID": "your_app_id",
        "APP_SECRET": "your_app_secret",
        "PRIMARY_CHAT_ID": "oc_xxx"
      }
    }
  }
}

使用虚拟环境的配置:

{
  "mcpServers": {
    "feishu-enhance": {
      "command": "/path/to/venv/bin/python",
      "args": ["-m", "feishu_enhance_mcp.server"],
      "env": {
        "APP_ID": "your_app_id",
        "APP_SECRET": "your_app_secret",
        "PRIMARY_CHAT_ID": "oc_xxx"
      }
    }
  }
}

Windows虚拟环境示例:

{
  "mcpServers": {
    "feishu-enhance": {
      "command": "C:\\Users\\YourName\\.venv\\Scripts\\python.exe",
      "args": ["-m", "feishu_enhance_mcp.server"],
      "env": {
        "APP_ID": "cli_xxxxxxxxxxxxxxxx",
        "APP_SECRET": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "PRIMARY_CHAT_ID": "oc_xxxxxxxxxxxxxxxx"
      }
    }
  }
}

3. 环境变量说明

变量名 必填 说明
APP_ID 飞书应用的 App ID
APP_SECRET 飞书应用的 App Secret
PRIMARY_CHAT_ID 主监听群聊ID(可选,也可通过工具动态设置)

注意: 从GitHub安装后,无需设置 cwd 参数,因为 pip install -e . 会将模块安装到Python环境中,可以直接通过 python -m feishu_enhance_mcp.server 启动。

消息监听策略

本服务采用智能消息过滤策略:

  • 主群聊:直接处理所有消息,无需@
  • 其他群聊:只有@机器人的消息才会被处理

配置主群聊:

# 设置主群聊ID
lark_set_primary_chat(chat_id="oc_xxx")

# 获取当前主群聊ID
result = lark_get_primary_chat()

主群聊ID会自动保存到 monitor_config.json 文件中,重启后自动加载。

工具列表

核心工具

工具名称 描述
lark_get_messages 获取未处理消息列表
lark_send_message 发送文本消息
lark_reply_message 回复消息并标记已处理
lark_wait_for_message 阻塞等待新消息(推荐)

会话管理工具

工具名称 描述
lark_start_monitor 启动监控会话
lark_stop_monitor 停止监控会话
lark_list_monitors 列出所有监控会话
lark_get_connection_status 获取飞书长连接状态
lark_get_processor_status 获取消息处理器状态

辅助工具

工具名称 描述
lark_get_chat_list 获取群聊列表
lark_get_chat_info 获取聊天详情
lark_mark_processed 标记消息已处理
lark_clear_queue 清空消息队列
lark_set_primary_chat 设置主监听群聊ID
lark_get_primary_chat 获取当前主群聊ID

文档工具

工具名称 描述
lark_upload_file 上传本地文件到飞书云文档
lark_send_file_to_chat 上传文件并发送到聊天

异步任务工具

工具名称 描述
lark_create_async_task 创建异步任务
lark_get_task_status 查询任务状态
lark_list_tasks 列出所有任务

定时任务工具

工具名称 描述
lark_add_schedule_task 添加定时任务
lark_remove_schedule_task 删除定时任务
lark_list_schedule_tasks 列出所有定时任务
lark_enable_schedule_task 启用/禁用定时任务

使用示例

启动监控并等待消息

# 1. 启动监控会话
lark_start_monitor(session_name="my-monitor")

# 2. 循环等待消息
while True:
    result = lark_wait_for_message(timeout=0)
    if result["success"]:
        message = result["message"]
        # 处理消息...
        lark_reply_message(message["message_id"], "收到!")

定时任务示例

# 每天早上9点发送消息
lark_add_schedule_task(
    name="每日提醒",
    trigger_type="cron",
    trigger_config={"hour": 9, "minute": 0},
    chat_id="oc_xxx",
    message="早上好!新的一天开始了!"
)

# 每小时发送一次
lark_add_schedule_task(
    name="每小时提醒",
    trigger_type="interval",
    trigger_config={"hours": 1},
    chat_id="oc_xxx",
    message="整点报时"
)

触发器配置说明:

  • cron 触发器:支持标准 cron 表达式参数

    • hour: 小时 (0-23)
    • minute: 分钟 (0-59)
    • day: 日期 (1-31)
    • month: 月份 (1-12)
    • day_of_week: 星期几 (0-6, 0=周一)
  • interval 触发器:支持间隔时间参数

    • weeks: 周数
    • days: 天数
    • hours: 小时数
    • minutes: 分钟数
    • seconds: 秒数

上传文件到云文档

# 上传Excel文件
result = lark_upload_file(
    file_path="/path/to/file.xlsx",
    file_name="报表.xlsx"
)
# 返回: {"success": True, "file_token": "...", "file_name": "报表.xlsx"}

异步任务处理

# 创建异步任务
result = lark_create_async_task(
    task_type="generate_report",
    description="生成复杂报告",
    chat_id="oc_xxx"
)
# 返回: {"success": True, "task": {"id": "task_xxx", ...}}

# 查询任务状态
status = lark_get_task_status(task_id="task_xxx")

权限要求

需要在飞书开放平台开通以下权限:

权限 说明 必需
im:message 消息操作
im:message:send_as_bot 以应用身份发消息
im:message:receive_as_bot 以应用身份接收消息
drive:file:upload 文件上传
im:file IM文件发送

目录结构

feishu-enhance-mcp/
├── feishu_enhance_mcp/     # 主模块
│   ├── __init__.py
│   ├── message_processor.py  # 消息处理器(解耦架构)
│   └── server.py          # MCP服务器
├── pyproject.toml         # 项目配置
├── README.md              # 说明文档
├── start_mcp.bat          # Windows启动脚本
└── start_mcp.sh           # Linux/Mac启动脚本

依赖

  • mcp>=1.0.0 - Model Context Protocol SDK
  • lark-oapi>=1.0.0 - 飞书开放平台SDK
  • python-dotenv>=1.0.0 - 环境变量管理
  • apscheduler>=3.10.0 - 定时任务调度

架构说明

本项目采用解耦架构设计:

  • 消息接收层:WebSocket长连接接收消息,立即存入队列
  • 业务处理层:后台异步线程处理消息,发送回复
  • 两者互不阻塞,确保消息接收的实时性
消息接收层: 收到消息 → 存入队列 → 立即返回 → 继续监听
                ↓
业务处理层: 异步处理 → 发送回复 (不阻塞接收层)

许可证

MIT License

贡献

欢迎提交Issue和Pull Request!

开发

GitHub Actions

本项目使用 GitHub Actions 进行持续集成和自动发布:

CI 工作流.github/workflows/ci.yml

  • 每次推送或 PR 时自动运行
  • 多版本 Python 测试(3.10, 3.11, 3.12)
  • 代码风格检查(flake8, black, isort)
  • 自动构建测试

发布工作流.github/workflows/publish.yml

  • 创建 Release 时自动发布到 PyPI
  • 需要配置 PYPI_API_TOKEN 密钥

查看工作流状态:https://github.com/jiaxinghit/feishu-enhance-mcp/actions

本地开发

# 克隆仓库
git clone https://github.com/jiaxinghit/feishu-enhance-mcp.git
cd feishu-enhance-mcp

# 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Linux/Mac
# 或 venv\Scripts\activate  # Windows

# 安装开发依赖
pip install -e ".[dev]"

# 运行测试
pytest

# 代码格式化
black feishu_enhance_mcp
isort feishu_enhance_mcp

更新日志

v0.1.0

  • 初始版本发布
  • 支持消息收发、监控
  • 支持文件上传
  • 支持异步任务和定时任务
  • 采用解耦架构,消息接收与业务处理分离
  • 添加 GitHub Actions CI/CD 工作流

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选