Releases: MikeRecognex/mcp-codebase-index
v0.7.0 — Enriched find_symbol
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, ...)), andsource_preview(~20 lines)
For classes:
end_line,methodslist,baseslist, andsource_preview(~20 lines)
Benchmark Results
- Grounding composite: 14 → 22 (+57%)
- Quality score: 6.8 → 9.0
- Now beats
without_indexmode on both grounding and quality for symbol lookup tasks
v0.5.0 — Persistent Disk Cache
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.pklto.gitignore
Install / Upgrade
pip install --upgrade mcp-codebase-indexFull changelog: v0.4.6...v0.5.0
v0.4.5 — Realistic per-tool cost estimates in usage stats
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_symbolestimates 5% of codebase,get_change_impactestimates 30% - Previously overstated savings by 10-50x
- e.g.
v0.4.4
- Strengthen CLAUDE.md instructions in README
v0.4.3
- Document
get_usage_statstool and clarify incremental reindexing in README
v0.4.2 — Session efficiency metrics
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
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
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
implblocks — methods extracted withparent_classset; trait impls tagged withimpl:TraitNameusestatements (simple, grouped{A, B}, glob*, aliased,self)#[derive(...)],#[cfg(...)]attributes and///doc commentsmacro_rules!definitions- Raw string (
r#"..."#) and nested block comment handling
Integration
.goand.rsfiles included in default scan patternstarget/(Rust) andvendor/(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
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_trackermodule for git change detection (handles renames, overlaps, graceful fallback when git unavailable) ProjectIndexer.remove_file()for removing files from the indexProjectIndexer.rebuild_graphs()for batch graph rebuildsreindex_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
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
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 exceptsearch_codebasewhich defaults to100(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.0Full Changelog: v0.1.3...v0.2.0
v0.1.3
Expanded OpenClaw setup instructions: install steps, Docker/VPS deployment, performance note on persistent connections