clast-ai 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -16,50 +16,63 @@ AST-based code intelligence plugin for Claude Code. Indexes your repository usin
16
16
 
17
17
  ## Quick Start
18
18
 
19
- ### Option 1: Install from npm (once published)
19
+ **Two steps:** install the package, then register it with Claude Code.
20
+
21
+ ### Step 1: Install
20
22
 
21
23
  ```bash
22
24
  npm install -g clast-ai
23
25
  ```
24
26
 
25
- ### Option 2: Install from GitHub (no cloning needed)
27
+ ### Step 2: Register with Claude Code
26
28
 
27
29
  ```bash
28
- npm install -g github:xls/clast
30
+ claude mcp add -s user clast clast-ai
29
31
  ```
30
32
 
31
- npm fetches the repo, installs dependencies, and builds automatically via the `prepare` script. The `clast` command will be available globally.
33
+ The `-s user` flag makes it available globally across all projects. Without it, the server is only registered for the current directory.
34
+
35
+ ### Step 3: Reload
36
+
37
+ - **VS Code:** Press `Ctrl+Shift+P` (or `Cmd+Shift+P` on Mac) → type "Developer: Reload Window" → Enter
38
+ - **CLI:** Just relaunch `claude`
39
+
40
+ ### Step 4: Verify
41
+
42
+ Type `/mcp` in the Claude Code chat panel. You should see `clast` listed with 7 tools.
43
+
44
+ > **That's it.** Clast will automatically index your project when Claude Code starts. No config files needed.
45
+
46
+ ---
47
+
48
+ ### Alternative Install Methods
32
49
 
33
- ### Option 3: Clone and Build
50
+ **From GitHub (no npm publish needed):**
34
51
 
35
52
  ```bash
36
- git clone https://github.com/xls/clast.git
37
- cd clast
38
- npm install
39
- npm run build
53
+ npm install -g github:xls/clast
54
+ claude mcp add -s user clast clast-ai
40
55
  ```
41
56
 
42
- ### Option 4: As a Claude Code Plugin
57
+ **Clone and build:**
43
58
 
44
59
  ```bash
45
60
  git clone https://github.com/xls/clast.git
46
61
  cd clast
47
62
  npm install && npm run build
48
- claude plugin add /path/to/clast
63
+ claude mcp add clast node /path/to/clast/dist/server/index.js
49
64
  ```
50
65
 
51
- The plugin bundles a model-invoked skill that automatically suggests Clast tools when Claude is exploring code.
52
-
53
- ### Publishing to npm
54
-
55
- If you want to publish your own fork:
66
+ **As a Claude Code Plugin** (includes auto-triggering skill):
56
67
 
57
68
  ```bash
58
- npm login
59
- npm publish
69
+ git clone https://github.com/xls/clast.git
70
+ cd clast
71
+ npm install && npm run build
72
+ claude plugin add /path/to/clast
60
73
  ```
61
74
 
62
- Then anyone can `npm install -g clast-ai`.
75
+ > The plugin install bundles a model-invoked skill that automatically tells Claude to prefer Clast tools over grep/file reading. With the MCP-only install, you may need to tell Claude to use the clast tools.
63
76
 
64
77
  ---
65
78
 
@@ -80,10 +93,14 @@ Add to `~/.claude/settings.local.json`:
80
93
  Or using the CLI:
81
94
 
82
95
  ```bash
83
- claude mcp add clast -- clast-ai
96
+ claude mcp add -s user clast clast-ai
97
+ # ^^^^^^^ ^^^^^ ^^^^^^^^
98
+ # global name command
84
99
  ```
85
100
 
86
- Restart Claude Code. Clast will automatically index whichever project directory you open.
101
+ > `-s user` makes it global (available in all projects). `clast` is the server name. `clast-ai` is the npm binary.
102
+
103
+ Reload VS Code (`Ctrl+Shift+P` → "Developer: Reload Window") or relaunch the CLI. Clast will automatically index whichever project directory you open.
87
104
 
88
105
  ## Setup for VS Code (Claude Code Extension)
89
106
 
@@ -92,7 +109,7 @@ The Claude Code extension for VS Code uses the **same MCP configuration files**
92
109
  **Step 1:** Open VS Code's integrated terminal and run:
93
110
 
