Skip to content

Releases: MikeRecognex/mcp-codebase-index

v0.7.0 — Enriched find_symbol

25 Feb 23:37

Choose a tag to compare

What's New

find_symbol now returns signature and source preview — eliminates the need for a follow-up get_function_source call.

For functions/methods:

  • end_line, signature (e.g. def bulk_create(objs, batch_size, ...)), and source_preview (~20 lines)

For classes:

  • end_line, methods list, bases list, and source_preview (~20 lines)

Benchmark Results

  • Grounding composite: 14 → 22 (+57%)
  • Quality score: 6.8 → 9.0
  • Now beats without_index mode on both grounding and quality for symbol lookup tasks

v0.5.0 — Persistent Disk Cache

24 Feb 08:39

Choose a tag to compare

What's New

Persistent disk cache — The index is now saved to .codebase-index-cache.pkl after every build. On subsequent server starts:

  • Exact cache hit: If the cached git ref matches HEAD, the index loads instantly from disk — no parsing, no file walking.
  • Small changeset (≤20 files): The cached index is loaded and incrementally updated instead of rebuilt.
  • Cache miss: Full rebuild runs and saves a new cache.

This eliminates cold-start delays when restarting Claude Code sessions, restarting the MCP server, or resuming after context compaction.

Other changes

  • Updated README with cache configuration docs and hook-based tool reinforcement examples
  • Added .codebase-index-cache.pkl to .gitignore

Install / Upgrade

pip install --upgrade mcp-codebase-index

Full changelog: v0.4.6...v0.5.0

v0.4.5 — Realistic per-tool cost estimates in usage stats

20 Feb 22:07

Choose a tag to compare

Changes since v0.4.2

v0.4.5

  • Fix get_usage_stats: use per-tool cost multipliers instead of assuming every query reads the entire codebase
    • e.g. find_symbol estimates 5% of codebase, get_change_impact estimates 30%
    • Previously overstated savings by 10-50x

v0.4.4

  • Strengthen CLAUDE.md instructions in README

v0.4.3

  • Document get_usage_stats tool and clarify incremental reindexing in README

v0.4.2 — Session efficiency metrics

18 Feb 20:22

Choose a tag to compare

What's New

