Skip to main content
Glama
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. Offloading this to a dedicated tool reduces token usage and speeds up coding with better accuracy.

Benchmarks

Auth migration task on Claude Code against Django (Python) source tree. Full methodology.

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 (Fortran) source tree. Full methodology.

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

Related MCP server: CodeGraphMCPServer

Overview

aptu-coder is a Model Context Protocol server that gives AI agents precise structural context about a codebase: directory trees, symbol definitions, and call graphs, without reading raw files. It supports Rust, Python, Go, Java, Kotlin, TypeScript, TSX, Fortran, JavaScript, C/C++, and C#, and integrates with any MCP-compatible orchestrator.

Supported Languages

All languages are enabled by default. Disable individual languages at compile time via Cargo feature flags.

Language

Extensions

Feature flag

Rust

.rs

lang-rust

Python

.py

lang-python

TypeScript

.ts

lang-typescript

TSX

.tsx

lang-tsx

Go

.go

lang-go

Java

.java

lang-java

Kotlin

.kt, .kts

lang-kotlin

Fortran

.f, .f77, .f90, .f95, .f03, .f08, .for, .ftn

lang-fortran

JavaScript

.js, .mjs, .cjs

lang-javascript

C

.c

lang-cpp

C++

.cc, .cpp, .cxx, .h, .hpp, .hxx

lang-cpp

C#

.cs

lang-csharp

To build with a subset of languages, disable default features and opt in:

[dependencies]
aptu-coder-core = { version = "*", default-features = false, features = ["lang-rust", "lang-python"] }

The current version is published on crates.io. Replace "*" with the latest version string if you prefer a pinned dependency.

Installation

Homebrew (macOS and Linux)

brew install clouatre-labs/tap/aptu-coder

Update: brew upgrade aptu-coder

cargo-binstall (no Rust required)

cargo binstall aptu-coder

cargo install (requires Rust toolchain)

cargo install aptu-coder

Quick Start

Build from source

cargo build --release

The binary is at target/release/aptu-coder.

Configure MCP Client

After installation via brew or cargo, register with the Claude Code CLI:

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

If you built from source, use the binary path directly:

claude mcp add --transport stdio aptu-coder -- /path/to/repo/target/release/aptu-coder

stdio is intentional: this server runs locally and processes files directly on disk. The low-latency, zero-network-overhead transport matches the use case. Streamable HTTP adds a network hop with no benefit for a local tool.

Or add manually to .mcp.json at your project root (shared with your team via version control):

{
  "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

integer

100

Items per page

force

boolean

false

Bypass output size warning

verbose

boolean

false

Full output with section headers and imports

summary=true and cursor are mutually exclusive. Passing both returns an error.

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

all

analyze_module

Lightweight function and import index (~75% smaller than analyze_file)

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; errors if zero or multiple matches

all

exec_command

Run a shell command; returns stdout, stderr, exit code, and timeout status; supports progress notifications

any

Tool parameters, constraints, and examples are available via your MCP client's tool inspector or tools/list response.

Output Management

For large codebases, two mechanisms prevent context overflow:

Pagination

analyze_file and analyze_symbol append a NEXT_CURSOR: line when output is truncated. Pass the token back as cursor to fetch the next page. summary=true and cursor are mutually exclusive; passing both returns an error.

# Response ends with:
NEXT_CURSOR: eyJvZmZzZXQiOjUwfQ==

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

Summary Mode

When output exceeds 50K chars, the server auto-compacts results using aggregate statistics. Override with summary: true (force compact) or summary: false (disable).

# Force summary for large project
analyze_directory path: /huge/codebase summary: true

# Disable summary (get full details, may be large)
analyze_directory path: /project summary: false

Non-Interactive Pipelines

In single-pass subagent sessions, prompt caches are written but never reused. Benchmarks showed MCP responses writing ~2x more to cache than native-only workflows, adding cost with no quality gain. Set DISABLE_PROMPT_CACHING=1 (or DISABLE_PROMPT_CACHING_HAIKU=1 for Haiku-specific pipelines) to avoid this overhead.

The server's own instructions expose a 4-step recommended workflow for unknown repositories: survey the repo root with analyze_directory at max_depth=2, drill into the source package, run analyze_module on key files for a function/import index (or analyze_file when signatures and types are needed), then use analyze_symbol to trace call graphs. MCP clients that surface server instructions will present this workflow automatically to the agent.

Environment Variables

Variable

Default

Description

CODE_ANALYZE_FILE_CACHE_CAPACITY

100

Maximum number of file-analysis results held in the in-process LRU cache. Increase for large repos where many files are queried repeatedly.

CODE_ANALYZE_DIR_CACHE_CAPACITY

20

Maximum number of directory-analysis results held in the in-process LRU cache.

DISABLE_PROMPT_CACHING

unset

Set to 1 to disable prompt caching (recommended for single-pass subagent sessions).

DISABLE_PROMPT_CACHING_HAIKU

unset

Set to 1 to disable prompt caching for Haiku-specific pipelines only.

APTU_SHELL

unset

Shell used by exec_command. Defaults to bash (PATH search) then /bin/sh. Override to use a different shell.

APTU_CODER_PROFILE

unset

Tool subset profile. edit enables only edit tools and exec_command; analyze enables only analyze tools and exec_command; unknown values leave all tools enabled. Can also be set per-session via io.clouatre-labs/profile in the MCP _meta field.

APTU_CODER_EXEC_CACHE_TTL_SECS

10

TTL in seconds for exec_command result caching. Increase for stable, slow commands.

APTU_CODER_EXEC_CACHE_CAPACITY

64

Maximum number of cached exec_command results held in memory.

APTU_CODER_METRICS_EXPORT_FILE

unset

Absolute path for a one-shot JSONL metrics export written on server shutdown. Relative paths are ignored.

Observability

All seven tools emit metrics to daily-rotated JSONL files at $XDG_DATA_HOME/aptu-coder/ (fallback: ~/.local/share/aptu-coder/). Each record captures tool name, duration, output size, and result status. Files are retained for 30 days. See docs/OBSERVABILITY.md for the full schema.

Documentation

  • ARCHITECTURE.md - Design goals, module map, data flow, language handler system, caching strategy

  • MCP Best Practices - Best practices for agentic loops, orchestration patterns, MCP tool design, memory management, and safety controls

  • OBSERVABILITY.md - Metrics schema, JSONL format, and retention policy

  • ROADMAP.md - Development history and future direction

  • DESIGN-GUIDE.md - Design decisions, rationale, and replication guide for building high-performance MCP servers

  • CONTRIBUTING.md - Development workflow, commit conventions, PR checklist

  • SECURITY.md - Security policy and vulnerability reporting

License

Apache-2.0. See LICENSE for details.

A
license - permissive license
-
quality - not tested
A
maintenance

Maintenance

Maintainers
2hResponse time
1dRelease cycle
90Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    C
    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.
    12
    MIT
  • A
    license
    -
    quality
    B
    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
    -
    quality
    C
    maintenance
    Universal MCP server that analyzes any codebase and provides structured context to AI assistants. Dynamic, accurate, and token-efficient.
    19
    MIT

View all related MCP servers

Related MCP Connectors

  • Hosted MCP server for structured code review passes on human- and AI-written code. Free tier.

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…

  • An MCP server that gives your AI access to the source code and docs of all public github repos

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/clouatre-labs/aptu-coder'

If you have feedback or need assistance with the MCP directory API, please join our Discord server