94
111
  ```bash
95
- claude mcp add clast -- clast-ai
112
+ claude mcp add -s user clast clast-ai
96
113
  ```
97
114
 
98
115
  Or manually add to `~/.claude/settings.local.json`:
@@ -107,7 +124,10 @@ Or manually add to `~/.claude/settings.local.json`:
107
124
  }
108
125
  ```
109
126
 
110
- **Step 2:** Restart the Claude Code extension (Cmd/Ctrl+Shift+P → "Claude Code: Restart")
127
+ **Step 2:** Reload VS Code:
128
+
129
+ - Press `Ctrl+Shift+P` (or `Cmd+Shift+P` on Mac)
130
+ - Type "Developer: Reload Window" and hit Enter
111
131
 
112
132
  **Step 3:** Verify by typing `/mcp` in the Claude Code chat panel — you should see `clast` listed with 7 tools.
113
133
 
@@ -144,6 +164,55 @@ This way Clast only activates when you open that project.
144
164
 
145
165
  ---
146
166
 
167
+ ## Usage
168
+
169
+ ### What happens when you start Claude Code?
170
+
171
+ 1. Claude Code spawns the Clast MCP server as a background process
172
+ 2. Clast automatically scans and indexes your entire project (typically under a second)
173
+ 3. The file watcher starts monitoring for changes
174
+ 4. All 7 `clast_*` tools become available to Claude
175
+
176
+ **You don't need to do anything** — the AST database is created automatically. There's no manual "index" step.
177
+
178
+ ### How does Claude know to use Clast?
179
+
180
+ **If installed as a plugin** (`claude plugin add`): The bundled skill automatically tells Claude to prefer Clast tools over `Grep`/`Read` when exploring code.
181
+
182
+ **If installed as an MCP server** (`claude mcp add`): Claude sees the tools and their descriptions, which instruct it to prefer Clast for symbol lookups, call graphs, and file structure. You can also explicitly ask Claude to use them:
183
+
184
+ - *"Use clast to find the Database class"*
185
+ - *"What calls parseAndStore? Check the call graph"*
186
+ - *"Show me the structure of queries.ts using clast"*
187
+
188
+ Or you can tell Claude once at the start of a session:
189
+
190
+ > *"Use the clast tools to navigate code instead of reading files directly"*
191
+
192
+ ### What can you ask Claude?
193
+
194
+ | What you want | What to ask | Tool Claude uses |
195
+ |---------------|-------------|------------------|
196
+ | Find a function | *"Find the extractFromTree function"* | `clast_search` |
197
+ | Understand a function before editing | *"What does parseAndStore do? Show me its context"* | `clast_get_context` |
198
+ | Check what calls a function | *"What calls resolveCallEdges?"* | `clast_call_graph` |
199
+ | Understand a file's structure | *"What's in src/db/queries.ts?"* | `clast_file_summary` |
200
+ | Check if the index is working | *"Show clast status"* | `clast_status` |
201
+ | Force re-index after big changes | *"Reindex the project"* | `clast_reindex` |
202
+ | Generate a missing docstring | *"Generate a comment for the insertNodes function"* | `clast_comment` |
203
+
204
+ ### Does the index stay up to date?
205
+
206
+ Yes. The file watcher detects changes in real-time:
207
+
208
+ - **File saved** → re-parsed, AST database updated, call edges re-resolved
209
+ - **File deleted** → removed from database
210
+ - **New file created** → parsed and added
211
+
212
+ Only changed files are re-parsed (SHA-256 hash comparison), so incremental updates are near-instant.
213
+
214
+ ---
215
+
147
216
  ## Testing with MCP Inspector
148
217
 
149
218
  To interactively test the tools without Claude Code:
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  export function registerCallGraphTool(server, db) {
3
- server.tool('clast_call_graph', 'Get the call graph for a function or method: what it calls (callees) and what calls it (callers). Supports configurable traversal depth.', {
3
+ server.tool('clast_call_graph', 'Get the call graph for a function or method: what it calls (callees) and what calls it (callers). Use this BEFORE refactoring to understand impact — shows the full dependency chain with file paths and line numbers. Supports depth 1-5.', {
4
4
  name: z.string().describe('Function or method name to trace'),
5
5
  depth: z.number().int().min(1).max(5).default(2).describe('How many levels deep to traverse'),
6
6
  direction: z.enum(['callers', 'callees', 'both']).default('both').describe('Direction to traverse'),
@@ -1 +1 @@
1
- {"version":3,"file":"clast-call-graph.js","sourceRoot":"","sources":["../../../src/server/tools/clast-call-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clast-call-graph.js","sourceRoot":"","sources":["../../../src/server/tools/clast-call-graph.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  export function registerFileSummaryTool(server, db) {
3
- server.tool('clast_file_summary', 'Get a structured summary of all symbols in a file, grouped by type (imports, classes, functions, exports, etc.). Use instead of reading the whole file to understand its structure.', {
3
+ server.tool('clast_file_summary', 'Get a structured summary of all symbols in a file, grouped by type (imports, classes, functions, exports, etc.). PREFER THIS over reading an entire file when you need to understand its structure — returns all symbols with line numbers without the noise of implementation details.', {
4
4
  filePath: z.string().describe('Relative file path (forward slashes, e.g. "src/parser/index.ts")'),
5
5
  }, async ({ filePath }) => {
6
6
  // Normalize path
@@ -1 +1 @@
1
- {"version":3,"file":"clast-file-summary.js","sourceRoot":"","sources":["../../../src/server/tools/clast-file-summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,EAAiB;IAC1E,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,qLAAqL,EACrL;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;KAClG,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,iBAAiB;QACjB,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAEpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,6BAA6B,UAAU,6BAA6B,EAAE,CAAC;qBACtG,CAAC;aACH,CAAC;QACJ,CAAC;QAED,gBAAgB;QAChB,MAAM,OAAO,GAKP,EAAE,CAAC;QAET,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ;aACvB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG;YACd,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ;YAC5B,YAAY,EAAE,KAAK,CAAC,MAAM;YAC1B,OAAO,EAAE,OAAO;SACjB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;iBACvC,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"clast-file-summary.js","sourceRoot":"","sources":["../../../src/server/tools/clast-file-summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,EAAiB;IAC1E,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,yRAAyR,EACzR;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;KAClG,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,iBAAiB;QACjB,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAEpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,6BAA6B,UAAU,6BAA6B,EAAE,CAAC;qBACtG,CAAC;aACH,CAAC;QACJ,CAAC;QAED,gBAAgB;QAChB,MAAM,OAAO,GAKP,EAAE,CAAC;QAET,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ;aACvB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG;YACd,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ;YAC5B,YAAY,EAAE,KAAK,CAAC,MAAM;YAC1B,OAAO,EAAE,OAAO;SACjB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;iBACvC,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  export function registerGetContextTool(server, db) {
3
- server.tool('clast_get_context', 'Get full context for a symbol: its definition, comments/documentation, callers, callees, and parent class (if method). This is the primary tool for understanding a symbol before editing — use instead of reading the whole file.', {
3
+ server.tool('clast_get_context', 'Get full context for a symbol: definition, comments/documentation, callers, callees, and parent class. PREFER THIS over reading entire files when you need to understand a specific function or class before editing. Returns everything needed to make informed code changes.', {
4
4
  name: z.string().describe('Symbol name to look up'),
5
5
  includeBody: z.boolean().default(false).describe('Include the full function/class body text'),
6
6
  }, async ({ name, includeBody }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"clast-get-context.js","sourceRoot":"","sources":["../../../src/server/tools/clast-get-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clast-get-context.js","sourceRoot":"","sources":["../../../src/server/tools/clast-get-context.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  export function registerSearchTool(server, db) {
3
- server.tool('clast_search', 'Search AST nodes (functions, classes, methods, etc.) by name pattern and optional type filter. Returns matching symbols with file locations and signatures.', {
3
+ server.tool('clast_search', 'Search the pre-built AST index for functions, classes, methods, and other symbols by name pattern. PREFER THIS over grep/file search when looking for symbol definitions — it is faster and returns structured results with exact file paths, line numbers, and signatures.', {
4
4
  query: z.string().describe('Search pattern (matches against symbol names, supports partial matches)'),
5
5
  type: z.enum([
6
6
  'function', 'method', 'class', 'interface', 'enum',
@@ -1 +1 @@
1
- {"version":3,"file":"clast-search.js","sourceRoot":"","sources":["../../../src/server/tools/clast-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,EAAiB;IACrE,MAAM,CAAC,IAAI,CACT,cAAc,EACd,6JAA6J,EAC7J;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yEAAyE,CAAC;QACrG,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;YACX,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM;YAClD,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;SAC1E,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KAC1F,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QAC/B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAE3D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,SAAS;YACrB,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,OAAO,EAAE,CAAC,CAAC,QAAQ;YACnB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACrB,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;iBACzC,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"clast-search.js","sourceRoot":"","sources":["../../../src/server/tools/clast-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,EAAiB;IACrE,MAAM,CAAC,IAAI,CACT,cAAc,EACd,6QAA6Q,EAC7Q;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yEAAyE,CAAC;QACrG,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;YACX,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM;YAClD,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;SAC1E,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KAC1F,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QAC/B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAE3D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,SAAS;YACrB,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,OAAO,EAAE,CAAC,CAAC,QAAQ;YACnB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACrB,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;iBACzC,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clast-ai",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "AST-based code intelligence plugin for Claude Code: search symbols, trace call graphs, generate comments, and provide structured context for any repository",
5
5
  "main": "dist/server/index.js",
6
6
  "bin": {
@@ -5,7 +5,7 @@ import type { ClastDatabase } from '../../db/index.js';
5
5
  export function registerCallGraphTool(server: McpServer, db: ClastDatabase): void {
6
6
  server.tool(
7
7
  'clast_call_graph',
8
- 'Get the call graph for a function or method: what it calls (callees) and what calls it (callers). Supports configurable traversal depth.',
8
+ 'Get the call graph for a function or method: what it calls (callees) and what calls it (callers). Use this BEFORE refactoring to understand impact — shows the full dependency chain with file paths and line numbers. Supports depth 1-5.',
9
9
  {
10
10
  name: z.string().describe('Function or method name to trace'),
11
11
  depth: z.number().int().min(1).max(5).default(2).describe('How many levels deep to traverse'),
@@ -5,7 +5,7 @@ import type { ClastDatabase } from '../../db/index.js';
5
5
  export function registerFileSummaryTool(server: McpServer, db: ClastDatabase): void {
6
6
  server.tool(
7
7
  'clast_file_summary',
8
- 'Get a structured summary of all symbols in a file, grouped by type (imports, classes, functions, exports, etc.). Use instead of reading the whole file to understand its structure.',
8
+ 'Get a structured summary of all symbols in a file, grouped by type (imports, classes, functions, exports, etc.). PREFER THIS over reading an entire file when you need to understand its structure — returns all symbols with line numbers without the noise of implementation details.',
9
9
  {
10
10
  filePath: z.string().describe('Relative file path (forward slashes, e.g. "src/parser/index.ts")'),
11
11
  },
@@ -5,7 +5,7 @@ import type { ClastDatabase } from '../../db/index.js';
5
5
  export function registerGetContextTool(server: McpServer, db: ClastDatabase): void {
6
6
  server.tool(
7
7
  'clast_get_context',
8
- 'Get full context for a symbol: its definition, comments/documentation, callers, callees, and parent class (if method). This is the primary tool for understanding a symbol before editing — use instead of reading the whole file.',
8
+ 'Get full context for a symbol: definition, comments/documentation, callers, callees, and parent class. PREFER THIS over reading entire files when you need to understand a specific function or class before editing. Returns everything needed to make informed code changes.',
9
9
  {
10
10
  name: z.string().describe('Symbol name to look up'),
11
11
  includeBody: z.boolean().default(false).describe('Include the full function/class body text'),
@@ -5,7 +5,7 @@ import type { ClastDatabase } from '../../db/index.js';
5
5
  export function registerSearchTool(server: McpServer, db: ClastDatabase): void {
6
6
  server.tool(
7
7
  'clast_search',
8
- 'Search AST nodes (functions, classes, methods, etc.) by name pattern and optional type filter. Returns matching symbols with file locations and signatures.',
8
+ 'Search the pre-built AST index for functions, classes, methods, and other symbols by name pattern. PREFER THIS over grep/file search when looking for symbol definitions — it is faster and returns structured results with exact file paths, line numbers, and signatures.',
9
9
  {
10
10
  query: z.string().describe('Search pattern (matches against symbol names, supports partial matches)'),
11
11
  type: z.enum([