Source repository DeusData/codebase-memory-mcp ↗ 32,233 stars · C

What problem it solves

Claude Code and other AI agents struggle with large or unfamiliar codebases: they either need the full source tree in context (burning tokens and slowing response), or they lack visibility into code structure, imports, and call chains. This forces agents to ask repetitive questions or miss dependencies that matter.

Codebase Memory MCP trades one-time indexing cost for persistent, query-fast access to code relationships. Once indexed, Claude can ask "what calls this function?" or "show me the schema definitions" and get precise answers in milliseconds, without re-scanning the entire repo each time.

How it works

The server uses tree-sitter to parse code in 158 languages, extracts symbols (functions, classes, imports, types), and stores them in a knowledge graph—internally backed by SQLite and Cypher queries. On first run, it indexes your repo; subsequent queries hit the persistent graph and return results in sub-millisecond time.

Key characteristics:

Fitting it into Claude Code workflows

In Claude Code or Cursor, Codebase Memory MCP acts as a search and navigation layer. Instead of asking "what's in the utils folder?" or copy-pasting snippets, you can ask Claude to query the index:

The MCP protocol handles the integration—Claude Code sees Codebase Memory as a tool it can call, just like any other MCP server. See our MCP category for other compatible servers that complement code intelligence.

Real limitations and trade-offs

Indexing overhead: The first parse and graph build takes time proportional to repo size. For massive monorepos, this can take longer than milliseconds. The README claims "average repo in milliseconds," but that likely means small-to-medium projects (a few thousand files).

Language coverage isn't complete: Tree-sitter handles most popular languages well, but some edge cases (especially older or DSL-heavy codebases) may not parse perfectly or may miss semantic details that a full language server would catch.

Semantic gaps: The index extracts symbols and structure, but it's not a full type checker or semantic analyzer. It won't understand all cross-file type relationships or infer types the way a dedicated language server would.

Storage overhead: The SQLite graph takes disk space. For very large repos, this can add up, though it's typically far smaller than the raw source.

When NOT to use it: If your codebase is tiny (a handful of files), the indexing overhead isn't worth it—just embed the source. If you need semantic type-checking or real-time syntax validation, pair this with a language server, don't replace it.

Getting started

Codebase Memory MCP is distributed as a precompiled binary. Installation and first-time indexing typically look like this:

Typical indexing and query flow
# Download or build the binary ./codebase-memory-mcp --repo /path/to/your/codebase # Binary exposes an MCP endpoint that Claude Code / Cursor can connect to # Configure your MCP server in Claude Code settings to point to the binary # In Claude Code, ask: # "What are all the entry points in this codebase?" # "Show me everywhere that imports the auth module." # MCP server returns results from the persistent graph in milliseconds.

Exact setup steps vary by your editor (Cursor, Claude Code, Windsurf, or aider all support MCP). Check the repo's README for editor-specific configuration; most just need the binary path and repo directory.

Once running, the index updates on demand—you can re-index when major changes land, or set up a hook to keep it fresh automatically.