codedb mcp runs as a stdio JSON-RPC server speaking the
Model Context Protocol. It exposes
21 tools for code intelligence — search, outline, callers, deps, edit,
context, etc. — backed by the indexes in ~/.codedb/projects/<hash>/.
This guide covers per-client setup, how codedb decides which project to scan, and the most common failure modes.
codedb is a context tool, not an editor. Its job is to help an agent find and understand code — fast structural search, symbol/caller lookup, dependency graph, outlines, and task-shaped context. Edits belong to your client's native file tools; codedb has no edit capability (the old
codedb_editfallback was removed).
curl -fsSL https://codedb.codegraff.com/install.sh | bashThe installer downloads the binary for your platform, drops it in ~/bin
(or $CODEDB_DIR when set), and auto-registers
codedb as an MCP server in every client it can find — Claude Code, Codex,
Gemini CLI, Cursor, Windsurf, and Devin. It prints the exact codedb mcp command it
registered.
Run in PowerShell:
irm https://raw.githubusercontent.com/justrach/codedb/v0.2.5833/install/install.ps1 | iexThe shell installer is for macOS/Linux; running it in WSL installs the Linux binary inside WSL, not the native Windows binary.
If you prefer to wire it up by hand, the client-specific snippets below all work directly.
All clients launch codedb mcp as a stdio child process. Find a global install with command -v codedb on macOS/Linux. On Windows, the default path is C:\Users\<you>\AppData\Local\Programs\codedb\codedb.exe.
The examples below use /absolute/path/to/codedb; replace it with the path for your installation. In JSON on Windows, escape backslashes, for example C:\\Users\\you\\AppData\\Local\\Programs\\codedb\\codedb.exe.
claude mcp add codedb -s user -- /absolute/path/to/codedb mcp
# Windows PowerShell
claude mcp add codedb -s user -- "$env:LOCALAPPDATA\Programs\codedb\codedb.exe" mcpOr edit ~/.claude.json directly:
{
"mcpServers": {
"codedb": {
"command": "/absolute/path/to/codedb",
"args": ["mcp"]
}
}
}Verify with claude mcp list; the codedb entry should report Connected.
Edit ~/Library/Application Support/Claude/claude_desktop_config.json
(macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"codedb": {
"command": "/absolute/path/to/codedb",
"args": ["mcp"]
}
}
}Restart Claude Desktop. The tools should appear in the slash-command menu.
Edit ~/.cursor/mcp.json (per-user) or <project>/.cursor/mcp.json
(per-project):
{
"mcpServers": {
"codedb": {
"command": "/absolute/path/to/codedb",
"args": ["mcp"]
}
}
}Cursor advertises the open workspace via the roots/list MCP handshake,
so codedb scans the right project automatically (see Root Resolution
below).
Same mcpServers block as Cursor, scoped to whichever extension you use.
codex mcp add codedb -- /absolute/path/to/codedb mcp
# Windows PowerShell
codex mcp add codedb -- "$env:LOCALAPPDATA\Programs\codedb\codedb.exe" mcpBoth read MCP configuration from ~/.gemini/mcp.json (Gemini) and
~/.config/opencode/mcp.json (opencode):
{
"mcpServers": {
"codedb": {
"command": "/absolute/path/to/codedb",
"args": ["mcp"]
}
}
}Set CODEDB_TOOLS_PROFILE=core in the MCP server environment to advertise
only the 10 everyday navigation tools (tree, outline, symbol, search,
read, callers, deps, find, context, status). A smaller
tools/list costs fewer prompt tokens per session and keeps agents from
reaching for rarely right tools. full (the default) advertises all 20.
The profile only changes what's advertised — every tool remains callable.
The installer also registers DeepWiki — a free,
no-auth remote MCP server (https://mcp.deepwiki.com/mcp, streamable
HTTP) — alongside codedb in each detected client. It answers questions
about public GitHub repos (read_wiki_structure, read_wiki_contents,
ask_question), which complements codedb's local index of your code.
- Registration is additive: an existing
deepwikientry in your config is never overwritten, and re-running the installer is idempotent. - The URL field name is per-client (
urlfor Cursor,serverUrlfor Windsurf/Devin,httpUrlfor Gemini,type: "http"+urlfor Claude Code,urlin Codex's TOML) — the installer writes the right one. - Opt out with
CODEDB_INSTALL_DEEPWIKI=0 sh install.sh. - Privacy note: DeepWiki is a third-party hosted service — any text you
send its tools (e.g.
ask_question) leaves your machine. codedb itself stays fully local.
codedb mcp figures out the project root in this order (first match wins):
-
MCP
roots/listhandshake (preferred). When a client supports it (Cursor, Windsurf, recent VS Code MCP extensions), codedb requestsroots/listimmediately afterinitializeand uses the first workspace root the client returns. This is the most reliable path — codedb scans exactly the project the user has open in their editor. -
Per-call
projectargument. Every tool accepts an optionalproject: "<abs path>"field that switches the active project for that single call. Useful for cross-project queries:{ "name": "codedb_search", "arguments": { "query": "scheduleUpdateOnFiber", "project": "/Users/me/code/react" } } -
Process
cwd. If the client doesn't speakroots/listand no per-callprojectis set, codedb falls back to the directory it was launched from. Some editors launch MCP servers from/Applicationsor~, which is almost certainly the wrong directory — set theprojectarg explicitly for those.
System directories (/, /Applications, /usr, /opt, ~,
/tmp, etc.) are blocked from being indexed as project roots — see
docs/rfc-346-mcp-root-resolution.md
for the full safety logic.
Drop a .codedbrc at the root of any project to override defaults for
that project. INI-style key = value pairs, one per line, # for
comments. Unknown keys are ignored.
# .codedbrc
max_cached = 16384 # in-memory ContentCache size (files); default 16384
max_versions = 100 # versions kept per file in the change log; default 100
rerank_trace = false # write per-search rerank-trace.jsonl (debug only)Pass an alternative path with --config-file <path> to the CLI for
testing.
codedb --version # codedb 0.2.5815 (or later)
codedb status # one-line: indexed file count + scan phaseIn a client, the simplest tool to smoke-test is codedb_status — it
takes no arguments and returns files: N, seq: N, scan: ready in <50 ms.
The MCP server hasn't received a project root. Either:
- the client doesn't speak
roots/list, or - the client launched codedb from a system directory that's blocked from
indexing (
/Applications,/usr,~, etc.).
Fix: pass project: "/abs/path/to/your/project" on the first tool
call, or restart the client from inside the project directory.
Fixed in v0.2.5815 — codedb_find now accepts query, name, path,
pattern, and q as aliases. If you're still seeing this error,
codedb --version will show < 0.2.5815; rerun the installer.
codedb_context was added in v0.2.5815. Older binaries expose only
20 tools. On macOS/Linux, upgrade with codedb update (or the installer one-liner above). On Windows, rerun the verified PowerShell installer and verify with codedb --version.
The watcher debounces filesystem events for ~500 ms. If your editor saves
files in quick succession (e.g. a formatter that rewrites everything),
back-to-back saves can extend the scan phase. Check codedb status —
scan: ready means it's caught up.
The first time you run a fresh codedb binary on macOS, Gatekeeper may quarantine it. Apple Silicon release binaries from v0.2.5811+ are signed with a Developer ID and notarized via Apple — verify with:
spctl -a -vv -t install /usr/local/bin/codedb
# expected: accepted, source=Notarized Developer IDFrom 0.2.5833 the Intel codedb-darwin-x86_64 slice is codesigned and
notarized again. Earlier releases shipped it unsigned: the pinned Zig
toolchain reserved no Mach-O headerpad, so codesign's appended
LC_CODE_SIGNATURE overwrote __text and signed binaries crashed on launch
(#504, #618); the build now reserves headerpad explicitly.
If you built from source on Apple Silicon, codesign the binary locally:
codesign --force --sign - /usr/local/bin/codedbAvoid codesigning locally built x86_64-macos binaries on macOS 26 until the upstream Zig/Mach-O issue is resolved.
macOS caches codesignatures by path. After replacing the binary, re-codesign Apple Silicon builds or the MCP server may fail to launch:
codesign --force --sign - /usr/local/bin/codedbThe installer does this for you.
Every MCP tool result carries the data block the model consumes
(audience: assistant). Interactive clients also get two audience: user
blocks: a colored one-line summary and a follow-up hint. Well-behaved clients
render those in a preview pane and keep them out of the model context — but
many forward everything to the model, where they cost output tokens for output
the model can't render (they add ~34% to a small result like codedb_symbol).
codedb decides per session, from the clientInfo.name sent at initialize:
- Agent harnesses default lean (data block only) —
claude-code,codex, and any client not on the rich allowlist. - Human-facing GUI clients get the rich blocks — currently
claude-ai(Claude Desktop).
Override the default:
| Env var | Effect |
|---|---|
CODEDB_MCP_LEAN=1 |
Force lean for every client (data block only). |
CODEDB_MCP_RICH=1 |
Force rich for every client. |
CODEDB_MCP_RICH_CLIENTS=name1,name2 |
Add clients (by clientInfo.name, case-insensitive) to the rich allowlist. |
CODEDB_MCP_LEAN takes precedence over CODEDB_MCP_RICH.
- Architecture — engine internals, index layout
- CLI reference — every command, every flag
- Skill base & context files —
agents.md,CLAUDE.md,GEMINI.md, and the per-project skill hierarchy - RFC #346 — MCP root resolution — full design + safety logic for project-root detection
- Telemetry — what codedb sends, how to disable