Skip to main content
Glama

Codevira MCP

Memoria adaptativa persistente para agentes de codificación de IA: aprende de cada sesión, funciona con cada herramienta, recuerda en cada proyecto.

Python License: MIT MCP Version PRs Welcome Contributions Welcome

Funciona con: Claude Code · Cursor · Windsurf · Google Antigravity · cualquier herramienta de IA compatible con MCP


El problema

Cada vez que inicias una nueva sesión de codificación con IA, tu agente comienza desde cero.

Vuelve a leer archivos que ya ha visto. Redescubre patrones ya establecidos. Toma decisiones que contradicen las decisiones de la semana pasada. No tiene idea de en qué fase se encuentra el proyecto, qué se ha intentado ya o por qué ciertos archivos están fuera de los límites.

Terminas gastando miles de tokens en redescubrimiento, en cada sesión.

Codevira soluciona esto.


Qué hace

Codevira es un servidor del Protocolo de Contexto de Modelo (MCP) que integras en cualquier proyecto. Proporciona a cada agente de IA que trabaja en tu base de código una memoria compartida y persistente:

Capacidad

Qué significa

Auto-observación en vivo

El observador de archivos en segundo plano reindexa automáticamente en cada guardado: no se necesita activación manual ni commit de git

Grafo de contexto

Cada archivo fuente tiene un nodo: rol, reglas, dependencias, estabilidad, indicadores do_not_revert

Búsqueda semántica de código

Búsqueda en lenguaje natural en toda tu base de código: sin grep, sin lectura de archivos

Hoja de ruta

Rastreador basado en fases para que los agentes siempre sepan en qué fase estás y qué sigue

Seguimiento de cambios

Cambios en múltiples archivos rastreados atómicamente; las sesiones se reanudan limpiamente tras una interrupción

Registro de decisiones

Cada sesión escribe un registro estructurado; las decisiones pasadas son buscables por cualquier agente futuro

Aprendizaje adaptativo

Seguimiento de resultados, puntuación de confianza, aprendizaje de preferencias del desarrollador e inferencia automática de reglas: memoria que se vuelve más inteligente con el tiempo

Continuidad entre herramientas

Llamada única de "ponme al día" para cambiar sin problemas entre Cursor, Claude Code, Windsurf y Antigravity

Personas de agente

Siete definiciones de roles (Planificador, Desarrollador, Revisor, Probador, Constructor, Documentador, Orquestador) con protocolos explícitos

El resultado: ~1,400 tokens de sobrecarga por sesión en lugar de más de 15,000 tokens de redescubrimiento.


Cómo funciona

Ciclo de vida de la sesión del agente

flowchart TB

Start([Start Session])

subgraph Orientation
A[Check Open Changesets]
B[Get Project Roadmap]
C[Search Past Decisions]
D[Load Graph Context\nget_node • get_impact]
end

subgraph Execution
E[Plan Task]
F[Implement Code]
G[Run Tests / Validation]
end

subgraph Completion
H[Update Graph Metadata]
I[Write Session Log]
J[Complete Changeset]
end

Start --> A
A --> B
B --> C
C --> D
D --> E
E --> F
F --> G
G --> H
H --> I
I --> J

Modelo de inteligencia de código

flowchart TB

A[Source Code]

subgraph Structural Analysis
B[AST Parser]
C[Function / Class Extraction]
D[Dependency Analysis]
end

subgraph Knowledge Stores
E[(Semantic Index<br/>ChromaDB)]
F[(Context Graph<br/>SQLite DB)]
end

subgraph Runtime Access
G[MCP Query Layer<br/>search_codebase • get_node • get_impact]
end

H[AI Coding Agent<br/>Claude Code • Cursor]

A --> B
B --> C
C --> E

B --> D
D --> F

E --> G
F --> G

G --> H

Inicio rápido

1. Instalar

pip install codevira-mcp

2. Inicializar en tu proyecto

cd your-project
codevira init

Este comando único:

  • Crea .codevira/ con directorios de configuración, grafo y registro

  • Añade .codevira/ a .gitignore (el índice se regenera automáticamente, no es necesario hacer commit)

  • Solicita el nombre del proyecto, el lenguaje, los directorios fuente (separados por comas) y las extensiones de archivo

  • Construye el índice completo de código usando hashing de contenido SHA-256 (solo se reindexan los archivos modificados)

  • Genera automáticamente stubs de grafo para todos los archivos fuente

  • Arranca .codevira/roadmap.yaml desde el historial de git

  • Instala un hook de git post-commit para la reindexación automática

  • Imprime el bloque de configuración de MCP para pegar en tu herramienta de IA

