SocratiCode: MCP-сервер семантического поиска кода с Qdrant и Ollama | AiManual
AiManual Logo Ai / Manual.
05 Май 2026 Инструмент

SocratiCode: MCP-сервер, который научит ИИ-агента шарить в вашем коде

Обзор SocratiCode — open-source MCP-сервера для семантического поиска по коду. AST-чанкинг, гибридный search (Qdrant + Ollama), сравнение с Ragex и Code-memory.

Перестаньте уже копаться в чужом коде через grep. Серьёзно. Вы же не ищете иголку в стоге сена, перебирая каждую травинку? А вот ИИ-агент, которому скормили всю кодовую базу в контекст, делает именно это — пожирает тысячи токенов, тупеет на глазах и всё равно не может отличить определение функции от её вызова. Знакомая боль? Тогда встречайте SocratiCode — MCP-сервер, который не грузит контекст, а даёт агенту инструмент для поиска.

Чем SocratiCode отличается от гадалки на grep

В основе SocratiCode — не просто полнотекстовый поиск по файлам, а умный гибрид. Он сначала разбивает код на осмысленные куски через AST-чанкинг: выделяет классы, функции, методы, импорты. Каждому такому куску присваивается вектор через локальную модель Ollama (например, bge-m3 или nomic-embed-text). Вектора отправляются в Qdrant. А чтобы не промахнуться, SocratiCode ещё использует BM25 (ключевые слова) и скрещивает результаты — получается семантический поиск, который понимает, что вы хотели спросить, а не то, что написали в коммит-месседже.

Ключевая фишка: SocratiCode не пытается запихнуть весь код в промпт. Агент сам решает, когда ему нужно дёрнуть MCP-инструмент search_code или get_file_context. Это экономит тонны токенов и не даёт модели скатиться в бред.

На практике это выглядит так. Вы пишете в чате: «Найди функцию, которая парсит конфиг и валидирует тайм-ауты». Агент идёт в SocratiCode, получает 2-3 кандидата, вытаскивает исходник нужного метода — и вы уже видите баг в условии. Никаких лишних файлов в контексте.

Мясо: заглядываем под капот

Разберём архитектуру на пальцах. SocratiCode написан на Python, использует tree-sitter для парсинга AST — поддерживает JavaScript/TypeScript, Python, Go, Rust, Java и ещё с десяток языков. Чанкинг не тупой (по 200 токенов), а структурный: сначала выделяется глобальная область, потом класс с его методами, потом отдельные функции. Это похоже на то, как работает Ragex, но SocratiCode не строит граф зависимостей — он делает упор на поиск по смыслу.

За векторизацию отвечает Ollama. Вы просто тянете любую модель эмбеддингов, которая есть на вашей машине. Qdrant можно запустить в Docker или использовать облачный кластер — не принципиально. Коммуникация с агентом идёт через протокол MCP (Model Context Protocol).

{
  "mcpServers": {
    "socraticode": {
      "command": "python",
      "args": ["-m", "socraticode.mcp_server"],
      "env": {
        "SOCRATICODE_QDRANT_URL": "http://localhost:6333",
        "SOCRATICODE_OLLAMA_URL": "http://localhost:11434",
        "SOCRATICODE_REPO_PATH": "/path/to/your/project"
      }
    }
  }
}

Индексация происходит один раз при старте, дальше — только инкрементальные обновления при изменениях в файлах. Не ждите, что это мгновенно для репозитория на 500 000 строк — первая индексация займёт пару минут. Но потом поиск летает.

Кто кого: SocratiCode vs Ragex vs Code-memory

На рынке MCP-серверов для кода уже появились интересные игроки. Code-memory строит граф знаний с кучей связей — супер, если вы хотите понять архитектуру, но жрёт VRAM как не в себя. Ragex тоже использует AST и графы, но его сильная сторона — навигация по зависимостям (кто кого вызывает). SocratiCode же заточен именно на семантический поиск: вы задаёте вопрос на естественном языке, и он возвращает куски кода, которые релевантны по смыслу, а не по названию файла.

