| name | insight |
| description | Understand code in one call. Structure, relationships, history - all at once. |
| allowed-tools | mcp__insight__insight, mcp__insight__suggest_refactoring |
insight
One call to understand anything. No more 5+ tool calls to figure out what a file does.
First: insight
insight({ target: 'src/TaskRunner.ts' })
Returns everything you need:
- Structure (symbols, imports, exports)
- Relationships (callers, callees, dependencies)
- Recent changes (git history)
- Metrics and notes
Why This Wins
| The Problem | Multiple Tools | insight Solution |
|---|---|---|
| Understand a file | list_symbols + get_imports + git_log + ... | One insight call |
| Understand a class | read_symbol + get_callers + find_references + ... | One insight call |
| Understand a module | Read each file + trace dependencies + ... | One insight call |
What You Get
For a File
- Language and summary
- All symbols with kinds and lines
- Imports and exports
- Who imports this file
- Recent git changes
- Complexity metrics
- Notes (warnings, suggestions)
For a Directory
- Summary of the module
- Files and subdirectories
- Entry points (index files)
- Key exported symbols
- External and internal dependencies
- Recent changes across all files
For a Symbol
- Kind, file, line
- Code (truncated for large symbols >50 lines)
- Function signature
- Methods section for classes (constructors and methods)
- What it calls (filtered - excludes noisy built-ins like push, map, slice)
- What calls it
- Related symbols in same file
- Recent changes
Smart Handling
- Ambiguous names: Shows disambiguation when multiple symbols match
- Better errors: Suggests similar symbols when exact match not found
- Large code: Truncated with line count to prevent context overflow
Examples
Understand a file
insight({ target: 'src/server.ts' })
insight({ target: 'packages/syntax/src/tools/listSymbols.ts' })
Understand a directory
insight({ target: 'src/utils' })
insight({ target: 'packages/task-runner' })
Understand a symbol
insight({ target: 'TaskRunner' })
insight({ target: 'handleRequest' })
Options
| Option | Default | Description |
|---|---|---|
| includeCode | true | Include source code in output |
| maxChanges | 5 | Max recent git commits to show |
When to Use
- Starting work on unfamiliar code
- Before making changes (understand impact)
- Reviewing what a module does
- Getting oriented in a new codebase
suggest_refactoring
Find tech debt and improvement opportunities before you start working.
suggest_refactoring({ target: 'src/api.ts' })
Returns prioritized suggestions:
- High Priority - Should fix now (long functions, high coupling)
- Medium Priority - Worth addressing (large files, many symbols)
- Low Priority - Nice to have (naming, minor cleanup)
What It Detects
| Issue | Detection | Suggestion |
|---|---|---|
| Long functions (>50 lines) | Code analysis | Extract smaller functions |
| Large files (>500 lines) | Metrics | Split into modules |
| High coupling (>15 imports) | Import analysis | Reduce dependencies |
| Unused functions | Call graph | Remove dead code |
| Complex symbols (many callees) | Call analysis | Simplify |
| Poor naming | Pattern matching | Rename suggestions |
Focus Your Analysis
suggest_refactoring({ target: 'src/', focus: 'coupling' })
suggest_refactoring({ target: 'src/', focus: 'complexity' })
suggest_refactoring({ target: 'src/', focus: 'unused' })
Focus options: all, complexity, coupling, unused, tests, naming
When to Use suggest_refactoring
- Before major changes - understand existing tech debt
- Code review - get automated quality feedback
- Planning refactoring - prioritize what to fix
- Learning a codebase - find the problem areas
Derived, Not Stored
Everything is computed fresh from current code. Never stale.