Auto-observación en vivo: Cuando el servidor MCP se inicia, lanza automáticamente un observador de archivos en segundo plano. Cada vez que guardas un archivo fuente, el índice se actualiza en 2 segundos; no se necesitan comandos manuales. El hook post-commit y la CLI codevira index siguen estando disponibles como alternativas.

3. Conectar a tu herramienta de IA

Dependiendo de tu IDE y entorno, es posible que codevira-mcp no esté automáticamente en tu PATH. Puedes usar uvx (la opción más fácil) o proporcionar la ruta absoluta a tu entorno virtual de Python.

Opción A: Usar uvx (Recomendado para todos los IDEs sin instalación local) Si usas uv, puedes ejecutar el servidor MCP sin problemas sin gestionar entornos virtuales por proyecto.

Claude Code (.claude/settings.json), Cursor / Windsurf (Configuración → MCP):

{
  "mcpServers": {
    "codevira": {
      "command": "uvx",
      "args": ["codevira-mcp", "--project-dir", "/path/to/your-project"]
    }
  }
}

Opción B: Usar Venv local (Recomendado, funciona en todas partes) Señala tu herramienta de IA directamente al tiempo de ejecución de Python dentro de tu .venv donde está instalado codevira-mcp.

Claude Code (.claude/settings.json) o Cursor / Windsurf (Configuración → MCP):

{
  "mcpServers": {
    "codevira": {
      "command": "/path/to/your-project/.venv/bin/python",
      "args": ["-m", "mcp_server", "--project-dir", "/path/to/your-project"]
    }
  }
}

Google Antigravity — añadir a ~/.gemini/antigravity/mcp_config.json:

{
  "mcpServers": {
    "codevira": {
      "$typeName": "exa.cascade_plugins_pb.CascadePluginCommandTemplate",
      "command": "/path/to/your-project/.venv/bin/python",
      "args": ["-m", "mcp_server", "--project-dir", "/path/to/your-project"]
    }
  }
}

⚠️ IMPORTANTE: Uso de clientes globales (Antigravity / Claude Desktop) con múltiples proyectos

A diferencia de Cursor, que inicia servidores MCP aislados por proyecto automáticamente, los clientes globales como Antigravity comparten un único mcp_config.json en todos tus proyectos abiertos.

Si configuras codevira una vez para Proyecto A, y luego haces una pregunta sobre Proyecto B, el agente leerá el grafo y la hoja de ruta del Proyecto A.

Para solucionar esto: Debes registrar servidores con nombres únicos para cada proyecto en tu configuración global. La IA elegirá dinámicamente el prefijo de herramienta correcto según el contexto de tu conversación:

{
  "mcpServers": {
    "codevira-project-a": {
      "$typeName": "exa.cascade_plugins_pb.CascadePluginCommandTemplate",
      "command": "uvx",
      "args": ["codevira-mcp", "--project-dir", "/path/to/project-a"]
    },
    "codevira-project-b": {
      "$typeName": "exa.cascade_plugins_pb.CascadePluginCommandTemplate",
      "command": "uvx",
      "args": ["codevira-mcp", "--project-dir", "/path/to/project-b"]
    }
  }
}

4. Verificar

Pide a tu agente que llame a get_roadmap(): debería devolver tu fase actual y la siguiente acción.

Estructura del proyecto después de la inicialización

your-project/
├── src/                   ← your code (indexed)
├── .codevira/             ← Codevira data directory (git-ignored)
│   ├── config.yaml        ← project configuration
│   ├── roadmap.yaml       ← project roadmap (auto-generated, human-enrichable)
│   ├── codeindex/         ← ChromaDB index (auto-regenerated)
│   └── graph/             ← context graph and session memory
│       ├── graph.db       ← SQLite database for nodes, edges, logs, and decisions
│       └── changesets/    ← active multi-file change records
└── requirements.txt       ← add: codevira-mcp>=1.0.0

Ciclo de vida de la hoja de ruta: La hoja de ruta se genera automáticamente durante la inicialización y es actualizada por el agente a través de llamadas a herramientas MCP. Consulta docs/roadmap.md para obtener la guía completa del ciclo de vida, pasos de edición manual y solución de problemas.