Параметр SocratiCode Ragex Code-memory
Тип поиска Гибридный (семантика + BM25) Графовый (зависимости) Граф знаний (сущности+связи)
Потребление ресурсов Среднее (Qdrant + Ollama) Низкое (только AST, без эмбеддингов) Высокое (нейросеть для графа)
Лучше всего для Поиска по смыслу в легаси Понимания архитектуры вызовов Полной карты проекта

Вывод? SocratiCode — не замена, а дополнение. Если у вас уже есть графовый MCP-сервер (вроде Ragex) и вам не хватает семантического поиска, SocratiCode легко подключается как второй инструмент. Агент сам решит, куда обратиться.

Боевой сценарий: я искал тайм-аут, а нашёл баг

Берём свежий проект на Go, где timeout на запрос к внешнему API почему-то не срабатывал. Вместо того чтобы листать 50 файлов вручную, я просто спрашиваю ассистента: «Найди функцию, которая устанавливает тайм-аут для HTTP-клиента, и проверь, передаётся ли она в конструктор».

Ассистент (у меня был Claude Code) вызывает search_code с текстом запроса. SocratiCode возвращает три кандидата — один из них оказывается функцией newHTTPClientWithTimeout в файле pkg/client.go. Ассистент запрашивает полный контекст этого файла (инструмент get_file_context) и сразу видит: в конструктор передаётся переменная cfg.Timeout, но дефолтное значение равно нулю, а условие на установку дефолта написано с ошибкой — if timeout == 0 вместо if timeout <= 0. Нашёл и исправил за минуту. Без SocratiCode пришлось бы открывать каждый файл с подозрительным названием.

Сценарий не единичный. Особенно SocratiCode выручает, когда нужно быстро разобраться в чужом коде — например, перед ревью или при онбординге в проект. Согласитесь, гораздо приятнее спросить «где у нас обработка ошибок для S3?» и получить ссылку на конкретный блок, чем искать по репозиторию вручную.

Кому точно стоит попробовать (и кто может пропустить)

Инструмент идеален для разработчиков, которые работают с большими легаси-проектами, где grep и чтение всех исходников в голове больше не работают. Если у вас команда использует AI-ассистентов (Claude Code, Copilot Chat, CodeGPT с MCP-клиентами) — SocratiCode станет для них суперсилой. Плюс он локальный: данные не уходят в облако, что важно для корпоративных проектов.

А кому не подойдёт? Если ваш проект — это один файл на 200 строк, SocratiCode избыточен. Если вам нужен не поиск, а понимание архитектуры (кто вызывает кого) — скорее смотрите на Ragex. Но я бы на вашем месте поставил оба. Благо, MCP позволяет подключать сколько угодно инструментов.

Ещё один момент: SocratiCode требует Qdrant и Ollama. Если у вас нет возможности запустить эти сервисы локально, можно использовать облачный Qdrant и любой API для эмбеддингов, но это уже не совсем «локально-безопасная» история. Зато проект полностью open-source — fork на GitHub и доработка под себя не проблема.

Совет напоследок: не кормите агента контекстом, дайте ему удочку

Главная ошибка при работе с AI-агентами для кода — попытка скормить весь репозиторий в промпт. «Чтобы модель понимала контекст». Ага, а потом она начинает галлюцинировать, путать файлы и забывать ваши вопросы через три предложения. SocratiCode решает эту проблему кардинально: агент получает инструмент поиска, а не сырые данные. Это как дать рыбаку удочку вместо тонны рыбы — он сам наловит столько, сколько нужно. Кстати, про локальные LLM и их эффективность хорошо написано в этом обзоре — SocratiCode идеально ложится в концепцию полностью offline-агента. А если хотите посмотреть, как MCP-серверы могут работать в связке с поисковыми движками — гляньте на MCP-Manticore. Тот же принцип, но для SQL. Ну и для полного счастья — мега-гид по бесплатным инструментам для LLM, там ещё с десяток MCP-серверов найдёте. Пробуйте SocratiCode — и пусть ваш агент больше не тонет в коде.

Подписаться на канал