code-memory-rs
by juandisay
README.md
# Code-Memory MCP (Rust Version)
> **Semantic code search for your local repositories, powered by SQLite Vector Search, AST-based chunking, and Parallel AI Cascading.**
>
> Find functions, classes, and logic across your codebase using natural language ā 100% local, accurate, and resilient.
---
## ⨠Key Features
- š **Hybrid Search (Vector + FTS5)** ā Fast local semantic retrieval using **sqlite-vec** combined with Full-Text Search (FTS5) and **Reciprocal Rank Fusion (RRF)** for maximum accuracy.
- š¦ **AST-based Smart Chunking** ā Language-aware splitting (Python, JS, TS, Rust, Go, Java, Markdown) that preserves functional context using Tree-sitter.
- ā” **Parallel AI Collaboration (Async Planning)** ā Support for non-blocking, asynchronous planning tasks that allow Worker and Mahaguru (planner) models to work in parallel.
- š **Background Indexing** ā High-performance, non-blocking indexing of large folders with job monitoring and status tracking.
- š§ **Session-based Chat Context** ā Automatically preserves and restores chat summaries per project to maintain context across sessions.
- š **Agent Rules Sync** ā Synchronizes specialized Antigravity/Cursor rules based on the detected project stack.
- š”ļø **Path Sandboxing** ā Secure file access with environment-based path validation.
- š **MCP Protocol** ā Native integration as an MCP server for Claude Desktop, Cursor, Antigravity, and more.
---
## š MCP Tools Overview
The server exposes 13 powerful tools for AI agents to interact with your codebase:
| Tool | Description |
| --- | --- |
| `semantic_code_search` | Hybrid search (Vector + FTS5 + RRF) with heuristic re-ranking. |
| `index_folder` | Initiates background indexing for a local project folder. |
| `get_index_stats` | Monitors active indexing and planning (Mahaguru) jobs. |
| `list_indexed_projects` | Lists all projects currently available in the index. |
| `delete_project` | Removes a project and its chat context from the index. |
| `request_mahaguru_refinement` | Synchronous escalation to a high-level planner (Mahaguru) model. |
| `request_async_mahaguru_refinement` | Non-blocking escalation; returns a Job ID for parallel workflows. |
| `get_planning_job_result` | Polls the result of an asynchronous planning/refinement job. |
| `save_project_chat_context` | Persists a summary of the current session context. |
| `get_project_chat_context` | Retrieves the last saved session context for a project. |
| `sync_agent_rules` | Updates `.agents/rules` based on the project's detected stack. |
| `maintenance_prune` | Removes stale entries for files that no longer exist on disk. |
| `rebuild_index_database` | Factory Reset: Clears the entire database (use with caution). |
---
## š Quick Start
### 1. Requirements
- **Rust 1.80+** (Stable toolchain via `rustup`).
- **sqlite-vec** (Binary `vec0.dylib` for macOS or equivalent for your OS must be in the binary directory).
### 2. Build
```bash
git clone <your-repo-url> mcp-code-search
cd mcp-code-search
cargo build --release
```
### 3. Run
**Mode A: MCP Server (Stdin/Stdout)**
Best for Claude Desktop, Cursor, and other IDE integrations.
```bash
cargo run --release -- --mcp
```
**Mode B: HTTP Management API**
Runs a REST API (default on port 8000) for managing the server.
```bash
cargo run --release -- --port 8000
```
**Mode C: CLI Indexer**
One-off indexing without running a server.
```bash
cargo run --release -- --index /path/to/project
```
---
## š IDE & Client Integration
### Claude Desktop / Cursor / Antigravity
Add the following configuration to your MCP settings. Using the provided `run_mcp.sh` is highly recommended as it ensures the binary is built and run from the correct root with all environment variables.
#### macOS / Linux
```json
{
"mcpServers": {
"code-memory-rs": {
"command": "/absolute/path/to/mcp-code-search-rs/run_mcp.sh"
}
}
}
```
> [!TIP]
> **Petunjuk Integrasi (Bahasa Indonesia):**
> Gunakan file `run_mcp.sh` untuk memastikan server berjalan stabil di Claude/Cursor. Skrip ini akan otomatis menjalankan `cargo build` jika ada perubahan kode, memastikan binary terbaru selalu digunakan. Pastikan path yang Anda masukkan adalah **path absolut**.
---
## šļø Architecture
- **Engine**: Pure Rust with `tokio` for async orchestration.
- **Storage**: SQLite (WAL mode) for reliable persistence.
- **Search**: `sqlite-vec` for vector embeddings + FTS5 for keyword matching, merged via Reciprocal Rank Fusion (RRF).
- **Chunking**: AST-aware logic using `tree-sitter` to preserve logical boundaries (functions, classes).
- **Hardening**: State-machine based `balanced-brace` JSON extraction for reliable processing of unpredictable AI outputs.
- **Safety**: Environment-variable driven path sandboxing (`ALLOWED_PATHS`).
- **Observability**: Integrated `tracing` spans and instrumented futures for deep visibility into async/sync execution boundaries.
- **Resilience**: Robust API retry logic with exponential backoff and circuit breaking for all LLM interactions.
---
## š Project Structure
```
mcp-code-search/
āāā src/ # Rust source (Core, API, Indexer)
āāā data/ # Database and persistent state
āāā docs/ # Extended documentation suite
āāā bin/ # Helper scripts and utilities
āāā Cargo.toml # Package metadata
```
---
## š License
MIT
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessWithin a week