Cctx
FreeNot checkedAn MCP server that provides structure-aware code analysis (symbol trees, dependencies, docs) to reduce AI agent token consumption by up to 99%, along with Git c
About
An MCP server that provides structure-aware code analysis (symbol trees, dependencies, docs) to reduce AI agent token consumption by up to 99%, along with Git commit intelligence.
README
Структура, а не простыня.
MCP-сервер, который даёт AI-агенту скелет кода —
чтобы он тратил контекст на работу, а не на ориентирование.
Работает с opencode · Claude Desktop · Cursor · любым MCP-клиентом
Зачем это
Я 10 месяцев работаю исключительно через AI-агентов. Собрал несколько агентных систем с нуля. Прошёл путь Cursor → opencode и урезал месячный расход с $200 до $10 — без потери качества в своих задачах.
За эти 10 месяцев я видел прозрачно: что агент вызывает, что видит, где тратит контекст впустую, чего ему не хватает.
Картина повторялась:
- Агент заходит в новый файл →
Read500 строк кода - Нужно найти функцию →
grepпо всему проекту - Нужно понять импорты → читает тот же файл снова
- Коммит → парсит
git diffна 3000 токенов
Проблема не в стоимости токенов — токены дёшевы. Проблема в налоге на ориентирование: агент сжигает контекстное окно на попытки понять, где он находится, вместо того чтобы делать реальную работу.
code-context — не продукт. Это запись того, чего мне не хватало как пользователю AI-агентов. Каждый инструмент здесь появился потому, что я смотрел, как агент тупит, и думал: «это должно делаться в один вызов».
Что он реально делает
Структура вместо простыни
Незнакомый файл? Не читай — просканируй.
smart_read возвращает скелет: иерархия символов, зависимости, диапазоны строк, doc-комментарии. Агент видит class Foo на строке 42, method bar() на строке 85, импортов: 3 — а не 500 строк кода, которые ему надо ментально распарсить.
То же самое: get_symbol_body когда нужна одна функция, find_symbols когда нужно одно определение по всему проекту, get_dependencies когда нужны импорты без чтения файла.
Diff без простыни
compact_change_intelligence заменяет git diff + git status: «4 файла изменено, добавлена login(), переименован AuthProvider.validate()». Агент видит картину целиком в 10 строках вместо 200.
В паре с draft_commit — AI генерирует conventional commit message из структурированных изменений. Без парсинга сырого diff.
Аннотации функций (в разработке)
get_symbol_summaries уже генерирует однострочные AI-описания для каждой функции: bar() — валидирует ввод, возвращает токен сессии.
Идея — встроить эти аннотации прямо в вывод smart_read, чтобы модель видела bar() // валидирует ввод при сканировании файла и не тратила токены на догадки о том, что делает функция. Сейчас это отдельный вызов — работаю над объединением.
Когда это НЕ нужно
code-context даёт структуру. Он не поможет с:
- Редактированием кода. Он read-only. Инструменты записи (
edit,write) остаются нативными. - Запуском тестов и сборкой. Нет раннера тестов, нет компилятора.
- Деплоем. Нет CI/CD интеграции.
- Работой с сырым содержимым файла. Если нужен полный текст файла —
Readвсё ещё правильный инструмент.
Используй для ориентирования, поиска, анализа и коммитов. Всё остальное — вне его зоны.
Инструменты
| Инструмент | Заменяет | Статус |
|---|---|---|
smart_read |
Read + ручной разбор |
✅ |
find_symbols |
grep + чтение файлов |
✅ |
get_dependencies |
Read + извлечение импортов |
✅ |
trace_calls |
grep по всему репозиторию |
✅ |
analyze_project |
find + ls + wc |
✅ |
get_symbol_body |
Read целого файла |
✅ |
get_symbol_summaries |
Чтение реализации | ✅ нужна LLM |
compact_change_intelligence |
git diff + git status |
✅ |
draft_commit |
Написание commit message | ✅ нужна LLM |
approve_commit_draft |
git commit |
✅ |
stage_changes / unstage_changes |
git add / git restore --staged |
✅ |
get_config · get_health · get_version |
— | ✅ |
| Аннотации в smart_read | — | В планах |
semantic_search · code_search · find_files |
grep + read | Реализовано, не зарегистрировано |
Я выкатываю только то, чем реально пользуюсь. Незарегистрированные инструменты есть в коде, но не торчат наружу, пока я не убежусь, что они заслуживают своё место.
Быстрый старт
uvx cctx-mcp
Добавь в конфиг MCP-клиента:
{
"mcpServers": {
"cctx-mcp": {
"command": "uvx",
"args": ["cctx-mcp"]
}
}
}
Не нужны API-ключи и внешние сервисы для базового функционала. Требуется Python 3.10+. LLM нужна для commit drafting и семантических суммари — использует Ollama (локально) или OpenRouter (облако).
Поддерживаемые языки
Работает на tree-sitter AST — для каждого языка отдельный парсер.
Установка
uvx (рекомендуется)
{
"mcpServers": {
"cctx-mcp": {
"command": "uvx",
"args": ["cctx-mcp"]
}
}
}
pip
pip install cctx-mcp
{
"mcpServers": {
"cctx-mcp": {
"command": "python",
"args": ["-m", "code_context.server"]
}
}
}
из исходников
git clone https://github.com/nikondrat/cctx-mcp.git
cd cctx-mcp
uv sync
uv run python -m code_context.server --skip-index
Конфигурация
| Переменная | По умолчанию | Описание |
|---|---|---|
CC_OLLAMA_URL |
http://localhost:11434 |
Адрес Ollama |
CC_OLLAMA_TIMEOUT |
10 |
Таймаут запросов к Ollama (сек) |
CC_COMMIT_MODEL |
gemma4:latest |
Локальная модель для commit drafting |
CC_EMBED_MODEL |
nomic-embed-text |
Локальная модель для эмбеддингов |
CC_SEMANTIC_SUMMARIES |
1 |
Включить AI-суммари символов |
CC_COMMIT_DRAFTING |
1 |
Включить AI-генерацию коммитов |
CC_LLM_ROUTER |
local-first |
local-first, local-only, remote-first, remote-only |
CC_LOCAL_PROVIDER |
ollama |
Имя локального LLM-провайдера |
CC_REMOTE_PROVIDER |
openrouter |
Имя облачного LLM-провайдера |
CC_OPENROUTER_API_KEY |
— | Ключ API для облачного режима |
CC_OPENROUTER_BASE_URL |
https://openrouter.ai/api/v1 |
OpenRouter-совместимый эндпоинт |
CC_OPENROUTER_TIMEOUT |
15 |
Таймаут запросов к OpenRouter (сек) |
CC_OPENROUTER_MAX_TOKENS |
256 |
Максимум токенов в ответе LLM |
CC_OPENROUTER_TEMPERATURE |
0.1 |
Температура LLM |
CC_OPENROUTER_EMBED_MODEL |
text-embedding-3-small |
Облачная модель для эмбеддингов |
CC_OPENROUTER_COMMIT_MODEL |
openai/gpt-4o-mini |
Облачная модель для коммитов |
Автор
Никита (@nikondrat) · t.me/nikondrat
Архитектор решений. 10 месяцев ежедневно с AI-агентами — от проприетарных инструментов до open-source, инфраструктуру ужал в 20 раз. code-context — дистиллят этого опыта: не «продукт», а запись того, чего не хватало как пользователю.
Консалтинг: архитектура AI-агентов, MCP-серверы, оптимизация LLM-воркфлоу.
Разработка
uv sync
uv run pytest tests/ -v
Логирование
Вызовы инструментов пишутся в ~/.code-context-cache/debug.jsonl с аргументами, результатом, задержкой и статусом:
tail -f ~/.code-context-cache/debug.jsonl
Переменная CC_DEBUG_LOG меняет путь к лог-файлу.
PRs приветствуются. Открытые issues.
Лицензия
MIT — можно всё.
Install Cctx in Claude Desktop, Claude Code & Cursor
unyly install cctx-mcpInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add cctx-mcp -- uvx cctx-mcpFAQ
Is Cctx MCP free?
Yes, Cctx MCP is free — one-click install via Unyly at no cost.
Does Cctx need an API key?
No, Cctx runs without API keys or environment variables.
Is Cctx hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Cctx in Claude Desktop, Claude Code or Cursor?
Open Cctx on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Cctx with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
