Context Portal MCP
Context Portal (ConPort) хранит решения, задачи и паттерны проекта в SQLite с семантическим поиском и отдает их агенту через MCP по stdio
- 768 ★ репозитория
- Последний коммит
- Apache-2.0
Расширенный доступ
Почему такой уровень
- Пишет и удаляет записи в локальной базе SQLite и векторном хранилище рабочего каталога, есть инструменты удаления решений, задач и данных
- Инструменты экспорта и импорта читают и пишут Markdown-файлы по пути, который передает агент
- Каталог для базы выбирает `workspace_id` из вызова агента или автоопределение по папкам вверх от текущей
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add mcp/context-portalОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Пишет и удаляет записи в локальной базе SQLite и векторном хранилище рабочего каталога, есть инструменты удаления решений, задач и данных
- Инструменты экспорта и импорта читают и пишут Markdown-файлы по пути, который передает агент
- Каталог для базы выбирает `workspace_id` из вызова агента или автоопределение по папкам вверх от текущей
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Context Portal, или ConPort, — MCP-сервер на Python, который ведет для каждого рабочего каталога банк памяти проекта. База SQLite создается автоматически в папке `context_portal/`, а рядом лежит векторное хранилище на ChromaDB. Агент записывает в нее решения с обоснованием, статусы задач, архитектурные паттерны и произвольные данные вроде глоссария, а потом достает их полнотекстовым и семантическим поиском. Векторы строит локальная модель `all-MiniLM-L6-v2` из пакета `sentence-transformers`. Записи связываются между собой инструментом `link_conport_items`, из связей складывается граф знаний проекта. Контекст продукта и текущий рабочий контекст хранятся с историей версий, `get_item_history` возвращает прошлые состояния. Инструмент `get_recent_activity_summary` собирает недавние изменения, `batch_log_items` записывает пачку решений или задач за один вызов, а `export_conport_to_markdown` и `import_markdown_to_conport` переносят данные в Markdown-файлы и обратно. Схема базы обновляется миграциями Alembic. Каждый вызов получает `workspace_id`, поэтому один сервер обслуживает несколько проектов. Если путь не задан при запуске, ConPort ищет корень проекта сам по `.git`, `package.json`, `pyproject.toml` и другим признакам. Репозиторий содержит инструкции для агентов под Roo Code, Cline, Windsurf Cascade и универсальный вариант: их вставляют в системный промпт, чтобы агент сам загружал и обновлял память.
Для кого. Для разработчиков, которые работают с Roo Code, Cline, Windsurf или Cursor и хотят, чтобы агент хранил решения и ход работы в базе проекта.
Подходит, если
- Агент каждый раз теряет принятые архитектурные решения, и их нужно хранить с обоснованием и тегами, чтобы находить через `search_decisions_fts`
- Файловый банк памяти в Markdown разросся, и поиск по нему стал медленным и неточным
- Одним сервером нужно обслуживать несколько проектов, различая их по `workspace_id`
- Решения и задачи нужно связывать между собой и смотреть, как менялся контекст продукта, через `get_item_history`
- Нужен разовый перенос банка памяти в Markdown для ревью или обратно через `import_markdown_to_conport`
Не подходит, если
- На машине нет Python 3.10 или новее, а `uv` поставить нельзя: пакет требует `requires-python >=3.10`
- Нужна память обо всех проектах сразу и между машинами: база лежит в папке каждого рабочего каталога и не синхронизируется сама
- Агент не умеет подключать MCP по stdio или у вас нет возможности вставить инструкции в системный промпт: без них агент сам память не ведет
- Нужны заметки в виде обычных Markdown-файлов с вики-ссылками: такую память ведет Basic Memory
Пример запроса к агенту
Запиши в ConPort решение: для очереди задач берем Redis, потому что он уже есть в проекте, и свяжи его с задачей про фоновые отправки писемMCP
- Транспорт
- stdio
- Авторизация
- не нужна
Переменные окружения
CONPORT_WORKSPACE- Необязательный путь к рабочему каталогу для автоопределения
Ограничения
- Лицензия Apache-2.0. В манифесте версия 0.3.13 и классификатор «Beta».
- В тексте инструкции сказано «Python 3.8 или выше», но манифест требует 3.10 и новее, ориентируйтесь на манифест.
- Многие редакторы не раскрывают `${workspaceFolder}` при запуске сервера. Автор советует указывать абсолютный путь в `--workspace_id` или не задавать его при запуске и передавать в каждом вызове. Если IDE подставит буквальную строку `${workspaceFolder}`, ConPort игнорирует ее и ищет корень сам.
- Без инструкций для агента память не наполняется: сервер только отвечает на вызовы. Агентам Windsurf Cascade в новой сессии нужно прямо сказать «Initialize according to custom instructions».
- При обновлении между версиями со сменой схемы базы автор советует прочитать `v0.2.4_UPDATE_GUIDE.md`: иногда данные нужно переносить через экспорт и импорт вручную.
Как отключить. Удалите запись `conport` из настроек MCP в клиенте (в примере из инструкции это `mcp_settings.json`). Данные останутся в папке `context_portal/` рабочего каталога, ее можно удалить вручную. Перед удалением при желании выгрузите память в Markdown инструментом `export_conport_to_markdown`.
Частые вопросы
Где ConPort хранит данные?
В базе SQLite `context_portal/context.db` внутри рабочего каталога: она создается сама при первом обращении. Векторный индекс для семантического поиска лежит в ChromaDB рядом, а миграциями Alembic схема приводится к нужной версии.
Чем ConPort отличается от файлового банка памяти?
По описанию автора, он заменяет старые системы на текстовых файлах базой, в которой записи можно искать, связывать и версионировать. Вместо чтения целых файлов агент вызывает точечные инструменты вроде `get_decisions` или `search_custom_data_value_fts`.
Как задать рабочий каталог, если редактор не раскрывает переменную?
Передайте абсолютный путь в `--workspace_id`, или опустите флаг и указывайте `workspace_id` в каждом вызове. Включено еще автоопределение: сервер поднимается по каталогам вверх и ищет `.git`, `package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`, `pom.xml` или папку `context_portal/`. Выбор показывает инструмент `get_workspace_detection_info`.
Какие инструкции для агента входят в репозиторий?
Каталог `conport-custom-instructions` содержит стратегии для Roo Code, Cline, Windsurf Cascade и универсальную. Есть и набор `mem4sprint` для планирования спринтов с плоскими категориями и правилами полнотекстового поиска. Содержимое файла копируют целиком в системный промпт.
Можно ли выгрузить память для чтения человеком?
Да. `export_conport_to_markdown` записывает данные в папку (по умолчанию `./conport_export/`), а `import_markdown_to_conport` читает их обратно. Автор предлагает эту пару и как ручной способ переноса при смене схемы базы.
Что значит режим stdio и есть ли другие?
Основной режим развертывания — stdio: редактор сам запускает процесс `conport-mcp` и говорит с ним через стандартный ввод и вывод. Автор считает запуск в редакторе по stdio самой показательной проверкой сервера. Для разработки репозиторий предлагает запуск `uv run` из локального клона.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
MCP-серверыЛокальный MCP-сервер с пятью командами хранит решения проекта между сессиями: запись, поиск, замена и проверка диффа до коммита.
ContextLattice — локальный слой контекста для агентов
ContextLattice
Локальный слой памяти: цель, решения и доказательства сессии собираются в короткий пакет, который агент открывает заново
Плагин и сервер долгой памяти для Claude Code и Codex: решения и передача работы переходят между сессиями и агентами
MCP-сервер, который держит крупный вывод инструментов вне контекстного окна агента и хранит память сессии в SQLite
Cortex хранит решения и контекст проекта между сессиями Claude Code и Codex в локальной базе и показывает, что агент вспомнил
Локальная память для агентов: решения из чатов в браузере попадают в Claude Code, Cursor и Windsurf через MCP
Сравнение с похожими
Карточки с тем же главным запросом: чем они отличаются.
| Инструмент | Официальный | Авторизация | Звезды репозитория | Главное отличие |
|---|---|---|---|---|
| Context Portal (эта карточка) | нет | не нужна | 768 | |
| Memory Bank MCP Server | нет | не нужна | 926 | файлы памяти лежат в отдельном корневом каталоге вне репозитория, без базы и семантического поиска |
| MegaMemory | нет | не нужна | 736 | граф понятий, который агент сам описывает и записывает, индексатором служит сама модель |
| Basic Memory | нет | не нужна | 4 566 | знания лежат в обычных Markdown-файлах с вики-ссылками, которые правит и человек |
Коротко о README
Главная страница объясняет, что такое ConPort, и перечисляет возможности: SQLite на рабочий каталог, векторное хранилище, граф знаний и миграции Alembic. Дальше идут требования, настройка через `uvx` и вариант для разработчиков из клона, раздел об инструкциях для агентов, автоопределение рабочего каталога и справочник из примерно тридцати инструментов с аргументами. В репозитории лежат углубленный разбор `conport_mcp_deep_dive.md`, руководство по обновлению, Dockerfile, правила участия и тесты обработчиков.