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