Skip to main content
Glama

[!NOTE] Нативные инструменты агентов (regex-поиск, сопоставление путей, чтение файлов) хорошо справляются с точечными запросами. aptu-coder выполняет механическую, не связанную с ИИ работу: построение структуры каталогов, извлечение символов и трассировку графов вызовов. Передача этой работы выделенному инструменту снижает расход токенов и ускоряет разработку с более высокой точностью.

Бенчмарки

Задача миграции аутентификации в Claude Code на дереве исходников Django (Python). Полная методология.

Режим

Sonnet 4.6

Haiku 4.5

MCP

112k токенов, $0.39

406k токенов, $0.42

Нативный

276k токенов, $0.95

473k токенов, $0.53

Экономия

на 59% меньше токенов, на 59% дешевле

на 14% меньше токенов, на 21% дешевле

Задача аудита интеграции AeroDyn в Claude Code на дереве исходников OpenFAST (Fortran). Полная методология.

Режим

Sonnet 4.6

Haiku 4.5

MCP

472k токенов, $1.65

687k токенов, $0.72

Нативный

877k токенов, $2.85

2162k токенов, $2.21

Экономия

на 46% меньше токенов, на 42% дешевле

на 68% меньше токенов, на 68% дешевле

Related MCP server: CodeGraphMCPServer

Обзор

aptu-coder — это сервер Model Context Protocol, который предоставляет ИИ-агентам точный структурный контекст о кодовой базе: деревья каталогов, определения символов и графы вызовов — без чтения исходных файлов. Поддерживает 18 языков (см. Поддерживаемые языки) и интегрируется с любым MCP-совместимым оркестратором.

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

Язык

Расширения

Astro

.astro

C/C++

.c, .cc, .cpp, .cxx, .h, .hpp, .hxx

C#

.cs

CSS

.css

Fortran

.f, .f77, .f90, .f95, .f03, .f08, .for, .ftn

Go

.go

HTML

.html, .htm

Java

.java

JavaScript

.js, .mjs, .cjs

JSON

.json

Kotlin

.kt, .kts

Markdown

.md, .mdx

Python

.py

Rust

.rs

TOML

.toml

TSX

.tsx

TypeScript

.ts

YAML

.yaml, .yml

Установка

Homebrew (macOS и Linux)

brew install clouatre-labs/tap/aptu-coder

Обновление: brew upgrade aptu-coder

cargo-binstall (Rust не требуется)

cargo binstall aptu-coder

cargo install (требуется инструментарий Rust)

cargo install aptu-coder

Быстрый старт

Сборка из исходников

cargo build --release

Бинарный файл находится по пути target/release/aptu-coder.

Настройка MCP-клиента

Доступны два транспорта. Streamable HTTP рекомендуется при использовании оркестраторов, порождающих делегатов (например, goose coder): один серверный процесс используется совместно оркестратором и всеми агентами, что устраняет расхождение расширений, возникающее, когда каждый stdio-подпроцесс получает собственный изолированный экземпляр.

Streamable HTTP (рекомендуется для многокомпонентных конфигураций)

С Homebrew одна команда запускает сервер при входе в систему и поддерживает его работу:

brew services start aptu-coder

Формула Homebrew запускает сервер на порту 49200 по умолчанию. Затем добавьте расширение один раз в ~/.config/goose/config.yaml:

extensions:
  aptu-coder:
    type: streamable_http
    uri: http://127.0.0.1:49200/mcp
    name: aptu-coder
    timeout: 300

Или для Claude Code:

claude mcp add --transport http aptu-coder http://127.0.0.1:49200/mcp

Чтобы использовать другой порт, задайте APTU_CODER_PORT перед перезапуском:

APTU_CODER_PORT=4000 brew services restart aptu-coder

Чтобы запустить напрямую без brew services:

aptu-coder --port 49200
# or equivalently
APTU_CODER_PORT=49200 aptu-coder

stdio (для одного клиента)

Подходит, когда только одному процессу нужен сервер. Клиент владеет жизненным циклом процесса и запускает его автоматически:

claude mcp add --transport stdio aptu-coder -- aptu-coder

Или добавьте вручную в .mcp.json в корне вашего проекта (общий для команды через систему контроля версий):

{
  "mcpServers": {
    "aptu-coder": {
      "command": "aptu-coder",
      "args": []
    }
  }
}

Инструменты

Все необязательные параметры могут быть опущены. Общие необязательные параметры для analyze_directory, analyze_file и analyze_symbol:

Параметр

Тип

По умолчанию

Описание

summary

boolean

auto

Компактный вывод; автоматически включается выше 50K символов

cursor

string

--

Курсор пагинации из поля next_cursor предыдущего ответа

page_size

integer

100

Элементов на странице

Инструмент

Назначение

Языки

analyze_directory

Дерево каталогов с количеством строк кода, функций и классов; учитывает .gitignore

все

analyze_file

Функции, классы и импорты с сигнатурами и диапазонами строк; возвращает корректный запасной вариант (количество строк, начало файла, без AST) для неподдерживаемых расширений

