Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Cctx

FreeNot checked

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 c

GitHubEmbed

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

CCTX-MCP

Структура, а не простыня.
MCP-сервер, который даёт AI-агенту скелет кода — чтобы он тратил контекст на работу, а не на ориентирование.

Работает с opencode · Claude Desktop · Cursor · любым MCP-клиентом

Stars

PyPI Python Stars CI License Beta


Зачем это

Я 10 месяцев работаю исключительно через AI-агентов. Собрал несколько агентных систем с нуля. Прошёл путь Cursor → opencode и урезал месячный расход с $200 до $10 — без потери качества в своих задачах.

За эти 10 месяцев я видел прозрачно: что агент вызывает, что видит, где тратит контекст впустую, чего ему не хватает.

Картина повторялась:

  1. Агент заходит в новый файл → Read 500 строк кода
  2. Нужно найти функцию → grep по всему проекту
  3. Нужно понять импорты → читает тот же файл снова
  4. Коммит → парсит 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 (облако).


Поддерживаемые языки

Swift Python TypeScript JavaScript Rust Go Dart

Работает на 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 — можно всё.

from github.com/nikondrat/cctx-mcp

Install Cctx in Claude Desktop, Claude Code & Cursor

Recommended · one command, every IDE
unyly install cctx-mcp

Installs 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-mcp

FAQ

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

Compare Cctx with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs