remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Integrations
Uses .env file for configuration management, allowing easy setup of API keys, database credentials, and other environment-specific settings
Supports containerized deployment of the Lark MCP server through Docker, facilitating easy setup and consistent runtime environments
Provides integration for issue tracking and project discussions through GitHub's issue system and discussion forums
Lark MCP - 飞书全场景 Function Call AI 助手 🚀
一个基于飞书(Lark)的全场景MCP Function Call AI Agent,实现大模型通过飞书进行函数调用和消息处理。
无需配置飞书机器人,你的飞书账号即是AI助手。
只需定义函数和注释,你的飞书机器人会自动根据场景调用。
项目概述 🌟
Lark MCP是一个现代化的Python应用程序,能够:
- 📊 逆向飞书Protobuf格式传输的Websockets和API,监听并记录消息
- 🤖 提供自定义函数供大模型调用
- 🔄 实现基于MCP (Model Context Protocol) 的函数调用框架
- 💾 使用SQLAlchemy将消息存储到MySQL数据库
效果图🧸
✨ 功能特点
- 函数注册机制: 简单直观的函数注册装饰器
- 消息自动处理: 记录所有接收到的消息(私聊和群聊)
- 异步处理: 采用async/await模式进行异步通信
- 数据持久化: 使用SQLAlchemy将消息存储在MySQL数据库中
- 灵活配置: 通过环境变量进行配置
- 容器化部署: 支持Docker快速部署
- 智能函数调用: AI会根据用户输入的文字自动分析并调用最匹配的函数,开发者只需添加函数及其注释描述
📦 当前支持的函数
项目目前内置了以下函数供大模型调用:
函数名 | 描述 |
---|---|
tell_joke | 讲一个随机笑话 |
get_time | 获取当前时间 |
roll_dice | 掷一个指定面数的骰子 |
make_todo_list | 从逗号分隔的任务创建待办清单 |
translate_to_chinese | 将英文单词翻译成中文 |
countdown | 创建一个从指定数字开始的倒计时 |
random_color | 生成一个随机的十六进制颜色代码 |
fortune | 抽取一个随机运势 |
count_daily_speakers | 获取今天发言的人数统计 |
get_top_speaker_today | 获取今天发言最多的用户 |
send_message | 给指定用户发送消息 |
list_tools | 列出所有可用的工具及其描述 |
你可以通过在飞书中输入触发指令后跟要执行的操作来调用这些功能,例如: /run 讲个笑话
📂 项目结构
🛠️ 自定义函数开发
在 app/core/mcp_server.py
文件中,您可以使用 @register_tool
装饰器添加您自己的自定义函数:
重要: 只需添加函数和对应的描述,AI会根据用户的文字自动分析并调用最匹配的函数,无需手动实现函数匹配逻辑。
🔧 环境要求
- Python 3.10+
- Node.js 18+
- MySQL数据库
📦 安装方法
使用本地环境
- 安装依赖:Copy
- Windows用户注意:
Windows系统需要额外安装以下依赖:Copy
使用Docker
方法一:单独构建镜像
方法二:使用Docker Compose(推荐)
使用Docker Compose可以一键启动整个应用环境,包括MySQL数据库和应用服务,更加方便和高效。
🛠️ 配置说明
复制.env.example
文件命名为.env
文件,包含以下配置:
🚀 使用指南
运行应用程序
方法一:直接运行
方法二:使用Docker Compose
应用程序将:
- 初始化MCP服务器
- 连接到飞书API并使用你的飞书账号作为AI助手
- 监听传入的消息
- 处理并执行大模型通过飞书发起的函数调用
- 将消息存储在MySQL数据库中
🗄️ 数据库结构
应用程序将消息存储在messages
表中,该表具有以下结构:
列名 | 类型 | 描述 |
---|---|---|
id | INT (PK) | 主键 |
user_name | VARCHAR(255) | 消息发送者的名称 |
user_id | VARCHAR(255) | 发送者的飞书用户ID |
content | TEXT | 消息内容 |
is_group_chat | BOOLEAN | 消息是否来自群聊 |
group_name | VARCHAR(255) | 群聊名称(如适用) |
chat_id | VARCHAR(255) | 聊天ID |
message_time | DATETIME | 消息发送时间 |
created_at | DATETIME | 记录创建时间 |
🤝 贡献指南
欢迎贡献!请随时提交Pull Request。
- Fork这个仓库
- 创建您的特性分支 (
git checkout -b feature/amazing-feature
) - 提交您的更改 (
git commit -m '添加一些很棒的特性'
) - 推送到分支 (
git push origin feature/amazing-feature
) - 打开Pull Request
🐛 问题与支持
如果您遇到任何问题或有疑问,请提交issue或访问我们的讨论论坛。
📈 Star 趋势
This server cannot be installed
A Model Context Protocol server that enables AI models to perform function calls through Feishu/Lark messaging platform, using your personal account (no bot configuration needed) to create a full-featured AI assistant.