CodeBadger Toolkit
🦡 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 — были приняты на Семинар по управлению уязвимостями программного обеспечения @ ICSE 2026. 🎉
Related MCP server: Joern MCP Server
Цитирование
@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: Эвристическое обнаружение вероятных вызовов с раскрытыми макросами.
Анализ потоков данных (Taint) и уязвимостей
find_taint_sources: Поиск вероятных точек внешнего ввода (источников).find_taint_sinks: Поиск опасных приемников, куда могут поступать зараженные данные.find_taint_flows: Обнаружение потоков данных от источников к приемникам (анализ taint).get_program_slice: Построение обратных/прямых срезов программы для вызова.get_variable_flow: Отслеживание зависимостей данных для переменной в определенном месте.find_bounds_checks: Поиск проверок границ рядом с доступом к буферу.find_use_after_free: Эвристическое обнаружение паттернов использования после освобождения (use-after-free).find_double_free: Обнаружение потенциальных проблем двойного освобождения (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+ (в CI используется 3.13)
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
Включите четкий список изменений (changelog) в описание вашего 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
- FlicenseCqualityDmaintenanceEnterprise-grade code intelligence platform providing AI-powered code analysis, semantic search, security scanning, and automated refactoring capabilities. Integrates with local AI models for zero-cost operations while delivering comprehensive development workflow automation.Last updated28
- 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, enabling code browsing, security taint analysis, call graph exploration, and dataflow tracking through natural language queries.Last updated147GPL 3.0
- 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-toolkit'
If you have feedback or need assistance with the MCP directory API, please join our Discord server