MCP Local Codebase Search
by demixid
README.md
# MCP Local Codebase Search
This project is a simple MCP (Model Context Protocol) server for local Python codebase search.
It provides tools to:
- index Python files into a SQLite database,
- search symbols (functions/classes),
- find files importing specific modules,
- read file contents.
## Features
- `index_project()`
- Scans the current working directory and indexes `.py` files.
- Stores symbol and dependency data in `db/code_index.db`.
- `find_symbol(name)`
- Searches function/class names using `LIKE` matching.
- Returns symbol name, type, file path, and line number.
- `find_import(module)`
- Finds files that import a specific module.
- `read_file(path)`
- Reads and returns full file content with encoding fallback (`utf8`, `latin-1`).
## Project Structure
- `server.py`: MCP server entrypoint and tool definitions.
- `indexer.py`: Indexing logic to SQLite.
- `parser.py`: Symbol extraction (`FunctionDef`, `ClassDef`) using `ast`.
- `dependency.py`: Import extraction using `ast`.
- `search.py`: Search queries against the database.
- `db/`: Index database location (`code_index.db`).
## Prerequisites
- Python 3.10+ (recommended)
- `pip`
## Installation
1. Clone this repository.
2. Go to the project folder.
3. Create a virtual environment.
4. Activate the virtual environment.
5. Install dependencies.
Windows PowerShell example:
```powershell
python -m venv venv
.\venv\Scripts\Activate.ps1
pip install -r requirements.txt
```
## Run Locally
Start the MCP server:
```powershell
python server.py
```
Available tools:
- `index_project`
- `find_symbol`
- `find_import`
- `read_file`
## MCP Configuration
Add this to your MCP client configuration so it runs as an MCP server:
```json
{
"mcpServers": {
"code-intelligence": {
"command": "python",
"args": [
"path-to-your-server"
]
}
}
}
```
## Recommended Usage Flow
1. Run `index_project` once to build the initial index.
2. Use `find_symbol` to locate functions/classes.
3. Use `find_import` to trace module usage.
4. Re-run `index_project` after major code changes.
## Notes
- Non-Python files are not indexed.
- Ignored directories during indexing: `.git`, `node_modules`, `__pycache__`, `dist`, `build`.
- The index database is local and should not be committed (already covered by `.gitignore`).
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues