# code-memory

Локальный семантический поиск по кодовой базе и истории Git без внешних API-ключей. Помогает передавать ИИ-агенту точные фрагменты кода вместо целых файлов.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 49
- Автор: kapillamba4
- Лицензия: MIT · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/kapillamba4/code-memory
- Обновлён: 2026-05-20
- HTML: https://affpapa.org/nevibecode/mcp/code-memory

## Что делает

Сервер создаёт локальный индекс кодовой базы через `sentence-transformers` и SQLite vec. Для языков вроде Python, TypeScript, Java, Go и Rust используется AST-парсер с выделением символов, а для конфигураций, SQL и Markdown работает индексация файлов целиком. Файлы из `.gitignore` отсекаются автоматически.

В распоряжение агента поступают четыре инструмента: `search_code` для определений через гибридный поиск BM25 и векторных эмбеддингов, `search_docs` для документации, `search_history` для анализа коммитов Git и `index_codebase` для перестроения индекса. Телеметрия отсутствует, данные наружу не уходят.

Для запуска нужен Python не ниже версии 3.13 либо отдельный бинарный файл. При первом старте сервер скачивает модель весом около 600 МБ в кэш Hugging Face, поэтому первичному запуску требуется интернет. Если запускать инструмент отдельно для каждого каталога, модель займёт 1–2 ГБ оперативной памяти на каждый процесс, поэтому для нескольких проектов предусмотрен общий запуск через SSE.

## Требования
- Нужно: Python и uv (команды через uvx)
- Переменные окружения: `CODE_MEMORY_LOG_LEVEL`, `EMBEDDING_MODEL` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env CODE_MEMORY_LOG_LEVEL=<CODE_MEMORY_LOG_LEVEL> --env EMBEDDING_MODEL=<EMBEDDING_MODEL> --transport stdio code-memory -- uvx code-memory
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from code-memory <команда>

### Codex

**Командой платформы**
```bash
codex mcp add code-memory --env CODE_MEMORY_LOG_LEVEL=<CODE_MEMORY_LOG_LEVEL> --env EMBEDDING_MODEL=<EMBEDDING_MODEL> -- uvx code-memory
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from code-memory <команда>

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "code-memory": {
            "command": "uvx",
            "args": [
                "code-memory"
            ],
            "env": {
                "CODE_MEMORY_LOG_LEVEL": "<CODE_MEMORY_LOG_LEVEL>",
                "EMBEDDING_MODEL": "<EMBEDDING_MODEL>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from code-memory <команда>

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "code-memory": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "code-memory"
            ],
            "env": {
                "CODE_MEMORY_LOG_LEVEL": "<CODE_MEMORY_LOG_LEVEL>",
                "EMBEDDING_MODEL": "<EMBEDDING_MODEL>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from code-memory <команда>

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e CODE_MEMORY_LOG_LEVEL=<CODE_MEMORY_LOG_LEVEL> -e EMBEDDING_MODEL=<EMBEDDING_MODEL> code-memory uvx code-memory
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from code-memory <команда>

## Когда брать
- находить определения и ссылки в коде через гибридный поиск BM25 и векторов
- искать причины изменений и регрессий по истории коммитов Git
- сокращать расход токенов в контекстном окне LLM без отправки полных файлов
- индексировать структуру проекта без передачи исходников на сторонние серверы

## Примеры запросов агенту
- Найди через search_code, где в проекте объявляется класс UserSession.
- Проверь историю Git через search_history и объясни, почему изменилась логика авторизации.
- Переиндексируй текущую кодовую базу с помощью index_codebase.

## Похожие
- [REA](https://affpapa.org/nevibecode/mcp/rea.md) — MCP-сервер · ★ 386989
- [GitHub](https://affpapa.org/nevibecode/mcp/github.md) — MCP-сервер · ★ 33918
- [Netdata](https://affpapa.org/nevibecode/mcp/netdata.md) — MCP-сервер · ★ 81115
- [browser-use](https://affpapa.org/nevibecode/mcp/browser-use.md) — MCP-сервер · ★ 119160
- [Codebase Memory](https://affpapa.org/nevibecode/mcp/codebase-memory.md) — MCP-сервер · ★ 47392
- [mcp-server](https://affpapa.org/nevibecode/mcp/mcp-server.md) — MCP-сервер · ★ 43872

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
