Uses Joern code property graphs for code review and security analysis through natural language queries.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add joern --env JOERN_HOST='<JOERN_HOST>' --env JOERN_PASSWORD='<JOERN_PASSWORD>' --env JOERN_PORT='<JOERN_PORT>' --env JOERN_USERNAME='<JOERN_USERNAME>' -- uv venv .venv~/.codex/config.toml
[mcp_servers.joern]
command = "uv"
args = ["venv", ".venv"]
env = { JOERN_HOST = "<JOERN_HOST>", JOERN_PASSWORD = "<JOERN_PASSWORD>", JOERN_PORT = "<JOERN_PORT>", JOERN_USERNAME = "<JOERN_USERNAME>" }
# codex mcp add joern --env JOERN_HOST='<JOERN_HOST>' --env JOERN_PASSWORD='<JOERN_PASSWORD>' --env JOERN_PORT='<JOERN_PORT>' --env JOERN_USERNAME='<JOERN_USERNAME>' -- uv venv .venv~/.cursor/mcp.json
{
"mcpServers": {
"joern": {
"command": "uv",
"args": [
"venv",
".venv"
],
"env": {
"JOERN_HOST": "<JOERN_HOST>",
"JOERN_PASSWORD": "<JOERN_PASSWORD>",
"JOERN_PORT": "<JOERN_PORT>",
"JOERN_USERNAME": "<JOERN_USERNAME>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"joern": {
"type": "stdio",
"command": "uv",
"args": [
"venv",
".venv"
],
"env": {
"JOERN_HOST": "<JOERN_HOST>",
"JOERN_PASSWORD": "<JOERN_PASSWORD>",
"JOERN_PORT": "<JOERN_PORT>",
"JOERN_USERNAME": "<JOERN_USERNAME>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"joern": {
"command": "uv",
"args": [
"venv",
".venv"
],
"env": {
"JOERN_HOST": "<JOERN_HOST>",
"JOERN_PASSWORD": "<JOERN_PASSWORD>",
"JOERN_PORT": "<JOERN_PORT>",
"JOERN_USERNAME": "<JOERN_USERNAME>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"joern": {
"command": "uv",
"args": [
"venv",
".venv"
],
"env": {
"JOERN_HOST": "<JOERN_HOST>",
"JOERN_PASSWORD": "<JOERN_PASSWORD>",
"JOERN_PORT": "<JOERN_PORT>",
"JOERN_USERNAME": "<JOERN_USERNAME>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"joern": {
"command": "uv",
"args": [
"venv",
".venv"
],
"env": {
"JOERN_HOST": "<JOERN_HOST>",
"JOERN_PASSWORD": "<JOERN_PASSWORD>",
"JOERN_PORT": "<JOERN_PORT>",
"JOERN_USERNAME": "<JOERN_USERNAME>"
}
}
}
}Environment variables
JOERN_HOSTJOERN_PASSWORDJOERN_PORTJOERN_USERNAME
Replace the placeholders with your own credentials and keep them out of version control.