Releases: DeusData/codebase-memory-mcp
Release list
v0.4.2
What's Changed
- Fix binary move command in setup script by @chitralverma in #16
New Contributors
- @chitralverma made their first contribution in #16
Full Changelog: v0.4.1...v0.4.2
v0.4.1
v0.4.0
What's New in v0.4.0
59 Language Support (Tree-Sitter Engine)
- Complete rewrite of extraction engine from Go tree-sitter bindings to vendored C grammars
- 39 new languages: Clojure, F#, Julia, Vim Script, Nix, Common Lisp, Elm, Fortran, CUDA, COBOL, Verilog, Emacs Lisp, JSON, XML, Markdown, Makefile, CMake, Protobuf, GraphQL, Vue, Svelte, Meson, GLSL, INI, and more
- All grammars vendored as C source — zero external dependencies
Pipeline Quality Improvements
- 17 language-specific import parsers (ES modules, Java, Kotlin, Scala, C#, C, C++, PHP, Ruby, Rust, Lua, Elixir, Bash, Zig, Erlang, Haskell, OCaml)
- Language-aware class declaration detection for implements resolution
- Haskell/OCaml/Elixir callee extraction (apply/infix expressions)
- JSX component references as CALLS edges for TSX
- Route test filtering to exclude test fixtures from HTTP links
Extraction Fixes
- Fixed C/C++/CUDA/GLSL function name resolution (off-by-one in declarator traversal)
- Fixed Groovy method names (was returning return type instead of method name)
- Fixed CommonLisp, Makefile, VimScript, Julia function extraction
- Fixed Elm value_declaration name resolution
Infrastructure
- Graceful shutdown with context cancellation throughout pipeline
- Self-update checker and install/uninstall CLI commands
- Cross-platform builds (Linux, macOS, Windows)
- Louvain community detection O(N^2) bottleneck fix
v0.3.4
Performance Fix
Louvain community detection: 297x faster — fixes O(N²) bottleneck that caused indexing timeouts on large codebases.
What changed
- Replaced naive
modularityGain(scanned all nodes per call) with per-communitycommSumTotaccumulators maintained incrementally - Each Louvain iteration is now O(m) instead of O(N²)
Benchmarks (Django, ~30K nodes, ~48K CALLS edges)
| Metric | v0.3.3 | v0.3.4 |
|---|---|---|
| Communities pass | 4m 40s | 0.94s |
| Total indexing | 5m 38s | 24s |
Graph output (nodes, edges, community assignments) is equivalent — only speed changed.
v0.3.3
What's New in v0.3.3
Pipeline Quality Improvements
17 Import Parsers — Language-aware import extraction for ES modules, Java, Kotlin, Scala, C#, C, C++, PHP, Ruby, Rust, Lua, Elixir, Bash, Zig, Erlang, Haskell, and OCaml. IMPORTS edges now reflect actual source-level imports instead of heuristic-based guesses.
Language-aware Class Detection — isClassDeclaration() now correctly identifies class declarations in TypeScript, Java, C#, Scala, Kotlin, and PHP, improving IMPLEMENTS edge accuracy.
Route Test Filtering — isTestNode() + containsTestSegment() now exclude test fixtures from HTTP route extraction. Go routes dropped from 211→56, Rust 146→74, JS 125→53.
Callee Extraction for Functional Languages — Haskell, OCaml, and Elixir now extract function calls from apply, infix, and application_expression nodes. OCaml CALLS went from 221→10,629 (+4710%), Haskell 175→4,094 (+2239%).
JSX Component References — TSX files now emit CALLS edges for uppercase JSX tags (component usage), boosting TSX CALLS from 3,400→36,172 (+964%).
Type Inference Split — Separated into typed (static type annotations) and dynamic (runtime inference) paths for cleaner, more accurate type resolution.
Snippet Tool Optimization
auto_resolveparam: Opt-in automatic disambiguation — picks the best candidate when ≤2 matches existinclude_neighborsparam: Opt-in caller/callee name inclusion in snippet responses- Better disambiguation UX: Replaced
errorkey withstatus/messagefor clearer AI agent integration - Fuzzy fallback fix: Extracts last dot-segment from qualified names for more reliable matching
Bug Fixes
- R function name resolution: Fixed resolution of all function types in R language support (#14)
- Windows CI: Fixed SQLite file locking during test cleanup on Windows
- Neighbor name lookups: New
NodeNeighborNamesstore method for efficient neighbor discovery
Benchmark Results (v3)
- D-tier languages reduced from 8 → 4 (C#, Ruby, Erlang, SQL remain)
- Average MCP quality score: 0.75 → 0.79
- Languages with MCP Q ≥ 0.7: 14 → 17 of 22
Stats
- 30 files changed, +6,656 / −193 lines
- 1,679 lines of new extraction test coverage
v0.3.2
What's New in v0.3.2
Architecture Overview (get_architecture)
New tool that provides instant codebase orientation in a single call. Returns 12 selectable aspects:
- languages: Language breakdown by file count
- packages: Top packages with node counts
- entry_points: Main/init functions (test functions filtered out)
- routes: HTTP endpoints with handlers
- hotspots: Most-called functions by fan-in (test functions filtered out)
- boundaries: Cross-package call volumes
- services: Cross-service HTTP/async links
- layers: Package-level layer classification (entry/core/internal)
- clusters: Louvain community detection across CALLS, HTTP_CALLS, and ASYNC_CALLS edges
- file_tree: Condensed directory structure
- adr: Stored Architecture Decision Record
Use get_architecture(aspects=["all"]) for full orientation or select specific aspects to reduce output.
Architecture Decision Records (manage_adr)
Persist architectural decisions across AI sessions with structured, validated records:
- 6 fixed sections: PURPOSE, STACK, ARCHITECTURE, PATTERNS, TRADEOFFS, PHILOSOPHY
- Section filtering:
manage_adr(mode="get", include=["STACK", "PATTERNS"])returns only needed sections - Partial updates:
manage_adr(mode="update", sections={"PATTERNS": "..."})patches one section, preserves the rest - Validation: Store rejects content missing any section; update rejects non-canonical keys
- ADR discovery: When no ADR exists, hints about existing architecture docs found in the repo (ARCHITECTURE.md, docs/adr/*, etc.)
- Max 8000 chars (up from 4000)
Louvain Community Detection
Renamed from "Leiden" to accurately reflect the algorithm (simplified Louvain, not actual Leiden which requires CPM-based refinement). The clusters aspect in get_architecture uses Louvain to discover hidden functional modules across packages.
Case-Insensitive Search
search_graph and search_code are now case-insensitive by default. Set case_sensitive=true for exact matching.
Bug Fixes
- qnToPackage: Fixed extraction of sub-package from qualified names — packages now show meaningful names (e.g., "store", "pipeline") instead of collapsing to top-level directory ("internal")
- Test filtering: Entry points, hotspots, and routes now exclude test functions via
is_testproperty + file path pattern matching - Boundary filtering: Limited to Function/Method/Class nodes (previously included all node types)
- Removed unused tools:
read_fileandlist_directoryremoved — handled natively by coding agents
Files Changed
- New:
internal/store/architecture.go,internal/store/architecture_test.go,internal/store/louvain.go,internal/tools/architecture.go - Modified:
internal/tools/tools.go,internal/pipeline/communities.go,README.md, and 9 other files - Removed:
internal/store/leiden.go(renamed to louvain.go)
v0.3.1
What's New
detect_changes tool (NEW)
Map uncommitted git changes to affected graph symbols and their blast radius with risk classification. Supports multiple scopes:
unstaged— working directory changesstaged— staged changes onlyall(default) — both staged and unstagedbranch— diff against a base branch (e.g.main)
Returns changed files, changed symbols, impacted callers with risk scores, and an impact summary.
Risk scoring on trace_call_path
New risk_labels=true parameter adds depth-based impact classification to call chain traces:
- CRITICAL (hop 1) — direct callers/callees, will break
- HIGH (hop 2) — indirect, likely affected
- MEDIUM (hop 3) — may be affected
- LOW (hop 4+) — unlikely but possible
Includes impact_summary with counts per risk tier and has_cross_service flag.
Wider editor support
codebase-memory-mcp install now auto-registers MCP config for:
- Cursor (
~/.cursor/mcp.json) - Windsurf (
~/.codeium/windsurf/mcp_config.json)
In addition to existing Claude Code and Codex CLI support. uninstall cleans up all editors.
MCP SDK upgrade
Upgraded go-sdk from v1.3.1 to v1.4.0 — includes security fixes and MCP spec compliance improvements.
Improved tool descriptions
Inline regex examples on search parameters help AI agents craft precise single-query searches.
Tool Count
14 tools (was 13). Only 1 new tool added (detect_changes), 1 existing tool extended (trace_call_path + risk_labels).
Performance
Zero indexing overhead. Risk scoring is pure post-processing on existing BFS results. detect_changes runs git at tool-call time only — no new pipeline passes or storage.
Install / Upgrade
```bash
First install
go install github.com/DeusData/codebase-memory-mcp/cmd/codebase-memory-mcp@v0.3.1
codebase-memory-mcp install
Upgrade (existing users)
codebase-memory-mcp update
```
v0.3.0
What's New in v0.3.0
35-Language Support
Expanded from 13 to 35 programming and config languages with full tree-sitter AST parsing.
New languages: Ruby, C, Bash, Zig, Elixir, Haskell, OCaml, Objective-C, Swift, Dart, Perl, Groovy, Erlang, R, HTML, CSS, SCSS, YAML, TOML, HCL, SQL, Dockerfile
Comprehensive Benchmark
- 35 languages tested across 12 standardized questions each
- 91.8% overall weighted score (27 PASS-tier, 7 PARTIAL-tier, 1 FAIL-tier)
- Linux kernel stress test: 20K nodes, 67K edges, zero timeouts
- Full results in BENCHMARK.md
Embedded Skills
- 4 task-specific Claude Code skills embedded in binary
- Auto-installed via codebase-memory-mcp install
- Codex CLI instructions support
Self-Update
- codebase-memory-mcp update checks GitHub releases for newer versions
Bug Fixes
- Fix install: skills now written unconditionally (not gated on claude CLI presence)
- Fix Windows CI: .exe suffix, USERPROFILE env, skip Unix-specific tests
- Fix mcp remove hanging: add -s user scope flag
- Fix release binary naming (canonical name inside archives)
- Fix Codex CLI MCP registration via config.toml
- Add replace option to release workflow
- Graceful shutdown with context cancellation
- Erlang variable extraction for -define/-record
- SQL CREATE TABLE/VIEW/FUNCTION extraction
- C# parser zero-extraction fix
v0.2.1
What's New
Kotlin Language Support (Community PR #3 by @GauravRatnawat)
- Added Kotlin (
.kt,.kts) as the 13th supported language - Full tree-sitter parsing, AST node extraction, call resolution, usage tracking, and string constant propagation
C# Grammar Fix (Community PR #2 by @bhicks329)
- Wired
tree-sitter-c-sharpgrammar into the parser, fixing C# support
Security
- Tightened cache directory permissions from
0755to0750(gosec G301)
Update Notification
- Checks GitHub releases on startup and shows a one-time notice when a newer version is available
- Links directly to the releases page for download
Infrastructure
- Restructured CI/CD pipeline: lint gate → per-platform test + build → release
v0.2.0
What's New
Multi-Database Router
Per-project SQLite databases with automatic migration from the legacy single-DB layout. Each indexed project now gets its own .db file, improving isolation and enabling parallel operations.
Enrichment Pipeline
New second-pass analysis extracts deeper structural relationships from the graph:
- Community detection — identifies clusters of tightly-coupled functions
- Inheritance & implementation — tracks class hierarchies and interface implementations
- Decorators & annotations — links decorators/annotations to their targets
- Read/write tracking — identifies field access patterns (reads vs mutations)
- Test detection — marks test functions and links them to the code they test
- Type usage — tracks which functions consume or produce specific types
- Exception flows — maps throw/catch chains across call boundaries
- Configuration relationships — links config consumers to their providers
Update-Available Notification
Lightweight GitHub release check on startup. If a newer version exists, the first tool response includes an update_available field so the LLM can inform the user. Silent failure on network errors, 5-second timeout, show-once per session.
Enhanced Language Support
Improved AST extraction across all 12 supported languages (C++, C#, Go, Java, JavaScript, Lua, PHP, Python, Rust, Scala, TSX, TypeScript) with better pattern recognition, type handling, and node extraction.
Cypher Executor Improvements
Improved query execution with better aggregation, pattern matching, and CTE-based BFS traversal.
HTTP Link Detection
Cross-service HTTP call inference — detects when one service calls another via HTTP and creates HTTP_CALLS edges in the graph.
CLI Enhancements
--rawflag for full JSON output- Human-friendly summaries for all 12 tools
index_statuscommand for checking indexing progress
Search Improvements
sort_byparameter for ordering resultsexclude_labelsarray parameter (defaults to excluding Community nodes)- Improved glob matching with
**support
AST Debug Tool
New cmd/ast_debug binary for parser development — dumps the AST of any supported file for inspection.
Install / Update
go install github.com/DeusData/codebase-memory-mcp/cmd/codebase-memory-mcp@v0.2.0Full Changelog: v0.1.5...v0.2.0