CodeBadger
🦡 codebadger
Контейнеризированный сервер протокола контекста модели (MCP), обеспечивающий статический анализ кода с использованием технологии графа свойств кода (CPG) от Joern с поддержкой Java, C/C++, JavaScript, Python, Go, Kotlin, C#, Ghidra, Jimple, PHP, Ruby и Swift.
Новости
codebadger и сопутствующая статья — Bridging Code Property Graphs and Language Models for Program Analysis — были приняты на Software Vulnerability Management Workshop @ ICSE 2026. 🎉
Related MCP server: CodeBadger Toolkit
Цитирование
@article{lekssays2026bridging,
title={Bridging Code Property Graphs and Language Models for Program Analysis},
author={Lekssays, Ahmed},
journal={arXiv preprint arXiv:2603.24837},
year={2026}
}Нашли уязвимость с помощью codebadger?
Если codebadger помог вам обнаружить реальную уязвимость, мы будем рады узнать об этом. Откройте pull request, добавив её в TROPHIES.md — укажите идентификатор CVE, проект, краткое описание и дату.
Предварительные требования
Перед началом убедитесь, что у вас установлены:
Docker и Docker Compose
Python 3.10+ (рекомендуется Python 3.13)
pip (менеджер пакетов Python)
Чтобы проверить установку:
docker --version
docker-compose --version
python --versionБыстрый старт
1. Установка зависимостей Python
# Create a virtual environment (optional but recommended)
python -m venv venv
# Install dependencies
pip install -r requirements.txt2. Запуск сервисов Docker (Joern)
docker compose up -dЭто запускает:
Joern Server: движок статического анализа кода (выполняет генерацию CPG и запросы)
Проверьте, работают ли сервисы:
docker compose ps3. Запуск сервера MCP
# Start the server
python main.py &Сервер MCP будет доступен по адресу http://localhost:4242.
4. Остановка всех сервисов
# Stop MCP server (Ctrl+C in terminal)
# Stop Docker services
docker-compose down
# Optional: Clean up everything
bash cleanup.shСкрипт очистки
Используйте предоставленный скрипт очистки для сброса окружения:
bash cleanup.shЭто позволит:
Остановить и удалить контейнеры Docker
Завершить осиротевшие процессы Joern/MCP
Очистить кэш Python (
__pycache__,.pytest_cache)Опционально очистить директорию playground (CPG и кэшированные кодовые базы)
Интеграции
Интеграция с GitHub Copilot
Отредактируйте файл конфигурации MCP для VS Code (GitHub Copilot):
Путь:
~/.config/Code/User/mcp.jsonПример конфигурации:
{
"inputs": [],
"servers": {
"codebadger": {
"url": "http://localhost:4242/mcp",
"type": "http"
}
}
}Интеграция с Claude Code
Чтобы интегрировать codebadger в Claude Desktop, отредактируйте:
Путь:
Claude → Settings → Developer → Edit Config → claude_desktop_config.jsonДобавьте следующее:
{
"mcpServers": {
"codebadger": {
"url": "http://localhost:4242/mcp",
"type": "http"
}
}
}Доступные инструменты
Основные
generate_cpg: Генерация графа свойств кода (CPG) для кодовой базы (локальный путь или URL GitHub).get_cpg_status: Проверка существования CPG и получение метаданных статуса.run_cpgql_query: Выполнение необработанного запроса CPGQL к CPG и возврат структурированных результатов.get_cpgql_syntax_help: Отображение помощников по синтаксису CPGQL, советов и исправлений распространенных ошибок.
Просмотр кода
list_methods: Список методов/функций с опциональными фильтрами по регулярным выражениям/файлам.list_files: Отображение исходных файлов в виде пагинированного дерева.get_method_source: Получение исходного кода для именованного метода.list_calls: Список мест вызовов между функциями (вызывающий → вызываемый).get_call_graph: Построение читаемого человеком графа вызовов (входящих или исходящих).list_parameters: Получение имен, типов и порядка параметров для метода.get_codebase_summary: Высокоуровневые метрики (файлы, методы, вызовы, язык).get_code_snippet: Возврат фрагмента файла по начальному/конечному номеру строки.
Семантический анализ
get_cfg: Создание графа потока управления (узлы и ребра) для метода.get_type_definition: Инспекция типов структур/классов и их членов.get_macro_expansion: Эвристическое обнаружение вероятных вызовов с раскрытыми макросами.
Анализ загрязнения и уязвимостей
find_taint_sources: Поиск вероятных точек внешнего ввода (источников).find_taint_sinks: Поиск опасных приемников, куда могут поступать загрязненные данные.find_taint_flows: Обнаружение потоков данных от источников к приемникам (анализ загрязнения).get_program_slice: Построение обратных/прямых срезов программы для вызова.get_variable_flow: Отслеживание зависимостей данных для переменной в определенном месте.find_bounds_checks: Поиск проверок границ рядом с доступом к буферу.find_use_after_free: Эвристическое обнаружение шаблонов использования после освобождения (use-after-free).find_double_free: Обнаружение потенциальных проблем двойного освобождения памяти.find_null_pointer_deref: Поиск вероятных разыменований нулевого указателя.find_integer_overflow: Обнаружение шаблонов переполнения целых чисел.find_format_string_vulns: Обнаружение уязвимостей форматной строки (CWE-134), где нелитеральные аргументы формата передаются в функции семейства printf.find_heap_overflow: Обнаружение уязвимостей переполнения кучи (CWE-122), где запись в буферы кучи может превысить их выделенный размер.find_stack_overflow: Обнаружение уязвимостей переполнения стекового буфера (CWE-121), где запись в локальные массивы фиксированного размера (например,char buf[64]) может превысить их объявленную размерность.find_toctou: Обнаружение состояний гонки Time-of-Check-Time-of-Use (CWE-367), где файл проверяется с помощьюaccess()/stat(), а затем открывается или используется на отдельном шаге.find_uninitialized_reads: Обнаружение чтения неинициализированных переменных (CWE-457), где локальные переменные используются до присвоения им значения.
Пользовательские инструменты
Вы можете добавлять свои собственные детекторы, не изменяя основную кодовую базу:
Напишите шаблон запроса Scala в
src/tools/queries/your_query.scala.Зарегистрируйте функцию инструмента Python в
src/tools/custom_tools.py.Перезапустите сервер — инструмент автоматически появится в каждом клиенте MCP.
См. CUSTOM_TOOLS_GUIDE.md для получения полного пошагового руководства, справочника CPGQL и информации о проектных решениях.
Вклад и тестирование
Спасибо за ваш вклад! Вот краткое руководство, как начать запускать тесты и вносить свой вклад в код.
Предварительные требования
Python 3.10+ (3.13 используется в CI)
Docker и Docker Compose (для интеграционных тестов)
Настройка локальной разработки
Создайте виртуальное окружение и установите зависимости
python -m venv venv
pip install -r requirements.txtЗапустите сервисы Docker (для интеграционных тестов)
docker-compose up -dЗапустите модульные тесты
pytest tests/ -qЗапустите интеграционные тесты (требуется запущенный Docker Compose)
# Start MCP server in background
python main.py &
# Run integration tests
pytest tests/integration -q
# Stop MCP server
pkill -f "python main.py"Запустите все тесты
pytest tests/ -qОчистка после тестирования
bash cleanup.sh
docker-compose downВклад в код
Пожалуйста, следуйте этим рекомендациям при внесении вклада:
Соблюдайте соглашения репозитория
Пишите тесты для изменений поведения
Убедитесь, что все тесты проходят перед отправкой PR
Включите четкий список изменений в описание вашего PR
Обновите документацию, если это необходимо
Конфигурация
Сервер MCP можно настроить с помощью переменных окружения или config.yaml.
Переменные окружения
Ключевые настройки (опционально — показаны значения по умолчанию):
# 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=grpcФайл конфигурации
Создайте config.yaml из config.example.yaml:
cp config.example.yaml config.yamlЗатем настройте по мере необходимости.
Телеметрия (OpenTelemetry)
CodeBadger имеет встроенную поддержку OpenTelemetry для распределенной трассировки. Когда она включена, все вызовы инструментов MCP автоматически отслеживаются, плюс добавляются пользовательские спаны для генерации CPG, управления сервером Joern и выполнения запросов.
Быстрый старт
Установите зависимости телеметрии (включены в
requirements.txt):
pip install opentelemetry-sdk opentelemetry-exporter-otlpВключите через переменные окружения:
export OTEL_ENABLED=true
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
python main.pyИли через config.yaml:
telemetry:
enabled: true
service_name: codebadger
otlp_endpoint: http://localhost:4317
otlp_protocol: grpc # or "http/protobuf"Локальная разработка с 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.pyЧто отслеживается
Спан | Описание |
| Каждый вызов инструмента MCP (автоматически через FastMCP) |
| Полный конвейер генерации CPG |
| Выполнение команды Joern CLI внутри Docker |
| Создание экземпляра сервера Joern |
| Загрузка файла CPG в сервер Joern |
| Выполнение запроса CPGQL с атрибутами времени выполнения и успеха |
Справочник конфигурации
Настройка | Переменная окружения | По умолчанию | Описание |
|
|
| Включить/выключить телеметрию |
|
|
| Имя сервиса в трассировках |
|
|
| Конечная точка коллектора OTLP |
|
|
| Протокол экспорта ( |
Когда телеметрия отключена (по умолчанию), вся трассировка является фиктивной (no-op) с нулевыми накладными расходами.
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