Releases: johnhuang316/code-index-mcp
2.5.0 - SQLite Deep Index & Middleware Coverage
Highlights
- Deep index now persists to SQLite via the new
SQLiteIndexStore, replacing the legacy JSON cache while keeping build performance stable. - JavaScript strategy records middleware callbacks in the call graph, giving accurate
called_bylinks for Express-style handlers. - TypeScript strategy captures limiter callbacks, closing gaps for
.tsmiddleware exports and aligning coverage with JavaScript. - Added dedicated regression tests for the SQLite store/manager plus JavaScript and TypeScript call graph fixtures.
Full Changelog: v2.4.1...v2.5.0
2.4.1 - Search Filtering Alignment
- Code search now shares the central FileFilter blacklist, keeping results consistent with indexing (no more
node_modulesnoise). - CLI search strategies emit the appropriate exclusion flags automatically (ripgrep, ugrep, ag, grep).
- Basic fallback search prunes excluded directories during traversal, avoiding unnecessary IO.
- Added regression coverage for the new filtering behaviour (
tests/search/test_search_filters.py).
Full Changelog: v2.4.0...v2.4.1
Shallow Index Default & Streamlined Server
Highlights
- Shallow index by default: Projects initialize with the new JSON-based shallow index for rapid file discovery.
- Deep index on demand: Added the
build_deep_indextool so symbol extraction happens only when you request it. - Watcher-friendly rebuilds: File watcher callbacks now refresh the shallow index, keeping file lists current without long rebuilds.
- Server cleanup: Removed unused
structure://projectresource, legacy prompts, and auxiliary documents for a leaner runtime.
Developer Experience Improvements
find_filesnow enforces true glob semantics (single*for one segment,**for recursive matches).get_file_summaryresponds with aneeds_deep_indexhint when deep symbols are unavailable.- Index management services split shallow vs deep rebuild paths to clarify tool behavior.
- Repository docs (README, localized copies) highlight when to run
build_deep_index.
Cleanups
- Removed deprecated architecture and benchmarking documents.
- Trimmed benchmark scripts and outdated tests tied to the old SCIP experiment.
Upgrade Notes
- After updating, call
set_project_pathas usual - the server will build the shallow index automatically. - Run
build_deep_indexwhenever you need symbol-level summaries (get_file_summary) or deep search capabilities. - Optionally run
refresh_indexto refresh the shallow index if the watcher is disabled.
Compatibility
- Tool names and signatures are unchanged.
- Deep-index workflows remain available; they now require an explicit
build_deep_indexcall. - Python 3.10+ requirement unchanged; no new third-party dependencies.
Enjoy faster cold starts and a simpler interface tailored for LLM-driven workflows.
v2.3.2 - ugrep Search Improvements
🔧 Bug Fixes
ugrep Search Tool Improvements
- Fixed recursive search: Added flag to enable searching in subdirectories
- Fixed path handling: Corrected relative path processing for consistent results across all search tools
- Improved file patterns: Changed from to for better glob filtering
Impact
- ugrep now behaves consistently with other search tools (ripgrep, ag, grep)
- Eliminates incorrect path conversion errors when processing search results
- Ensures complete subdirectory coverage during code searches
Technical Details
This release resolves critical integration issues where:
- ugrep wasn't searching subdirectories due to missing recursion flag
- Relative paths from ugrep output were incorrectly processed by
os.path.relpath()
Both fixes are essential for proper ugrep functionality and maintain backward compatibility with existing search implementations.
Full Changelog: v2.3.1...v2.3.2
v2.3.1
Full Changelog: v2.3.0...v2.3.1
Release v2.3.0
Major Performance Optimizations
This release includes performance optimizations to the code indexing engine.
Performance Improvements
Python Strategy Optimization
- Reduced from 3 separate AST traversals to 1 single-pass visitor
Java Strategy Optimization
- Merged double tree-sitter traversals into single unified pass
TypeScript Strategy Optimization
- Consolidated double traversals into single optimized pass
System-Level Parallelization
- Implemented ThreadPoolExecutor for concurrent file processing
- Automatic worker count optimization based on CPU cores
- Thread-safe strategy sharing for memory efficiency
Algorithm Optimization
- Replaced O(n²) symbol lookups with O(1) hash table operations
- Eliminated quadratic complexity in call relationship analysis
Bug Fixes
Java Method Call Analysis
- Improved accuracy of method call detection and relationships
- Fixed false positives in method name matching
- Enhanced support for obj.method() call patterns
Cross-Platform Search Support
- Added support for Linux/Unix grep context line formats
- Fixed grep parsing issues on different operating systems
- Improved handling of absolute and relative paths
Search Configuration
- Changed max_line_length default from 200 to None for backward compatibility
- Preserved existing behavior for users who don't set explicit limits
- Added comprehensive parameter validation
Improvements
- Reduced computational complexity in parsing strategies
- Parallel processing for faster indexing of large codebases
- Optimized symbol lookup algorithms
What's Changed
- Single-pass AST/tree-sitter parsing across all optimized strategies
- Parallel file processing with configurable worker pools
- Hash table-based symbol lookup indexes
- Maintained full backward compatibility
Technical Details
- All strategies are thread-safe and support parallel execution
- Strategy instances remain shared and stateless for memory efficiency
- File watcher integration uses optimized rebuilds automatically
- No configuration changes required - improvements are transparent
Deployment
Automatic Benefits:
- Performance improvements work immediately after update
- Existing installations benefit without configuration changes
- File monitoring automatically uses optimized indexing
Recommended:
- Restart MCP server after upgrade
- Optionally run
refresh_index()for immediate optimization
Compatibility
- All existing MCP tool interfaces unchanged
- Existing project configurations work without modification
- No new external dependencies required
- Python 3.10+ requirement maintained
This release transforms code-index-mcp into a high-performance solution suitable for enterprise-scale codebases.
Release v2.2.1
Bug Fix Release
Fixed
- File watcher auto-refresh functionality restored
- Added missing import that was causing file watcher startup failures
- Automatic index updates now work when files are created, modified, or deleted
Impact
- File watcher status changes from "error" to "active"
- No more manual refresh required after file changes
- Real-time code intelligence restored
This patch fixes the regression introduced in v2.2.0 where file watching was completely non-functional.
Upgrade recommended for all v2.2.0 users.
v2.2.0 - Return to Simplicity
What's New
Architectural Refinement: Back to Custom Indexing
- Direct tree-sitter imports: Eliminated fallback mechanisms for cleaner, more predictable parsing
- Simplified architecture: Moved away from complex SCIP protocol back to efficient custom JSON indexing
- Fail-fast approach: Clear error messages when dependencies are missing, no silent degradation
- Enhanced performance: Streamlined indexing process with reduced overhead and faster access
Improved Language Strategy Implementation
- 7 Specialized Languages: Python, JavaScript, TypeScript, Java, Go, Objective-C, Zig now use direct tree-sitter AST parsing
- 50+ Fallback Languages: All other file types continue to use reliable fallback indexing
- No Regex Fallbacks: Specialized strategies use pure AST parsing for maximum accuracy
- Cleaner Error Handling: Dependencies issues surface immediately with actionable error messages
Enhanced Parsing Accuracy
- Better Symbol Extraction: Improved class, method, and function detection across all supported languages
- Accurate Call Relationships: Enhanced tracking of function calls and dependencies
- Robust Import Analysis: Better detection of module imports and exports
- Comprehensive Testing: Validated parsing accuracy across 67 sample files in multiple languages
Technical Improvements
Dual-Strategy Architecture
- Specialized Parsing: Tree-sitter AST analysis for core languages with full symbol extraction
- Universal Coverage: Fallback strategy ensures all file types are indexed with basic metadata
- Clean Separation: Clear distinction between specialized and fallback parsing approaches
Development Experience
- Clearer Documentation: Updated all README files to accurately reflect the dual-strategy approach
- Better Testing: Comprehensive validation across multiple programming languages
- Simplified Maintenance: Reduced complexity makes the codebase easier to understand and extend
Migration Notes
This release represents a return to the custom indexing approach that prioritizes:
- Efficiency over protocol compliance
- Simplicity over complex standards
- Performance over theoretical extensibility
- Clarity over abstraction
The previous SCIP-based approach (v2.0.x - v2.1.x) encountered efficiency issues and limited ecosystem support. This release refocuses on the project's core mission: providing fast, accurate code indexing for LLM applications.
Breaking Changes
None - fully backward compatible with existing MCP integrations
Full Changelog: v2.1.2...v2.2.0
v2.1.2
Full Changelog: v2.1.1...v2.1.2
v2.1.1
What's Fixed
This patch release resolves stability and performance issues in Java code analysis.
Key Improvements
- Enhanced Stability: Fixed crashes and hangs during Java file processing
- Better Performance: Significantly faster Java symbol analysis
- Reduced Memory Usage: Lower memory footprint during indexing
- Improved Reliability: More consistent analysis results
Technical Changes
- Simplified Java SCIP strategy implementation
- Removed complex relationship tracking that was causing issues
- Streamlined symbol registration and extraction
- Fixed compatibility issues with large Java codebases
Full Changelog: v2.1.0...v2.1.1