Skip to main content
Glama
Xayan

ast-outline-mcp

by Xayan
README.md
# ast-outline-mcp

An MCP (Model Context Protocol) server for [ast-outline](https://github.com/ast-outline/ast-outline) — a tree-sitter-based CLI that lets AI coding agents pull exactly what they need from a codebase: structural outlines, module digests, symbol bodies, and AST-aware grep.

## Why

LLM coding agents explore codebases by reading files directly. A 1200-line file costs 1200 lines of context just to answer "what methods are in here?" — `ast-outline` provides the file's shape in 60–100 lines, and this MCP server exposes that functionality to any MCP-compatible client.

## Prerequisites

- Node.js >= 18
- `ast-outline` CLI installed and available on PATH ([installation guide](https://github.com/ast-outline/ast-outline#install))

```bash
uv tool install ast-outline
```

## Installation

### Run via npx (no install needed)

```bash
npx ast-outline-mcp
```

### Install globally

```bash
npm install -g ast-outline-mcp
ast-outline-mcp
```

### MCP Client Configuration

Add to your MCP client config (e.g., Claude Desktop):

```json
{
  "mcpServers": {
    "ast-outline": {
      "command": "npx",
      "args": ["ast-outline-mcp"]
    }
  }
}
```

## Tools

### `digest`

Get a compact one-page module map of a directory. Each file gets a size label and token estimate. Recommended for initial overview of a codebase.

**Parameters:**
- `path` (string, required) — Directory path to digest

### `outline`

Get a structural outline of one or more files or directories. Returns signatures with line ranges (no bodies).

**Parameters:**
- `path` (string, required) — File or directory path to outline
- `imports` (boolean) — Include import/use/using statements
- `noPrivate` (boolean) — Exclude private members
- `noFields` (boolean) — Exclude fields/properties
- `noDocs` (boolean) — Exclude documentation comments
- `noAttrs` (boolean) — Exclude attributes/decorators

### `show`

Extract the full source body of one or more symbols from a file.

**Parameters:**
- `file` (string, required) — File path to extract symbols from
- `symbols` (string[], required) — Symbol names to extract
- `signature` (boolean) — Return header/signature only, no body

### `grep`

AST-aware structural search across files. Matches grouped by enclosing class/function.

**Parameters:**
- `pattern` (string, required) — Search pattern (literal or regex, auto-detected)
- `path` (string, required) — File or directory path to search
- `kind` (enum: def|call|ref|import) — Narrow results by classification kind
- `wordMatch` (boolean) — Match whole words only
- `caseInsensitive` (boolean) — Case-insensitive matching
- `filesOnly` (boolean) — List matching files only
- `count` (boolean) — Show match counts per file
- `maxCount` (number) — Maximum number of matches per file

## Prompts

### `explore-codebase`

A prompt that guides an LLM to efficiently explore a codebase using ast-outline tools.

## Development

```bash
npm install
npm test
npm run build
```

## Supported Languages

ast-outline supports 20+ languages including TypeScript, Python, Go, Rust, C#, Java, Kotlin, Ruby, PHP, and more. See the [full list](https://github.com/ast-outline/ast-outline#supported-languages).

## License

MIT

TDQS

A4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clear and distinct purpose: digest for module overview, grep for structured search, outline for structural listing, and show for code extraction. No overlap in functionality.

Naming Consistency5/5

All tool names are single-word lowercase verbs (digest, grep, outline, show), following a consistent and predictable pattern.

Tool Count5/5

With 4 tools, the set is well-scoped for an AST server. Each tool covers a core operation without redundancy or excess.

Completeness4/5

The tools cover key AST reading operations: overview, search, structure, and extraction. Minor gaps like documentation retrieval are acceptable for the domain.

Maintenance

ActivityInactive
ResponsivenessNo issues