better-code-review-graph
Grafo de conocimiento para revisiones de código eficientes en tokens con análisis Tree-sitter, incrustación de modo dual (ONNX + LiteLLM) y análisis de radio de explosión mediante herramientas MCP.
Documentación
Better Code Review Graph
Renombrado (2026-09-13): el repositorio ahora es
crg— primero CLI (comandocrg). El paquete de PyPI sigue siendobetter-code-review-graph; el servidor MCP es una superficie secundaria.
mcp-name: io.github.n24q02m/better-code-review-graph
Grafo de conocimiento para revisiones de código eficientes en tokens: búsqueda semántica y resolución de grafos de llamadas en todo tu código.
Proyectos hermanos de n24q02m (clic para expandir)
| Proyecto | Eslogan | Etiqueta |
|---|---|---|
| agent-chat-plugin | Agentes de IA pares que chatean en una carpeta compartida: sin relé humano, sin orquestador, fun... | Herramientas |
| better-code-review-graph | Grafo de conocimiento para revisiones de código eficientes en tokens: búsqueda semántica y resolución de... | MCP |
| better-drive | Sincronización bidireccional de Google Drive con filtro .driveignore: motor rclone, bandeja de Windows | Herramientas |
| better-email-mcp | Correo IMAP/SMTP para agentes de IA: leer, enviar, organizar carpetas y gestionar archivos adj... | MCP |
| better-godot-mcp | Servidor MCP compuesto para Godot Engine: 17 herramientas compuestas para desarrollo de juegos asistido por IA... | MCP |
| better-notion-mcp | Notion centrado en Markdown para agentes de IA: páginas, bases de datos, bloques y comentarios... | MCP |
| better-semantic-release | Bifurcación directa de python-semantic-release con protecciones de seguridad de lanzamiento integradas (orp...) | Herramientas |
| better-telegram-mcp | Telegram para agentes de IA: mensajes, chats, medios y contactos en ambas cuen... | MCP |
| better-workspace-mcp | Servidor MCP de Google Workspace (Docs/Drive/Calendar/Gmail/Sheets/Slides/Tasks/Ch...) | MCP |
| claude-plugins | Mercado de plugins de Claude Code para los servidores MCP de n24q02m: instala búsqueda we... | Mercado |
| imagine-mcp | Comprensión y generación de imágenes y video para agentes de IA: en Gemini, Op... | MCP |
| jules-task-archiver | Extensión de Chrome para operaciones masivas en tareas de Jules mediante la API batchexecute: a... | Herramientas |
| mcp-core | Base compartida para construir servidores MCP: transporte HTTP Streamable, OAut... | MCP |
| mnemo-mcp | Memoria persistente de IA con búsqueda híbrida y sincronización integrada. Abierta, gratuita, ilimit... | MCP |
| fastretrieval | Entorno de ejecución rápido de recuperación multimodelo para embeddings ONNX y GGUF, reranking y contratos de modelos | Biblioteca |
| skret | Secretos sin el servidor. | CLI |
| tacet | Una cascada neuro-simbólica autodestilante que amortiza el costo de LLM en el conocim... | Herramientas |
| web-core | Paquete compartido de infraestructura web para búsqueda, scraping, seguridad HTTP y almac... | Biblioteca |
| wet-mcp | Servidor MCP de código abierto para agentes de IA: búsqueda web, extracción de contenido y bibli... | MCP |
Un servidor MCP que analiza tu código con Tree-sitter, construye un grafo estructural de funciones/clases/importaciones y le da a Claude (o a cualquier cliente MCP) contexto preciso para que lea solo lo que importa en lugar de todo el árbol. La búsqueda semántica se ejecuta a través del registro local de modelos ONNX de fastretrieval de forma predeterminada (cero configuración, sin clave API), con una cadena opcional de embeddings en la nube. Bifurcación de code-review-graph con búsqueda de varias palabras corregida, resolución de llamadas calificada, embeddings de doble modo, paginación de salida y CI/CD de producción.
Migración a v2.0 (RUPTURA)
v2.0 agrega columnas temporales (valid_from_sha / valid_to_sha en cada nodo y borde) y un escáner de seguridad opcional. La migración del esquema se aplica automáticamente en la primera apertura de GraphStore, y se guarda una copia de seguridad de la base de datos anterior a 2.0 en <graph_db>.pre-2.0.bak para que puedas revertir. Consulta BREAKING_CHANGES.md para ver la lista completa de cambios de esquema, cambios de comportamiento, requisitos de entorno y el procedimiento de degradación (CRG_DOWNGRADE_TO_1_X=1 uv run better-code-review-graph).
Tabla de contenidos
- Migración a v2.0 (RUPTURA)
- Instalación
- Smithery
- Configuración
- Herramientas
- CLI
- Características
- Comparación
- Seguridad
- Compilar desde el código fuente
- Modelo de confianza
- Migración y registro de cambios
- Documentación
- Licencia
Instalación
Para OMP y otros entornos de desarrollo locales, la superficie principal es el CLI del paquete
más los flujos de trabajo skills/ incluidos. Las habilidades invocan el CLI directamente y no
requieren un mapeo de servidor MCP.
# Run without a persistent install (short `crg` script; PyPI package name stays
# better-code-review-graph, so `uvx` needs the explicit --from form)
uvx --python 3.13 --from better-code-review-graph crg graph build --full-rebuild \
--repo-root /path/to/repo
uvx --python 3.13 --from better-code-review-graph crg graph stats \
--repo-root /path/to/repo
# Or install the console scripts (installs both `crg` and the legacy long name)
pip install better-code-review-graph
crg query search --search-query "authentication" \
--repo-root /path/to/repo
El motor opcional de Semgrep para análisis de seguridad más profundos es un extra separado:
pip install 'better-code-review-graph[security]'
MCP stdio sigue siendo un adaptador de protocolo secundario para clientes que lo requieran:
{
"mcpServers": {
"better-code-review-graph": {
"command": "uvx",
"args": ["--python", "3.13", "better-code-review-graph"],
"env": { "MCP_TRANSPORT": "stdio" }
}
}
}
Matriz de instalación (stdio salvo que se indique; el uso primero-CLI anterior sigue siendo la superficie principal):
| Cliente | Instalación |
|---|---|
| Claude Code (plugin) | /plugin marketplace add n24q02m/claude-plugins luego /plugin install better-code-review-graph@n24q02m-plugins |
| Claude Code (stdio) | claude mcp add better-code-review-graph -- uvx --python 3.13 better-code-review-graph |
| Codex | registra el comando stdio uvx --python 3.13 better-code-review-graph bajo mcp_servers en ~/.codex/config.toml |
| Gemini CLI | agrega el JSON de mcpServers anterior a ~/.gemini/settings.json |
| Cursor / Windsurf | agrega el JSON de mcpServers anterior mediante la configuración MCP del cliente (mcp.json) |
| Cualquier cliente (HTTP autoalojado) | apunta el cliente a https://<your-host>/mcp (MCP_TRANSPORT=http) — solo autoalojado, sin endpoint alojado |
Instala con un agente de IA: pega esto a tu agente de codificación de IA:
Instala el servidor MCP
better-code-review-graphsiguiendo los pasos en https://raw.githubusercontent.com/n24q02m/claude-plugins/main/plugins/better-code-review-graph/setup-with-agent.md
El uso completo del CLI está en CLI. La configuración opcional por cliente de MCP está en mcp.n24q02m.com/servers/better-code-review-graph/setup/.
Límite local-primero
CRG es local-primero para flujos de trabajo de codificación:
- El CLI y las Habilidades incluidas son las superficies principales para construcción/consulta de grafos, análisis de impacto, contexto de revisión, análisis de seguridad e incorporación de repositorios.
- MCP stdio es el adaptador de protocolo secundario sobre los mismos servicios de dominio local; no mantiene una implementación de grafo separada.
- El estado del grafo permanece en
<repo>/.better-code-review-graph/graph.dbsalvo que una configuración explícita multiusuario/autoalojada seleccione otro directorio de datos. - PyPI, CI, análisis de seguridad, lanzamientos de GitHub y la publicación elegible de MCP Registry estable siguen activos. Las etiquetas OCI públicas históricas se conservan, pero ya no se publican nuevas imágenes públicas de Docker Hub/GHCR.
- CRG no tiene un entorno de ejecución alojado de Cloudflare en la topología objetivo.
Smithery
El repositorio incluye un smithery.yaml para que el servidor pueda compilarse y
ejecutarse mediante Smithery. Se despliega sobre stdio y no
necesita configuración de inicio: el esquema de configuración está vacío, y cualquier clave
opcional de embeddings/resúmenes en la nube se proporciona en tiempo de ejecución mediante el flujo de configuración
propio del servidor (consulta Configuración abajo). El comando de lanzamiento es la misma
invocación de uvx que una instalación local:
startCommand:
type: stdio
commandFunction: |-
(config) => ({ command: 'uvx', args: ['--python', '3.13', 'better-code-review-graph'] })
Configuración
Todo funciona listo para usar con cero configuración: la búsqueda semántica
usa el registro local de ONNX de fastretrieval
(Qwen3-Embedding-0.6B es la entrada de referencia integrada actual, ~570 MB
descargados en el primer graph embed). Esta entrada de referencia no es un límite solo-Qwen:
cualquier ID de registro integrado o manifiesto de artefacto válido que no sea Qwen sigue
el mismo resolvedor. Todas las variables de entorno a continuación son opcionales y solo se necesitan
para embeddings en la nube, resúmenes de LLM o un artefacto local BYO explícito.
Selección de modelos
Los embeddings seleccionan la primera entrada de provider/model en EMBEDDING_MODELS; las entradas
posteriores se conservan como configuración pero no son respaldos en tiempo de ejecución. Los resúmenes
también seleccionan la primera entrada de SUMMARY_MODELS, sin respaldo en tiempo de ejecución. Los proveedores
se infieren de los prefijos de modelo y usan el <PROVIDER>_API_KEY correspondiente.
| Variable | Propósito | Vacío (predeterminado) |
|---|---|---|
EMBEDDING_MODELS | Selección de embeddings en la nube; la primera entrada está activa | Registro local de fastretrieval |
SUMMARY_MODELS | Selección del modelo de finalización para graph(action="summarize") | Resúmenes deshabilitados |
Cohere embed-v4.0 solicita y almacena 1024 dimensiones; otros backends conservan
almacenamiento de 768 dimensiones. CRG nunca corta, rellena ni acepta silenciosamente un ancho
de proveedor diferente. La fila del embedding debe coincidir en modelo y ancho de bytes antes de reutilizarse.
Ejecuta graph(action="embed") después de cambiar modelos o actualizar un índice antiguo de Cohere
de 768 de ancho. Las búsquedas rechazan anchos incompatibles antes de una llamada al proveedor; los
nodos del grafo se conservan y el re-embedding reemplaza solo los vectores obsoletos.
Claves API de proveedores
Los modelos en la nube necesitan la clave del proveedor para el prefijo de modelo seleccionado. Las claves solas nunca seleccionan modelos: una cadena de embeddings vacía permanece local, y una cadena de resúmenes vacía permanece deshabilitada. Un error de nube configurado no recurre a local ni a otro proveedor. Los resumidores requieren un modelo de finalización de chat.
| Prefijo de modelo | Variable de entorno de clave API | Obtener una clave |
|---|---|---|
jina_ai/ | JINA_AI_API_KEY | https://jina.ai/api-key |
gemini/ | GEMINI_API_KEY (o GOOGLE_API_KEY) | https://aistudio.google.com/apikey |
openai/ (o text-embedding-* simple) | OPENAI_API_KEY | https://platform.openai.com/api-keys |
cohere/ | COHERE_API_KEY | https://dashboard.cohere.com/api-keys |
openrouter/ | OPENROUTER_API_KEY | https://openrouter.ai/settings/keys |
vertex_express/ | GOOGLE_VERTEX_EXPRESS_API_KEY | https://cloud.google.com/vertex-ai/generative-ai/docs/start/express-mode/overview |
Avanzado
| Variable | Propósito |
|---|---|
EMBEDDING_API_BASE | Endpoint compatible con el proveedor para embeddings en la nube, incluido CF AI Gateway (protegido contra SSRF) |
LLM_API_BASE | URL base compatible con el proveedor para el resumidor, incluido CF AI Gateway (protegido contra SSRF) |
DISABLE_LOCAL_EMBED | Omite la descarga local de ONNX; el embedding no está disponible salvo que se configure una cadena en la nube |
LOCAL_EMBEDDING_MODEL | ID de modelo integrado de fastretrieval, o un directorio local que contenga fastretrieval-manifest.json |
LOCAL_RERANK_MODEL | ID de modelo TextCrossEncoder de Fastretrieval para reranking semántico acotado |
LOCAL_EMBEDDING_DIM | Dimensión requerida para un ID de modelo externo sin manifiesto |
LOCAL_EMBEDDING_MODEL_FILE | Ruta del archivo ONNX dentro de un directorio de artefactos respaldado por manifiesto |
LOCAL_EMBEDDING_POOLING | Pooling explícito para un ID externo sin manifiesto: CLS, MEAN, LAST_TOKEN o DISABLED |
LOCAL_EMBEDDING_NORMALIZE | Normalización L2 explícita para un ID externo sin manifiesto |
CRG_DATA_DIR | Anula el directorio de datos por usuario (predeterminado ~/.crg) usado para grafos y credenciales por usuario en modo HTTP multiusuario |
EMBEDDING_BACKEND / EMBEDDING_MODEL / SUMMARY_MODEL | Obsoletas variables singulares, respetadas durante un lanzamiento con advertencia: migra a las cadenas de *_MODELS |
Cuando LOCAL_RERANK_MODEL está configurado, la búsqueda semántica vectorial recupera un | |
grupo de candidatos acotado de min(max(limit * 4, limit), 100) filas, aplica los | |
filtros existentes de kind, repo y filas en vivo, luego reordena ese grupo y devuelve | |
como máximo limit filas. La respuesta utiliza search_mode="semantic_reranked" y | |
agrega rerank_score mientras preserva similarity_score. En blanco mantiene la | |
ruta vectorial existente de limit * 2 y search_mode="semantic". Las fallas | |
| del reordenador configurado devuelven un error explícito; CRG no recurre silenciosamente a | |
| resultados vectoriales o de palabras clave. Las búsquedas por palabras clave, incluidas las | |
instantáneas de as_of, no invocan el reordenador. |
Ejemplo -- embeddings en la nube + resúmenes
{
"mcpServers": {
"better-code-review-graph": {
"command": "uvx",
"args": ["--python", "3.13", "better-code-review-graph"],
"env": {
"MCP_TRANSPORT": "stdio",
"EMBEDDING_MODELS": "cohere/embed-v4.0",
"SUMMARY_MODELS": "openrouter/minimax/minimax-m3:free",
"EMBEDDING_API_BASE": "https://gateway.ai.cloudflare.com/v1/<account>/<gateway>/cohere/v2/embed",
"LLM_API_BASE": "https://gateway.ai.cloudflare.com/v1/<account>/<gateway>/openrouter/v1",
"COHERE_API_KEY": "<cohere-key>",
"OPENROUTER_API_KEY": "<openrouter-key>"
}
}
}
}
El embedding de Cohere es de pago. Autorice un presupuesto acotado antes de un índice/consulta en vivo; la elección de finalización sin Minimax no hace que los embeddings sean gratuitos. Este ejemplo no agrega una anulación de modelo a nivel de proceso: las credenciales de sujeto faltantes fallan de forma cerrada en lugar de heredar el entorno del servidor.
CRG actualmente no tiene llamada de reordenamiento en la nube: LOCAL_RERANK_MODEL es su única
ruta de reordenamiento. Configurar RERANK_MODELS o RERANK_API_BASE no habilita una.
Herramientas
Seis herramientas, cada una agrupando acciones relacionadas para mantener la superficie de herramientas pequeña.
graph -- Ciclo de vida del grafo
Acciones: build | update | stats | embed | export | summarize
| Acción | Descripción |
|---|---|
build | Construcción de grafo completa o incremental. Configure full_rebuild=true para volver a analizar todos los archivos; pase roots para federar directorios de repositorio adicionales en un solo grafo. |
update | Alias para build con full_rebuild=false (incremental). |
stats | Tamaño del grafo, idiomas, desglose de nodos/bordes, recuento de embeddings. |
embed | Calcular embeddings vectoriales para búsqueda semántica. Modo dual: ONNX local o cadena en la nube. |
export | Exportar el grafo como graphml / json-ld / dot / cypher. En línea o a output_path. |
summarize | Docstrings de un párrafo generados por LLM para nodos Function (a través de la primera entrada explícita de SUMMARY_MODELS; sin operación cuando no hay modelo seleccionado). Llamadas limitadas por max_nodes. |
query -- Consultas de grafo
Acciones: query | search | impact | large_functions | spot_check | renamed_in_diff | diff
| Acción | Descripción |
|---|---|
query | Patrones predefinidos: callers_of, callees_of, imports_of, importers_of, children_of, tests_for, inheritors_of, file_summary. |
search | Buscar entidades de código por nombre/palabra clave o similitud semántica. |
impact | Radio de impacto de archivos modificados. Se detecta automáticamente desde git diff. Paginado con max_results. |
large_functions | Encontrar funciones/clases que exceden un umbral de recuento de líneas. |
spot_check | Fragmentos de sitios de llamada aleatorios del último resultado de callers_of/callees_of/inheritors_of/importers_of. |
renamed_in_diff | Símbolos cuya línea de sitio de llamada se desplazó en comparación con una referencia base. |
diff | Nodos agregados/eliminados/modificados entre dos SHAs de confirmación (from_sha, to_sha). |
La mayoría de las acciones de lectura aceptan as_of=<sha> para instantáneas temporales (puntuales)
y repo=<repo_id> para delimitar un grafo federado de múltiples repositorios.
review -- Contexto de revisión de código
Acciones: context (predeterminada) | delta
Contexto de revisión optimizado por tokens con resumen estructural, nodos impactados, fragmentos
de código fuente y orientación de revisión. context detecta automáticamente los archivos modificados desde el
git diff; delta (con from_sha/to_sha, show_line_shifts opcional)
superficies de movimientos de refactorización entre dos confirmaciones.
config -- Configuración del servidor y configuración de credenciales
Acciones: status | set | cache_clear | setup_status | setup_start | setup_skip | setup_reset | setup_complete
| Acción | Descripción |
|---|---|
status | Información del servidor: versión, ruta del grafo, recuentos de nodos/bordes, backend de embeddings, recuento de embeddings. |
set | Actualizar una configuración en tiempo de ejecución (key=log_level). |
cache_clear | Eliminar todos los embeddings calculados. |
setup_status | Mostrar el estado actual de credenciales y qué celdas de modelo tienen claves. |
setup_start | Explicar dónde el host configura las claves de API (celdas de modelo propiedad del host). |
setup_skip | Configurar modo local (embedding ONNX local, sin celdas en la nube). |
setup_reset | Restablecer el estado a local; la configuración del host se vuelve a resolver en la siguiente llamada. |
setup_complete | Volver a resolver el estado de credenciales desde la configuración del host. |
security -- Escaneo de seguridad
Acciones: scan | report | suppress | rule_list
| Acción | Descripción |
|---|---|
scan | Ejecutar un escaneo de seguridad (engine='heuristic' predeterminado = 5 reglas regex, o 'semgrep'). Los hallazgos persisten en nodes.security_tags. |
report | Reemitir hallazgos en caché como JSON (format='json') o SARIF v2.1.0 (format='sarif'). |
suppress | Suprimir un hallazgo por rule_id (o remove=true para anular la supresión). |
rule_list | Listar reglas disponibles para un motor. |
El motor semgrep requiere el extra [security] y ejecuta el paquete de registro
p/auto de Semgrep más una superposición curada de 3 reglas.
help -- Documentación completa
Temas: graph | query | review | config | security | recipes
Devuelve documentación completa para cada herramienta. Úselo cuando las descripciones comprimidas anteriores sean insuficientes.
CLI
El paquete instala dos scripts de consola: crg (principal) y
better-code-review-graph (nombre largo heredado). Ejecutar cualquiera de ellos sin
argumentos inicia el servidor MCP sobre stdio; un argumento posicional inicial
enruta a un subcomando CLI local que llama a los mismos servicios de dominio utilizados por
el adaptador MCP. Ejecútelos directamente después de pip install, o sin una
instalación persistente mediante uvx --python 3.13 --from better-code-review-graph crg ....
# Start the MCP server over stdio (default -- no subcommand)
crg
# Build, inspect, and embed the local graph
crg graph build
crg graph stats
crg graph embed
# Query relationships and impact
crg query query \
--pattern callers_of --target "path/to/module.py::function"
crg query search --search-query "authentication"
crg query impact --changed-files src/app.py
# Produce review context and run a local security scan
crg review context --base HEAD~1
crg security scan --engine heuristic
| Comando | Descripción |
|---|---|
graph build | Construcción de grafo completa o incremental. --full-rebuild vuelve a analizar cada archivo; --base <ref> establece la referencia de diff incremental; --repo-root <path> anula la detección automática. |
graph embed | Calcular embeddings vectoriales usando ONNX local o la cadena en la nube configurada. |
graph stats / graph export / graph import / graph summarize | Inspeccionar, exportar/importar un grafo portátil crg, o resumir funciones. |
query query / query search | Ejecutar patrones de relación o búsqueda por palabras clave/semántica. |
query impact / query large_functions | Analizar el radio de impacto de archivos modificados o encontrar nodos sobredimensionados. |
query spot_check / query renamed_in_diff / query diff | Inspeccionar sitios de llamada, desplazamientos de línea o cambios de grafo entre confirmaciones. |
review context / review delta | Generar contexto de revisión o grupos de diff para un cambio de código. |
security scan / security report / security suppress / security rule_list | Ejecutar y gestionar hallazgos de seguridad heurísticos/Semgrep. |
Los subcomandos CLI imprimen JSON estructurado y salen con código no cero en caso de error.
Características
Lo que este fork corrige en comparación con el code-review-graph ascendente:
| Característica | code-review-graph | better-code-review-graph |
|---|---|---|
| Búsqueda de múltiples palabras | Rota (subcadena literal) | División de palabras con lógica AND |
| callers_of/callees_of | Resultados vacíos (objetivos de nombre simple) | Resolución de nombre calificado + respaldo simple |
| Embedding | sentence-transformers + torch (1.1 GB) | fastretrieval ONNX + nube (200 MB), modo dual |
| Tamaño de salida | Sin límite (500K+ caracteres) | Paginado (max_results, indicador truncado) |
| Diseño de herramientas | 9 herramientas individuales | 6 herramientas agrupadas: grafo + consulta + revisión + configuración + seguridad + ayuda |
| Enlaces de plugin | PostEdit/PostGit inválidos | PostToolUse válido |
Comparación
Cómo better-code-review-graph se compara con competidores directos en cada pilar:
| Capacidad | better-code-review-graph | Greptile | Sourcegraph (Cody / MCP) | CodeGraph (colbymchenry) |
|---|---|---|---|---|
| Grafo de conocimiento del código | Sí (Tree-sitter, 14 idiomas, SQLite) | Sí (funciones/clases/deps) | Sí (indexación precisa de código) | Sí (Tree-sitter, 20+ idiomas, SQLite) |
| Actualizaciones incrementales persistentes | Sí (git-diff + re-análisis por hash de archivo) | ? | Sí (indexación continua) | Sí (observador de archivos del SO con debounce) |
| Resolución de llamadas calificadas (callers/callees) | Sí (resolución de llamadas simples en el mismo archivo + respaldo) | ? | Sí (ir a definición / encontrar referencias) | Sí (callers / callees / impacto) |
| Búsqueda semántica / embeddings | Sí (registro local fastretrieval + Jina/Gemini/OpenAI/Cohere en la nube) | ? | Sí (semántica + palabras clave + regex) | No (solo texto completo FTS5) |
| Contexto de revisión optimizado por tokens | Sí (herramienta review, delimitado por git-diff) | Sí (comentarios de revisión de PR) | No (asistente de contexto de código) | No (capa de contexto, no revisión) |
| Escaneo de seguridad | Sí (Semgrep p/auto + superposición de 3 reglas, SARIF) | ? | ? | No |
| Auto-alojable | Sí (stdio predeterminado, vinculado a máquina) | Sí (Docker / K8s / aislado de red) | Sí (instancia auto-alojada) | Sí (100% local, sin claves de API) |
| Gratuito / código abierto | Sí (Apache-2.0) | No (SaaS propietario; nivel OSS gratuito) | No (licencia Enterprise, código fuente privado) | Sí (MIT) |
Fuentes: Greptile · Precios de Greptile · Sourcegraph MCP · CodeGraph. Las celdas marcadas con ? son capacidades que el competidor no documenta públicamente, no ausencias confirmadas.
Seguridad
- Selección explícita -- Los errores de embedding en la nube se informan; el tiempo de ejecución no cambia silenciosamente de modelo ni recurre a ONNX local.
- Manejo de errores -- Las herramientas devuelven cadenas de error con sugerencias de corrección, nunca fallan.
- Montaje de solo lectura -- El modo Docker monta el repositorio como
:ro(solo lectura). - Puntos finales protegidos contra SSRF -- Las URL personalizadas de
EMBEDDING_API_BASE/LLM_API_BASEse validan antes de cualquier llamada saliente.
Para informar una vulnerabilidad, consulte SECURITY.md.
Compilar desde el código fuente
git clone https://github.com/n24q02m/crg
cd better-code-review-graph
uv sync --group dev
uv run pytest
uv run better-code-review-graph
Requisitos: Python 3.13, uv.
Modelo de confianza
Este plugin implementa TC-Local (vinculado a máquina, principal de confianza único). Consulte el modelo de confianza de mcp-core para la clasificación completa.
| Modo | Base de datos de grafo | Credenciales en la nube | ¿Quién puede leer sus datos? |
|---|---|---|---|
| stdio (predeterminado) | <repo>/.better-code-review-graph/graph.db (ignorado por git) | ~/.better-code-review-graph-mcp/config.json (AES-GCM, clave vinculada a máquina) | Solo su usuario del SO |
| HTTP auto-alojado (multi-usuario) | ~/.crg/subs/<sub>/graph.db por usuario | ~/.crg/subs/<sub>/config.json por usuario | Solo el usuario autenticado |
Migración y registro de cambios
El grafo, la caché de escaneo de seguridad y el estado de supresión ahora usan el directorio
.better-code-review-graph/ propiedad del paquete. Ejecute graph(action="build", full_rebuild=true)
una vez después de actualizar, seguido de graph(action="embed") si se necesita
búsqueda semántica. Las rutas antiguas ambiguas .code-review-graph/ y .code-review-graph.db
y sus archivos laterales SQLite se dejan intactos: pueden pertenecer al paquete
ascendente separado. Revise y vuelva a aplicar cualquier regla de supresión deseada explícitamente.
El lanzamiento v2.0 agregó columnas temporales (valid_from_sha / valid_to_sha
en cada nodo y borde) además de un escáner de seguridad opcional. La migración de esquema
se aplica automáticamente en la primera apertura de GraphStore, y se escribe una copia de seguridad de la base de datos anterior a 2.0
en <graph_db>.pre-2.0.bak. Para degradar y restaurarla:
CRG_DOWNGRADE_TO_1_X=1 uvx better-code-review-graph
Lista completa de cambios de esquema, cambios de comportamiento y procedimiento de reversión: BREAKING_CHANGES.md. Historial lanzamiento por lanzamiento: CHANGELOG.md.
Documentación
Documentación completa en mcp.n24q02m.com/servers/better-code-review-graph/setup/:
- Configuración -- métodos de instalación para Claude Code, Codex, Gemini CLI, Cursor, Windsurf, mcp.json
- Resumen de modos -- stdio / local-relay / remote-relay / remote-oauth
- Configuración multiusuario -- modelo de credenciales por sub-JWT
Use la herramienta help desde cualquier cliente MCP para obtener referencia en línea por herramienta.
Licencia
Apache-2.0 -- Ver LICENCIA.