Skip to content

Releases: DeusData/codebase-memory-mcp

v0.4.2

Choose a tag to compare

@github-actions github-actions released this 06 Mar 20:37

What's Changed

New Contributors

Full Changelog: v0.4.1...v0.4.2

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 06 Mar 19:10

Full Changelog: v0.4.0...v0.4.1

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 06 Mar 18:23

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

Choose a tag to compare

@github-actions github-actions released this 03 Mar 17:11

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-community commSumTot accumulators 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

Choose a tag to compare

@github-actions github-actions released this 03 Mar 15:53

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 DetectionisClassDeclaration() now correctly identifies class declarations in TypeScript, Java, C#, Scala, Kotlin, and PHP, improving IMPLEMENTS edge accuracy.

Route Test FilteringisTestNode() + 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_resolve param: Opt-in automatic disambiguation — picks the best candidate when ≤2 matches exist
  • include_neighbors param: Opt-in caller/callee name inclusion in snippet responses
  • Better disambiguation UX: Replaced error key with status/message for 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 NodeNeighborNames store 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

Choose a tag to compare

@github-actions github-actions released this 02 Mar 15:14

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_test property + file path pattern matching
  • Boundary filtering: Limited to Function/Method/Class nodes (previously included all node types)
  • Removed unused tools: read_file and list_directory removed — 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

Choose a tag to compare

@github-actions github-actions released this 02 Mar 00:14

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 changes
  • staged — staged changes only
  • all (default) — both staged and unstaged
  • branch — 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

Choose a tag to compare

@github-actions github-actions released this 01 Mar 20:56

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

Choose a tag to compare

@github-actions github-actions released this 28 Feb 02:20

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-sharp grammar into the parser, fixing C# support

Security

  • Tightened cache directory permissions from 0755 to 0750 (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

Choose a tag to compare

@github-actions github-actions released this 28 Feb 01:16

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

  • --raw flag for full JSON output
  • Human-friendly summaries for all 12 tools
  • index_status command for checking indexing progress

Search Improvements

  • sort_by parameter for ordering results
  • exclude_labels array 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.0

Full Changelog: v0.1.5...v0.2.0