Protocolo de sesión

Cada sesión de agente sigue un protocolo simple. Configúralo una vez en el prompt del sistema de tu agente, y tus agentes se encargarán del resto.

Inicio de sesión (obligatorio):

list_open_changesets()      → resume any unfinished work first
get_roadmap()               → current phase, next action
search_decisions("topic")   → check what's already been decided
get_node("src/service.py")  → read rules before touching a file
get_impact("src/service.py") → check blast radius

Fin de sesión (obligatorio):

complete_changeset(id, decisions=[...])
update_node(file_path, changes)
update_next_action("what the next agent should do")
write_session_log(...)

Este bucle mantiene cada sesión rápida, enfocada y reanudable.


33 Herramientas MCP

Herramientas de grafo

Herramienta

Descripción

get_node(file_path)

Metadatos, reglas, conexiones, obsolescencia para cualquier archivo

get_impact(file_path)

Radio de explosión BFS: qué archivos dependen de este (impulsado por bordes de importación reales)

list_nodes(layer?, stability?, do_not_revert?)

Consultar nodos por atributo

add_node(file_path, role, type, ...)

Registrar un nuevo archivo en el grafo

update_node(file_path, changes)

Añadir reglas, conexiones, key_functions

refresh_graph(file_paths?)

Generar automáticamente stubs para archivos no registrados

refresh_index(file_paths?)

Re-incrustar archivos específicos en ChromaDB

export_graph(format, scope?)

Exportar grafo de dependencias como diagrama Mermaid o DOT

get_graph_diff(base_ref?, head_ref?)

Mostrar nodos cambiados, indicadores de estabilidad y radio de explosión entre referencias de git

Herramientas de hoja de ruta

Herramienta

Descripción

get_roadmap()

Fase actual, siguiente acción, conjuntos de cambios abiertos

get_full_roadmap()

Historial completo: todas las fases, decisiones, diferidos

get_phase(number)

Detalles completos de cualquier fase por número

update_next_action(text)

Establecer qué debe hacer el siguiente agente

update_phase_status(status)

Marcar fase como in_progress / blocked

add_phase(phase, name, description, ...)

Poner en cola nuevo trabajo próximo

complete_phase(number, key_decisions)

Marcar como hecho, avanzar automáticamente al siguiente

defer_phase(number, reason)

Mover una fase a la lista de diferidos

Herramientas de conjuntos de cambios

Herramienta

Descripción

list_open_changesets()

Todos los conjuntos de cambios en progreso

get_changeset(id)

Detalle completo: archivos hechos, archivos pendientes, bloqueador

start_changeset(id, description, files)

Abrir un conjunto de cambios de múltiples archivos

complete_changeset(id, decisions)

Cerrar y registrar decisiones

update_changeset_progress(id, last_file, blocker?)

Punto de control a mitad de sesión

Herramientas de búsqueda

Herramienta

Descripción

search_codebase(description, top_k?)

Búsqueda semántica sobre el código fuente

search_decisions(query, limit?, session_id?)

Buscar todas las decisiones de sesiones pasadas; filtrar opcionalmente a una sesión específica

get_history(file_path)

Todas las sesiones que tocaron un archivo

write_session_log(...)

Escribir registro de sesión estructurado

Herramientas de aprendizaje adaptativo (v1.4)

Herramienta

Descripción

get_decision_confidence(file_path?, pattern?)

Puntuaciones de fiabilidad basadas en resultados: con qué frecuencia se mantuvieron las decisiones pasadas frente a las revertidas

get_preferences(category?)

Preferencias de estilo de desarrollador aprendidas de correcciones post-edición

get_learned_rules(file_path?, category?)

Reglas generadas automáticamente a partir de patrones observados (emparejamiento de pruebas, puntos calientes de importación, cambios conjuntos)

get_project_maturity()

Puntuación de inteligencia de 0–100 que combina sesiones, cobertura, confianza, reglas, preferencias

get_session_context()

Llamada única de "ponme al día" para continuidad entre herramientas (Cursor ↔ Claude Code ↔ Antigravity)

Herramientas de lectura de código

Herramienta

Descripción

get_signature(file_path)

Todos los símbolos públicos, firmas, números de línea

get_code(file_path, symbol)

Fuente completa de una función o clase

Herramienta de libro de jugadas

Herramienta

Descripción

get_playbook(task_type)

Reglas seleccionadas para una tarea: add_route, add_service, add_schema, debug_pipeline, commit, write_test


Personas de agente

Siete definiciones de roles en agents/ dicen a cada agente exactamente qué hacer y cuándo:

Agente

Invocado cuando

Responsabilidad clave

orchestrator.md

Cada inicio de sesión

Clasificar tarea, seleccionar pipeline

planner.md

Tareas grandes o ambiguas

Descomponer en pasos ordenados

developer.md

Todos los cambios de código

Escribir código dentro de las reglas del grafo

reviewer.md

Archivos stability: high o do_not_revert

Marcar violaciones de reglas

tester.md

Después de cada cambio de código

Ejecutar el conjunto de pruebas

builder.md

Después de que las pruebas pasan

Lint, comprobación de tipos

documenter.md

Fin de cada sesión

Actualizar grafo, hoja de ruta, registro


Estructura del proyecto

.agents/
├── PROTOCOL.md              # Session protocol — read this first
├── config.example.yaml      # Config template
├── config.yaml              # Your config (git-ignored)
├── roadmap.yaml             # Phase tracker (auto-created, git-ignored)
├── mcp-server/
│   ├── server.py            # MCP server entry point
│   └── tools/
│       ├── graph.py
│       ├── roadmap.py
│       ├── changesets.py
│       ├── search.py
│       ├── playbook.py
│       └── code_reader.py
├── indexer/
│   ├── index_codebase.py    # Build/update ChromaDB index + background file watcher
│   ├── chunker.py           # AST-based code chunker
│   ├── treesitter_parser.py # Multi-language AST parsing (16+ languages)
│   ├── sqlite_graph.py      # SQLite graph database backend
│   └── graph_generator.py   # Auto-generate graph stubs
├── requirements.txt         # Python dependencies
├── agents/                  # Role definitions
│   ├── orchestrator.md
│   ├── planner.md
│   ├── developer.md
│   ├── reviewer.md
│   ├── tester.md
│   ├── builder.md
│   └── documenter.md
├── rules/                   # Engineering standards
│   ├── master_rule.md
│   ├── coding-standards.md
│   ├── testing-standards.md
│   └── ...13 more
├── graph/
│   ├── graph.db             # SQLite Context Graph and Session Memory (git-ignored)
│   └── changesets/
├── hooks/
│   └── install-hooks.sh
└── codeindex/               # ChromaDB files (git-ignored)

Soporte de idiomas

Característica

Python

TypeScript

Go

Rust

10+ Otros (Java, C#, Ruby, PHP, C++)

Búsqueda semántica de código

Grafo de contexto + radio de explosión

Hoja de ruta + conjuntos de cambios

Registros de sesión + búsqueda de decisiones

get_signature / get_code

Stubs de grafo generados automáticamente

Fragmentación basada en AST

Toda la gestión de sesiones, el grafo, la hoja de ruta y las funciones de búsqueda funcionan para cualquier idioma. El análisis y la extracción de código (búsqueda, generación de grafos, lecturas de firmas) están impulsados por integraciones robustas de AST y Tree-Sitter.


Requisitos

  • Python 3.10+

  • ChromaDB

  • sentence-transformers

  • PyYAML

pip install -r .agents/requirements.txt

Antecedentes

¿Quieres entender la historia completa detrás de por qué se construyó esto, las decisiones de diseño, qué no funcionó y cómo se compara con otras herramientas en el ecosistema?

Lee el artículo completo: Cómo redujimos el uso de tokens de agentes de codificación de IA en un 92%


Contribuyendo

Las contribuciones son bienvenidas: este es un proyecto de código abierto en etapa inicial y hay mucho espacio para crecer.

Lee CONTRIBUTING.md para la guía completa: bifurcación, nombres de ramas, formato de commit y proceso de PR.

Buenas áreas iniciales:

  • Exportaciones de visualización de grafos (Dot/Mermaid)

  • Entradas adicionales de libro de jugadas para tipos de tareas comunes

  • Guías de configuración específicas para IDE

  • Informes de errores y correcciones de casos extremos

¿Informar un error?Abrir un informe de error

¿Solicitar una función? → [Abrir una solicitud de función](https://github.com/sachinshelke/codevira

-
security - not tested
A
license - permissive license
-
quality - not tested

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/sachinshelke/codevira'

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