Releases: johnhuang316/code-index-mcp
2.4.1 - Search Filtering Alignment
- Code search now shares the central FileFilter blacklist, keeping results consistent with indexing (no more
node_modules
noise). - 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_index
tool 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://project
resource, legacy prompts, and auxiliary documents for a leaner runtime.
Developer Experience Improvements
find_files
now enforces true glob semantics (single*
for one segment,**
for recursive matches).get_file_summary
responds with aneeds_deep_index
hint 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_path
as usual - the server will build the shallow index automatically. - Run
build_deep_index
whenever you need symbol-level summaries (get_file_summary
) or deep search capabilities. - Optionally run
refresh_index
to 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_index
call. - 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
v2.1.0
Major SCIP Architecture Enhancement
This release completes the migration to SCIP-based code indexing with significant improvements to the core infrastructure and API simplification.
Core SCIP Infrastructure
- Complete SCIP core components: Added symbol_manager, position_calculator, reference_resolver, moniker_manager
- Two-phase SCIP analysis: Implemented symbol collection → reference resolution workflow
- Unified index management: New index_provider and unified_index_manager for seamless index operations
- SCIP-compliant symbol IDs: Standard symbol ID generation with cross-file reference support
Enhanced Strategy System
- All language strategies SCIP-compliant: Refactored Python, Java, JavaScript, Objective-C strategies
- External symbol extraction: Added dependency tracking and external symbol resolution
- Proper SCIP classifications: Implemented symbol roles and syntax kind detection
- Robust file handling: Enhanced encoding detection and error recovery
API Improvements
- Simplified find_files response: Returns clean file path lists instead of complex metadata objects
- Enhanced SCIPSymbolAnalyzer: Replaced legacy query tools with accurate symbol analysis
- Improved logging: Comprehensive logging throughout SCIP indexing pipeline
Dependency Updates
- pathspec integration: Better .gitignore parsing and file filtering
- Updated requirements: Added comprehensive dependency list for cross-platform support
Technical Improvements
- Symbol analysis tools: New inspection scripts for debugging and development
- Enhanced error handling: Better fallback strategies and error recovery
- Testing improvements: Updated sample projects for multilingual testing
Breaking Changes
- find_files API: Now returns
List[str]
instead of complex metadata dictionary - Internal architecture: Significant refactoring of internal components (no user-facing impact)