VOOZH about

URL: https://glama.ai/mcp/servers/cv-cat/LarkAgentX?locale=ru-RU

⇱ Lark MCP by cv-cat | Glama


Lark Agentx — ваш ИИ-ассистент в Feishu 🚀

👁 Python Version
👁 Node.js Version

ИИ-агент на базе Feishu (Lark), реализующий вызовы функций и обработку сообщений для больших языковых моделей через Feishu.

Настройка бота Feishu не требуется, ваша учетная запись Feishu и есть ИИ-ассистент.

Просто определите функцию и комментарии к ней, и ваш бот Feishu будет автоматически вызывать её в зависимости от контекста.

Обзор проекта 🌟

Lark Agentx — это современное приложение на Python, которое позволяет:

  • 📊 Реверс-инжиниринг веб-сокетов и API, передающих данные в формате Protobuf в Feishu, для прослушивания и записи сообщений

  • 🤖 Предоставление пользовательских функций для вызова большими языковыми моделями

  • 🔄 Реализация фреймворка вызова функций на основе MCP (Model Context Protocol)

  • 💾 Хранение сообщений в базе данных MySQL с использованием SQLAlchemy

Related MCP server: MCP Feishu Project Manager

Скриншоты 🧸

✨ Функциональные особенности

  • Механизм регистрации функций: Простой и интуитивно понятный декоратор для регистрации функций

  • Автоматическая обработка сообщений: Запись всех входящих сообщений (личные чаты и групповые чаты)

  • Асинхронная обработка: Использование модели async/await для асинхронного взаимодействия

  • Персистентность данных: Хранение сообщений в базе данных MySQL через SQLAlchemy

  • Гибкая конфигурация: Настройка через переменные окружения

  • Контейнеризация: Поддержка быстрого развертывания через Docker

  • Интеллектуальный вызов функций: ИИ автоматически анализирует текст пользователя и вызывает наиболее подходящую функцию; разработчику нужно лишь добавить функцию и её описание

📦 Поддерживаемые функции

В проект встроены следующие функции для вызова ИИ-моделями:

Имя функции

Описание

tell_joke

Рассказать случайную шутку

get_time

Получить текущее время

fortune

Узнать случайное предсказание

get_weather

Получить погоду в городе

count_daily_speakers

Получить статистику количества говорящих сегодня

get_top_speaker_today

Получить пользователя, который больше всех писал сегодня

send_message

Отправить сообщение указанному пользователю

list_tools

Перечислить все доступные инструменты и их описания

extra_order_from_content

Извлечь информацию о заказе из текста, включая номер заказа, название товара, количество и т.д.

Вы можете вызывать эти функции, введя в Feishu команду запуска, за которой следует действие, например: /run Расскажи шутку

📂 Структура проекта

project/
├── app/ # 应用程序模块
│ ├── api/ # API相关模块
│ │ ├── auth.py # 认证模块
│ │ └── lark_client.py # 飞书客户端
│ ├── config/ # 配置模块
│ │ └── settings.py # 应用配置
│ ├── core/ # 核心业务逻辑
│ │ ├── mcp_server.py # MCP服务器(函数注册和处理)
│ │ ├── llm_service.py # LLM服务
│ │ └── message_service.py # 消息处理服务
│ ├── db/ # 数据库相关
│ │ ├── models.py # 数据模型
│ │ └── session.py # 数据库会话管理
│ └── utils/ # 工具函数
├── builder/ # 请求构建器
├── extension/ # 扩展功能
│ └── weather_api/ # 天气API集成
├── static/ # 静态资源
│ ├── resource/ # 图片资源
│ ├── proto_pb2.py # 协议定义
│ └── lark_decrypt.js # 飞书解密工具
├── .env # 环境变量
├── main.py # 应用入口
├── requirements.txt # 项目依赖
├── docker-compose.yml # Docker Compose配置
└── 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}'"

Важно: Просто добавьте функцию и соответствующее описание, ИИ автоматически проанализирует текст пользователя и вызовет наиболее подходящую функцию, реализовывать логику сопоставления вручную не нужно.

