Skip to main content
Glama

[!NOTE] Native Agent-Tools (Regex-Suche, Pfadabgleich, Dateilesen) eignen sich gut für gezielte Abfragen. aptu-coder übernimmt die mechanische, nicht-KI-Arbeit: Abbildung der Verzeichnisstruktur, Extrahieren von Symbolen und Nachverfolgen von Aufrufgraphen. Die Auslagerung an ein dediziertes Tool reduziert den Token-Verbrauch und beschleunigt die Programmierung mit besserer Genauigkeit.

Benchmarks

Auth-Migrationsaufgabe auf Claude Code gegen den Django-Quellbaum (Python). Vollständige Methodik.

Modus

Sonnet 4.6

Haiku 4.5

MCP

112k Tokens, $0.39

406k Tokens, $0.42

Nativ

276k Tokens, $0.95

473k Tokens, $0.53

Einsparungen

59% weniger Tokens, 59% günstiger

14% weniger Tokens, 21% günstiger

AeroDyn-Integrationsaudit-Aufgabe auf Claude Code gegen den OpenFAST-Quellbaum (Fortran). Vollständige Methodik.

Modus

Sonnet 4.6

Haiku 4.5

MCP

472k Tokens, $1.65

687k Tokens, $0.72

Nativ

877k Tokens, $2.85

2162k Tokens, $2.21

Einsparungen

46% weniger Tokens, 42% günstiger

68% weniger Tokens, 68% günstiger

Related MCP server: CodeGraphMCPServer

Übersicht

aptu-coder ist ein Model Context Protocol-Server, der KI-Agenten präzisen strukturellen Kontext über eine Codebasis liefert: Verzeichnisbäume, Symboldefinitionen und Aufrufgraphen, ohne rohe Dateien zu lesen. Es unterstützt 18 Sprachen (siehe Unterstützte Sprachen) und integriert sich in jeden MCP-kompatiblen Orchestrator.

Unterstützte Sprachen

Sprache

Erweiterungen

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

Installation

Homebrew (macOS und Linux)

brew install clouatre-labs/tap/aptu-coder

Aktualisierung: brew upgrade aptu-coder

cargo-binstall (kein Rust erforderlich)

cargo binstall aptu-coder

cargo install (erfordert Rust-Toolchain)

cargo install aptu-coder

Schnellstart

Aus dem Quellcode erstellen

cargo build --release

Die Binärdatei befindet sich unter target/release/aptu-coder.

MCP-Client konfigurieren

Es stehen zwei Transporte zur Verfügung. Streamable HTTP wird empfohlen, wenn Orchestratoren verwendet werden, die Delegaten erzeugen (z. B. goose coder): Ein einzelner Serverprozess wird zwischen dem Orchestrator und allen Agenten geteilt, wodurch die Erweiterungsdrift entfällt, die auftritt, wenn jeder stdio-Subprozess seine eigene isolierte Instanz erhält.

Streamable HTTP (empfohlen für Multi-Agent-Setups)

Mit Homebrew startet ein Befehl den Server beim Anmelden und hält ihn am Laufen:

brew services start aptu-coder

Die Homebrew-Formel startet den Server standardmäßig auf Port 49200. Fügen Sie dann die Erweiterung einmal zu ~/.config/goose/config.yaml hinzu:

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

Oder für Claude Code:

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

Um einen anderen Port zu verwenden, setzen Sie APTU_CODER_PORT vor dem Neustart:

APTU_CODER_PORT=4000 brew services restart aptu-coder

Um direkt ohne brew services zu starten:

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

stdio (Einzelclient-Nutzung)

Geeignet, wenn nur ein Prozess den Server benötigt. Der Client besitzt den Prozesslebenszyklus und startet ihn automatisch:

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

Oder fügen Sie manuell zu .mcp.json im Projektstamm hinzu (über Versionskontrolle mit Ihrem Team geteilt):

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

Werkzeuge

Alle optionalen Parameter können weggelassen werden. Gemeinsame optionale Parameter für analyze_directory, analyze_file und analyze_symbol:

