https://github.com/febalist/code-tree
A CLI tool and MCP server for quickly exploring project structure and codebase
https://github.com/febalist/code-tree
ast cli code codebase mcp tree
Last synced: about 1 month ago
JSON representation
A CLI tool and MCP server for quickly exploring project structure and codebase
- Host: GitHub
- URL: https://github.com/febalist/code-tree
- Owner: febalist
- License: isc
- Created: 2026-02-07T11:57:25.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-02-07T16:32:10.000Z (about 2 months ago)
- Last Synced: 2026-02-08T00:10:19.971Z (about 2 months ago)
- Topics: ast, cli, code, codebase, mcp, tree
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/@febalist/code-tree
- Size: 106 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# code-tree
[](https://www.npmjs.com/package/@febalist/code-tree)
[](https://github.com/febalist/code-tree/actions/workflows/ci.yml)
A CLI tool and MCP server for quickly exploring project structure and codebase.
**Requirements:** Bun
## Features
- 🌳 Directory structure scanning (like `tree`)
- 🔍 Code symbol extraction: classes, functions, interfaces, types
- 📝 Doc comment support
- 🚀 Accurate AST parsing via Tree-sitter (WASM)
- 🎯 10+ programming languages + Markdown
- ⚡ Automatic output optimization
## Installation
```bash
# Global installation
bun add -g @febalist/code-tree
# Or use with bunx (no installation needed)
bunx @febalist/code-tree .
```
## Usage
```bash
# Scan current directory
code-tree .
# Scan specific directory
code-tree src/
# Parse specific file
code-tree src/index.ts
# Multiple paths
code-tree src/ lib/
# With options
code-tree --depth 2 --no-symbols .
code-tree --ignore "*.test.ts" --ignore "*.spec.ts" src/
# Help
code-tree --help
```
## Parameters
- **Positional arguments**: Paths to directories or files (default: `.`)
- `--depth `: Maximum traversal depth (default: 10)
- `--symbols` / `--no-symbols`: Include/exclude code symbols (default: auto)
- `--comments` / `--no-comments`: Include/exclude doc comments (default: auto)
- `--ignore `: Additional ignore patterns (repeatable)
## Output Examples
**Directory with symbols:**
```
src/
├── index.ts
│ async run(args)
├── parser/
│ ├── index.ts
│ │ class ParserManager
│ │ async init()
│ │ private async loadLanguage(config: LanguageConfig): Promise
│ │ async parseFile(filePath: string): Promise
│ └── types.ts
│ type SymbolKind
│ interface CodeSymbol
│ interface FileSymbols
```
**File with detailed breakdown:**
```
src/parser/index.ts
class ParserManager
async init()
locateFile()
private async loadLanguage(config: LanguageConfig): Promise
async parseFile(filePath: string): Promise
```
## Supported Languages
- TypeScript (.ts, .tsx)
- JavaScript (.js, .jsx, .mjs, .cjs)
- Python (.py, .pyw)
- Go (.go)
- PHP (.php)
- Rust (.rs)
- Java (.java)
- C# (.cs)
- Ruby (.rb)
- Kotlin (.kt, .kts)
- Swift (.swift)
- C/C++ (.c, .h, .cpp, .hpp, .cc, .cxx, .hh, .hxx)
- Markdown (.md, .mdx)
## File Ignoring
Automatically ignored:
- `.git`, `.svn`, `.hg`, `.DS_Store` (always)
- `node_modules`, `vendor`, `dist`, `build`, `__pycache__`, `venv`, `target`, `bin`, `obj`, `coverage`
- Patterns from `.gitignore`
- Custom patterns via `--ignore` parameter
## MCP Server
`code-tree` also provides an MCP (Model Context Protocol) server for integration with LLM clients like Claude Code.
The MCP server exposes the same capabilities and parameters as the CLI.
### Integration Example
Add to Claude Code MCP configuration:
```json
{
"mcpServers": {
"code-tree": {
"command": "bunx",
"args": ["@febalist/code-tree", "mcp"]
}
}
}
```