aptu-coder: MCP server for AST analysis, call graphs, and code structure (tree-sitter)
- ✓Open-source license (Apache-2.0)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
git clone https://github.com/clouatre-labs/aptu-coder{
"mcpServers": {
"aptu-coder": {
"command": "aptu-coder"
}
}
}Resumen de MCP Servers
<p align="center">
<h1 align="center">aptu-coder</h1>
<p align="center">
<a href="https://crates.io/crates/aptu-coder"><img alt="crates.io" src="https://img.shields.io/crates/v/aptu-coder.svg?style=for-the-badge&color=fc8d62&logo=rust" height="20"></a>
<a href="https://slsa.dev"><img alt="SLSA Level 3" src="https://img.shields.io/badge/SLSA-Level%203-green?style=for-the-badge" height="20"></a>
<a href="https://www.bestpractices.dev/projects/12275"><img alt="OpenSSF Best Practices" src="https://img.shields.io/cii/level/12275?style=for-the-badge" height="20"></a>
</p>
<p align="center">A Model Context Protocol (MCP) code-intelligence server that gives AI coding agents pre-parsed symbol tables and call graphs instead of raw file bytes, cutting token usage by up to 59% (see <a href="#benchmarks">Benchmarks</a>). OpenSSF silver certified: fewer than 1% of open source projects reach this level.</p>
<!-- mcp-name: io.github.clouatre-labs/aptu-coder -->
> [!NOTE]
> Native agent tools (regex search, path matching, file reading) handle targeted lookups well. `aptu-coder` handles the mechanical, non-AI work: mapping directory structure, extracting symbols, and tracing call graphs, so a coding agent's context window is spent reasoning instead of re-deriving structure on every call.
Most code-intelligence tooling for AI agents indexes a codebase into a cloud embedding or vector store and retrieves by similarity search. aptu-coder instead parses the codebase into a structural graph on-device with tree-sitter and serves it locally over MCP: no source code leaves the machine, and retrieval is exact (symbol tables and call graphs) rather than approximate (nearest-neighbor similarity).
## Benchmarks
Auth migration task on Claude Code against [Django](https://github.com/django/django) (Python) source tree. [Full methodology](https://github.com/clouatre-labs/aptu-coder/blob/main/docs/benchmarks/v12/methodology.md).
| Mode | Sonnet 4.6 | Haiku 4.5 |
|---|---|---|
| MCP | 112k tokens, $0.39 | 406k tokens, $0.42 |
| Native | 276k tokens, $0.95 | 473k tokens, $0.53 |
| **Savings** | **59% fewer tokens, 59% cheaper** | **14% fewer tokens, 21% cheaper** |
AeroDyn integration audit task on Claude Code against [OpenFAST](https://github.com/OpenFAST/openfast) (Fortran) source tree. [Full methodology](https://github.com/clouatre-labs/aptu-coder/blob/main/docs/benchmarks/v13/methodology.md).
| Mode | Sonnet 4.6 | Haiku 4.5 |
|---|---|---|
| MCP | 472k tokens, $1.65 | 687k tokens, $0.72 |
| Native | 877k tokens, $2.85 | 2162k tokens, $2.21 |
| **Savings** | **46% fewer tokens, 42% cheaper** | **68% fewer tokens, 68% cheaper** |
## Overview
aptu-coder is a comprehension layer for coding agents: it gives an agent harness precise structural context about a codebase, directory trees, symbol definitions, and call graphs, without the agent reading raw files or re-deriving structure on every call. That prevents context starvation on large or unfamiliar codebases while keeping the result set small enough to fit the model's context window. It supports 18 languages (see [Supported Languages](#supported-languages)) and integrates with any MCP-compatible orchestrator.
Structural context is built once and reused: an on-disk cache keyed by blake3 content hashes keeps results correct across concurrent writes. The same structural graph backs the [Knowledge Graph](#knowledge-graph) resource surface below. For consumers that hold source text without an on-disk path, `aptu-coder-core` also exposes `analyze_str` as a public Rust library API (see [ARCHITECTURE.md](https://github.com/clouatre-labs/aptu-coder/blob/main/docs/ARCHITECTURE.md)).
Further reading on the design philosophy: [The Agentic SDLC Governance Stack](https://clouatre.ca/blog/ai-sdlc-governance-stack/), [Context Engineering for Multi-Agent Reliability](https://clouatre.ca/blog/context-engineering-multi-agent-reliability/), and [Orchestrating AI Agents: Subagent Architecture](https://clouatre.ca/blog/orchestrating-ai-agents-subagent-architecture/).
## Supported Languages
| Language | Extensions |
|----------|------------|
| 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 and Linux)
```bash
brew install clouatre-labs/tap/aptu-coder
```
Update: `brew upgrade aptu-coder`
### cargo-binstall (no Rust required)
```bash
cargo binstall aptu-coder
```
### cargo install (requires Rust toolchain)
```bash
cargo install aptu-coder
```
## Quick Start
### Build from source
```bash
cargo build --release
```
The binary is at `target/release/aptu-coder`.
### Configure MCP Client
Two transports are available. **Streamable HTTP is recommended** when using orchestrators that spawn delegates (e.g. goose coder): a single server process is shared across the orchestrator and all agents, eliminating extension-drift that occurs when each stdio subprocess gets its own isolated instance.
**Streamable HTTP (recommended for multi-agent setups)**
With Homebrew, one command starts the server on login and keeps it running:
```bash
brew services start aptu-coder
```
The Homebrew formula starts the server on port `49200` by default. Then add the extension once to `~/.config/goose/config.yaml`:
```yaml
extensions:
aptu-coder:
type: streamable_http
uri: http://127.0.0.1:49200/mcp
name: aptu-coder
timeout: 300
```
Or for Claude Code:
```bash
claude mcp add --transport http aptu-coder http://127.0.0.1:49200/mcp
```
To use a different port, set `APTU_CODER_PORT` before restarting:
```bash
APTU_CODER_PORT=4000 brew services restart aptu-coder
```
To start directly without brew services:
```bash
aptu-coder --port 49200
# or equivalently
APTU_CODER_PORT=49200 aptu-coder
```
**stdio (single-client use)**
Suitable when only one process needs the server. The client owns the process lifecycle and spawns it automatically:
```bash
claude mcp add --transport stdio aptu-coder -- aptu-coder
```
Or add manually to `.mcp.json` at your project root (shared with your team via version control):
```json
{
"mcpServers": {
"aptu-coder": {
"command": "aptu-coder",
"args": []
}
}
}
```
## Tools
All optional parameters may be omitted. Shared optional parameters for `analyze_directory`, `analyze_file`, and `analyze_symbol`:
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `summary` | boolean | auto | Compact output; auto-triggers above 50K chars |
| `cursor` | string | -- | Pagination cursor from a previous response's `next_cursor` |
Page size is server-owned; there is no client `page_size` parameter (passing one returns INVALID_PARAMS).
| Tool | Purpose | Languages |
|------|---------|-----------|
| `analyze_directory` | Directory tree with LOC, function, and class counts; respects `.gitignore` | all |
| `analyze_file` | Functions, classes, and imports with signatures and line ranges; returns graceful fallback (line count, file head, no AST) for unsupported extensions | all |
| `analyze_module` | Lightweight function and import index (~75% smaller than `analyze_file`); returns graceful fallback (empty index with note) for unsupported extensions | all |
| `analyze_symbol` | Call graph for a named symbol across a directory; callers, callees, call depth | all |
| `edit_overwrite` | Create or overwrite a file; creates parent directories | any file |
| `edit_replace` | Replace a unique exact text block or all non-overlapping occurrences (replace_all=true); errors if zero or multiple matches; empty `new_text` deletes the block; CRLF normalized before matching; optional expected_content_hash (blake3 hex of raw bytes) rejects stale edits; concurrent edits to the same file are serialized per-path; returns occurrences_replaced count. Batch form: pass `edits[]` (array of `{old_text, new_text, replace_all}`) instead of `old_text`/`new_text` to apply multiple replacements to one file atomically (any invalid edit aborts with per-index errors, no write) | all |
| `exec_command` | Run a shell command; returns stdout, stderr, exit code; output capped and filtered; the command is killed when the request is cancelled; server-owned post-exit drain window (500 ms default); heredoc rejected before spawn (file-write pattern, stdin-consuming flag, stdin parameter conflict, or missing closing delimiter) | any |
Tool parameters, constraints, and examples are available via your MCP client's tool inspector or `tools/list` response.
## Knowledge Graph
`analyze_symbol` builds a structural graph of the codebase as a side effect: files, symbols, and modules as nodes, connected by typed edges (`contains`, `calls`, `imports`). That graph is exposed to agents as MCP resource templates for navigating relationships beyond a single symbol's immediate call graph. Resources are URI-addressed; use `resources/templates/list` to discover available templates.
| URI Template | Description |
|---|---|
| `aptu-coder://graph/{repo_hash}/blast-radius/{symbol}?depth={depth}&format={format}` | BFS traversal from a symbol outward to configurable depth (default: 3). Returns caller/callee chains in a radial layout. |
| `aptu-coder://graph/{repo_hash}/subgraph/{symbol}?format={format}` | The full subgraph (callers, callees, and their connections) for a single symbol. |
| `aptu-coder://graph/{repo_hash}/blast-radius-bidirectional/{symbols}?max_nodes={max_nodes}&depth={depth}&format={format}` | Bidirectional BFS from one or more comma-separated seed symbols walking both callers and callees. |
**Pagination:Lo que la gente pregunta sobre aptu-coder
¿Qué es clouatre-labs/aptu-coder?
+
clouatre-labs/aptu-coder es mcp servers para el ecosistema de Claude AI. aptu-coder: MCP server for AST analysis, call graphs, and code structure (tree-sitter) Tiene 6 estrellas en GitHub y su última actualización registrada es del 2026-09-17.
¿Cómo se instala aptu-coder?
+
Puedes instalar aptu-coder clonando el repositorio (https://github.com/clouatre-labs/aptu-coder) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.
¿Es seguro usar clouatre-labs/aptu-coder?
+
Nuestro agente de seguridad ha analizado clouatre-labs/aptu-coder y le ha asignado un Trust Score de 95/100 (tier: Verified). Revisa el desglose completo de comprobaciones superadas y flags en esta página.
¿Quién mantiene clouatre-labs/aptu-coder?
+
clouatre-labs/aptu-coder es mantenido por clouatre-labs. La última actividad registrada en GitHub es del 2026-09-17, con 5 issues abiertos.
¿Hay alternativas a aptu-coder?
+
Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.
Despliega aptu-coder en tu cloud
Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.
¿Mantienes este repo? Añade un badge a tu README
Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.
[](https://claudewave.com/repo/clouatre-labs-aptu-coder)<a href="https://claudewave.com/repo/clouatre-labs-aptu-coder"><img src="https://claudewave.com/api/badge/clouatre-labs-aptu-coder" alt="Featured on ClaudeWave: clouatre-labs/aptu-coder" width="320" height="64" /></a>Más MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ
The fastest path to AI-powered full stack observability, even for lean teams.