
codanna
by bartolli
Local code intelligence MCP server and CLI for AI coding agents.
X-ray vision for your agent.
</div>Codanna is a local code intelligence and semantic code search MCP server for AI coding agents. One MCP call returns symbol context, call graph, and impact analysis, pre-correlated — the grep-and-read loop your agent runs today, collapsed into a single response it can act on.
It indexes your repository on disk and serves symbol search, semantic search, call graphs, dependency tracking, document RAG, and impact analysis to Claude Code, Cursor, Windsurf, Codex, Gemini, and any MCP-compatible client — as a persistent MCP server for session-long work, or a one-shot CLI for instant answers when LSP is too slow. Written in Rust. 15 languages. No source code leaves your machine.
Two operational modes
Codanna's MCP toolset is reachable two ways. Same tools, same surface — pick the mode that fits the workflow.
Persistent MCP server — for session-long agent workflows.
codanna serve # stdio
codanna serve --http # HTTP
codanna serve --https # HTTPS
One-shot CLI — for slash-commands, bash hooks, scripts, CI. No daemon required.
codanna mcp find_symbol name:"my_function"
codanna mcp analyze_impact symbol_name:"my_function"
codanna mcp semantic_search_with_context query:"recursively extract function calls"
codanna mcp semantic_search_with_context is the headline command: it returns N semantic matches, and for each match the symbol identity, signature, docstring, callees, callers, and recursive impact analysis — five MCP tools fused into one query.
The one-shot CLI is also what makes codanna skill-friendly: an Agent Skill can wrap codanna mcp commands directly in Claude Code, Cursor, Windsurf, Codex, Gemini, or any harness that runs shell commands — no MCP plumbing required.
What one call returns
The headline command, run against codanna's own source tree. One call, and the agent has the symbol, its documentation, signature, callees with exact call sites, callers, and blast radius:
$ codanna mcp semantic_search_with_context query:"recursively extract function calls" limit:1
Found 1 results for query: 'recursively extract function calls'
1. extract_calls_recursive - Method at src/parsing/cpp/parser.rs:1002-1047 [symbol_id:1477]
Similarity Score: 0.833
Documentation:
Recursively extract function calls with context tracking
Signature: fn extract_calls_recursive<'a>(
node: Node,
code: &'a str,
current_function: Option<&'a str>,
calls: &mut Vec<(&'a str, &'a str, Range)>,
)
extract_calls_recursive calls 3 function(s):
-> Method extract_calls_recursive at src/parsing/cpp/parser.rs:1002 [symbol_id:1477] (called at src/parsing/cpp/parser.rs:1045)
-> Method function_name_at_def at src/parsing/cpp/parser.rs:377 [symbol_id:1451] (called at src/parsing/cpp/parser.rs:1008)
-> Method new at src/types/mod.rs:112 [symbol_id:7388] (called at src/parsing/cpp/parser.rs:1028)
2 function(s) call extract_calls_recursive:
<- Met
Related servers

n8n
Updated todayby n8n-io
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

mcp-server-fetch
OfficialUpdated todayA Model Context Protocol server providing tools to fetch and convert web content for usage by LLMs

@modelcontextprotocol/server-filesystem
OfficialUpdated todayMCP server for filesystem access