Parameter

Typ

Standard

Beschreibung

summary

boolean

auto

Kompakte Ausgabe; automatische Auslösung über 50K Zeichen

cursor

string

--

Paginierungscursor aus der next_cursor-Antwort einer vorherigen Antwort

page_size

integer

100

Elemente pro Seite

Werkzeug

Zweck

Sprachen

analyze_directory

Verzeichnisbaum mit LOC-, Funktions- und Klassenanzahl; respektiert .gitignore

alle

analyze_file

Funktionen, Klassen und Importe mit Signaturen und Zeilenbereichen; gibt bei nicht unterstützten Erweiterungen einen eleganten Fallback zurück (Zeilenanzahl, Dateikopf, kein AST)

alle

analyze_module

Leichtgewichtiger Funktions- und Importindex (~75% kleiner als analyze_file); gibt bei nicht unterstützten Erweiterungen einen eleganten Fallback zurück (leerer Index mit Hinweis)

alle

analyze_symbol

Aufrufgraph für ein benanntes Symbol über ein Verzeichnis; Aufrufer, Aufgerufene, Aufruftiefe

alle

edit_overwrite

Datei erstellen oder überschreiben; erstellt übergeordnete Verzeichnisse

beliebige Datei

edit_replace

Ersetzt einen eindeutigen exakten Textblock oder alle nicht überlappenden Vorkommen (replace_all=true); Fehler bei null oder mehreren Übereinstimmungen; leeres new_text löscht den Block; CRLF wird vor dem Abgleich normalisiert; optionaler expected_content_hash (blake3-Hex der Rohbytes) lehnt veraltete Bearbeitungen ab; gleichzeitige Bearbeitungen derselben Datei werden pro Pfad serialisiert; gibt die Anzahl der ersetzten Vorkommen zurück

alle

exec_command

Führt einen Shell-Befehl aus; gibt stdout, stderr, Exit-Code zurück; Ausgabe begrenzt und gefiltert; optionale timeout_secs (Beenden bei Ablauf) und drain_timeout_secs (Nach-Exit-Drain-Fenster); heredoc wird vor dem Start abgelehnt (Dateischreibmuster, stdin-verbrauchendes Flag, stdin-Parameterkonflikt oder fehlendes schließendes Trennzeichen)

beliebig

Werkzeugparameter, Einschränkungen und Beispiele sind über den Tool-Inspektor Ihres MCP-Clients oder die tools/list-Antwort verfügbar.

MCP-Ressourcen

Die Wissensgraph-Funktion stellt MCP-Ressourcenvorlagen bereit, um den während analyze_symbol-Aufrufen erstellten Strukturgraphen zu navigieren. Ressourcen sind über URIs adressiert; verwenden Sie resources/templates/list, um verfügbare Vorlagen zu entdecken.

URI-Vorlage

Beschreibung

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

BFS-Traversierung von einem Symbol nach außen bis zur konfigurierbaren Tiefe (Standard: 3). Gibt Aufrufer-/Aufgerufene-Ketten in einem radialen Layout zurück.

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

Der vollständige Teilgraph (Aufrufer, Aufgerufene und ihre Verbindungen) für ein einzelnes Symbol.

Paginierung: Ergebnisse werden paginiert; übergeben Sie den undurchsichtigen cursor-Wert aus einer vorherigen Antwort, um die nächste Seite abzurufen.

Tiefenparameter: Die blast-radius-Vorlage akzeptiert einen optionalen depth-Abfrageparameter (Ganzzahl im Bereich 1-5, Standard 3).

Kalter Cache: Rufen Sie zuerst analyze_symbol für das Verzeichnis auf, um den Graphen zu erstellen. Ressourcen geben eine Informationsmeldung zurück, bis der Graph verfügbar ist.

Ausgabeverwaltung

Für große Codebasen verhindern mehrere Mechanismen einen Kontextüberlauf.

Paginierung

