CodeBadger
🦡 codebadger
Un servidor contenedorizado del Protocolo de Contexto de Modelo (MCP) que proporciona análisis de código estático utilizando la tecnología Code Property Graph (CPG) de Joern, con soporte para Java, C/C++, JavaScript, Python, Go, Kotlin, C#, Ghidra, Jimple, PHP, Ruby y Swift.
Noticias
codebadger y su artículo adjunto — Bridging Code Property Graphs and Language Models for Program Analysis — han sido aceptados en el Software Vulnerability Management Workshop @ ICSE 2026. 🎉
Related MCP server: CodeBadger Toolkit
Cita
@article{lekssays2026bridging,
title={Bridging Code Property Graphs and Language Models for Program Analysis},
author={Lekssays, Ahmed},
journal={arXiv preprint arXiv:2603.24837},
year={2026}
}¿Has encontrado una vulnerabilidad usando codebadger?
Si codebadger te ayudó a descubrir una vulnerabilidad del mundo real, nos encantaría saberlo. Abre una solicitud de extracción (pull request) añadiéndola a TROPHIES.md — incluye el ID de CVE, el proyecto, una descripción breve y la fecha.
Requisitos previos
Antes de comenzar, asegúrate de tener:
Docker y Docker Compose instalados
Python 3.10+ (se recomienda Python 3.13)
pip (gestor de paquetes de Python)
Para verificar tu configuración:
docker --version
docker-compose --version
python --versionInicio rápido
1. Instalar dependencias de Python
# Create a virtual environment (optional but recommended)
python -m venv venv
# Install dependencies
pip install -r requirements.txt2. Iniciar los servicios de Docker (Joern)
docker compose up -dEsto inicia:
Servidor Joern: Motor de análisis de código estático (ejecuta la generación de CPG y las consultas)
Verifica que los servicios estén en ejecución:
docker compose ps3. Iniciar el servidor MCP
# Start the server
python main.py &El servidor MCP estará disponible en http://localhost:4242.
4. Detener todos los servicios
# Stop MCP server (Ctrl+C in terminal)
# Stop Docker services
docker-compose down
# Optional: Clean up everything
bash cleanup.shScript de limpieza
Utiliza el script de limpieza proporcionado para restablecer tu entorno:
bash cleanup.shEsto hará lo siguiente:
Detener y eliminar los contenedores de Docker
Finalizar procesos huérfanos de Joern/MCP
Limpiar la caché de Python (
__pycache__,.pytest_cache)Opcionalmente, limpiar el directorio de pruebas (CPGs y bases de código en caché)
Integraciones
Integración con GitHub Copilot
Edita el archivo de configuración de MCP para VS Code (GitHub Copilot):
Ruta:
~/.config/Code/User/mcp.jsonEjemplo de configuración:
{
"inputs": [],
"servers": {
"codebadger": {
"url": "http://localhost:4242/mcp",
"type": "http"
}
}
}Integración con Claude Code
Para integrar codebadger en Claude Desktop, edita:
Ruta:
Claude → Settings → Developer → Edit Config → claude_desktop_config.jsonAñade lo siguiente:
{
"mcpServers": {
"codebadger": {
"url": "http://localhost:4242/mcp",
"type": "http"
}
}
}Herramientas disponibles
Núcleo
generate_cpg: Genera un Grafo de Propiedades de Código (CPG) para una base de código (ruta local o URL de GitHub).get_cpg_status: Comprueba si existe un CPG y recupera metadatos de estado.run_cpgql_query: Ejecuta una consulta CPGQL sin procesar contra un CPG y devuelve resultados estructurados.get_cpgql_syntax_help: Muestra ayudantes de sintaxis CPGQL, consejos y correcciones de errores comunes.
Exploración de código
list_methods: Lista métodos/funciones con filtros opcionales de regex/archivo.list_files: Muestra los archivos fuente como una vista de árbol paginada.get_method_source: Recupera el código fuente de un método nombrado.list_calls: Lista los sitios de llamada entre funciones (llamador → llamado).get_call_graph: Construye un grafo de llamadas legible por humanos (entrante o saliente).list_parameters: Obtiene nombres, tipos y orden de los parámetros para un método.get_codebase_summary: Métricas de alto nivel (archivos, métodos, llamadas, lenguaje).get_code_snippet: Devuelve un fragmento de archivo por números de línea de inicio/fin.
Análisis semántico
get_cfg: Produce un grafo de flujo de control (nodos y aristas) para un método.get_type_definition: Inspecciona tipos de estructura/clase y sus miembros.get_macro_expansion: Detecta heurísticamente llamadas probablemente expandidas por macros.
Análisis de contaminación y vulnerabilidades
find_taint_sources: Encuentra puntos de entrada externos probables (fuentes).find_taint_sinks: Localiza sumideros peligrosos donde pueden fluir datos contaminados.find_taint_flows: Detecta flujos de datos desde fuentes a sumideros (análisis de contaminación).get_program_slice: Construye cortes de programa hacia atrás/adelante para una llamada.get_variable_flow: Rastrea dependencias de datos para una variable en una ubicación.find_bounds_checks: Busca comprobaciones de límites cerca de un acceso a búfer.find_use_after_free: Detección heurística de patrones de uso después de liberación (use-after-free).find_double_free: Detecta posibles problemas de doble liberación.find_null_pointer_deref: Encuentra probables desreferencias de puntero nulo.find_integer_overflow: Detecta patrones de desbordamiento de enteros.find_format_string_vulns: Detecta vulnerabilidades de cadena de formato (CWE-134) donde se pasan argumentos de formato no literales a funciones de la familia printf.find_heap_overflow: Detecta vulnerabilidades de desbordamiento de montón (CWE-122) donde las escrituras en búferes de montón pueden exceder su tamaño asignado.find_stack_overflow: Detecta vulnerabilidades de desbordamiento de búfer de pila (CWE-121) donde las escrituras en arreglos locales de tamaño fijo (ej.char buf[64]) pueden exceder su dimensión declarada.find_toctou: Detecta condiciones de carrera de tipo Time-of-Check-Time-of-Use (CWE-367) donde un archivo se verifica conaccess()/stat()y luego se abre u opera en un paso separado.find_uninitialized_reads: Detecta lecturas de variables no inicializadas (CWE-457) donde se utilizan variables locales antes de asignarles un valor.
Herramientas personalizadas
Puedes añadir tus propios detectores sin modificar la base de código principal:
Escribe una plantilla de consulta en Scala en
src/tools/queries/tu_consulta.scala.Registra una función de herramienta de Python en
src/tools/custom_tools.py.Reinicia el servidor: la herramienta aparecerá automáticamente en cada cliente MCP.
Consulta CUSTOM_TOOLS_GUIDE.md para obtener la guía completa paso a paso, la referencia de CPGQL y las decisiones de diseño.
Contribuciones y pruebas
¡Gracias por contribuir! Aquí tienes una guía rápida para empezar a ejecutar pruebas y contribuir con código.
Requisitos previos
Python 3.10+ (se usa 3.13 en CI)
Docker y Docker Compose (para pruebas de integración)
Configuración de desarrollo local
Crea un entorno virtual e instala las dependencias
python -m venv venv
pip install -r requirements.txtInicia los servicios de Docker (para pruebas de integración)
docker-compose up -dEjecuta pruebas unitarias
pytest tests/ -qEjecuta pruebas de integración (requiere que Docker Compose esté en ejecución)
# Start MCP server in background
python main.py &
# Run integration tests
pytest tests/integration -q
# Stop MCP server
pkill -f "python main.py"Ejecuta todas las pruebas
pytest tests/ -qLimpieza después de las pruebas
bash cleanup.sh
docker-compose downContribuciones de código
Por favor, sigue estas pautas al contribuir:
Sigue las convenciones del repositorio
Escribe pruebas para cambios de comportamiento
Asegúrate de que todas las pruebas pasen antes de enviar el PR
Incluye un registro de cambios claro en la descripción de tu PR
Actualiza la documentación si es necesario
Configuración
El servidor MCP se puede configurar mediante variables de entorno o config.yaml.
Variables de entorno
Ajustes clave (opcional - se muestran los valores predeterminados):
# Server
MCP_HOST=0.0.0.0
MCP_PORT=4242
# Joern
JOERN_BINARY_PATH=joern
JOERN_JAVA_OPTS="-Xmx4G -Xms2G -XX:+UseG1GC -Dfile.encoding=UTF-8"
# CPG Generation
CPG_GENERATION_TIMEOUT=600
MAX_REPO_SIZE_MB=500
# Query
QUERY_TIMEOUT=30
QUERY_CACHE_ENABLED=true
QUERY_CACHE_TTL=300
# Telemetry (OpenTelemetry)
OTEL_ENABLED=false
OTEL_SERVICE_NAME=codebadger
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
OTEL_EXPORTER_OTLP_PROTOCOL=grpcArchivo de configuración
Crea un config.yaml a partir de config.example.yaml:
cp config.example.yaml config.yamlLuego personalízalo según sea necesario.
Telemetría (OpenTelemetry)
CodeBadger tiene soporte integrado para OpenTelemetry para el rastreo distribuido. Cuando está habilitado, todas las llamadas a herramientas MCP se rastrean automáticamente, además de rangos personalizados para la generación de CPG, la gestión del servidor Joern y la ejecución de consultas.
Inicio rápido
Instala las dependencias de telemetría (incluidas en
requirements.txt):
pip install opentelemetry-sdk opentelemetry-exporter-otlpHabilita mediante variables de entorno:
export OTEL_ENABLED=true
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
python main.pyO mediante config.yaml:
telemetry:
enabled: true
service_name: codebadger
otlp_endpoint: http://localhost:4317
otlp_protocol: grpc # or "http/protobuf"Desarrollo local con Jaeger
# Start Jaeger (provides UI at http://localhost:16686)
docker run -d --name jaeger \
-p 16686:16686 \
-p 4317:4317 \
jaegertracing/all-in-one:latest
# Start CodeBadger with telemetry
OTEL_ENABLED=true python main.pyQué se rastrea
Rango | Descripción |
| Cada invocación de herramienta MCP (automática mediante FastMCP) |
| Tubería completa de generación de CPG |
| Ejecución de comandos de la CLI de Joern dentro de Docker |
| Creación de instancia del servidor Joern |
| Carga de archivo CPG en el servidor Joern |
| Ejecución de consulta CPGQL con atributos de tiempo y éxito |
Referencia de configuración
Ajuste | Variable de entorno | Predeterminado | Descripción |
|
|
| Habilitar/deshabilitar telemetría |
|
|
| Nombre del servicio en los rastreos |
|
|
| Punto final del colector OTLP |
|
|
| Protocolo de exportación ( |
Cuando la telemetría está deshabilitada (predeterminado), todo el rastreo es una operación nula sin sobrecarga.
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
- Alicense-qualityAmaintenanceEnables AI assistants to perform sophisticated static code analysis using Joern's Code Property Graph technology. Supports multi-language analysis, security vulnerability detection, and code quality assessment through isolated Docker environments.Last updated147GPL 3.0
- Alicense-qualityAmaintenanceProvides static code analysis using Joern's Code Property Graph technology for 12+ programming languages. Enables security analysis, code browsing, taint flow detection, and CPGQL queries through natural language.Last updated147GPL 3.0
- AlicenseAqualityDmaintenanceEnables fast code analysis and navigation through hybrid semantic search, graph-based relationship tracking, and structure exploration across multiple programming languages with optimized indexing for large codebases.Last updated83MIT
- Flicense-qualityCmaintenanceTransforms code repositories and development documentation into a queryable Neo4j knowledge graph, enabling AI assistants to perform intelligent code analysis, dependency mapping, impact assessment, and automated documentation generation across 15+ programming languages.Last updated6
Related MCP Connectors
Enterprise code intelligence for M&A, security audits, and tech debt. Hosted server with 200k free.
Zero-config MCP security scanner for AI-generated apps. 25K+ vulnerability patterns.
Threat modeling, code/cloud/pipeline scanning, shadow-AI discovery, compliance checks and fixes.
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/Lekssays/codebadger'
If you have feedback or need assistance with the MCP directory API, please join our Discord server