Code Intelligence MCP Server — Joern CPG + ArangoDB powered code analysis for AI agents. 14 tools: symbol search, call graphs, data flow, impact analysis, and more.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"code-intel-mcp": {
"command": "<see-readme>",
"args": []
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Code Intelligence MCP Server — Joern CPG + ArangoDB powered code analysis for AI agents. 14 tools: symbol search, call graphs, data flow, impact analysis, and more.
No automated test available for this server. Check the GitHub README for setup instructions.
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
No package registry to scan.
This server is missing a description. Tools and install config are also missing.If you've used it, help the community.
Add informationBe the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in developer-tools / data / ai-ml
Dynamic problem-solving through sequential thought chains
Query and manage PostgreSQL databases directly from AI assistants
XcodeBuildMCP provides tools for Xcode project management, simulator management, and app utilities.
Manage Supabase projects — databases, auth, storage, and edge functions
MCP Security Weekly
Get CVE alerts and security updates for Code Intel Mcp and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Code Intelligence MCP Server — Joern CPG + ArangoDB powered code analysis for AI agents.
14 tools for deep code understanding: symbol search, call graphs, data flow tracking, impact analysis, React component trees, and more. Designed for use with Claude Code, Cursor, OpenCode, or any MCP-compatible AI agent.
| Capability | grep/ripgrep | AST tools | code-intel-mcp |
|---|---|---|---|
| Find symbol by name | partial | exact | exact + fuzzy |
| Call graph (who calls X?) | no | single file | multi-file, transitive |
| Data flow (where does this var go?) | no | no | yes — taint tracking |
| Impact analysis (what breaks if X changes?) | no | no | yes — transitive blast radius |
| React component tree | no | partial | JSX-aware |
| Cross-file call chain A→B | no | no | pathfinding |
| Incremental re-indexing | N/A | N/A | SHA256 diff — only changed files |
Everything in one container — Joern, ArangoDB, and the MCP server:
docker compose up -d
Then add to your MCP client config:
{
"mcpServers": {
"code-intel": {
"command": "docker",
"args": ["exec", "-i", "code-intel-mcp", "node", "dist/index.js"],
"env": {}
}
}
}
| Variable | Default | Description |
|---|---|---|
JOERN_CLI_PATH | /opt/joern/joern-cli | Path to Joern CLI installation |
ARANGO_HOST | http://localhost:8529 | ArangoDB host URL |
ARANGO_USER | root | ArangoDB username |
ARANGO_PASS | (empty) | ArangoDB password |
ARANGO_DB | code_intel | ArangoDB database name |
Copy .env.example to .env and fill in your values.
| Tool | Use When | Don't Use When |
|---|---|---|
index_project | First time setup or after code changes | No files changed (check project_status first) |
project_status | Before any query to verify index exists | You just indexed and know it's current |
list_files | Verify what's indexed or explore file structure | Searching for a specific symbol (use symbol_search) |
cache_stats | Debugging query performance | Routine use |
| Tool | Use When | Don't Use When |
|---|---|---|
symbol_search | You know or partially know a symbol name | You already have the exact name from prior search |
find_usages | "Where is X used?" — calls, imports, references | You need call graph depth traversal (use get_callers) |
get_code_context | Starting a new task — orient before diving in | You already know which files matter |
| Tool | Use When | Don't Use When |
|---|---|---|
get_callers | "Who calls X?" with depth traversal needed | Simple "where is X used?" (use find_usages — faster) |
get_callees | "What does X call?" with depth traversal | React component children (use get_react_components) |
get_call_chain | "How does A reach B?" — specific path | Open-ended exploration (use get_callers depth>1) |
| Tool | Use When | Don't Use When |
|---|---|---|
get_data_flow | Security/taint tracking, variable propagation | Simple "where is X set?" (use find_usages) |
get_impact_analysis | Before modifying shared code — blast radius | Single-file changes or you already know dependents |
get_react_components | React/Next.js component tree exploration | Non-React projects (use get_callees instead) |
get_hook_usage | React hook adoption patterns (who uses useAuth?) | Non-hook searches (use symbol_search) |
get_data_flow params: { sourceName: string, functionName: string, projectPath: string, direction?: "forward" | "backward" | "both" }
sourceName — variable or parameter to tracefunctionName — function containing that variable (required)direction — forward (where data goes), backward (where it comes from), both (default: forward)