飞书(Lark)MCP function call 全场景 AI Agent 来啦🚀

144 天前
 cvcat

Lark MCP - 飞书全场景 Function Call AI 助手 🚀

一个基于飞书(Lark)的全场景 MCP Function Call AI Agent ,实现大模型通过飞书进行函数调用和消息处理。

欢迎 star ⭐和 fork

项目地址👉https://github.com/cv-cat/LarkAgentX

无需配置飞书机器人,你的飞书账号即是 AI 助手。

只需定义函数和注释,你的飞书机器人会自动根据场景调用。

项目概述 🌟

Lark MCP 是一个现代化的 Python 应用程序,能够:

效果图🧸


图 1: 后台日志

图 2: 聊天数据库查询

图 3: 天气查询

图 4: 简单注册函数,只需定义函数和注释

✨ 功能特点

📦 当前支持的函数

项目目前内置了以下函数供大模型调用:

函数名 描述
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 讲个笑话

📂 项目结构

project/
├── app/                    # 应用程序模块
│   ├── api/                # API 相关模块
│   │   ├── auth.py         # 认证模块
│   │   └── lark_client.py  # 飞书客户端
│   ├── config/             # 配置模块
│   │   └── settings.py     # 应用配置
│   ├── core/               # 核心业务逻辑
│   │   ├── mcp_server.py   # MCP 服务器
│   │   └── message_service.py  # 消息处理服务
│   ├── db/                 # 数据库相关
│   │   ├── models.py       # 数据模型
│   │   └── session.py      # 数据库会话管理
│   └── utils/              # 工具函数
├── builder/                # 请求构建器
├── static/                 # 静态资源
│   ├── resource/           # 图片资源
│   ├── proto_pb2.py        # 协议定义
│   └── lark_decrypt.js     # 飞书解密工具
├── .env                    # 环境变量
├── main.py                 # 应用入口
└── Dockerfile              # Docker 配置

🛠️ 自定义函数开发

app/core/mcp_server.py 文件中,您可以使用 @register_tool 装饰器添加您自己的自定义函数:

@register_tool(name="tell_joke", description="讲一个随机笑话")
def tell_joke() -> str:
    jokes = [
        "为什么程序员都喜欢黑色?因为他们不喜欢 bug 光。",
        "Python 和蛇有什么共同点?一旦缠上你就放不下了。",
        "为什么 Java 开发者很少被邀去派对?因为他们总是抛出异常。",
    ]
    return random.choice(jokes)

@register_tool(name="send_message", description="给指定用户发送消息 {user:用户名称 content:消息内容}")
def send_message(user: str, content: str) -> str:
    """给指定用户发送私信"""
    lark_client = LarkClient(get_auth())
    # ... 实现逻辑 ...
    return f"成功向 {user} 发送了私信: '{content}'"

重要: 只需添加函数和对应的描述,AI 会根据用户的文字自动分析并调用最匹配的函数,无需手动实现函数匹配逻辑。

🧸关于我

正在实习的一名研二学生,有问题欢迎加群或者加 V 交流,联络方式在 github 上哈,感谢 star⭐

3311 次点击
所在节点    分享创造
9 条回复
cvcat
144 天前
没人 star 、评论 ┭┮﹏┭┮
kid1412621
144 天前
飞书 != lark
cvcat
144 天前
kid1412621
144 天前
@cvcat #3 账号不相通
cvcat
143 天前
@kid1412621 加密是通的
liewstar
143 天前
能调到用户加入的群组信息吗
cvcat
142 天前
@liewstar 这个暂时不支持,需要逆向一个新结构的消息,可以实现
hugetimors
142 天前
想了解咋逆向的
cvcat
136 天前
@hugetimors protobuf js 逆向

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1126275

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX