driftdetect-mcp 0.8.1 → 0.8.3

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.
@@ -1,22 +1,54 @@
1
1
  /**
2
- * drift_capabilities - Tool Guide
2
+ * drift_capabilities - Comprehensive Tool Guide
3
3
  *
4
4
  * Discovery tool that explains all available tools and when to use them.
5
- * Helps AI agents understand the tool landscape.
5
+ * Helps AI agents understand the tool landscape and choose the right tool.
6
+ *
7
+ * Enhanced version with:
8
+ * - All 45+ tools documented
9
+ * - Token cost estimates
10
+ * - Use case examples
11
+ * - Tool relationships
6
12
  */
7
13
  export interface CapabilitiesData {
8
- layers: {
9
- discovery: ToolInfo[];
10
- exploration: ToolInfo[];
11
- detail: ToolInfo[];
12
- };
13
- categories: string[];
14
- quickStart: string[];
14
+ summary: string;
15
+ toolCount: number;
16
+ layers: LayerInfo[];
17
+ quickStart: QuickStartGuide;
18
+ byUseCase: UseCaseGuide[];
19
+ tokenEstimates: TokenEstimate[];
20
+ }
21
+ interface LayerInfo {
22
+ name: string;
23
+ description: string;
24
+ tools: ToolInfo[];
15
25
  }
16
26
  interface ToolInfo {
17
27
  name: string;
18
28
  purpose: string;
19
29
  whenToUse: string;
30
+ tokenCost: 'low' | 'medium' | 'high';
31
+ example?: string;
32
+ }
33
+ interface QuickStartGuide {
34
+ steps: string[];
35
+ commonWorkflows: WorkflowGuide[];
36
+ }
37
+ interface WorkflowGuide {
38
+ task: string;
39
+ tools: string[];
40
+ description: string;
41
+ }
42
+ interface UseCaseGuide {
43
+ useCase: string;
44
+ recommendedTools: string[];
45
+ description: string;
46
+ }
47
+ interface TokenEstimate {
48
+ tool: string;
49
+ inputTokens: string;
50
+ outputTokens: string;
51
+ notes: string;
20
52
  }
21
53
  export declare function handleCapabilities(_args: Record<string, unknown>): Promise<{
22
54
  content: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../src/tools/discovery/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE;QACN,SAAS,EAAE,QAAQ,EAAE,CAAC;QACtB,WAAW,EAAE,QAAQ,EAAE,CAAC;QACxB,MAAM,EAAE,QAAQ,EAAE,CAAC;KACpB,CAAC;IACF,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAsED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAuC7D"}
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../src/tools/discovery/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,UAAU,EAAE,eAAe,CAAC;IAC5B,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE,aAAa,EAAE,CAAC;CAClC;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AA8VD,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA6B7D"}
@@ -1,110 +1,383 @@
1
1
  /**
2
- * drift_capabilities - Tool Guide
2
+ * drift_capabilities - Comprehensive Tool Guide
3
3
  *
4
4
  * Discovery tool that explains all available tools and when to use them.
5
- * Helps AI agents understand the tool landscape.
5
+ * Helps AI agents understand the tool landscape and choose the right tool.
6
+ *
7
+ * Enhanced version with:
8
+ * - All 45+ tools documented
9
+ * - Token cost estimates
10
+ * - Use case examples
11
+ * - Tool relationships
6
12
  */
7
13
  import { createResponseBuilder } from '../../infrastructure/index.js';
8
- import { TOOL_CATEGORIES } from '../registry.js';
9
- const TOOL_INFO = {
10
- // Discovery
11
- drift_status: {
12
- name: 'drift_status',
13
- purpose: 'Get codebase health snapshot',
14
- whenToUse: 'First tool to call. Understand overall state before diving deeper.',
14
+ const LAYER_INFO = [
15
+ {
16
+ name: 'Orchestration',
17
+ description: 'Start here. These tools synthesize context from multiple sources.',
18
+ tools: [
19
+ {
20
+ name: 'drift_context',
21
+ purpose: 'Get curated context for any task',
22
+ whenToUse: 'ALWAYS start here for code generation tasks. Returns patterns, examples, files to modify, and warnings.',
23
+ tokenCost: 'medium',
24
+ example: 'intent: "add_feature", focus: "user authentication"',
25
+ },
26
+ {
27
+ name: 'drift_package_context',
28
+ purpose: 'Get context for a specific package in monorepo',
29
+ whenToUse: 'Working in a monorepo and need package-specific patterns.',
30
+ tokenCost: 'medium',
31
+ example: 'package: "@drift/core"',
32
+ },
33
+ ],
15
34
  },
16
- drift_capabilities: {
17
- name: 'drift_capabilities',
18
- purpose: 'List all tools and their purposes',
19
- whenToUse: 'When unsure which tool to use for a task.',
35
+ {
36
+ name: 'Discovery',
37
+ description: 'Quick status checks. Always fast, always lightweight.',
38
+ tools: [
39
+ {
40
+ name: 'drift_status',
41
+ purpose: 'Get codebase health snapshot',
42
+ whenToUse: 'First tool to call. Understand overall state before diving deeper.',
43
+ tokenCost: 'low',
44
+ },
45
+ {
46
+ name: 'drift_capabilities',
47
+ purpose: 'List all tools and their purposes',
48
+ whenToUse: 'When unsure which tool to use for a task.',
49
+ tokenCost: 'low',
50
+ },
51
+ {
52
+ name: 'drift_projects',
53
+ purpose: 'List and manage registered projects',
54
+ whenToUse: 'Working across multiple codebases or switching projects.',
55
+ tokenCost: 'low',
56
+ },
57
+ ],
20
58
  },
21
- // Exploration
22
- drift_patterns_list: {
23
- name: 'drift_patterns_list',
24
- purpose: 'List patterns with summaries',
25
- whenToUse: 'To find patterns by category, status, or confidence. Returns IDs for detail tools.',
59
+ {
60
+ name: 'Exploration',
61
+ description: 'Browse and filter. Returns summaries and IDs for detail tools.',
62
+ tools: [
63
+ {
64
+ name: 'drift_patterns_list',
65
+ purpose: 'List patterns with summaries',
66
+ whenToUse: 'Find patterns by category, status, or confidence. Returns IDs for drift_pattern_get.',
67
+ tokenCost: 'low',
68
+ },
69
+ {
70
+ name: 'drift_files_list',
71
+ purpose: 'List files with pattern counts',
72
+ whenToUse: 'Find files relevant to a task or understand pattern distribution.',
73
+ tokenCost: 'low',
74
+ },
75
+ {
76
+ name: 'drift_security_summary',
77
+ purpose: 'Security posture overview',
78
+ whenToUse: 'Before working on security-sensitive code or reviewing data access.',
79
+ tokenCost: 'medium',
80
+ },
81
+ {
82
+ name: 'drift_contracts_list',
83
+ purpose: 'List API contracts and mismatches',
84
+ whenToUse: 'Working on API endpoints or debugging frontend/backend issues.',
85
+ tokenCost: 'low',
86
+ },
87
+ {
88
+ name: 'drift_trends',
89
+ purpose: 'Pattern trend analysis',
90
+ whenToUse: 'Check if code quality is improving or declining over time.',
91
+ tokenCost: 'low',
92
+ },
93
+ ],
26
94
  },
27
- drift_files_list: {
28
- name: 'drift_files_list',
29
- purpose: 'List files with pattern counts',
30
- whenToUse: 'To find files relevant to a task or understand pattern distribution.',
95
+ {
96
+ name: 'Detail',
97
+ description: 'Deep dives. Get complete information about specific items.',
98
+ tools: [
99
+ {
100
+ name: 'drift_pattern_get',
101
+ purpose: 'Full pattern details with locations and outliers',
102
+ whenToUse: 'After finding a pattern ID from drift_patterns_list. Get complete info.',
103
+ tokenCost: 'medium',
104
+ },
105
+ {
106
+ name: 'drift_file_patterns',
107
+ purpose: 'All patterns in a specific file',
108
+ whenToUse: 'Before modifying a file. Understand its patterns and conventions.',
109
+ tokenCost: 'medium',
110
+ },
111
+ {
112
+ name: 'drift_code_examples',
113
+ purpose: 'Real code snippets for patterns',
114
+ whenToUse: 'Before generating code. See how patterns are implemented in this codebase.',
115
+ tokenCost: 'high',
116
+ },
117
+ {
118
+ name: 'drift_impact_analysis',
119
+ purpose: 'What breaks if you change X',
120
+ whenToUse: 'Before refactoring. Understand downstream effects of changes.',
121
+ tokenCost: 'medium',
122
+ },
123
+ {
124
+ name: 'drift_reachability',
125
+ purpose: 'What data can code reach (forward/inverse)',
126
+ whenToUse: 'Security review. Understand data access from an entry point.',
127
+ tokenCost: 'medium',
128
+ },
129
+ {
130
+ name: 'drift_explain',
131
+ purpose: 'Comprehensive explanation of code in context',
132
+ whenToUse: 'Need to understand unfamiliar code with full context.',
133
+ tokenCost: 'high',
134
+ },
135
+ ],
31
136
  },
32
- drift_security_summary: {
33
- name: 'drift_security_summary',
34
- purpose: 'Security posture overview',
35
- whenToUse: 'Before working on security-sensitive code or reviewing data access.',
137
+ {
138
+ name: 'Analysis',
139
+ description: 'Deep analysis tools for code health and quality.',
140
+ tools: [
141
+ {
142
+ name: 'drift_test_topology',
143
+ purpose: 'Test-to-code mappings and coverage',
144
+ whenToUse: 'Find untested code, affected tests, or analyze test quality.',
145
+ tokenCost: 'medium',
146
+ },
147
+ {
148
+ name: 'drift_coupling',
149
+ purpose: 'Module dependencies and cycles',
150
+ whenToUse: 'Find dependency cycles, highly coupled modules, or plan refactoring.',
151
+ tokenCost: 'medium',
152
+ },
153
+ {
154
+ name: 'drift_error_handling',
155
+ purpose: 'Error handling patterns and gaps',
156
+ whenToUse: 'Find unhandled errors, error boundaries, or error handling gaps.',
157
+ tokenCost: 'medium',
158
+ },
159
+ {
160
+ name: 'drift_wrappers',
161
+ purpose: 'Framework wrapper patterns',
162
+ whenToUse: 'Understand custom abstractions built on framework primitives.',
163
+ tokenCost: 'medium',
164
+ },
165
+ {
166
+ name: 'drift_dna_profile',
167
+ purpose: 'Styling DNA profile',
168
+ whenToUse: 'Understand how components are styled (variants, responsive, theming).',
169
+ tokenCost: 'medium',
170
+ },
171
+ {
172
+ name: 'drift_quality_gate',
173
+ purpose: 'Run quality gates on changes',
174
+ whenToUse: 'Before merging PRs. Check pattern compliance and regressions.',
175
+ tokenCost: 'high',
176
+ },
177
+ ],
36
178
  },
37
- drift_contracts_list: {
38
- name: 'drift_contracts_list',
39
- purpose: 'List API contracts and mismatches',
40
- whenToUse: 'When working on API endpoints or debugging frontend/backend issues.',
179
+ {
180
+ name: 'Language-Specific',
181
+ description: 'Language-aware analysis for 8 supported languages.',
182
+ tools: [
183
+ {
184
+ name: 'drift_typescript',
185
+ purpose: 'TypeScript/JavaScript analysis',
186
+ whenToUse: 'Analyze TS/JS: routes, components, hooks, decorators, data access.',
187
+ tokenCost: 'medium',
188
+ },
189
+ {
190
+ name: 'drift_python',
191
+ purpose: 'Python analysis',
192
+ whenToUse: 'Analyze Python: routes, decorators, async patterns, data access.',
193
+ tokenCost: 'medium',
194
+ },
195
+ {
196
+ name: 'drift_java',
197
+ purpose: 'Java analysis',
198
+ whenToUse: 'Analyze Java: routes, annotations, data access patterns.',
199
+ tokenCost: 'medium',
200
+ },
201
+ {
202
+ name: 'drift_php',
203
+ purpose: 'PHP analysis',
204
+ whenToUse: 'Analyze PHP: routes, traits, data access patterns.',
205
+ tokenCost: 'medium',
206
+ },
207
+ {
208
+ name: 'drift_go',
209
+ purpose: 'Go analysis',
210
+ whenToUse: 'Analyze Go: routes, interfaces, goroutines, data access.',
211
+ tokenCost: 'medium',
212
+ },
213
+ {
214
+ name: 'drift_rust',
215
+ purpose: 'Rust analysis',
216
+ whenToUse: 'Analyze Rust: routes, traits, error handling, async patterns.',
217
+ tokenCost: 'medium',
218
+ },
219
+ {
220
+ name: 'drift_cpp',
221
+ purpose: 'C++ analysis',
222
+ whenToUse: 'Analyze C++: classes, memory management, templates, virtual functions.',
223
+ tokenCost: 'medium',
224
+ },
225
+ {
226
+ name: 'drift_wpf',
227
+ purpose: 'WPF (C#) analysis',
228
+ whenToUse: 'Analyze WPF: bindings, MVVM compliance, DataContext, commands.',
229
+ tokenCost: 'medium',
230
+ },
231
+ ],
41
232
  },
42
- drift_trends: {
43
- name: 'drift_trends',
44
- purpose: 'Pattern trend analysis',
45
- whenToUse: 'To check if code quality is improving or declining over time.',
233
+ {
234
+ name: 'Generation',
235
+ description: 'AI-assisted code generation and validation.',
236
+ tools: [
237
+ {
238
+ name: 'drift_suggest_changes',
239
+ purpose: 'Get AI-guided fix suggestions',
240
+ whenToUse: 'Need specific code changes for violations or improvements.',
241
+ tokenCost: 'high',
242
+ },
243
+ {
244
+ name: 'drift_validate_change',
245
+ purpose: 'Validate code against patterns',
246
+ whenToUse: 'After generating code. Check if it follows codebase patterns.',
247
+ tokenCost: 'medium',
248
+ },
249
+ ],
46
250
  },
47
- // Detail
48
- drift_pattern_get: {
49
- name: 'drift_pattern_get',
50
- purpose: 'Full pattern details',
51
- whenToUse: 'After finding a pattern ID from drift_patterns_list. Get complete info.',
251
+ {
252
+ name: 'Enterprise',
253
+ description: 'Advanced features for enterprise workflows.',
254
+ tools: [
255
+ {
256
+ name: 'drift_decisions',
257
+ purpose: 'Architectural decision mining',
258
+ whenToUse: 'Understand past architectural decisions from git history.',
259
+ tokenCost: 'medium',
260
+ },
261
+ {
262
+ name: 'drift_constraints',
263
+ purpose: 'Architectural constraints',
264
+ whenToUse: 'Check or manage architectural invariants.',
265
+ tokenCost: 'medium',
266
+ },
267
+ {
268
+ name: 'drift_simulate',
269
+ purpose: 'Simulate implementation approaches',
270
+ whenToUse: 'Before coding. Compare approaches by friction, impact, alignment.',
271
+ tokenCost: 'high',
272
+ },
273
+ {
274
+ name: 'drift_constants',
275
+ purpose: 'Constants and enum analysis',
276
+ whenToUse: 'Find magic numbers, hardcoded secrets, or inconsistent constants.',
277
+ tokenCost: 'medium',
278
+ },
279
+ ],
52
280
  },
53
- drift_file_patterns: {
54
- name: 'drift_file_patterns',
55
- purpose: 'All patterns in a file',
56
- whenToUse: 'Before modifying a file. Understand its patterns and conventions.',
281
+ ];
282
+ const QUICK_START = {
283
+ steps: [
284
+ '1. drift_status Get health overview and pattern counts',
285
+ '2. drift_context → Get curated context for your task',
286
+ '3. drift_code_examples → See how patterns are implemented',
287
+ '4. Generate code following the patterns',
288
+ '5. drift_validate_change → Verify your code matches patterns',
289
+ ],
290
+ commonWorkflows: [
291
+ {
292
+ task: 'Add a new feature',
293
+ tools: ['drift_context', 'drift_code_examples', 'drift_validate_change'],
294
+ description: 'Get context, see examples, generate code, validate.',
295
+ },
296
+ {
297
+ task: 'Fix a bug',
298
+ tools: ['drift_context', 'drift_file_patterns', 'drift_impact_analysis'],
299
+ description: 'Understand context, check file patterns, assess impact.',
300
+ },
301
+ {
302
+ task: 'Refactor code',
303
+ tools: ['drift_impact_analysis', 'drift_coupling', 'drift_test_topology'],
304
+ description: 'Check impact, find coupling issues, ensure test coverage.',
305
+ },
306
+ {
307
+ task: 'Security review',
308
+ tools: ['drift_security_summary', 'drift_reachability', 'drift_error_handling'],
309
+ description: 'Check security posture, data access, error handling.',
310
+ },
311
+ {
312
+ task: 'Understand unfamiliar code',
313
+ tools: ['drift_explain', 'drift_file_patterns', 'drift_impact_analysis'],
314
+ description: 'Get explanation, see patterns, understand dependencies.',
315
+ },
316
+ ],
317
+ };
318
+ const USE_CASE_GUIDES = [
319
+ {
320
+ useCase: 'Code Generation',
321
+ recommendedTools: ['drift_context', 'drift_code_examples', 'drift_validate_change'],
322
+ description: 'Start with drift_context to get patterns, use drift_code_examples for real implementations, validate with drift_validate_change.',
57
323
  },
58
- drift_code_examples: {
59
- name: 'drift_code_examples',
60
- purpose: 'Real code snippets for patterns',
61
- whenToUse: 'Before generating code. See how patterns are implemented in this codebase.',
324
+ {
325
+ useCase: 'Security Audit',
326
+ recommendedTools: ['drift_security_summary', 'drift_reachability', 'drift_error_handling'],
327
+ description: 'Get security overview, trace data access paths, check error handling gaps.',
62
328
  },
63
- drift_impact_analysis: {
64
- name: 'drift_impact_analysis',
65
- purpose: 'What breaks if you change X',
66
- whenToUse: 'Before refactoring. Understand downstream effects of changes.',
329
+ {
330
+ useCase: 'Refactoring',
331
+ recommendedTools: ['drift_impact_analysis', 'drift_coupling', 'drift_test_topology'],
332
+ description: 'Understand blast radius, find coupling issues, ensure tests cover changes.',
67
333
  },
68
- drift_reachability: {
69
- name: 'drift_reachability',
70
- purpose: 'What data can code reach',
71
- whenToUse: 'Security review. Understand data access from an entry point.',
334
+ {
335
+ useCase: 'API Development',
336
+ recommendedTools: ['drift_contracts_list', 'drift_typescript', 'drift_patterns_list'],
337
+ description: 'Check API contracts, analyze routes, find API patterns.',
72
338
  },
73
- };
339
+ {
340
+ useCase: 'Test Coverage',
341
+ recommendedTools: ['drift_test_topology', 'drift_coupling'],
342
+ description: 'Find untested code, understand test-to-code mappings.',
343
+ },
344
+ {
345
+ useCase: 'Architecture Review',
346
+ recommendedTools: ['drift_coupling', 'drift_decisions', 'drift_constraints'],
347
+ description: 'Find cycles, understand past decisions, check constraints.',
348
+ },
349
+ ];
350
+ const TOKEN_ESTIMATES = [
351
+ { tool: 'drift_status', inputTokens: '~50', outputTokens: '~200', notes: 'Always fast' },
352
+ { tool: 'drift_context', inputTokens: '~100', outputTokens: '~1000-3000', notes: 'Varies by task complexity' },
353
+ { tool: 'drift_code_examples', inputTokens: '~100', outputTokens: '~2000-5000', notes: 'Includes code snippets' },
354
+ { tool: 'drift_patterns_list', inputTokens: '~50', outputTokens: '~500-1500', notes: 'Depends on pattern count' },
355
+ { tool: 'drift_impact_analysis', inputTokens: '~100', outputTokens: '~1000-2000', notes: 'Depends on call graph depth' },
356
+ { tool: 'drift_validate_change', inputTokens: '~500-2000', outputTokens: '~500-1000', notes: 'Input includes code to validate' },
357
+ ];
74
358
  export async function handleCapabilities(_args) {
75
359
  const builder = createResponseBuilder();
360
+ // Count total tools
361
+ const toolCount = LAYER_INFO.reduce((sum, layer) => sum + layer.tools.length, 0);
76
362
  const data = {
77
- layers: {
78
- discovery: TOOL_CATEGORIES.discovery
79
- .map(name => TOOL_INFO[name])
80
- .filter((t) => t !== undefined),
81
- exploration: TOOL_CATEGORIES.exploration
82
- .map(name => TOOL_INFO[name])
83
- .filter((t) => t !== undefined),
84
- detail: TOOL_CATEGORIES.detail
85
- .map(name => TOOL_INFO[name])
86
- .filter((t) => t !== undefined),
87
- },
88
- categories: [
89
- 'api', 'auth', 'security', 'errors', 'logging',
90
- 'data-access', 'config', 'testing', 'performance',
91
- 'components', 'styling', 'structural', 'types',
92
- 'accessibility', 'documentation',
93
- ],
94
- quickStart: [
95
- '1. drift_status → Get health overview',
96
- '2. drift_patterns_list → Find relevant patterns',
97
- '3. drift_code_examples → See implementations',
98
- '4. Generate code following the patterns',
99
- ],
363
+ summary: `Drift provides ${toolCount} MCP tools organized in ${LAYER_INFO.length} layers for codebase intelligence.`,
364
+ toolCount,
365
+ layers: LAYER_INFO,
366
+ quickStart: QUICK_START,
367
+ byUseCase: USE_CASE_GUIDES,
368
+ tokenEstimates: TOKEN_ESTIMATES,
100
369
  };
101
370
  return builder
102
- .withSummary('Drift provides codebase intelligence through 3 tool layers: Discovery (status), Exploration (lists), and Detail (specifics).')
371
+ .withSummary(`Drift provides ${toolCount} MCP tools for codebase intelligence. Start with drift_context for most tasks, or drift_status for a quick health check.`)
103
372
  .withData(data)
104
373
  .withHints({
105
374
  nextActions: [
106
- 'Start with drift_status to see codebase health',
107
- 'Use drift_patterns_list to explore patterns by category',
375
+ 'For code generation: drift_context drift_code_examples → drift_validate_change',
376
+ 'For quick status: drift_status',
377
+ 'For security review: drift_security_summary → drift_reachability',
378
+ 'For refactoring: drift_impact_analysis → drift_coupling',
379
+ 'Token costs: low (~200), medium (~1000), high (~3000+)',
380
+ 'drift_context is the recommended starting point for most tasks',
108
381
  ],
109
382
  })
110
383
  .buildContent();
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/tools/discovery/capabilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/tools/discovery/capabilities.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "driftdetect-mcp",
3
- "version": "0.8.1",
3
+ "version": "0.8.3",
4
4
  "description": "MCP server that gives AI agents (Claude, Cursor, Copilot) deep understanding of your codebase patterns, conventions, and architecture. Query patterns, security boundaries, call graphs in real-time.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Geoffrey Fernald",
@@ -48,8 +48,8 @@
48
48
  ],
49
49
  "dependencies": {
50
50
  "@modelcontextprotocol/sdk": "^1.0.0",
51
- "driftdetect-core": "0.8.1",
52
- "driftdetect-detectors": "0.8.1"
51
+ "driftdetect-core": "0.8.3",
52
+ "driftdetect-detectors": "0.8.3"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@types/node": "^20.10.0",