🔧 Системные требования

  • Python 3.10+

  • Node.js 18+

  • База данных MySQL

📦 Установка

Использование локальной среды

  1. Установка зависимостей:

    pip install -r requirements.txt
  2. Примечание для пользователей Windows: В системе Windows необходимо дополнительно установить следующие зависимости:

    pip install win-inet-pton==1.1.0

Использование Docker

Способ 1: Сборка образа отдельно

# 构建镜像 
docker build -t feishuapp .

# 运行容器 需要外部mysql 通过docker网关连接宿主机mysql 推荐--env-file
docker run -it feishuapp bash

Способ 2: Использование Docker Compose (рекомендуется)

# 启动所有服务(应用和数据库)
docker-compose up -d

# 查看日志
docker-compose logs -f

# 停止所有服务
docker-compose down

Использование Docker Compose позволяет запустить всю среду приложения одним нажатием, включая базу данных MySQL и сервисы приложения, что более удобно и эффективно.

🛠️ Конфигурация

Скопируйте файл .env.example и переименуйте его в .env, указав следующие параметры:

# 数据库设置
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=123456
DB_NAME=lark_messages

# 飞书的Cookie设置 - 只需配置LARK_COOKIE即可,告别飞书机器人
LARK_COOKIE=""

# 调用函数的触发前缀 (以FUNCTION_TRIGGER_FLAG开头的消息会被大模型解析,所有消息都会被记录到数据库,无论是否以该前缀开头)
FUNCTION_TRIGGER_FLAG="/run"

# 机器人发言前缀 (暂未使用)
AI_BOT_PREFIX="Lark AI Bot:"

# OpenAI API配置 默认是通义千问的,满足OpenAI的大模型厂商都可以
OPENAI_API_KEY=""
OPENAI_API_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
OPENAI_API_MODEL="qwen-plus"

🚀 Руководство по использованию

Запуск приложения

Способ 1: Прямой запуск

python main.py

Способ 2: Использование Docker Compose

docker-compose up -d

Приложение выполнит следующие действия:

  1. Инициализирует MCP-сервер

  2. Подключится к API Feishu и будет использовать вашу учетную запись Feishu в качестве ИИ-ассистента

  3. Начнет прослушивание входящих сообщений

  4. Обработает и выполнит вызовы функций, инициированные ИИ-моделью через Feishu

  5. Сохранит сообщения в базу данных MySQL

🗄️ Структура базы данных

Приложение сохраняет сообщения в таблице messages, которая имеет следующую структуру:

Имя столбца

Тип

Описание

id

INT (PK)

Первичный ключ

user_name

VARCHAR(255)

Имя отправителя сообщения

user_id

VARCHAR(255)

ID пользователя Feishu

content

TEXT

Содержимое сообщения

is_group_chat

BOOLEAN

Является ли сообщение групповым

group_name

VARCHAR(255)

Название группы (если применимо)

chat_id

VARCHAR(255)

ID чата

message_time

DATETIME

Время отправки сообщения

created_at

DATETIME

Время создания записи

🤝 Руководство по участию

Вклад приветствуется! Не стесняйтесь отправлять Pull Request.

  1. Сделайте Fork этого репозитория

  2. Создайте свою ветку функций (git checkout -b feature/amazing-feature)

  3. Зафиксируйте изменения (git commit -m 'Добавлены отличные функции')

  4. Отправьте изменения в ветку (git push origin feature/amazing-feature)

  5. Откройте Pull Request

🐛 Проблемы и поддержка

Если вы столкнулись с какими-либо проблемами или у вас есть вопросы, пожалуйста, создайте issue или посетите наш форум обсуждений.

📈 Динамика звезд

🍔 Группа для общения

Если вы интересуетесь парсингом и ИИ-агентами, добавьте автора в WeChat (через главную страницу) для получения приглашения в группу.

ps: Пожалуйста, добавляйтесь в группу 7, если она заполнена или ссылка истекла — напишите в issue | wx для напоминания

👁 group7

F
license - not found
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cv-cat/LarkAgentX'

If you have feedback or need assistance with the MCP directory API, please join our Discord server