analyze_file und analyze_symbol fügen eine NEXT_CURSOR:-Zeile hinzu, wenn die Ausgabe abgeschnitten wird. Geben Sie das Token als cursor zurück, um die nächste Seite abzurufen. summary=true und cursor schließen sich gegenseitig aus; die Übergabe beider führt zu einem Fehler.

# Response ends with:
NEXT_CURSOR: eyJvZmZzZXQiOjUwfQ==

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

exec_command-Ausgabegrenzen

exec_command wendet drei unabhängige Byte-Grenzen an, um zu verhindern, dass große Befehlsausgaben den Kontext überfluten:

Stream

Cap

Verhalten

stdout

30,000 Zeichen

Enden-erhaltend; behält die letzten 30k Zeichen

stderr

10,000 Zeichen

Enden-erhaltend; Fehler erscheinen am Ende

kombiniertes output_text

50,000 Zeichen

Sicherheitsnetz nach der Verschachtelung

Die 30k-stdout-Grenze ist datengesteuert: Eine Analyse von 27,981 beobachteten exec_command-Aufrufen zeigt, dass nur 0,33% diese Grenze überschreiten. Wenn eine Grenze ausgelöst wird, wird output_truncated: true in der Antwort gesetzt und in den JSONL-Metriken aufgezeichnet.

drain_timeout_secs steuert, wie lange der Server nach dem Beenden des Kindprozesses auf einen Hintergrund-Subprozess wartet, der die Pipe noch offen hält. Standard ist 500 ms (0 oder weggelassen). Negative Werte geben INVALID_PARAMS zurück. Wenn das Drain-Fenster abläuft, bevor die Pipe geschlossen wird, wird output_truncated: true gesetzt.

exec_command Ausgabefilter

Eine eingebaute Filtertabelle unterdrückt dateibezogenes Rauschen von gesprächigen CLI-Tools, bevor die Ausgabe das Modell erreicht. Filter gelten nur für stdout, stderr und verschachtelte Ausgabe bei Erfolg; bei Fehlern wird die Rohausgabe immer beibehalten.

Command

Verhalten

git pull

Entfernt Diff-Stat-Rauschen (Pipe-Balken, create mode-, delete mode-, rename-, mode change-Zeilen); leere Ausgabe wird durch ok (up-to-date) ersetzt

git fetch

Entfernt From- und Ref-Bereichszeilen; begrenzt auf 10 Zeilen; leere Ausgabe wird durch ok fetched ersetzt

git push

Entfernt remote:-Fortschrittszeilen und To -Zielzeilen; begrenzt auf 10 Zeilen; leere Ausgabe wird durch ok pushed ersetzt

git log

Begrenzt auf 20 Zeilen

git status

Begrenzt auf 20 Zeilen

git show

Entfernt Patch-Hunks (@@-Kopfzeilen und +/--Diff-Zeilen); begrenzt auf 200 Zeilen

git commit

Entfernt GPG-Signierung und gitleaks-Hook-Ausgabe; begrenzt auf 10 Zeilen; leere Ausgabe wird durch ok committed ersetzt

git diff

Entfernt ANSI-Escape-Sequenzen; begrenzt auf 100 Zeilen; leere Ausgabe wird durch ok (working tree clean) ersetzt

git add

Entfernt gitleaks-Hook-Ausgabe; begrenzt auf 5 Zeilen; leere Ausgabe wird durch ok staged ersetzt

cargo build

Entfernt Compiling- / Checking- / Downloading- / Fresh-Zeilen; leere Ausgabe wird durch ok (build clean) ersetzt

cargo test

Entfernt Compiling- / Checking- / Fresh-Zeilen

Projektlokale Regeln können in .aptu/filters.toml hinzugefügt werden. Parse-Fehler und nicht erkannte schema_version-Werte (Version != 1) fallen mit einer protokollierten Warnung auf die eingebaute Tabelle zurück; es kommt zu keinem Absturz. Wenn ein Filter ausgelöst wird, identifiziert filter_applied in structuredContent, welche Regel zutraf.

