Enables static code analysis of GitHub repositories using Joern's Code Property Graph technology, supporting code browsing, taint analysis, and security vulnerability detection across multiple programming languages.
Provides static code analysis capabilities within VS Code through GitHub Copilot integration, enabling code property graph queries, dataflow analysis, and security scanning.
🦡 codebadger
A containerized Model Context Protocol (MCP) server providing static code analysis using Joern's Code Property Graph (CPG) technology with support for Java, C/C++, JavaScript, Python, Go, Kotlin, C#, Ghidra, Jimple, PHP, Ruby, and Swift.
Prerequisites
Before you begin, make sure you have:
Docker and Docker Compose installed
Python 3.10+ (Python 3.13 recommended)
pip (Python package manager)
To verify your setup:
Quick Start
1. Install Python Dependencies
2. Start the Docker Services (Joern)
This starts:
Joern Server: Static code analysis engine (runs CPG generation and queries)
Verify services are running:
3. Start the MCP Server
The MCP server will be available at http://localhost:4242.
4. Stop All Services
Cleanup Script
Use the provided cleanup script to reset your environment:
This will:
Stop and remove Docker containers
Kill orphaned Joern/MCP processes
Clear Python cache (
__pycache__,.pytest_cache)Optionally clear the playground directory (CPGs and cached codebases)
Integrations
GitHub Copilot Integration
Edit the MCP configuration file for VS Code (GitHub Copilot):
Path:
Example configuration:
Claude Code Integration
To integrate codebadger into Claude Desktop, edit:
Path:
Add the following:
Available Tools
Core Tools (hash-based)
generate_cpg: Generate a CPG for a codebase (from local path or GitHub URL)get_cpg_status: Get status and existence of a CPG bycodebase_hashrun_cpgql_query: Execute CPGQL queries (synchronous)
Code Browsing Tools
get_codebase_summary: Get codebase overviewlist_files: List source fileslist_methods: Discover methods/functionsget_method_source: Retrieve method source codelist_calls: Find function call relationshipsget_call_graph: Build call graphslist_parameters: Get parameter informationfind_literals: Search for hardcoded valuesget_code_snippet: Retrieve code snippetsfind_taint_sources: Locate external input pointsfind_taint_sinks: Locate dangerous sinksfind_taint_flows: Find dataflow pathsfind_argument_flows: Find expression reusecheck_method_reachability: Check call graph connectionslist_taint_paths: List detailed taint pathsget_program_slice: Build program slices
Contributing & Tests
Thanks for contributing! Here's a quick guide to get started with running tests and contributing code.
Prerequisites
Python 3.10+ (3.13 is used in CI)
Docker and Docker Compose (for integration tests)
Local Development Setup
Create a virtual environment and install dependencies
Start Docker services (for integration tests)
Run unit tests
Run integration tests (requires Docker Compose running)
Run all tests
Cleanup after testing
Code Contributions
Please follow these guidelines when contributing:
Follow repository conventions
Write tests for behavioral changes
Ensure all tests pass before submitting PR
Include a clear changelog in your PR description
Update documentation if needed
Configuration
The MCP server can be configured via environment variables or config.yaml.
Environment Variables
Key settings (optional - defaults shown):
Config File
Create a config.yaml from config.example.yaml:
Then customize as needed.
This server cannot be installed