все

analyze_module

Облегчённый индекс функций и импортов (примерно на 75% меньше, чем analyze_file); возвращает корректный запасной вариант (пустой индекс с примечанием) для неподдерживаемых расширений

все

analyze_symbol

Граф вызовов для именованного символа по каталогу; вызывающие, вызываемые, глубина вызовов

все

edit_overwrite

Создать или перезаписать файл; создаёт родительские каталоги

любой файл

edit_replace

Заменить уникальный точный текстовый блок или все непересекающиеся вхождения (replace_all=true); возвращает ошибку при нулевом или множественном совпадении; пустой new_text удаляет блок; CRLF нормализуется перед сопоставлением; необязательный expected_content_hash (blake3 hex от исходных байтов) отклоняет устаревшие правки; одновременные правки одного файла сериализуются по пути; возвращает количество заменённых вхождений

все

exec_command

Выполнить shell-команду; возвращает stdout, stderr, код выхода; вывод ограничен и фильтруется; необязательные timeout_secs (завершение по истечении) и drain_timeout_secs (окно ожидания после завершения); heredoc отклоняется до запуска (шаблон записи в файл, флаг потребления stdin, конфликт параметра stdin или отсутствие закрывающего разделителя)

любой

Параметры инструментов, ограничения и примеры доступны через инспектор инструментов вашего MCP-клиента или ответ tools/list.

MCP-ресурсы

Функция графа знаний предоставляет шаблоны MCP-ресурсов для навигации по структурному графу, построенному при вызовах analyze_symbol. Ресурсы адресуются через URI; используйте resources/templates/list для обнаружения доступных шаблонов.

Шаблон URI

Описание

aptu-coder://graph/{repo_hash}/blast-radius/{symbol}?depth={depth}

BFS-обход от символа наружу до настраиваемой глубины (по умолчанию: 3). Возвращает цепочки вызывающих/вызываемых в радиальной компоновке.

aptu-coder://graph/{repo_hash}/subgraph/{symbol}

Полный подграф (вызывающие, вызываемые и их связи) для одного символа.

Пагинация: Результаты разбиты на страницы; передайте непрозрачное значение cursor из предыдущего ответа, чтобы получить следующую страницу.

Параметр глубины: Шаблон blast-radius принимает необязательный параметр запроса depth (целое число в диапазоне 1–5, по умолчанию 3).

Холодный кэш: Сначала вызовите analyze_symbol для каталога, чтобы построить граф. Ресурсы возвращают информационное сообщение, пока граф недоступен.

Управление выводом

Для больших кодовых баз предусмотрено несколько механизмов, предотвращающих переполнение контекста.

Пагинация

analyze_file и analyze_symbol добавляют строку NEXT_CURSOR:, когда вывод усечён. Передайте токен обратно как cursor, чтобы получить следующую страницу. summary=true и cursor взаимоисключающие; передача обоих возвращает ошибку.

# Response ends with:
NEXT_CURSOR: eyJvZmZzZXQiOjUwfQ==

# Fetch next page:
analyze_symbol path: /my/project symbol: my_function cursor: eyJvZmZzZXQiOjUwfQ==

Ограничения вывода exec_command

exec_command применяет три независимых байтовых ограничения, чтобы предотвратить переполнение контекста большими выводами команд:

Поток

Лимит

Поведение

stdout

30 000 символов

Сохраняет хвост; оставляет последние 30k символов

stderr

10 000 символов

Сохраняет хвост; ошибки появляются в конце

combined output_text

50 000 символов

Страховка после чередования

Ограничение stdout в 30k основано на данных: анализ 27,981 наблюдаемых вызовов exec_command показывает, что только 0,33% превышают этот лимит. Когда срабатывает любое ограничение, в ответе устанавливается output_truncated: true и это фиксируется в метриках JSONL.

drain_timeout_secs управляет тем, как долго сервер ждёт после завершения дочернего процесса, пока фоновый подпроцесс всё ещё удерживает канал открытым. По умолчанию — 500 мс (0 или не указано). Отрицательные значения возвращают INVALID_PARAMS. Если окно ожидания истекает до закрытия канала, устанавливается output_truncated: true.

exec_command: фильтры вывода

Встроенная таблица фильтров подавляет пофайловый шум от болтливых CLI-инструментов до того, как вывод попадёт в модель. Фильтры применяются к stdout, stderr и чередующемуся выводу только при успехе; при сбое всегда сохраняется необработанный вывод.

Команда

Поведение

git pull

Удаляет шум diff-stat (строки с вертикальными чертами, create mode, delete mode, rename, mode change); пустой вывод заменяется на ok (up-to-date)

git fetch

Удаляет строки From и диапазоны ссылок; ограничение 10 строк; пустой вывод заменяется на ok fetched

git push

Удаляет строки прогресса remote: и строки назначения To ; ограничение 10 строк; пустой вывод заменяется на ok pushed

git log

Ограничение 20 строк

git status

Ограничение 20 строк

git show