Nicht-interaktive Pipelines

In Single-Pass-Subagent-Sitzungen werden Prompt-Caches geschrieben, aber nie wiederverwendet. Benchmarks zeigten, dass MCP-Antworten etwa 2x mehr in den Cache schreiben als reine native Workflows, was Kosten verursacht ohne Qualitätsgewinn. Setzen Sie DISABLE_PROMPT_CACHING=1 (oder DISABLE_PROMPT_CACHING_HAIKU=1 für Haiku-spezifische Pipelines), um diesen Overhead zu vermeiden.

Die eigenen Anweisungen des Servers legen einen 4-Schritte-Empfehlungs-Workflow für unbekannte Repositories offen: Untersuchen Sie das Repo-Root mit analyze_directory bei max_depth=2, tauchen Sie in das Quellpaket ein, führen Sie analyze_module auf Schlüsseldateien für einen Funktions-/Import-Index aus (oder analyze_file, wenn Signaturen und Typen benötigt werden), und verwenden Sie dann analyze_symbol, um Aufrufgraphen zu verfolgen. MCP-Clients, die Serveranweisungen anzeigen, präsentieren diesen Workflow automatisch dem Agenten.

Umgebungsvariablen

Cache und Laufzeit

Variable

Default

Beschreibung

APTU_CODER_DIR_CACHE_CAPACITY

20

LRU-Cache-Größe für Verzeichnisanalyse-Ergebnisse.

APTU_CODER_DISK_CACHE_DIR

$XDG_DATA_HOME/aptu-coder/analysis-cache

Verzeichnis für den L2-On-Disk-Call-Graph-Cache, der von analyze_symbol verwendet wird. Wird automatisch erstellt, falls es nicht existiert.

APTU_CODER_DISK_CACHE_DISABLED

unset

Setzen Sie auf 1, um den L2-Disk-Cache vollständig zu deaktivieren.

APTU_CODER_FILE_CACHE_CAPACITY

100

LRU-Cache-Größe für Dateianalyse-Ergebnisse.

APTU_CODER_METRICS_EXPORT_FILE

unset

Absoluter Pfad für einen einmaligen JSONL-Metrikenexport beim Herunterfahren.

APTU_CODER_PORT

unset

Port für den streamablen HTTP-Modus. Entspricht --port N; --port hat Vorrang. Wenn nicht gesetzt und --port nicht übergeben wird, wird der Stdio-Modus verwendet.

APTU_CODER_BEARER_TOKEN

unset

Bearer-Token für die Authentifizierung des Streamable-HTTP-Transports. Eine Warnung wird protokolliert, wenn der Wert weniger als 32 Zeichen hat.

APTU_SHELL

unset

Shell für exec_command. Standard ist bash, dann /bin/sh.

Beobachtbarkeit

Für das JSONL-Schema, die OTel-Konfiguration und die Span-Attribut-Richtlinie siehe:

Dokumentation

  • AGENTS.md - Referenz für Mitwirkende: Projektstruktur, Befehle, rmcp-Fallstricke, Tool-Parameter-Einschränkungen

  • ARCHITECTURE.md - Designziele, Modulkarte, Datenfluss, Sprach-Handler-System, Caching-Strategie

  • CONTRIBUTING.md - Entwicklungsworkflow, Commit-Konventionen, PR-Checkliste

  • DESIGN-GUIDE.md - Designentscheidungen, Begründung und Replikationsanleitung für den Bau leistungsstarker MCP-Server

  • MCP Best Practices - Best Practices für agentische Schleifen, Orchestrierungsmuster, MCP-Tool-Design, Speicherverwaltung und Sicherheitskontrollen

  • METRICS.md - Metrik-Schema, JSONL-Format und Aufbewahrungsrichtlinie

  • ROADMAP.md - Entwicklungsgeschichte und zukünftige Richtung

  • SECURITY.md - Sicherheitsrichtlinie und Meldung von Schwachstellen

Lizenz

Apache-2.0. Siehe LICENSE für Details.

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