You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
refactor: consolidate MCP tools to match CLI changes from PR #280
Remove 3 redundant MCP tools and add 1 new tool to mirror the CLI
consolidation done in PR #280:
- Remove `explain` tool → fold into `audit` with `quick` param
- Remove `hotspots` tool → fold into `triage` with `level` param
- Remove `manifesto` tool → fold into `check` with manifesto-mode routing
- Add standalone `path` tool (was only accessible via query mode=path)
All backing data functions are unchanged. The `query` tool still supports
mode=path for backward compatibility.
Impact: 1 functions changed, 1 affected
description: 'Edge kinds to follow (default: ["calls"])',
86
+
},
87
+
from_file: {type: 'string',description: 'Disambiguate source by file'},
88
+
to_file: {type: 'string',description: 'Disambiguate target by file'},
89
+
no_tests: {type: 'boolean',description: 'Exclude test files',default: false},
90
+
},
91
+
required: ['from','to'],
92
+
},
93
+
},
73
94
{
74
95
name: 'file_deps',
75
96
description: 'Show what a file imports and what imports it',
@@ -207,20 +228,6 @@ const BASE_TOOLS = [
207
228
required: ['name'],
208
229
},
209
230
},
210
-
{
211
-
name: 'explain',
212
-
description:
213
-
'Structural summary of a file or function: public/internal API, data flow, dependencies. No LLM needed.',
214
-
inputSchema: {
215
-
type: 'object',
216
-
properties: {
217
-
target: {type: 'string',description: 'File path or function name'},
218
-
no_tests: {type: 'boolean',description: 'Exclude test files',default: false},
219
-
...PAGINATION_PROPS,
220
-
},
221
-
required: ['target'],
222
-
},
223
-
},
224
231
{
225
232
name: 'where',
226
233
description:
@@ -357,29 +364,6 @@ const BASE_TOOLS = [
357
364
},
358
365
},
359
366
},
360
-
{
361
-
name: 'hotspots',
362
-
description:
363
-
'Find structural hotspots: files or directories with extreme fan-in, fan-out, or symbol density',
364
-
inputSchema: {
365
-
type: 'object',
366
-
properties: {
367
-
metric: {
368
-
type: 'string',
369
-
enum: ['fan-in','fan-out','density','coupling'],
370
-
description: 'Metric to rank by',
371
-
},
372
-
level: {
373
-
type: 'string',
374
-
enum: ['file','directory'],
375
-
description: 'Rank files or directories',
376
-
},
377
-
limit: {type: 'number',description: 'Number of results to return',default: 10},
378
-
no_tests: {type: 'boolean',description: 'Exclude test files',default: false},
379
-
offset: {type: 'number',description: 'Skip this many results (pagination, default: 0)'},
380
-
},
381
-
},
382
-
},
383
367
{
384
368
name: 'co_changes',
385
369
description:
@@ -469,23 +453,6 @@ const BASE_TOOLS = [
469
453
},
470
454
},
471
455
},
472
-
{
473
-
name: 'manifesto',
474
-
description:
475
-
'Evaluate manifesto rules and return pass/fail verdicts for code health. Checks function complexity, file metrics, and cycle rules against configured thresholds.',
476
-
inputSchema: {
477
-
type: 'object',
478
-
properties: {
479
-
file: {type: 'string',description: 'Scope to file (partial match)'},
480
-
no_tests: {type: 'boolean',description: 'Exclude test files',default: false},
481
-
kind: {
482
-
type: 'string',
483
-
description: 'Filter by symbol kind (function, method, class, etc.)',
484
-
},
485
-
...PAGINATION_PROPS,
486
-
},
487
-
},
488
-
},
489
456
{
490
457
name: 'communities',
491
458
description:
@@ -543,13 +510,19 @@ const BASE_TOOLS = [
543
510
type: 'object',
544
511
properties: {
545
512
target: {type: 'string',description: 'File path or function name'},
513
+
quick: {
514
+
type: 'boolean',
515
+
description: 'Structural summary only (skip impact + health)',
'Run CI validation predicates against git changes. Checks for new cycles, blast radius violations, signature changes, and boundary violations. Returns pass/fail per predicate — ideal for CI gates.',
683
+
'CI gate: run manifesto rules (no args), diff predicates (with ref/staged), or both (with rules flag). Returns pass/fail verdicts.',
705
684
inputSchema: {
706
685
type: 'object',
707
686
properties: {
708
687
ref: {type: 'string',description: 'Git ref to diff against (default: HEAD)'},
709
688
staged: {type: 'boolean',description: 'Analyze staged changes instead of unstaged'},
689
+
rules: {
690
+
type: 'boolean',
691
+
description: 'Also run manifesto rules alongside diff predicates',
0 commit comments