Releases: johnhuang316/code-index-mcp
Release v2.8.0
Highlights
- feat: add Go docstring extraction
- fix: harden Go import parsing and async discovery
- ci: reworked release workflow with verification/publish stages
- tests: expanded Go/Python discovery coverage
Verification
- uv run pytest
- uv run code-index-mcp --help
- uv run python -m build
- uv run twine check dist/*
Release v2.7.0
- Added pagination defaults to search_code_advanced (10 matches per page) with max_results/start_index controls.
Full Changelog: v2.6.0...v2.7.0
Release v2.6.0
Highlights
- Added
--project-pathCLI flag so the server can initialize a repository immediately on startup. - CLI docs updated across all supported languages to document the new startup flag.
- Server now guards optional
--mount-pathusage for older FastMCP versions that do not support it.
Notes
- Supplying an invalid path with
--project-pathcauses startup to fail fast with a clear error.
2.5.1 - Relative Symbol IDs
- Deep index symbol identifiers now use project-relative paths, preventing SQLite uniqueness collisions during rebuilds.
- Added regression coverage to ensure duplicate filenames across directories generate distinct symbol IDs.
- Release notes migrated to Markdown for easier editing.
Full Changelog: v2.5.0...v2.5.1
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.