Удаляет фрагменты патчей (заголовки @@ и строки диффа +/-); ограничение 200 строк

git commit

Удаляет вывод GPG-подписи и хука gitleaks; ограничение 10 строк; пустой вывод заменяется на ok committed

git diff

Удаляет ANSI-escape-последовательности; ограничение 100 строк; пустой вывод заменяется на ok (working tree clean)

git add

Удаляет вывод хука gitleaks; ограничение 5 строк; пустой вывод заменяется на ok staged

cargo build

Удаляет строки Compiling / Checking / Downloading / Fresh; пустой вывод заменяется на ok (build clean)

cargo test

Удаляет строки Compiling / Checking / Fresh

Локальные для проекта правила можно добавить в .aptu/filters.toml. Ошибки парсинга и нераспознанные значения schema_version (версия != 1) приводят к откату к встроенной таблице с предупреждением в журнале; сбоя не происходит. Когда фильтр срабатывает, filter_applied в structuredContent указывает, какое правило совпало.

Неинтерактивные пайплайны

В однопроходных сессиях субагентов кэши подсказок записываются, но никогда не переиспользуются. Бенчмарки показали, что ответы MCP записывают в кэш примерно в 2 раза больше, чем нативные рабочие процессы, что добавляет затраты без выигрыша в качестве. Установите DISABLE_PROMPT_CACHING=1 (или DISABLE_PROMPT_CACHING_HAIKU=1 для пайплайнов, специфичных для Haiku), чтобы избежать этих накладных расходов.

Собственные инструкции сервера описывают рекомендуемый 4-шаговый рабочий процесс для неизвестных репозиториев: осмотрите корень репозитория с помощью analyze_directory с max_depth=2, углубитесь в исходный пакет, выполните analyze_module на ключевых файлах для получения индекса функций/импортов (или analyze_file, когда нужны сигнатуры и типы), затем используйте analyze_symbol для трассировки графов вызовов. MCP-клиенты, которые отображают инструкции сервера, автоматически представят этот рабочий процесс агенту.

Переменные окружения

Кэш и среда выполнения

Переменная

По умолчанию

Описание

APTU_CODER_DIR_CACHE_CAPACITY

20

Размер LRU-кэша для результатов анализа каталогов.

APTU_CODER_DISK_CACHE_DIR

$XDG_DATA_HOME/aptu-coder/analysis-cache

Каталог для L2-кэша графов вызовов на диске, используемого analyze_symbol. Создаётся автоматически, если не существует.

APTU_CODER_DISK_CACHE_DISABLED

unset

Установите 1, чтобы полностью отключить L2-дисковый кэш.

APTU_CODER_FILE_CACHE_CAPACITY

100

Размер LRU-кэша для результатов анализа файлов.

APTU_CODER_METRICS_EXPORT_FILE

unset

Абсолютный путь для одноразового экспорта метрик JSONL при завершении работы.

APTU_CODER_PORT

unset

Порт для потокового HTTP-режима. Эквивалентно --port N; --port имеет приоритет. Если не задано и --port не передан, используется режим stdio.

APTU_CODER_BEARER_TOKEN

unset

Bearer-токен для аутентификации транспорта Streamable HTTP. Предупреждение записывается в журнал, если значение короче 32 символов.

APTU_SHELL

unset

Оболочка для exec_command. По умолчанию bash, затем /bin/sh.

Наблюдаемость

Схему JSONL, конфигурацию OTel и политику атрибутов спанов см. в:

Документация

  • AGENTS.md — Справочник для контрибьюторов: структура проекта, команды, подводные камни rmcp, ограничения параметров инструментов

  • ARCHITECTURE.md — Цели дизайна, карта модулей, поток данных, система обработчиков языков, стратегия кэширования

  • CONTRIBUTING.md — Процесс разработки, соглашения о коммитах, чек-лист PR

  • DESIGN-GUIDE.md — Дизайн-решения, обоснование и руководство по воспроизведению для создания высокопроизводительных MCP-серверов

  • MCP Best Practices — Лучшие практики для агентских циклов, паттернов оркестрации, дизайна MCP-инструментов, управления памятью и контроля безопасности

  • METRICS.md — Схема метрик, формат JSONL и политика хранения

  • ROADMAP.md — История разработки и будущие направления

  • SECURITY.md — Политика безопасности и отчёт об уязвимостях

Лицензия

Apache-2.0. Подробности см. в LICENSE.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A lightning-fast, language-agnostic code analysis MCP (Model Context Protocol) server built in Rust
    9
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A lightweight, zero-configuration MCP server for source code analysis with GraphRAG capabilities, enabling structural understanding and efficient code completion from MCP-compatible AI tools.
    38 PyPI
    14
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A persistent, tree-sitter-backed code knowledge cache MCP server that reduces token usage by storing parsed structure and enabling fast symbol lookup, inheritance graph, call graph, and semantic search.
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Universal MCP server that analyzes any codebase and provides structured context to AI assistants. Dynamic, accurate, and token-efficient.
    18
    7 npm
    MIT