code-rag-mcp
⚡ Motor de Búsqueda de Código Multi-Repositorio
Un sistema de recuperación y búsqueda de código de nivel de producción, diseñado para consultar y navegar múltiples repositorios de código fuente simultáneamente, planificado y desarrollado con el framework de Desarrollo Dirigido por Especificaciones OpenSpec. Los resultados clasificados (con metadatos de repositorio, archivo, línea, símbolo y grafo) son el punto de integración para clientes LLM en la nube externos, que realizan la generación en su propio entorno.
🌟 Características Principales
Ingesta Multi-Repositorio y Sincronización Incremental:
Gestiona directorios de código locales y repositorios Git remotos.
Respeta
.gitignorey excluye binarios/archivos de bloqueo automáticamente.Seguimiento de hash SHA-256 y detección de commits Git para actualizaciones incrementales instantáneas.
Segmentación Semántica de Código Consciente de AST:
Análisis estructural por lenguaje para Python, TypeScript/JavaScript, Go, Rust, Java, C/C++, HTML/CSS, SQL y Markdown.
Preserva los límites de funciones, métodos, clases e interfaces.
Inyecta encabezados de alcance (
// [Context] Repository | File | Scope | Imports | Doc).
Indexación Híbrida Densa + Léxica:
Búsqueda por Vectores Densos: Vectores de características semánticas por subpalabra con similitud coseno + soporte para embeddings externos (Gemini, OpenAI, Voyage AI, Ollama). Los embeddings locales de Ollama usan por defecto
qwen3-embedding:0.6b, cargados bajo demanda y liberados cuando están inactivos.Búsqueda Léxica BM25 Dispersa: Tokenizador adaptado a código que divide tokens
camelCaseysnake_casecon refuerzo de símbolos.Fusión de Rangos Recíprocos (RRF): Combina clasificaciones densas y dispersas con refuerzo de identificadores exactos.
Grafo de Símbolos y Enlace de Dependencias entre Repositorios:
Extrae definiciones de símbolos, llamadores, llamados e importaciones en SQLite.
Mapea automáticamente llamadas a API de clientes frontend (p. ej.
apiClient.post('/api/v1/auth/login')) a manejadores de rutas de API backend en distintos repositorios.
Interfaces:
Interfaz Web Moderna: Búsqueda híbrida como experiencia principal de consulta, gestor de repositorios, mapa de contratos de API entre repositorios e inspector de código.
Servidor de Protocolo de Contexto de Modelos (MCP): Expone herramientas stdio (
search_codebases,get_symbol_definition,get_call_hierarchy,list_repositories) a asistentes de codificación con IA (Antigravity, Cursor, Claude Code, Windsurf).CLI: Comandos rápidos de terminal para indexar y buscar.
API REST:
POST /api/v1/searchdevuelve fragmentos de código clasificados para consumidores LLM en la nube externos.
Related MCP server: CodeGraph
📂 Planificación Dirigida por Especificaciones con OpenSpec
Todas las especificaciones, contratos arquitectónicos y desgloses de tareas se mantienen en openspec/:
openspec/
├── config.json # OpenSpec project configuration
├── specs/ # Living System Specifications (Source of Truth)
│ ├── repository-management.md # Repo ingestion & git tracking
│ ├── ast-code-chunking.md # AST semantic parsing & context injection
│ ├── hybrid-indexing.md # Dense vector + BM25 lexical index
│ ├── symbol-graph-retrieval.md # Call graph & cross-repo API linkage
│ ├── context-fusion-reranking.md # RRF fusion & citation packaging
│ ├── rag-generation.md # LLM prompting & grounded citations
│ ├── mcp-server.md # Model Context Protocol tools
│ └── api-and-web-ui.md # REST & Web UI specifications
└── changes/
└── 01-foundation-and-core-rag/ # Phase 1 Change Proposal
├── proposal.md # Goals, scope, and motivation
├── design.md # Technical architecture & contracts
└── tasks.md # Implementation checklist (Completed)🚀 Inicio Rápido
1. Registrar e Indexar Repositorios
# Add a local repository
python3 main.py add auth-service ./fixtures/repo_auth_service
# Add another repository
python3 main.py add web-client ./fixtures/repo_web_client
# List all indexed repositories
python3 main.py list2. Gestionar Grupos de Repositorios y Relaciones de Dependencia
# Create a repository group
python3 main.py group create platform --repos auth-service shared-schemas
# Declare a dependency edge: web-client depends on auth-service
python3 main.py relation add web-client auth-service
# Inspect relations for a repository
python3 main.py relation show web-client
# Search with group scoping and upstream dependency expansion
python3 main.py search "jwt token" --group platform --expand upstream --expand-depth 13. Buscar en Repositorios (CLI)
# Hybrid search across all codebases
python3 main.py search "login user authenticate"
# Search scoped to a group with upstream dependency expansion
python3 main.py search "How does authentication flow between web-client and auth-service?" --group platform --expand upstream4. Iniciar la Interfaz Web Interactiva
python3 main.py serve --host 127.0.0.1 --port 8000Abre http://localhost:8000 en tu navegador.
5. Conectar a IDEs de IA mediante MCP (Protocolo de Contexto de Modelos)
Añade esta entrada de servidor MCP a la configuración de tu IDE de IA (Antigravity / Cursor / Claude Code):
{
"mcpServers": {
"multi-repo-code-rag": {
"command": "python3",
"args": ["/Users/nick-work-pc/.gemini/antigravity/scratch/multi-repo-code-rag/main.py", "mcp"]
}
}
}🧠 Runtime del Modelo de Embeddings
El motor se ejecuta como una instancia única por directorio de datos y mantiene el modelo de embeddings local residente solo mientras está trabajando.
Modelo predeterminado:
qwen3-embedding:0.6b(instálalo una vez conollama pull qwen3-embedding:0.6b). Se puede sobrescribir con--embedding-modelo$OLLAMA_EMBEDDING_MODEL.Residencia bajo demanda: el modelo nunca se carga al iniciar. Se carga en el primer embedding de una ejecución de indexación o búsqueda, y se libera una vez que la última operación en curso finaliza y transcurre el período de inactividad. Las solicitudes superpuestas comparten una única carga y producen una única liberación.
Política de residencia mediante
--keep-aliveo$EMBEDDING_KEEP_ALIVE:Valor
Comportamiento
(sin definir)
Liberar tras 30s de inactividad (predeterminado)
0Liberar inmediatamente después de la última operación
45s,5mLiberar tras ese período de inactividad
alwaysMantener el modelo residente durante toda la vida del proceso
Instancia única: al iniciar se toma un bloqueo exclusivo en
<data-dir>/.rag-instance.lock. Una segunda instancia falla rápidamente con el pid propietario; pasa--allow-multi-instancepara degradar esto a una advertencia.Inspeccionar / liberar manualmente:
GET /api/v1/models/statusinforma sobre residencia, operaciones activas, política y procedencia del índice.POST /api/v1/models/unload(opython3 main.py unload) libera el modelo, devolviendo409 busymientras haya una operación en curso.
Reindexación automática al cambiar el modelo
El índice denso registra el proveedor, el modelo y la dimensión vectorial que produjeron sus vectores (<data-dir>/index_meta.json). Cuando el modelo de embeddings configurado cambia — por ejemplo, al actualizar de qwen3-embedding:4b (2560 dimensiones) al predeterminado qwen3-embedding:0.6b (1024 dimensiones) — los repositorios afectados se re-embedden automáticamente antes de servir los resultados de búsqueda:
el texto de los fragmentos, el índice léxico BM25 y el grafo de símbolos se conservan (solo se re-embedden, no se re-analizan);
el progreso se informa a través de la salida normal de indexación;
la procedencia se escribe por repositorio, de modo que una reconstrucción interrumpida se reanuda con los repositorios aún pendientes;
las búsquedas que llegan durante una reconstrucción reciben
503 reindexingen lugar de ser puntuadas con vectores de otro modelo.
Reversión al comportamiento anterior: OLLAMA_EMBEDDING_MODEL=qwen3-embedding:4b EMBEDDING_KEEP_ALIVE=always restaura el modelo anterior y la política de residencia permanente; la verificación de procedencia reconstruye entonces el espacio vectorial de 4b sin cambios de código.
🏷️ Grupos de Repositorios y Arquitectura de Relaciones de Dependencia
Topología y Reglas de Dominio
Grupos de Repositorios con Nombre: Colecciones planas de repositorios (p. ej.
core,platform,billing). Eliminar un grupo nunca elimina los repositorios subyacentes.DAG de Dependencias Dirigido: Aristas de dependencia explícitas
A -> depende de -> B. Al añadir una arista se ejecuta la detección de ciclos en escritura (lanzandoDependencyCycleErrorsi hay ciclos).Resolución de Alcance: Combina los IDs de repositorio explícitos y los miembros de grupos en un conjunto primario, y luego expande a lo largo del grafo en direcciones
upstream(dependencias),downstream(dependientes) oboth, hastaexpand_depth.Clasificación con Decaimiento por Salto: Los fragmentos recuperados de repositorios expandidos reciben una penalización multiplicadora
(0.85 ** hops)para garantizar que los repositorios primarios se clasifiquen primero.Metadatos de Procedencia: Los resultados originados en repositorios expandidos llevan metadatos (
repo_relation='expanded',relation_direction,relation_hops) y se muestran con una insignia visual en la interfaz.
Endpoints de la API REST
Método | Endpoint | Descripción |
|
| Lista todos los grupos de repositorios y sus miembros |
|
| Crea un nuevo grupo de repositorios |
|
| Elimina un grupo de repositorios |
|
| Añade miembros a un grupo |
|
| Elimina un miembro de un grupo |
|
| Residencia del modelo de embeddings, política y procedencia del índice denso |
|
| Libera los modelos ahora ( |
|
| Obtiene los grupos del repositorio, dependencias directas y dependientes directos |
|
| Añade una arista de dependencia |
|
| Elimina una arista de dependencia |
|
| Búsqueda con |
Herramientas MCP
manage_repository_relations: Accionescreate_group,delete_group,add_to_group,remove_from_group,add_dependency,remove_dependency.get_repository_relations: Devuelve las relaciones de un solo repositorio o de todo el grafo de relaciones.search_codebases: Ampliado con los argumentos opcionalesgroups,expandyexpand_depth.
🧪 Ejecución de Pruebas
python3 -m unittest discover -s tests -p "test_*.py" -vTodas las suites de pruebas unitarias y de integración pasan, verificando la segmentación por AST, la extracción de símbolos, la detección de API entre repositorios, el DAG de relaciones de repositorios y la detección de ciclos, la resolución de alcance y la recuperación con decaimiento por salto, los manejadores de la API REST, el protocolo MCP y la recuperación híbrida de extremo a extremo.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables semantic code search across multiple repositories using natural language queries. Provides intelligent code discovery, symbol lookups, and cross-repo dependency analysis for AI coding agents.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to search code by meaning, explore codebase structure, store and query knowledge with temporal facts, and read source code through a set of MCP tools.4537MIT
- AlicenseNot gradedqualityAmaintenanceProvides code intelligence for AI coding agents by indexing repositories into a hybrid knowledge graph, enabling agents to query dependencies, impact, and context through 28 MCP tools.3Apache 2.0
- FlicenseNot gradedqualityCmaintenanceProvides structural code intelligence via 26 MCP tools, enabling AI assistants to query code symbols, dependencies, and call graphs accurately without file-pasting.
Related MCP Connectors
Persistent memory and cross-session learning for AI coding assistants (hosted remote MCP).
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/nicksulia/code-rag-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server