hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
Análisis de la base de código Python del sistema RAG
Este sistema analiza código Python mediante árboles de sintaxis abstracta (AST), almacena la información extraída (funciones, clases, llamadas, variables, etc.) en una base de datos vectorial de Weaviate y proporciona herramientas para consultar y comprender el código base mediante un servidor de Protocolo de Contexto de Modelo (MCP). Aprovecha los modelos Gemini de Google para generar incrustaciones y descripciones/respuestas en lenguaje natural.
Características
- Escaneo de código: Analiza archivos Python para identificar elementos de código (funciones, clases, importaciones, llamadas, asignaciones) y sus relaciones. Extractos:
- Información básica: nombre, tipo, ruta de archivo, números de línea, fragmento de código, cadena de documentación.
- Detalles de función/método: parámetros, tipo de retorno, firma, decoradores.
- Información del alcance: UUID del ámbito principal (clase/función), ID legible (por ejemplo,
file:type:name:line
), nombres de clase base. - Información de uso: accesos a atributos dentro de los ámbitos, relaciones de llamadas (rastreadas parcialmente).
- Almacenamiento vectorial: utiliza Weaviate para almacenar elementos de código y sus incrustaciones vectoriales (cuando la generación de LLM está habilitada).
- Enriquecimiento LLM (Opcional y en segundo plano): Genera descripciones semánticas e incrustaciones para funciones y clases mediante Gemini. Ahora se ejecuta como tareas en segundo plano que se activan tras el escaneo o manualmente. Se puede activar o desactivar mediante el archivo
.env
. - Refinamiento automático (opcional y en segundo plano): cuando la generación de LLM está habilitada, se refinan automáticamente las descripciones de funciones nuevas o actualizadas utilizando el contexto (llamadores, llamados, hermanos, variables relacionadas) como parte del procesamiento en segundo plano.
- Preguntas y respuestas de RAG: responde preguntas en lenguaje natural sobre el código base mediante generación aumentada por recuperación (requiere funciones LLM habilitadas y procesamiento en segundo plano completado).
- Aclaraciones del usuario: permite a los usuarios agregar notas manuales a elementos de código específicos.
- Visualización: genera gráficos de llamadas MermaidJS basados en relaciones almacenadas.
- Servidor MCP: expone capacidades de análisis y consulta a través de herramientas MCP, administrando bases de código y un contexto de base de código activo.
- Vigilante de Archivos (Integrado): Se inicia automáticamente al escanear una base de código (
scan_codebase
) y se detiene al seleccionar otra base de código (select_codebase
) o al eliminarla (delete_codebase
). Activa el reanálisis y las actualizaciones de la base de datos de la base de código activa cuando sus archivos cambian. También se puede controlar manualmente mediante las herramientasstart_watcher
ystop_watcher
. - Dependencias de la base de código: permite definir dependencias entre las bases de código escaneadas (
add_codebase_dependency
,remove_codebase_dependency
). - Consulta entre bases de código: permite realizar búsquedas (
find_element
) y formular preguntas (ask_question
) en toda la base de código activa y sus dependencias declaradas.
Configuración
- Entorno: asegúrese de que Python 3.10+ y Docker estén instalados.
- Weaviate: Inicie la instancia de Weaviate usando Docker Compose:Copy
- Dependencias: Instalar paquetes de Python:Copy
- Clave API y configuración: Cree un archivo
.env
en la raíz del proyecto y añada su clave API de Gemini. También puede configurar otros ajustes:Copy - Ejecutar servidor MCP: Inicie el servidor en una terminal independiente:(Asegúrese de que esta terminal permanezca en funcionamiento para que las herramientas estén disponibles)Copy
Descripción general de la arquitectura
Este sistema analiza el código Python, almacena la información extraída en una base de datos vectorial Weaviate y proporciona herramientas para consultar y comprender el código base mediante un servidor de Protocolo de Contexto de Modelo (MCP). Aprovecha los modelos Gemini de Google para generar incrustaciones y descripciones/respuestas en lenguaje natural.
Los módulos principales son:
code_scanner.py
: encuentra archivos Python, los analiza usando AST, extrae elementos estructurales (funciones, clases, importaciones, llamadas, etc.) y prepara datos para Weaviate.weaviate_client.py
: administra la conexión a Weaviate, define el esquema de datos (CodeFile
,CodeElement
,CodebaseRegistry
) y proporciona funciones para cargar, consultar, actualizar y eliminar datos por lotes.rag.py
: Implementa la Generación Aumentada por Recuperación (RAG) para responder preguntas sobre el código base. Utiliza la búsqueda semántica para encontrar elementos relevantes del código y un LLM para sintetizar una respuesta.mcp_server.py
: configura el servidor FastMCP, administra bases de código en una colecciónCodebaseRegistry
, maneja el contexto de base de código activo (ACTIVE_CODEBASE_NAME
), integra lógica de observación de archivos (incluido inicio/detención automáticos), administra dependencias de base de código y expone funcionalidades de análisis como herramientas MCP con descripciones detalladas de argumentos.visualization.py
: genera gráficos de llamadas MermaidJS basados en relaciones almacenadas.
El sistema utiliza la función multiinquilino de Weaviate para las colecciones CodeFile
y CodeElement
, donde el ID del inquilino es el codebase_name
definido por el usuario. Una colección independiente, CodebaseRegistry
, no multiinquilino, rastrea los metadatos de la base de código (nombre, directorio, estado, resumen, estado del observador, dependencias). La variable global ACTIVE_CODEBASE_NAME
del servidor determina el inquilino principal de la base de código para las consultas. Las herramientas de consulta ( find_element
y ask_question
) pueden buscar opcionalmente en la base de código activa y sus dependencias declaradas almacenadas en el registro. La herramienta list_codebases
permite ver el estado y las dependencias de todas las bases de código.
El procesamiento LLM en segundo plano se utiliza para generar descripciones semánticas e incrustaciones para elementos de código. Esta función es opcional y se puede activar o desactivar mediante el archivo .env
.
Se puede recuperar información detallada sobre las herramientas disponibles y sus argumentos directamente desde el servidor MCP utilizando métodos de introspección MCP estándar una vez que el servidor esté en ejecución.
This server cannot be installed
Un servidor MCP que analiza bases de código Python utilizando AST, almacena elementos de código en una base de datos vectorial y permite realizar consultas en lenguaje natural sobre la estructura y la funcionalidad del código utilizando RAG con los modelos Gemini de Google.