VOOZH about

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

⇱ Lark MCP by cv-cat | Glama


Lark Agentx - Tu asistente de IA en Feishu 🚀

👁 Python Version
👁 Node.js Version

Un agente de IA basado en Feishu (Lark) que permite a los grandes modelos realizar llamadas a funciones y procesar mensajes a través de Feishu.

No necesitas configurar un bot de Feishu, tu cuenta de Feishu es el asistente de IA.

Solo necesitas definir funciones y comentarios, y tu bot de Feishu las llamará automáticamente según el contexto.

Resumen del proyecto 🌟

Lark Agentx es una aplicación moderna en Python capaz de:

  • 📊 Realizar ingeniería inversa de WebSockets y API que transmiten en formato Protobuf de Feishu, para escuchar y registrar mensajes

  • 🤖 Proporcionar funciones personalizadas para que los grandes modelos las llamen

  • 🔄 Implementar un marco de llamadas a funciones basado en MCP (Model Context Protocol)

  • 💾 Utilizar SQLAlchemy para almacenar mensajes en una base de datos MySQL

Related MCP server: MCP Feishu Project Manager

Capturas de pantalla 🧸

✨ Características

  • Mecanismo de registro de funciones: Decorador de registro de funciones simple e intuitivo

  • Procesamiento automático de mensajes: Registra todos los mensajes recibidos (chats privados y grupales)

  • Procesamiento asíncrono: Adopta el modo async/await para la comunicación asíncrona

  • Persistencia de datos: Utiliza SQLAlchemy para almacenar mensajes en una base de datos MySQL

  • Configuración flexible: Configuración a través de variables de entorno

  • Despliegue en contenedores: Soporte para despliegue rápido con Docker

  • Llamadas a funciones inteligentes: La IA analiza automáticamente la entrada del usuario y llama a la función más adecuada; el desarrollador solo necesita añadir la función y su descripción comentada

📦 Funciones soportadas actualmente

El proyecto incluye actualmente las siguientes funciones para que los grandes modelos las llamen:

Nombre de la función

Descripción

tell_joke

Cuenta un chiste aleatorio

get_time

Obtiene la hora actual

fortune

Obtiene una predicción de suerte aleatoria

get_weather

Obtiene el clima de una ciudad

count_daily_speakers

Obtiene estadísticas de cuántas personas hablaron hoy

get_top_speaker_today

Obtiene el usuario que más habló hoy

send_message

Envía un mensaje a un usuario específico

list_tools

Lista todas las herramientas disponibles y sus descripciones

extra_order_from_content

Extrae información de pedidos del texto, incluyendo número de pedido, nombre del producto, cantidad, etc.

Puedes invocar estas funciones escribiendo un comando de activación en Feishu seguido de la operación a realizar, por ejemplo: /run cuenta un chiste

📂 Estructura del proyecto

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配置

🛠️ Desarrollo de funciones personalizadas

En el archivo app/core/mcp_server.py, puedes añadir tus propias funciones personalizadas usando el decorador @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}'"

Importante: Solo necesitas añadir la función y su descripción correspondiente; la IA analizará automáticamente el texto del usuario y llamará a la función más adecuada, sin necesidad de implementar manualmente la lógica de coincidencia de funciones.

🔧 Requisitos del entorno

  • Python 3.10+

  • Node.js 18+

  • Base de datos MySQL

📦 Método de instalación

Usando el entorno local

  1. Instalar dependencias:

    pip install -r requirements.txt
  2. Nota para usuarios de Windows: El sistema Windows requiere la instalación adicional de las siguientes dependencias:

    pip install win-inet-pton==1.1.0

Usando Docker

Método 1: Construir la imagen por separado

# 构建镜像 
docker build -t feishuapp .

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

Método 2: Usar Docker Compose (recomendado)

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

# 查看日志
docker-compose logs -f

# 停止所有服务
docker-compose down

Usar Docker Compose permite iniciar todo el entorno de la aplicación con un solo comando, incluyendo la base de datos MySQL y los servicios de la aplicación, lo cual es más conveniente y eficiente.

🛠️ Instrucciones de configuración

Copia el archivo .env.example y nómbralo .env, incluyendo la siguiente configuración:

# 数据库设置
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"

🚀 Guía de uso

Ejecutar la aplicación

Método 1: Ejecución directa

python main.py

Método 2: Usar Docker Compose

docker-compose up -d

La aplicación:

  1. Inicializará el servidor MCP

  2. Se conectará a la API de Feishu y usará tu cuenta de Feishu como asistente de IA

  3. Escuchará los mensajes entrantes

  4. Procesará y ejecutará las llamadas a funciones iniciadas por el gran modelo a través de Feishu

  5. Almacenará los mensajes en la base de datos MySQL

🗄️ Estructura de la base de datos

La aplicación almacena los mensajes en la tabla messages, la cual tiene la siguiente estructura:

Nombre de columna

Tipo

Descripción

id

INT (PK)

Clave primaria

user_name

VARCHAR(255)

Nombre del remitente del mensaje

user_id

VARCHAR(255)

ID de usuario de Feishu del remitente

content

TEXT

Contenido del mensaje

is_group_chat

BOOLEAN

Si el mensaje proviene de un chat grupal

group_name

VARCHAR(255)

Nombre del chat grupal (si aplica)

chat_id

VARCHAR(255)

ID del chat

message_time

DATETIME

Hora de envío del mensaje

created_at

DATETIME

Hora de creación del registro

🤝 Guía de contribución

¡Las contribuciones son bienvenidas! Por favor, siéntete libre de enviar un Pull Request.

  1. Haz un Fork de este repositorio

  2. Crea tu rama de características (git checkout -b feature/amazing-feature)

  3. Confirma tus cambios (git commit -m 'Añadir algunas características geniales')

  4. Empuja a la rama (git push origin feature/amazing-feature)

  5. Abre un Pull Request

🐛 Problemas y soporte

Si encuentras algún problema o tienes preguntas, por favor envía un issue o visita nuestro foro de discusión.

📈 Tendencia de estrellas

🍔 Grupo de comunicación

Si te interesan los crawlers y los agentes de IA, por favor añade al autor a través de su página principal de WeChat para ser invitado al grupo de chat.

ps: Por favor, intenta unirte al grupo 7, si está lleno o expiró, abre un issue | recordatorio por WeChat

👁 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