get_usage_stats tool (tool #18) — The MCP server now tracks session efficiency metrics. Call get_usage_stats to see how much the indexer is saving you:

Session duration: 12m 34s
Total queries: 23

Queries by tool:
  find_symbol: 8
  get_function_source: 6
  get_dependencies: 4
  get_change_impact: 3
  get_project_summary: 2

Total chars returned: 14,230
Total source in index: 890,412 chars
Estimated without indexer: 20,479,476 chars (5,119,869 tokens) over 23 queries
Estimated with indexer: 14,230 chars (3,557 tokens)
Estimated token savings: 99.9%

Tracks tool call counts, characters returned, and estimates token savings vs reading full source files. Purely local — no telemetry.

Install / Upgrade

pip install --upgrade "mcp-codebase-index[mcp]"

v0.4.1 — README and lint fixes

18 Feb 12:21

Choose a tag to compare

Patch release for v0.4.0:

  • Updated README with Go and Rust language support documentation
  • Fixed ruff lint warning (unused variable)
  • No functional changes from v0.4.0

v0.4.0 — Rust and Go Language Support

18 Feb 11:48

Choose a tag to compare

What's New

Rust and Go structural indexing — The codebase indexer now parses Rust and Go files using regex-based annotators with comment/string-aware brace counting. No new dependencies.

Go Support

  • Function and method declarations (including generic functions)
  • Struct types with embedded type detection
  • Interface types with method signature extraction
  • Type aliases
  • Single and grouped imports (aliased, dot, blank)
  • Doc comments (// lines before declarations)
  • Backtick raw string handling for accurate brace counting

Rust Support

  • Function declarations (pub, pub(crate), async, const, unsafe, extern "C")
  • Struct (regular, tuple, unit), enum, and trait declarations
  • impl blocks — methods extracted with parent_class set; trait impls tagged with impl:TraitName
  • use statements (simple, grouped {A, B}, glob *, aliased, self)
  • #[derive(...)], #[cfg(...)] attributes and /// doc comments
  • macro_rules! definitions
  • Raw string (r#"..."#) and nested block comment handling

Integration

  • .go and .rs files included in default scan patterns
  • target/ (Rust) and vendor/ (Go) added to default exclusions
  • Import resolution for crate::/super::/self:: (Rust) and path-suffix matching (Go)
  • 85 new tests, 293 total — zero regressions

Install / Upgrade

pip install --upgrade "mcp-codebase-index[mcp]"

v0.3.0 — Git-aware incremental re-indexing

18 Feb 10:25

Choose a tag to compare

What's New

Automatic incremental re-indexing — In git repositories, the index now stays up to date automatically. Before every query, the server checks git diff and git status (~1-2ms). If files changed, only those files are re-parsed and the dependency graph is rebuilt. No need to manually call reindex after edits, branch switches, or pulls.

Details

  • New git_tracker module for git change detection (handles renames, overlaps, graceful fallback when git unavailable)
  • ProjectIndexer.remove_file() for removing files from the index
  • ProjectIndexer.rebuild_graphs() for batch graph rebuilds
  • reindex_file(skip_graph_rebuild=True) for efficient batching
  • Large changeset threshold: if >50% of files changed AND >20 files, does a full rebuild instead (handles branch switches)
  • 24 new tests (unit tests with mocked subprocess + integration tests with real temp git repos)

Install / Upgrade

pip install --upgrade "mcp-codebase-index[mcp]"

v0.2.1

17 Feb 01:25

Choose a tag to compare

Republish with correct AGPL-3.0 + Commercial dual license metadata on PyPI.

No code changes from v0.2.0 — this is a metadata-only release to ensure PyPI reflects the license switch from MIT to AGPL-3.0.

pip install --upgrade mcp-codebase-index[mcp]

v0.2.0 — Output Size Controls

17 Feb 00:14

Choose a tag to compare

What's New

Added optional max_results and max_lines parameters to all MCP tools that can produce large responses. This prevents unbounded results from blowing up token budgets in messaging-based AI agents (e.g. OpenClaw sends full conversation history every turn).

All parameters default to preserving current behavior — existing clients see no change.

Convention

  • 0 = unlimited (no truncation) — the default for all parameters except search_codebase which defaults to 100 (matching its previous hardcoded limit)
  • Any positive integer caps the result
  • Source truncation appends ... (truncated to N lines) when content is actually cut

Tools with max_results (list truncation)

Tool Default
list_files 0 (unlimited)
get_functions 0 (unlimited)
get_classes 0 (unlimited)
get_imports 0 (unlimited)
get_dependencies 0 (unlimited)
get_dependents 0 (unlimited)
get_file_dependencies 0 (unlimited)
get_file_dependents 0 (unlimited)
search_codebase 100

Tools with max_lines (source truncation)

Tool Default
get_function_source 0 (unlimited)
get_class_source 0 (unlimited)

Tools with max_direct / max_transitive (impact analysis)

Tool Default
get_change_impact both 0 (unlimited)

Example Usage

{"name": "get_functions", "arguments": {"max_results": 20}}
{"name": "get_class_source", "arguments": {"name": "Engine", "max_lines": 50}}
{"name": "get_change_impact", "arguments": {"name": "helper", "max_direct": 5, "max_transitive": 10}}

Install

pip install mcp-codebase-index==0.2.0

Full Changelog: v0.1.3...v0.2.0

v0.1.3

16 Feb 23:27

Choose a tag to compare

Expanded OpenClaw setup instructions: install steps, Docker/VPS deployment, performance note on persistent connections