Skip to main content
Glama

[!NOTE] 네이티브 에이전트 도구(정규식 검색, 경로 매칭, 파일 읽기)는 특정 대상을 찾는 조회에 적합합니다. aptu-coder는 기계적이고 AI가 아닌 작업, 즉 디렉터리 구조 매핑, 심볼 추출, 호출 그래프 추적을 처리합니다. 이 작업을 전용 도구에 오프로드하면 토큰 사용량이 줄어들고 정확도가 높아져 코딩 속도가 빨라집니다.

벤치마크

Django(Python) 소스 트리를 대상으로 한 Claude Code의 인증 마이그레이션 작업. 전체 방법론.

모드

Sonnet 4.6

Haiku 4.5

MCP

112k 토큰, $0.39

406k 토큰, $0.42

네이티브

276k 토큰, $0.95

473k 토큰, $0.53

절감

토큰 59% 감소, 비용 59% 절감

토큰 14% 감소, 비용 21% 절감

OpenFAST(Fortran) 소스 트리를 대상으로 한 Claude Code의 AeroDyn 통합 감사 작업. 전체 방법론.

모드

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는 AI 에이전트에게 코드베이스의 정확한 구조적 맥락, 즉 디렉터리 트리, 심볼 정의, 호출 그래프를 원시 파일을 읽지 않고 제공하는 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

LOC, 함수, 클래스 수가 포함된 디렉터리 트리; .gitignore 존중

전체

analyze_file

시그니처와 줄 범위가 포함된 함수, 클래스, 임포트; 지원되지 않는 확장자의 경우 우아한 폴백(줄 수, 파일 헤드, AST 없음) 반환

전체

analyze_module

경량 함수 및 임포트 인덱스(analyze_file보다 약 75% 작음); 지원되지 않는 확장자의 경우 우아한 폴백(참고 사항이 포함된 빈 인덱스) 반환

전체

analyze_symbol

디렉터리 전체에서 명명된 심볼의 호출 그래프; 호출자, 피호출자, 호출 깊이

전체

edit_overwrite

파일 생성 또는 덮어쓰기; 상위 디렉터리 생성

모든 파일

edit_replace

고유한 정확한 텍스트 블록 또는 모든 비중첩 항목 교체(replace_all=true); 일치 항목이 0개 또는 여러 개면 오류 발생; 빈 new_text는 블록 삭제; 매칭 전 CRLF 정규화; 선택적 expected_content_hash(원시 바이트의 blake3 16진수)는 오래된 편집 거부; 동일 파일에 대한 동시 편집은 경로별로 직렬화; occurrences_replaced 수 반환

전체

exec_command

셸 명령 실행; stdout, stderr, 종료 코드 반환; 출력 상한 및 필터링; 선택적 timeout_secs(만료 시 종료) 및 drain_timeout_secs(종료 후 드레인 창); heredoc은 생성 전에 거부(파일 쓰기 패턴, stdin 소비 플래그, stdin 매개변수 충돌 또는 닫는 구분자 누락)

모든 것

도구 매개변수, 제약 조건 및 예시는 MCP 클라이언트의 도구 검사기 또는 tools/list 응답에서 확인할 수 있습니다.

MCP 리소스

지식 그래프 기능은 analyze_symbol 호출 중에 구축된 구조적 그래프를 탐색하기 위한 MCP 리소스 템플릿을 노출합니다. 리소스는 URI 주소로 지정됩니다. 사용 가능한 템플릿을 찾으려면 resources/templates/list를 사용하세요.

URI 템플릿

설명

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

심볼에서 바깥쪽으로 구성 가능한 깊이(기본값: 3)까지의 BFS 탐색. 방사형 레이아웃으로 호출자/피호출자 체인 반환.

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자

꼬리 보존; 오류는 끝에 표시

결합된 output_text

50,000자

인터리빙 후 안전망

30k stdout 상한은 데이터 기반입니다: 관찰된 27,981건의 exec_command 호출 분석 결과 0.33%만이 이 한도를 초과합니다. 어떤 상한이 발동되면 응답에 output_truncated: true가 설정되고 JSONL 메트릭에 기록됩니다.

drain_timeout_secs는 자식 프로세스가 종료된 후에도 파이프를 계속 잡고 있는 백그라운드 서브프로세스가 있는 경우 서버가 얼마나 오래 기다릴지를 제어합니다. 기본값은 500ms입니다(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 및 ref-range 줄 제거; 10줄로 상한; 빈 출력은 ok fetched로 대체

git push

remote: 진행 줄 및 To 대상 줄 제거; 10줄로 상한; 빈 출력은 ok pushed로 대체

git log

20줄로 상한

git status

20줄로 상한

git show

패치 헝크(@@ 헤더 및 +/- diff 줄) 제거; 200줄로 상한

git commit

GPG 서명 및 gitleaks 훅 출력 제거; 10줄로 상한; 빈 출력은 ok committed로 대체

git diff

ANSI 이스케이프 시퀀스 제거; 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 값(version != 1)은 경고를 기록한 후 내장 테이블로 폴백되며 충돌이 발생하지 않습니다. 필터가 발동되면 structuredContent의 filter_applied가 어떤 규칙이 일치했는지 식별합니다.

비대화형 파이프라인

단일 패스 서브에이전트 세션에서는 프롬프트 캐시가 기록되지만 재사용되지 않습니다. 벤치마크에 따르면 MCP 응답은 네이티브 전용 워크플로보다 캐시에 약 2배 더 많이 기록하여 품질 향상 없이 비용만 추가했습니다. DISABLE_PROMPT_CACHING=1(또는 Haiku 전용 파이프라인의 경우 DISABLE_PROMPT_CACHING_HAIKU=1)을 설정하여 이러한 오버헤드를 방지하세요.

서버 자체 지침은 알 수 없는 저장소에 대한 4단계 권장 워크플로를 제시합니다: max_depth=2로 analyze_directory를 사용하여 저장소 루트를 조사하고, 소스 패키지로 파고들어 핵심 파일에 대해 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

analyze_symbol이 사용하는 L2 온디스크 호출 그래프 캐시 디렉터리. 존재하지 않으면 자동으로 생성됩니다.

APTU_CODER_DISK_CACHE_DISABLED

설정 안 됨

1로 설정하면 L2 디스크 캐시를 완전히 비활성화합니다.

APTU_CODER_FILE_CACHE_CAPACITY

100

파일 분석 결과용 LRU 캐시 크기.

APTU_CODER_METRICS_EXPORT_FILE

설정 안 됨

종료 시 일회성 JSONL 메트릭 내보내기를 위한 절대 경로.

APTU_CODER_PORT

설정 안 됨

스트리밍 가능한 HTTP 모드용 포트. --port N과 동일합니다. --port가 우선합니다. 설정되지 않고 --port도 전달되지 않으면 stdio 모드가 사용됩니다.

APTU_CODER_BEARER_TOKEN

설정 안 됨

Streamable HTTP 전송 인증용 Bearer 토큰. 값이 32자 미만이면 경고가 기록됩니다.

APTU_SHELL

설정 안 됨

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