Skip to main content
Glama

[!NOTE] ネイティブエージェントツール(正規表現検索、パス一致、ファイル読み取り)は、対象を絞った検索に適しています。aptu-coder は、ディレクトリ構造のマッピング、シンボルの抽出、コールグラフのトレースといった、機械的で AI を必要としない作業を処理します。この作業を専用ツールにオフロードすることで、トークン使用量を削減し、より高い精度でコーディングを高速化できます。

ベンチマーク

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% 削減

Claude Code 上での OpenFAST(Fortran)ソースツリーに対する 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 クライアントの設定

2 つのトランスポートが利用可能です。デリゲートを生成するオーケストレーター(例: goose coder)を使用する場合は、Streamable HTTP が推奨されます。単一のサーバープロセスがオーケストレーターとすべてのエージェント間で共有され、各 stdio サブプロセスが独自の分離インスタンスを取得する際に発生する拡張機能のドリフトを排除します。

Streamable HTTP(マルチエージェント構成に推奨)

Homebrew を使用すると、1 つのコマンドでログイン時にサーバーが起動し、実行し続けます:

brew services start aptu-coder

Homebrew フォーミュラはデフォルトでポート 49200 でサーバーを起動します。次に、拡張機能を ~/.config/goose/config.yaml に 1 回追加します:

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(シングルクライアント使用)

サーバーを必要とするプロセスが 1 つだけの場合に適しています。クライアントがプロセスのライフサイクルを所有し、自動的に起動します:

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

1 ページあたりの項目数

ツール

目的

言語

analyze_directory

LOC、関数、クラス数を含むディレクトリツリー。.gitignore を尊重

すべて

analyze_file

シグネチャと行範囲を含む関数、クラス、インポート。サポートされていない拡張子にはグレースフルフォールバック(行数、ファイル先頭、AST なし)を返す

すべて

analyze_module

軽量な関数とインポートのインデックス(analyze_file より約 75% 小さい)。サポートされていない拡張子にはグレースフルフォールバック(注記付きの空のインデックス)を返す

すべて

analyze_symbol

ディレクトリ全体にわたる指定シンボルのコールグラフ。呼び出し元、呼び出し先、呼び出し深度

すべて

edit_overwrite

ファイルを作成または上書き。親ディレクトリを作成

任意のファイル

edit_replace

一意の正確なテキストブロック、またはすべての重複しない出現箇所を置換(replace_all=true)。ゼロまたは複数の一致がある場合はエラー。空の new_text はブロックを削除。CRLF はマッチング前に正規化。オプションの expected_content_hash(生バイトの blake3 ハッシュ)は古い編集を拒否。同じファイルへの同時編集はパスごとに直列化。occurrences_replaced 数を返す

すべて

exec_command

シェルコマンドを実行。stdout、stderr、終了コードを返す。出力は上限付きでフィルタリング。オプションの timeout_secs(期限切れで強制終了)と drain_timeout_secs(終了後のドレインウィンドウ)。ヒアドキュメントは生成前に拒否(ファイル書き込みパターン、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 は、大きなコマンド出力がコンテキストを圧迫しないよう、3つの独立したバイトレベルの上限を適用します:

ストリーム

上限

動作

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トランスポート認証用のベアラートークン。値が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