Skip to main content

飞书消息监控与文档处理MCP服务器

Project description

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 .

方式二:直接从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!

更新日志

v0.1.0

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

feishu_enhance_mcp-0.1.0.tar.gz (17.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

feishu_enhance_mcp-0.1.0-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file feishu_enhance_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: feishu_enhance_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 17.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for feishu_enhance_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e0bb05c4934d35f4ed083664f4e5b93c7d0603f1e858ee2bd5141347c093ec7f
MD5 b7c9653989d9ec8640b7098b5d1d08fa
BLAKE2b-256 7b4f511060e0b1590d64d8fdcce01f09359233a81908b40f30d330614f333777

See more details on using hashes here.

File details

Details for the file feishu_enhance_mcp-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for feishu_enhance_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3379032fd0902cec214c3399785c25a933acc93df10df2b69c05566c37d6eae3
MD5 4f99018e4f691acb10a9139e35f95817
BLAKE2b-256 57656ad364425ca23bbf6497d1d2b4bb8d73d38040e12bf4d85bda02efdbdea4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page