Qartez MCP
Servidor MCP de inteligencia de código: PageRank, radio de explosión, co-cambio, hotspots, detección de clones en 34 lenguajes en un solo binario de Rust.
Documentación
Qartez MCP
Visión de rayos X para tu código base: construido para agentes de IA, no para humanos.
El primer servidor de inteligencia de código diseñado desde el primer día para ser
consumido por modelos de lenguaje, no leído por personas. Reduce el uso de tokens de IA en un ~94%.
Inicio rápido · 43 herramientas · Guard · Benchmarks · Comparación · 37 lenguajes · CLI · Contribuciones · Seguridad · Registro de cambios
Por qué existe esto
grep, find, cat y ls se inventaron en la década de 1970 para que los humanos leyeran un archivo a la vez en una terminal. Medio siglo después, tu asistente de IA todavía los usa: escaneando archivos byte a byte, releyendo los mismos directorios en cada pregunta, adivinando qué es importante y quemando tus tokens en trabajo para el que esas herramientas nunca fueron diseñadas.
Qartez es otra especie de herramienta. No es un envoltorio de grep. Es un grafo de conocimiento precomputado de tu repositorio: símbolos, imports, aristas de llamadas, radio de explosión, PageRank, co-cambio de git, complejidad ciclomática: servido a cualquier LLM a través del Protocolo de Contexto de Modelo. El agente deja de leer tu código base y empieza a consultarlo.
Piénsalo como el primer órgano sensorial diseñado específicamente para agentes de código. Grep ve una línea a la vez. Qartez ve la forma completa del código base de un vistazo.
Cada vez que tu asistente de IA toca código, ocurren tres cosas costosas:
1. Lee los mismos archivos una y otra vez. Sin memoria del repositorio. Cada pregunta empieza desde cero. Pagas por cada token, una y otra vez.
2. No puede ver qué se romperá. Tu asistente edita utils.ts sin saber que otros 14 archivos lo importan. Te enteras en CI. O en producción.
3. Desperdicia tokens buscando cosas. "¿Dónde está definido handleRequest?" se convierte en Grep en 200 archivos, Read en 5 candidatos y 1.600 tokens quemados antes de encontrar la respuesta. Qartez responde eso en 50 tokens.
La solución no es un modelo más inteligente. Es un índice más inteligente.
Inicio rápido
Soporte de plataformas: macOS 13+, Ubuntu 22.04+ (y otras distribuciones Linux modernas, gnu o musl), Windows (PowerShell nativo 5.1+/7+) y WSL 2. Arquitecturas: x86_64 y arm64. MSRV de Rust es 1.88: solo se necesita para plataformas no compatibles o la vía de escape de --from-source.
Instalación (recomendada)
Elige el comando de una línea para tu sistema operativo. Ambos comandos hacen lo mismo: descargan un binario precompilado, verifican su SHA-256 contra el SHA256SUMS de la versión, instalan los tres binarios (qartez, qartez-guard, qartez-setup) y lanzan qartez-setup en modo no interactivo para configurar cada IDE compatible con MCP que detecte (incluidos los hooks de protección de modificaciones para Claude Code).
macOS / Linux / WSL 2: instalador bash, los binarios se instalan en ~/.local/bin/:
curl -sSfL https://qartez.dev/install | sh
Windows (PowerShell nativo 5.1+/7+): instalador PowerShell, los binarios se instalan en %LOCALAPPDATA%\Programs\qartez\:
powershell -ExecutionPolicy Bypass -c "iwr https://raw.githubusercontent.com/kuberstar/qartez-mcp/main/install.ps1 -useb | iex"
Las plataformas no compatibles (p. ej., linux-musl arm64 sin un artefacto publicado) recurren automáticamente a un cargo build local; pasa --from-source (bash) o -FromSource (PowerShell) para forzar esa ruta. El MSRV de Rust 1.88 solo se requiere para esa alternativa.
Abre cualquier proyecto en tu IDE: Qartez lo indexa automáticamente al iniciar la sesión. No se necesita ningún paso manual. El observador de archivos mantiene el índice actualizado mientras editas.
Alternativa: instalar desde el código fuente (todas las plataformas)
git clone https://github.com/kuberstar/qartez-mcp.git
cd qartez-mcp
make deploy
¿Quieres inspeccionar el script de instalación antes de pasarlo a sh? Léelo en GitHub: install.sh (bash) o install.ps1 (PowerShell).
Instalación interactiva, instalación dirigida y otras opciones
Funciona con 19 editores y agentes
Un solo binario de Rust (qartez-setup) detecta y configura cada editor compatible. Sin scripts de shell por editor, sin JSON de copiar y pegar.
make deploy # Configure every detected IDE (non-interactive)
make setup # Same, but interactive checkbox prompt
qartez-setup --ide cursor,zed # Configure specific IDEs only
make uninstall # Remove qartez from every IDE and delete binaries
Compatible de serie: Claude Code, Claude Desktop, Gemini, Cursor, Windsurf, Kiro, Zed, Continue.dev, Copilot CLI, Amazon Q, Amp, Cline, Roo Code, Goose, Warp, Augment, OpenCode, Codex CLI, Antigravity.
Instalación dirigida
qartez-setup --ide cursor,zed,claude
Configura solo un subconjunto específico de IDEs. Rutas detectadas:
| IDE | Ruta de configuración |
|---|---|
| Claude Code | ~/.claude/settings.json |
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Gemini | ~/.gemini/settings.json |
| Cursor | ~/.cursor/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| Kiro | ~/.kiro/settings/mcp.json |
| Zed | ~/.config/zed/settings.json |
| Continue.dev | ~/.continue/config.yaml |
| Copilot CLI | ~/.copilot/mcp-config.json |
| Amazon Q | ~/.aws/amazonq/mcp.json |
| Amp | ~/.config/amp/settings.json |
| Cline | Almacenamiento global de VS Code saoudrizwan.claude-dev/settings/cline_mcp_settings.json |
| Roo Code | Almacenamiento global de VS Code rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json |
| Goose | ~/.config/goose/config.yaml |
| Warp | ~/.warp/mcp_settings.json |
| Augment | ~/.augment/settings.json |
| OpenCode | ~/.config/opencode/opencode.json (o opencode.jsonc) |
| Codex CLI | ~/.codex/config.toml |
| Antigravity | ~/.gemini/antigravity/mcp_config.json |
Toda ruta de instalación es idempotente y respalda la configuración existente.
Habilitar Qartez en un proyecto
Qartez indexa automáticamente al iniciar la sesión. Para re-indexación manual:
qartez --root /path/to/your/project --reindex
Claude Desktop (manual)
{
"mcpServers": {
"qartez": {
"command": "/absolute/path/to/qartez",
"args": []
}
}
}
Desinstalación
make uninstall
Elimina Qartez de cada IDE configurado y borra los binarios.
Qué hace Qartez
Qartez construye un grafo de conocimiento de tu código base, una vez, y lo sirve a cualquier asistente de IA a través de MCP. En lugar de escanear archivos desde cero en cada pregunta, tu asistente consulta un índice precomputado que sabe:
- Qué archivos importan más (PageRank en el grafo de imports)
- Qué se rompe si cambias un archivo (análisis de radio de explosión)
- Qué archivos cambian siempre juntos (minería de co-cambio de git)
- Qué funciones son las más peligrosas de tocar (complejidad ciclomática x acoplamiento x cambios)
- Dónde está definido cada símbolo, quién lo usa y quién lo llama
- Qué bloques de código están duplicados (hash estructural de forma de AST)
- Qué límites de arquitectura están violando los imports
- Qué tipos implementan un trait/interfaz, y viceversa
El resultado: tu IA trabaja más rápido, usa menos tokens, refactoriza de forma segura y deja de hacer cambios a ciegas en archivos de carga crítica.
Antes y después
| Tarea | Sin Qartez | Con Qartez |
|---|---|---|
"¿Dónde está definido QartezServer?" | Grep en 200 archivos, Read de candidatos. 1.490 tokens. | qartez_find. 52 tokens. |
"¿Qué se rompe si cambio storage/read.rs?" | BFS grep desde los imports, profundidad 2. 9.243 tokens. | qartez_impact: importadores directos + transitivos + co-cambio. 352 tokens. |
"Esquema de src/server/mod.rs (96 símbolos)" | Lectura completa del archivo de 300KB. 77.843 tokens. | qartez_outline con firmas. 3.009 tokens. |
| "Encuentra todas las exportaciones muertas" | Imposible sin herramientas. | qartez_unused: pre-materializado, instantáneo. 468 tokens. |
| "¿Qué funciones son las más arriesgadas de refactorizar?" | Nada que consultar. | qartez_hotspots: complejidad x PageRank x cambios. |
Las 43 herramientas
Piénsalas como la biblioteca estándar para la comprensión de código por IA. Cada una reemplaza un flujo de trabajo humano de varios pasos con una única llamada eficiente en tokens que el agente puede razonar.
Las herramientas están organizadas en niveles con divulgación progresiva. Las herramientas principales están siempre disponibles. Se pueden desbloquear niveles adicionales bajo demanda mediante qartez_tools enable: ["analysis"] (o "all").
Principales (siempre disponibles)
| Herramienta | Qué hace |
|---|---|
qartez_map | Empieza aquí. Esqueleto del proyecto clasificado por importancia. PageRank, exportaciones, radios de explosión. Potencia por archivos o términos para enfocarte en lo que estás trabajando. |
qartez_find | Salta a la definición de un símbolo por nombre exacto. Archivo, rango de líneas, firma, visibilidad. Sin escaneo. |
qartez_grep | Búsqueda FTS5 en símbolos indexados. Coincidencia de prefijos, respaldo de regex, búsqueda opcional en el cuerpo. |
qartez_read | Lee el código fuente de uno o más símbolos con números de línea. Sin escaneo de archivos. Salta directamente al símbolo. |
qartez_outline | Tabla de contenidos para cualquier archivo: cada símbolo agrupado por tipo, con firmas. |
qartez_impact | Llámalo antes de editar cualquier archivo importante. Muestra importadores directos, dependientes transitivos y socios de co-cambio. Todo lo que podría romperse. |
qartez_deps | Grafo de dependencias de un archivo: qué importa, qué lo importa. |
qartez_stats | Panel del código base: archivos, símbolos, aristas por lenguaje, archivos más conectados. |
Análisis (desbloquear mediante qartez_tools)
| Herramienta | Qué hace |
|---|---|
qartez_refs | Rastrea cada uso de un símbolo en todo el código base, con cadenas transitivas opcionales. |
qartez_calls | Jerarquía de llamadas: quién llama a esta función y qué llama ella. |
qartez_cochange | Archivos que históricamente cambian juntos en git. Acoplamiento lógico invisible para el grafo de importaciones. |
qartez_context | Constructor de contexto inteligente: dados los archivos que planeas modificar, devuelve el conjunto óptimo de archivos relacionados para leer primero. |
qartez_unused | Detector de código muerto: símbolos exportados con cero importadores, pre-materializados en tiempo de indexación. |
qartez_diff_impact | Impacto por lotes para un rango de git diff. Pasa un revspec como main..HEAD para obtener archivos modificados con PageRank, radio de explosión unificado, puntos de convergencia y omisiones de co-cambio. Una llamada reemplaza N llamadas a qartez_impact + qartez_cochange. |
qartez_hotspots | El radar de refactorización. Clasifica archivos y funciones por puntuación de hotspot = complejidad ciclomática × PageRank × (1 + churn). Apunta directamente al código de mayor riesgo del repositorio. |
qartez_clones | Detección estructural de clones de código mediante hash de forma AST (identificadores, literales y comentarios se normalizan para eliminar ruido). Encuentra lógica duplicada que el revisor humano jamás detectaría. |
qartez_boundaries | Aplicación de límites de arquitectura. Declara "estos módulos no pueden importar aquellos" en .qartez/boundaries.toml y recibe cada arista infractora. suggest=true genera una configuración inicial a partir del clustering de Leiden. |
qartez_hierarchy | Consultas de jerarquía de tipos: encuentra todos los tipos que implementan un trait/interfaz, o todos los traits/interfaces que implementa un tipo. Funciona en Rust, TypeScript, Java, Python y Go. |
qartez_trend | Tendencia de complejidad a lo largo de la historia de git: rastrea cómo evolucionó la complejidad ciclomática de una función commit a commit. Marca funciones que están CRECIENDO, ESTABLES o REDUCIÉNDOSE. |
qartez_security | Escáner de seguridad con 13 reglas integradas. Coincidencia de patrones basada en regex puntuada por PageRank para priorizar archivos de alto impacto. Reglas personalizadas mediante .qartez/security.toml. Filtros por severidad (bajo/medio/alto/crítico) y categoría. |
qartez_smells | Detector de malos olores de código: encuentra funciones dios (alta complejidad + cuerpo largo), listas largas de parámetros y feature envy (métodos que usan más otro tipo que el propio). Umbrales ajustables. |
qartez_health | Lista de correcciones priorizada. Cruza qartez_hotspots con qartez_smells y clasifica archivos como Crítico (hotspot + mal olor), Alto (solo hotspot) o Medio (solo mal olor). Cada entrada incluye una técnica de refactorización concreta sugerida. |
qartez_refactor_plan | Plan de refactorización ordenado y anotado con seguridad para un archivo. Cada paso nombra una técnica (Extract Method, Introduce Parameter Object), una categoría estimada de impacto de CC (Alto/Medio/Bajo) con un rango, y señales de seguridad derivadas del impacto, la cobertura de pruebas y el número de llamadores. |
qartez_test_gaps | Análisis de brechas de cobertura de pruebas mediante el grafo de importaciones. Tres modos: gaps clasifica archivos fuente sin probar por riesgo, map muestra las asignaciones de prueba a fuente, suggest recomienda pruebas a ejecutar para un rango de git diff. |
qartez_knowledge | Análisis de bus-factor. Autoría basada en git-blame a nivel de archivo y módulo. Expone archivos y módulos de autor único donde el conocimiento está concentrado en un solo contribuyente. |
qartez_blame | Git blame con ámbito de símbolo. Resuelve un nombre de función/tipo a su rango de líneas y culpa solo esas líneas: commits/autores por hunk, o un resumen por autor con el último commit de cada uno. |
qartez_semantic | Búsqueda semántica con un modelo de embeddings local. Consultas en lenguaje natural clasificadas por similitud híbrida FTS5 + vectorial (RRF). Requiere la característica cargo semantic y una descarga única del modelo (~270 MB). |
qartez_path | Camino más corto de llamada/referencia entre dos símbolos. BFS hacia adelante sobre el grafo de referencias de símbolos devuelve la cadena ordenada de símbolos/archivos más un recuento de caminos más cortos alternativos. Filtra aristas por kind (call o type). |
Refactor (desbloquear mediante qartez_tools)
| Herramienta | Qué hace |
|---|---|
qartez_rename | Renombra un símbolo en todo el código base. Definición, importaciones, todos los usos. Vista previa por defecto, apply=true para ejecutar. |
qartez_move | Mueve un símbolo a otro archivo y reescribe todas las rutas de importación. Una sola llamada MCP. |
qartez_rename_file | Renombra un archivo y actualiza cada importación que apunta a él. |
qartez_replace_symbol | Reemplaza todo el rango de líneas de un símbolo con código fuente nuevo. El llamador proporciona el reemplazo completo, incluida la firma; vista previa por defecto, apply=true ejecuta atómicamente. |
qartez_insert_before_symbol | Inserta código nuevo inmediatamente antes de un símbolo ancla. La búsqueda del ancla pasa por la tabla de símbolos indexada: no hace falta el contexto circundante exacto. |
qartez_insert_after_symbol | Inserta código nuevo inmediatamente después de un símbolo ancla. Misma direccionamiento basado en ancla que qartez_insert_before_symbol. |
qartez_safe_delete | Elimina un símbolo después de informar cada archivo que aún lo importa. Se niega a aplicar si existen importadores, a menos que force=true. |
Meta (desbloquear mediante qartez_tools)
| Herramienta | Qué hace |
|---|---|
qartez_project | Detecta automáticamente tu cadena de herramientas (Cargo, npm/bun/yarn, Go, Python, Make, Gradle) y ejecuta test/build/lint/typecheck mediante una sola herramienta. |
qartez_wiki | Genera una wiki de arquitectura en markdown usando detección de comunidades de Leiden sobre el grafo de importaciones. Divide los archivos en clústeres, nombra cada uno y emite ARCHITECTURE.md con aristas entre clústeres. |
qartez_workspace | Añade o elimina dominios de workspace en tiempo de ejecución. Registra directorios externos bajo un alias personalizado en .qartez/workspace.toml, los indexa y los purga al eliminarlos. |
qartez_add_root | Registra una raíz de proyecto adicional en tiempo de ejecución. Indexa el directorio, actualiza pagerank/co-cambio y engancha un observador de archivos; el alias es opcional (derivado del nombre base de la ruta) y la persistencia es conmutable para raíces efímeras. |
qartez_list_roots | Lista cada raíz de proyecto que el servidor rastrea actualmente con su alias, origen (cli/config/runtime), estado de adjunto del observador, recuento de archivos y última marca de tiempo de indexación. |
qartez_maintenance | Inspecciona y compacta .qartez/index.db. La acción por defecto stats informa tamaños de DB / WAL, tablas principales, huella del workspace actual y última marca de tiempo de reindexación completa. Otras acciones: checkpoint, optimize_fts (fusionar segmentos FTS5), vacuum_incremental, vacuum, convert_incremental (conversión de una sola vez a auto_vacuum=INCREMENTAL), purge_stale (eliminar filas de raíces que ya no están en el workspace). Usa esto en una DB inflada en lugar de borrar .qartez/index.db manualmente. |
Gestión de niveles
| Herramienta | Qué hace |
|---|---|
qartez_tools | Siempre visible. Lista todos los niveles y sus herramientas. Usa enable: ["analysis"], enable: ["all"] o disable: ["refactor"] para controlar qué herramientas se exponen al agente. Las herramientas principales no se pueden deshabilitar. |
Prompts de flujo de trabajo
Seis recetas listas para usar que encadenan las herramientas anteriores en el orden correcto. Invócalos como comandos de barra en Claude Code o en cualquier cliente MCP que admita prompts.
| Prompt | Qué hace |
|---|---|
/qartez_review <file> | Revisión de código: radio de explosión, esquema, referencias, co-cambio — luego una lista de verificación enfocada. |
/qartez_architecture [top_n] | Resumen de arquitectura en un minuto basado en datos de PageRank. |
/qartez_debug <symbol> | Definición + llamadores + calorías + referencias en una sola pasada. |
/qartez_onboard [area] | Lista de lectura de cinco archivos para nuevos contribuyentes, clasificada por importancia. |
/qartez_pre_merge <files> | Verificación de seguridad previa a la fusión con recomendación de ship/hold. |
/qartez_arch_review [focus] | Auditoría de riesgo de arquitectura: hubs frágiles, límites enredados, superficie de seguridad, deuda de complejidad. |
Protección de modificación
Qartez incluye una red de seguridad que impide que tu IA edite a ciegas archivos críticos para la carga.
El binario qartez-guard se engancha al sistema PreToolUse de Claude Code y bloquea Edit/Write/MultiEdit en cualquier archivo que supere un umbral de PageRank o de radio de explosión — hasta que la IA llame a qartez_impact primero para reconocer el riesgo.
Cómo funciona:
- La IA intenta editar
src/server/mod.rs - El guard comprueba: PageRank 0.23 (> umbral 0.05), radio de explosión 10 (>= umbral 10)
- La edición es bloqueada con una explicación que lista qué umbrales se activaron
- La IA llama a
qartez_impact file_path=src/server/mod.rs— revisa el radio de explosión - El guard concede una ventana de edición de 10 minutos para ese archivo
- La IA reintenta la edición — permitida
Cero configuración. Ajustable mediante QARTEZ_GUARD_PAGERANK_MIN, QARTEZ_GUARD_BLAST_MIN, QARTEZ_GUARD_ACK_TTL_SECS, o deshabilitada con QARTEZ_GUARD_DISABLE=1.
Benchmarks
No afirmaciones. Medidos. Reproducibles. Ejecuta make bench y verifícalo tú mismo.
Titular
Ahorro agregado de tokens vs Glob + Grep + Read + git log: +91.8%
(suma de MCP 38,789 / suma de no-MCP 472,109 tokens en todos los 28 escenarios del auto-bench de Qartez. Sub-conteo conservador: 10 de 28 escenarios tienen una simulación no-MCP incompleta — esas filas siguen contribuyendo sus tokens MCP a ambas sumas. En los 18 escenarios con una comparación justa token a token el ahorro sube a +94.5%.)
Calidad evaluada por LLM-juez (claude-opus-4-6): MCP 8.3 / 10 vs no-MCP 4.3 / 10 en cinco ejes (corrección, completitud, usabilidad, basamiento, concisión), n=28.
Contexto de coste por sesión. Una sesión típica de Claude Code comienza con ~20,000 tokens de sobrecarga de prompt. Una sola ejecución de make bench ahorra ~433,000 tokens — ~21 sesiones vacías de presupuesto recuperadas, solo por enrutar preguntas a través de la herramienta correcta.
Desglose por herramienta (auto-bench de Rust)
18 herramientas con simulaciones no-MCP completas (comparación justa token a token):
| Herramienta | Tokens MCP | Sin MCP | Ahorro | Aceleración |
|---|---|---|---|---|
qartez_cochange | 92 | 14,622 | +99.4% | 2x |
qartez_context | 107 | 4,489 | +97.6% | 533x |
qartez_find | 52 | 1,490 | +96.5% | 210x |
qartez_impact | 352 | 9,243 | +96.2% | 140x |
qartez_outline | 3,009 | 77,843 | +96.1% | 5x |
qartez_project | 68 | 1,394 | +95.1% | 0x |
qartez_unused | 468 | 6,750 | +93.1% | 22x |
qartez_deps | 166 | 2,286 | +92.7% | 118x |
qartez_map | 87 | 674 | +87.1% | 1x |
qartez_rename_file | 27 | 185 | +85.4% | 211x |
qartez_grep | 127 | 763 | +83.4% | 72x |
qartez_stats | 155 | 848 | +81.7% | 1x |
qartez_move | 161 | 701 | +77.0% | 159x |
qartez_calls | 564 | 2,409 | +76.6% | 3x |
qartez_refs | 201 | 692 | +71.0% | 26x |
qartez_read | 150 | 495 | +69.7% | 100x |
qartez_hierarchy | 735 | 2,056 | +64.3% | 127x |
qartez_rename | 439 | 648 | +32.3% | 11x |
10 herramientas analíticas adicionales no tienen equivalente grep/lectura significativo — resuelven problemas que la pila no-MCP no puede resolver en absoluto:
qartez_hotspots, qartez_clones, qartez_smells, qartez_test_gaps, qartez_wiki, qartez_boundaries, qartez_trend, qartez_knowledge, qartez_diff_impact, qartez_security.
Bench multi-idioma
make bench-all ejecuta el mismo arnés de 28 escenarios contra cinco fixtures OSS fijados — colinhacks/zod (TypeScript), spf13/cobra (Go), encode/httpx (Python), FasterXML/jackson-core (Java), más el auto-bench de Qartez (Rust) — y luego emite un resumen entre idiomas a reports/benchmark-<lang>.md más una matriz combinada. Cada herramienta, cada idioma, cada escenario — medido con el tokenizador cl100k_base contra una simulación fiel de Glob + Grep + Read + git log.
make bench # Rust self-bench only - fresh measurements
make bench-all # All 5 languages (Rust, TypeScript, Python, Go, Java) + cross-language summary
make bench-fixtures # Clone and index the pinned fixture repos
Los informes llegan a reports/benchmark.md / reports/benchmark.json para la ejecución de un solo idioma, o reports/benchmark-<lang>.md más un resumen combinado entre idiomas para bench-all.
Cómo funciona por dentro
Cuatro capas, calculadas una vez, consultadas desde SQLite en cada llamada de herramienta.
1. Análisis con tree-sitter
Cada archivo fuente se analiza con una gramática tree-sitter específica del lenguaje. Sin servidor LSP, sin instalaciones de SDK por lenguaje, sin penalización de arranque en frío. El analizador extrae símbolos (funciones, métodos, tipos, constantes), sus firmas, rangos de líneas, visibilidad de exportación, relaciones de importación y —para 21 lenguajes imperativos— la complejidad ciclomática por función.
2. Hash de forma estructural
Los cuerpos de las funciones se canonizan en un esqueleto AST (identificadores, literales y comentarios normalizados) y se les aplica un hash. Dos símbolos con el mismo hash son clones estructurales. Eso es lo que consulta qartez_clones.
3. Análisis de grafo
Las aristas de importación forman un grafo dirigido. Sobre él se ejecutan tres algoritmos:
- PageRank: el mismo algoritmo de caminata aleatoria que Google usó para páginas web. Aplicado a tu grafo de importaciones, revela los archivos que forman la columna vertebral arquitectónica de tu proyecto.
- Blast radius: BFS inverso que cuenta cuántos archivos se ven afectados transitivamente por un cambio.
qartez_impactlo utiliza para advertir antes de ediciones. - Agrupamiento de Leiden: detección de comunidades que divide tu código base en módulos lógicos para la wiki de arquitectura generada automáticamente y la configuración inicial de
qartez_boundaries.
4. Minería del historial de Git
Recorre los últimos N commits (300 por defecto) y cuenta los pares de archivos que aparecen en el mismo commit. Esto revela el acoplamiento lógico que el grafo de importaciones no puede ver: archivos que no están vinculados por importaciones pero que siempre se editan juntos.
qartez_impact, qartez_context y qartez_hotspots fusionan estas señales —PageRank + blast + co-cambio + complejidad— en una única respuesta clasificada. Ningún otro servidor MCP combina las cuatro.
Almacenamiento
Todo reside en .qartez/index.db: un único archivo SQLite con índices de texto completo FTS5. Al iniciar, Qartez reanaliza únicamente los archivos cuya hora de modificación haya cambiado. El vigilante de archivos se activa automáticamente mientras el servidor está en ejecución: las ediciones y los archivos nuevos se reindexan en segundo plano sin tiempo de inactividad. Pasa --no-watch para desactivarlo.
Transporte
Qartez se comunica a través de stdio (JSON-RPC sobre stdin/stdout), el transporte MCP estándar. Sin servidor HTTP, sin asignación de puertos, sin exposición a la red. El IDE lanza el binario qartez como proceso hijo e intercambia mensajes a través de tuberías.
Lenguajes compatibles
Un solo binario. Sin configuración por lenguaje. Los 37 lenguajes se analizan con tree-sitter (con respaldo de regex para formatos que carecen de gramática compatible). Los 21 lenguajes imperativos también obtienen complejidad ciclomática por función, lo que impulsa qartez_hotspots.
Tabla completa de lenguajes (37 lenguajes)
| Language | Extensiones / Nombres de archivo |
|---|---|
| TypeScript / JavaScript | .ts .tsx .js .jsx .mts .cts .mjs .cjs |
| Rust | .rs |
| Go | .go |
| Python | .py .pyi |
| Java | .java |
| Kotlin | .kt .kts |
| Swift | .swift |
| C# | .cs |
| C | .c .h |
| C++ | .cpp .cc .cxx .hpp .hh .hxx |
| Ruby | .rb |
| PHP | .php |
| Bash | .sh .bash |
| CSS | .css .scss |
| Scala | .scala .sc: clases, traits, objetos, case classes |
| Dart | .dart: clases, mixins, enums, privacidad basada en guion bajo |
| Lua | .lua: funciones, métodos (M.f/M:f), importaciones require |
| Elixir | .ex .exs: defmodule, def/defp, defstruct, alias/use/import |
| Zig | .zig: pub fn, structs, enums, unions, @import |
| Nix | .nix: enlaces de atributos, funciones, rutas import |
| Haskell | .hs .lhs: funciones de nivel superior, data, newtype, type, typeclasses, import |
| OCaml | .ml .mli: enlaces let, type, module, class, exception, open/include |
| R | .r .R: asignaciones de funciones/variables, clases S4/R6, library/require/source |
| Protobuf | .proto: message, service, rpc, enum, import |
| SQL | .sql: CREATE TABLE/VIEW/FUNCTION/PROCEDURE, ALTER, bloques BEGIN...END |
| HCL / Terraform | .tf: referencias entre archivos var/local/module/data/resource |
| YAML | .yaml .yml: K8s, GitHub Actions, GitLab CI, docker-compose, Ansible |
| Dockerfile | Dockerfile, Dockerfile.*, .dockerfile: referencias COPY --from de varias etapas |
| Makefile | Makefile, GNUmakefile, .mk: objetivos, variables, importaciones include |
| TOML | .toml: tablas, claves, matrices de tablas |
| Nginx | .conf, .nginx: bloques server, location, upstream |
| Plantillas Helm / Go | .tpl: bloques define/include/template |
| Jenkinsfile / Groovy | Jenkinsfile, .groovy: pipeline, stage, node, def |
| Starlark / Bazel | BUILD, BUILD.bazel, WORKSPACE, WORKSPACE.bazel, .bzl, .star, .bazel: load, reglas con name=, def |
| Jsonnet | .jsonnet .libsonnet: funciones/variables local, campos, import/importstr |
| Caddyfile | Caddyfile, .caddyfile: bloques de sitio, handle, reverse_proxy, snippets |
| Unidades systemd | .service .timer .socket .mount .target .path .slice .scope: secciones, ExecStart, directivas |
Aspectos destacados: TypeScript, Rust, Go, Python, Java, Kotlin, Swift, C#, C/C++, Ruby, PHP, Dart, Scala, Elixir, Zig, Lua, Haskell, OCaml, R y 17 más. Los 21 lenguajes imperativos incluyen puntuación de complejidad ciclomática.
Comparación con alternativas
El espacio de los servidores MCP de inteligencia de código está saturado en 2026. Esta sección cubre competidores OSS directos, plataformas empresariales y ecosistemas adyacentes. Todas las cifras de estrellas se contrastaron con el repositorio de GitHub de cada proyecto en abril de 2026.
Competidores MCP OSS directos
Nueve proyectos comparten el nicho de "servidor MCP para inteligencia de código", ordenados por estrellas de GitHub.
| Proyecto | Estrellas | Impl. | Enfoque de indexación | Lenguajes | Herramientas MCP |
|---|---|---|---|---|---|
| Qartez (este repositorio) | nuevo | Rust | tree-sitter + SQLite + PageRank + blast radius + co-cambio + complejidad + clones + límites | 37 | 30 |
| Serena | 23k | Python | LSP (servidores de lenguaje por lenguaje) | 46+ | ~35 |
| code-review-graph | 10.4k | Python | tree-sitter + SQLite + agrupamiento de Leiden | 23+ | 28 |
| Claude-Context | 5.9k | TypeScript | Embeddings + base de datos vectorial Milvus/Zilliz | 14 | 4 |
| CodeGraphContext | 3k | Python | tree-sitter + KuzuDB / FalkorDB / Neo4j | 14 | 21 |
| Codebase-Memory MCP | 1.6k | C | tree-sitter + SQLite + resolución de tipos híbrida | 66 | 14 |
| Repowise | 1.2k | Python | Grafo de dependencias + historial de git + documentación generada por LLM | 14 | 7 |
| Code Index MCP | 903 | Python | tree-sitter (10 lenguajes) + respaldo ripgrep para 50+ | 10 + 50 | 11 |
| Codanna | 651 | Rust | tree-sitter + tantivy FTS + fastembed | 15 | ~9 |
Comparación característica por característica
| Capacidad | Qartez | Serena | code-review-graph | Claude-Context | CodeGraphContext | Codebase-Memory | Repowise | Code Index MCP | Codanna |
|---|---|---|---|---|---|---|---|---|---|
| Análisis tree-sitter | Sí | No (LSP) | Sí | Solo fragmentación | Sí | Sí | No | Sí (10 lenguajes) | Sí |
| Clasificación de importancia PageRank | Sí | No | No | No | No | No | No | No | No |
| Blast radius (dependientes transitivos) | Sí | No | Sí | No | No | Sí | No | No | Sí |
| Minería de co-cambios en git | Sí | No | No | No | No | Sí | Sí | No | No |
| Complejidad ciclomática por función | Sí (21 lenguajes) | No | No | No | No | No | No | No | No |
| Puntuación de puntos calientes (complejidad x PR x cambio) | Sí | No | No | No | No | No | No | No | No |
| Detección de clones estructurales de código | Sí | No | No | No | No | No | No | No | No |
| Aplicación de límites arquitectónicos | Sí | No | No | No | No | No | No | No | No |
| Impacto de señal cuádruple (PR + blast + co-cambio + complejidad) | Sí | No | No | No | No | No | No | No | No |
| Detección de código oloroso (god functions, feature envy) | Sí | No | No | No | No | No | No | No | No |
| Análisis de brechas de cobertura de pruebas | Sí | No | No | No | No | No | No | No | No |
| Análisis de factor bus / conocimiento | Sí | No | No | No | No | No | No | No | No |
| Consultas de jerarquía de tipos | Sí | Vía LSP | No | No | No | No | No | No | No |
| Grafo de llamadas (llamador / llamado) | Sí | Parcial | Sí | No | Sí | Sí | No | No | Sí |
| Refactorización (renombrar / mover / renombrar archivo) | Sí (vista previa + aplicar) | Solo renombrar (LSP); mover mediante plugin de JetBrains (de pago) | Solo vista previa de renombrado | No | No | No | No | No | No |
| Ejecutor de comandos de toolchain (test / build / lint) | Sí | Solo shell | No | No | No | No | No | No | No |
| Constructor de contexto inteligente de múltiples señales | Sí | No | Parcial | No | No | No | No | No | No |
| Análisis de impacto de diffs por lotes | Sí | No | No | No | No | No | No | No | No |
| Plantillas de prompt MCP | Sí (6) | No | Sí (5) | No | No | No | No | No | No |
| Instalación multi-IDE con un comando | Sí (19 IDEs, asistente Rust) | No (manual) | Sí (9 IDEs) | No (manual) | Sí (10 IDEs) | Sí (10 agentes) | No | No | No |
| Escaneo de seguridad (regex + puntuación PageRank) | Sí | No | No | No | No | No | No | No | No |
| Tendencia de complejidad a lo largo del historial de git | Sí | No | No | No | No | No | No | No | No |
| Divulgación progresiva de herramientas (niveles) | Sí (4 niveles) | No | No | No | No | No | No | No | No |
| Búsqueda semántica / vectorial | Sí (opt-in, embedding local) | No | Opcional (FTS5 híbrido) | Sí (Milvus) | No | No | No | No | Sí (fastembed) |
| Detección de comunidades + wiki automática | Sí (Leiden + wiki) | No | Sí (Leiden + wiki) | No | No | Parcial (Louvain, sin wiki) | No | No | No |
| Visualización de grafos | No | No | Sí (D3.js) | No | Sí (Neo4j + HTML) | Sí (3D interactivo) | No | No | No |
| Modo vigilancia (reindexación incremental) | Sí (auto-activado) | Parcial | Sí | Parcial | Sí | Sí | No | Sí | Sí |
| Benchmarks publicados por herramienta con juez LLM | Sí (28 escenarios, 8.3/10 vs 4.3/10) | Solo terceros | Sí (6 repos, 8.2x promedio) | Limitado (afirmación ~40%) | No | Sí (artículo arXiv, 10x tokens) | No | No | Parcial (criterion) |
| Guardia de modificación (bloquea ediciones riesgosas) | Sí | No | No | No | No | No | No | No | No |
| Modelo de embedding / base de datos vectorial requerida | No | No | Opcional | Sí | No | No | No | No | Sí |
| Dependencia de la nube | No | No | No | Sí (predeterminado) | No | No | No | No | Opcional |
Alternativas empresariales y nativas de IDE
Plataformas comerciales que resuelven el mismo problema para usuarios dispuestos a intercambiar local-first y código abierto por pulido o escala entre repositorios:
- Sourcegraph Cody / Amp — indexadores SCIP de calidad de compilador, servidor MCP oficial desde 2026. Cloud-first, precios empresariales.
- Augment Code — Serie B de $227M. Índice semántico en tiempo real + grafo de relaciones de código en más de 400k archivos, servidor MCP oficial desde octubre de 2025. Dependencia de la nube.
- Deep Graph MCP (CodeGPT) — 392 estrellas. Backend de grafo de conocimiento alojado en la nube; intercambia
github.compordeepgraph.coen cualquier URL de repositorio para obtener un grafo de código preconstruido. Sin necesidad de indexación local. - JetBrains AI Assistant (IntelliJ 2025.2+) — servidor MCP integrado que expone símbolos y diagnósticos de nivel IDE. Solo JetBrains.
- Cursor — modelo de embeddings personalizado, índice compartido por equipo en Turbopuffer. IDE cerrado, sin exposición MCP.
- Windsurf Cascade — recuperación RAG M-Query. IDE cerrado, sin servidor MCP.
Qartez te da la misma inteligencia estructural que venden estas plataformas — funcionando por completo en tu laptop, de forma gratuita.
También destacables (proyectos más pequeños)
| Proyecto | Estrellas | Impl. | Nicho |
|---|---|---|---|
| Drift | 772 | TS / Rust | Aprende patrones y convenciones del código, los enseña a la IA entre sesiones |
| Octocode | 319 | Rust | Grafo de conocimiento GraphRAG + búsqueda semántica híbrida (4 herramientas MCP) |
| mcp-server-tree-sitter | 287 | Python | Exposición de consultas tree-sitter en bruto para que los agentes compongan sus propios análisis (~20 herramientas) |
| CodeGraph | 179 | Rust | SurrealDB + LSP + arquitectura agéntica ReAct / LATS, radio de explosión parcial |
| RepoMapper | 150 | Python | PageRank sobre tree-sitter de Aider como una única herramienta MCP |
| Narsil-MCP | 134 | Rust | 90 herramientas MCP, 32 lenguajes, grafos de llamadas + análisis de flujo de datos + escaneo de seguridad SBOM |
| Code Pathfinder | 118 | Go | SAST enfocado en seguridad con análisis de flujo de datos/taint entre archivos vía MCP |
| Code Graph RAG MCP | 86 | TypeScript | Híbrido Grafo + RAG, 26 métodos MCP, detección de clones |
| Tree-sitter Analyzer | 20 | Python | PageRank + modification_guard que bloquea ediciones inseguras (17 lenguajes) |
| AiDex | 25 | TypeScript | 30 herramientas MCP, gestión de tareas, captura de pantallas, Log Hub (11 lenguajes) |
Ecosistemas adyacentes (categoría diferente, mismo problema)
- Aider repo-map — el CLI de Paul Gauthier fue pionero en tree-sitter + PageRank en octubre de 2023. Vive dentro del CLI de aider, no como servidor MCP. RepoMapper envuelve la salida única de
repo_mapcomo MCP. - Continue.dev — cliente MCP, no servidor. Su documentación recomienda explícitamente combinar Continue con un servidor MCP dedicado de grafo de código — el rol que Qartez cubre.
- Context7, Mem0, Pieces LTM — herramientas de memoria y documentación, no indexadores de bases de código. Complementarios, no competidores.
- Block Goose, Cline, Codebuff — clientes de agentes de codificación que consumen servidores MCP. Son los usuarios de herramientas como Qartez.
Qué hace diferente a Qartez
1. Análisis de impacto de cuatro señales. qartez_impact, qartez_diff_impact, qartez_context y qartez_hotspots fusionan la importancia PageRank, el radio de explosión estático, la co-modificación de git y la complejidad ciclomática en una única respuesta clasificada. Ningún otro proyecto combina las cuatro.
2. Hotspots, clones, límites, seguridad, olores, brechas de prueba, conocimiento y tendencias en un solo servidor. qartez_hotspots clasifica las funciones más peligrosas del repositorio por complejidad x acoplamiento x cambios. qartez_clones encuentra lógica duplicada mediante hash de forma AST. qartez_boundaries aplica reglas de arquitectura declaradas en .qartez/boundaries.toml. qartez_security escanea patrones de vulnerabilidad puntuados por PageRank. qartez_smells detecta funciones dios, listas de parámetros largas y envidia de características. qartez_test_gaps encuentra archivos fuente sin probar clasificados por riesgo. qartez_knowledge revela riesgos de bus-factor a partir de git blame. qartez_trend rastrea cómo evolucionó la complejidad de una función commit a commit. Estas son ocho productos comerciales por separado en otros lugares, una sola llamada MCP aquí.
3. Refactorización a través de MCP con vista previa y aplicación. qartez_rename, qartez_move y qartez_rename_file le dan al asistente refactorizaciones atómicas y revisables en una sola llamada MCP. Serena ofrece renombrado vía LSP (requiere instalación de servidor por lenguaje); los servidores restantes no incluyen herramientas de refactorización en absoluto.
4. Red de seguridad integrada. El guardián de modificaciones bloquea que tu IA edite archivos de alto impacto sin revisar primero el radio de explosión. Ningún otro servidor en la tabla principal de competidores incluye esto.
5. Medido, no afirmado. 28 escenarios, 8.3/10 frente a 4.3/10 en calidad según juez LLM, conteos de tokens por herramienta y latencia. Todo reproducible con make bench (un solo lenguaje) o make bench-all (5 lenguajes con resumen entre lenguajes).
6. Rust nativo, local-first, cero dependencia de nube. Tres binarios (qartez, qartez-guard, qartez-setup). Sin runtime de Python, sin base de datos vectorial, sin cuenta en la nube. Todo se ejecuta en tu máquina. Ningún código sale del equipo. Una característica opcional de cargo semantic añade búsqueda de embeddings local, pero la compilación predeterminada no necesita descargar ningún modelo.
Opciones de línea de comandos
Qartez también funciona como CLI independiente. Ejecuta qartez <tool_name> (por ejemplo, qartez map, qartez find Config, qartez impact src/server/mod.rs) para usar cualquier herramienta principal o de análisis directamente desde la terminal sin un cliente MCP.
| Opción | Descripción | Predeterminado |
|---|---|---|
--root <path> | Raíz del proyecto a indexar (repetible para monorepos) | Auto-detectada |
--reindex | Forzar re-indexación completa | Desactivado |
--git-depth <n> | Commits a analizar para co-modificación | 300 |
--db-path <path> | Sobrescribir ubicación del índice | .qartez/index.db |
--no-watch | Desactivar el vigilador de archivos automático (activado por defecto) | Vigilador activado |
--wiki <path> | Generar wiki de arquitectura después de indexar | Desactivado |
--leiden-resolution <f> | Granularidad de clústeres (más grande = más clústeres) | 1.0 |
--format <format> | Formato de salida para subcomandos del CLI: human, json, compact | human |
--log-level <level> | error, warn, info, debug, trace (cualquier directiva tracing aceptada) | info |
Estructura del proyecto
src/
main.rs Entry point: index, compute, start server
lib.rs Library root (re-exports)
cli.rs CLI argument parsing (19 subcommands)
cli_runner.rs CLI subcommand dispatcher
config.rs Project configuration and root detection
error.rs Error types
str_utils.rs String utilities (stable floor_char_boundary polyfill)
toolchain.rs Toolchain detection (Cargo, npm, Go, etc.)
watch.rs File watcher for incremental re-indexing
guard.rs Modification guard evaluation engine
embeddings.rs Local embedding model for qartez_semantic (opt-in)
server/
mod.rs MCP server entrypoint - dispatches to per-tool handlers
tools/ 30 per-tool handler modules (one file per MCP tool)
prompts.rs 6 workflow prompt templates
tiers.rs Progressive tool disclosure (core/analysis/refactor/meta)
cache.rs Tree-sitter parse cache
helpers.rs Shared handler utilities
overview.rs Overview/map generation
params.rs Tool parameter structs
treesitter.rs Tree-sitter integration helpers
mcp_instructions.md Embedded MCP server instructions
index/
mod.rs Core indexing engine (full + incremental, import resolution)
walker.rs File discovery (respects .gitignore + .qartezignore)
parser.rs Tree-sitter parser pool
symbols.rs Symbols / imports / references + AST shape hashing
languages/ 37 language adapters (21 with cyclomatic complexity)
graph/
mod.rs Graph module root
pagerank.rs PageRank on import graph
blast.rs Blast radius BFS
leiden.rs Community detection (Leiden clustering)
boundaries.rs Architecture-boundary rules engine
security.rs Security rule engine (powers qartez_security)
wiki.rs Architecture wiki renderer
git/
mod.rs Git module root
cochange.rs Co-change pair mining
diff.rs Diff range analysis (for qartez_diff_impact)
trend.rs Complexity trend over git history
knowledge.rs Code authorship and bus-factor analysis
storage/
mod.rs Storage module root
schema.rs SQLite + FTS5 schema
read.rs / write.rs Query and mutation helpers
models.rs Row structs
bin/
setup.rs Interactive IDE setup wizard (19 IDEs)
guard.rs PreToolUse modification guard
benchmark.rs Benchmark harness entry point
benchmark/ Benchmark internals (cargo feature)
profiles/ Per-language benchmark profiles (Rust, TS, Python, Go, Java)
scenarios.rs 28 benchmark scenarios
judge.rs LLM-judge harness
report.rs Markdown / JSON report writers
tokenize.rs cl100k_base token accounting
scripts/ Hook + snippet assets embedded by qartez-setup
benchmarks/fixtures.toml Pinned OSS repos for multi-language benchmarks
reports/ Generated benchmark.md / benchmark.json artifacts
Contribuciones
¿Encontraste un bug? Abre un issue. ¿Quieres añadir un lenguaje, corregir un parser o mejorar una herramienta? Las pull requests son bienvenidas — lee CONTRIBUTING.md y CODE_OF_CONDUCT.md primero. Los PR no triviales requieren firmar el CLA.md.
git clone https://github.com/kuberstar/qartez-mcp.git
cd qartez-mcp
cargo build
cargo test
Las notas de versión de cada versión están en CHANGELOG.md.
Seguridad
¿Encontraste una vulnerabilidad? No abras un issue público. Sigue la política de divulgación en SECURITY.md.
Licencia
Doble licencia bajo la Qartez Small Team License (gratuita para individuos y equipos pequeños) y la Qartez Commercial License (para todos los demás). Lee el texto completo en LICENSE, y consulta COMMERCIAL.md para el resumen de los términos comerciales. Identificador SPDX: LicenseRef-Qartez-Dual.
Grep era para humanos. Qartez es para agentes.
Si Qartez te ahorra aunque sea el 10% de tu factura mensual de IA, dale una estrella al repositorio — es la única señal que les dice a otros desarrolladores que este enfoque vale la pena probar.