code-analyze-mcp
[!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 |
|
C/C++ |
|
C# |
|
CSS |
|
Fortran |
|
Go |
|
HTML |
|
Java |
|
JavaScript |
|
JSON |
|
Kotlin |
|
Markdown |
|
Python |
|
Rust |
|
TOML |
|
TSX |
|
TypeScript |
|
YAML |
|
Installation
Homebrew (macOS und Linux)
brew install clouatre-labs/tap/aptu-coderAktualisierung: brew upgrade aptu-coder
cargo-binstall (kein Rust erforderlich)
cargo binstall aptu-codercargo install (erfordert Rust-Toolchain)
cargo install aptu-coderSchnellstart
Aus dem Quellcode erstellen
cargo build --releaseDie 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-coderDie 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: 300Oder für Claude Code:
claude mcp add --transport http aptu-coder http://127.0.0.1:49200/mcpUm einen anderen Port zu verwenden, setzen Sie APTU_CODER_PORT vor dem Neustart:
APTU_CODER_PORT=4000 brew services restart aptu-coderUm direkt ohne brew services zu starten:
aptu-coder --port 49200
# or equivalently
APTU_CODER_PORT=49200 aptu-coderstdio (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-coderOder 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 |
| boolean | auto | Kompakte Ausgabe; automatische Auslösung über 50K Zeichen |
| string | -- | Paginierungscursor aus der |
| integer | 100 | Elemente pro Seite |
Werkzeug | Zweck | Sprachen |
| Verzeichnisbaum mit LOC-, Funktions- und Klassenanzahl; respektiert | alle |
| Funktionen, Klassen und Importe mit Signaturen und Zeilenbereichen; gibt bei nicht unterstützten Erweiterungen einen eleganten Fallback zurück (Zeilenanzahl, Dateikopf, kein AST) | alle |
| Leichtgewichtiger Funktions- und Importindex (~75% kleiner als | alle |
| Aufrufgraph für ein benanntes Symbol über ein Verzeichnis; Aufrufer, Aufgerufene, Aufruftiefe | alle |
| Datei erstellen oder überschreiben; erstellt übergeordnete Verzeichnisse | beliebige Datei |
| Ersetzt einen eindeutigen exakten Textblock oder alle nicht überlappenden Vorkommen (replace_all=true); Fehler bei null oder mehreren Übereinstimmungen; leeres | alle |
| Führt einen Shell-Befehl aus; gibt stdout, stderr, Exit-Code zurück; Ausgabe begrenzt und gefiltert; optionale | 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 |
| BFS-Traversierung von einem Symbol nach außen bis zur konfigurierbaren Tiefe (Standard: 3). Gibt Aufrufer-/Aufgerufene-Ketten in einem radialen Layout zurück. |
| 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 | 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 |
| Entfernt Diff-Stat-Rauschen (Pipe-Balken, |
| Entfernt |
| Entfernt |
| Begrenzt auf 20 Zeilen |
| Begrenzt auf 20 Zeilen |
| Entfernt Patch-Hunks ( |
| Entfernt GPG-Signierung und gitleaks-Hook-Ausgabe; begrenzt auf 10 Zeilen; leere Ausgabe wird durch |
| Entfernt ANSI-Escape-Sequenzen; begrenzt auf 100 Zeilen; leere Ausgabe wird durch |
| Entfernt gitleaks-Hook-Ausgabe; begrenzt auf 5 Zeilen; leere Ausgabe wird durch |
| Entfernt |
| Entfernt |
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 |
|
| LRU-Cache-Größe für Verzeichnisanalyse-Ergebnisse. |
|
| Verzeichnis für den L2-On-Disk-Call-Graph-Cache, der von |
| unset | Setzen Sie auf |
|
| LRU-Cache-Größe für Dateianalyse-Ergebnisse. |
| unset | Absoluter Pfad für einen einmaligen JSONL-Metrikenexport beim Herunterfahren. |
| unset | Port für den streamablen HTTP-Modus. Entspricht |
| unset | Bearer-Token für die Authentifizierung des Streamable-HTTP-Transports. Eine Warnung wird protokolliert, wenn der Wert weniger als 32 Zeichen hat. |
| unset | Shell für |
Beobachtbarkeit
Für das JSONL-Schema, die OTel-Konfiguration und die Span-Attribut-Richtlinie siehe:
OBSERVABILITY.md (Repository-Root)
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.
This server cannot be deployed
Maintenance
Related MCP Connectors
Repository knowledge graph MCP server for codebase understanding and debugging.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA lightning-fast, language-agnostic code analysis MCP (Model Context Protocol) server built in Rust9-
- AlicenseNot gradedqualityDmaintenanceA 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 PyPI14MIT
- AlicenseNot gradedqualityDmaintenanceA 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.1MIT
- AlicenseAqualityDmaintenanceUniversal MCP server that analyzes any codebase and provides structured context to AI assistants. Dynamic, accurate, and token-efficient.187 npmMIT