@norescan/mcp 0.0.0-stage → 0.1.1

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/dist/bin.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
package/dist/bin.js ADDED
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
5
+ const core_1 = require("@norescan/core");
6
+ const server_js_1 = require("./server.js");
7
+ async function main() {
8
+ const projectRoot = process.env.NORESCAN_PROJECT || process.env.CODE_CACHE_PROJECT || process.env.BUGBRAIN_PROJECT || process.env.REPOMIND_PROJECT || process.cwd();
9
+ const core = new core_1.NoReScanCore(projectRoot);
10
+ const config = await core.loadConfig();
11
+ if (!config) {
12
+ // If not yet initialized, auto-initialize
13
+ await core.init();
14
+ }
15
+ const server = (0, server_js_1.createMcpServer)(core);
16
+ const transport = new stdio_js_1.StdioServerTransport();
17
+ await server.connect(transport);
18
+ process.stderr.write(`norescan MCP server running on stdio for project: ${core.config.projectName}\n`);
19
+ }
20
+ main().catch((err) => {
21
+ process.stderr.write(`Fatal MCP error: ${err.message}\n`);
22
+ process.exit(1);
23
+ });
24
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";;;AACA,wEAAiF;AACjF,yCAA8C;AAC9C,2CAA8C;AAE9C,KAAK,UAAU,IAAI;IACjB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACpK,MAAM,IAAI,GAAG,IAAI,mBAAY,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAEvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,0CAA0C;QAC1C,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,2BAAe,EAAC,IAAI,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;IAE7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;AACzG,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './server.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./server.js"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B"}
@@ -0,0 +1,4 @@
1
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
+ import { NoReScanCore } from '@norescan/core';
3
+ export declare function createMcpServer(core: NoReScanCore): Server;
4
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAOnE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK9C,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA4vB1D"}
package/dist/server.js ADDED
@@ -0,0 +1,725 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMcpServer = createMcpServer;
4
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
5
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
6
+ const shared_1 = require("@norescan/shared");
7
+ const fixer_1 = require("@norescan/fixer");
8
+ function createMcpServer(core) {
9
+ const server = new index_js_1.Server({
10
+ name: 'norescan',
11
+ version: '0.1.0',
12
+ }, {
13
+ capabilities: {
14
+ tools: {},
15
+ resources: {},
16
+ },
17
+ });
18
+ // 1. List Available Tools (14 tools)
19
+ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
20
+ return {
21
+ tools: [
22
+ {
23
+ name: 'get_project_overview',
24
+ description: 'Retrieve high-level project architecture, primary languages, directory overview, and stats',
25
+ inputSchema: { type: 'object', properties: {} },
26
+ },
27
+ {
28
+ name: 'get_project_status',
29
+ description: 'Retrieve real-time index status, total files, valid vs stale cached analyses',
30
+ inputSchema: { type: 'object', properties: {} },
31
+ },
32
+ {
33
+ name: 'get_file_analysis',
34
+ description: 'Retrieve cached structural AST analysis, exports, imports, and routes for a relative file path',
35
+ inputSchema: {
36
+ type: 'object',
37
+ properties: {
38
+ path: { type: 'string', description: 'Relative path of the file (e.g. src/auth/service.ts)' },
39
+ },
40
+ required: ['path'],
41
+ },
42
+ },
43
+ {
44
+ name: 'get_file_fingerprint',
45
+ description: 'Verify file cryptographic SHA-256 fingerprint against stored index snapshot',
46
+ inputSchema: {
47
+ type: 'object',
48
+ properties: {
49
+ path: { type: 'string', description: 'Relative path of the file' },
50
+ },
51
+ required: ['path'],
52
+ },
53
+ },
54
+ {
55
+ name: 'get_task_context',
56
+ description: 'Primary intelligence tool: returns task-relevant files, AST summaries, and decisions within token budget',
57
+ inputSchema: {
58
+ type: 'object',
59
+ properties: {
60
+ query: { type: 'string', description: 'Natural language task description (e.g. "Update authentication login")' },
61
+ budget: { type: 'number', description: 'Maximum token budget (default 8000)' },
62
+ format: { type: 'string', enum: ['markdown', 'json'], description: 'Output format' },
63
+ },
64
+ required: ['query'],
65
+ },
66
+ },
67
+ {
68
+ name: 'get_dependencies',
69
+ description: 'Retrieve upstream (imported by this file) and downstream (files importing this file) module relationships',
70
+ inputSchema: {
71
+ type: 'object',
72
+ properties: {
73
+ path: { type: 'string', description: 'Relative path of the file' },
74
+ },
75
+ required: ['path'],
76
+ },
77
+ },
78
+ {
79
+ name: 'get_blast_radius',
80
+ description: 'Calculate the transitive upstream cone of files affected by changes to specified files or a git diff',
81
+ inputSchema: {
82
+ type: 'object',
83
+ properties: {
84
+ files: { type: 'array', items: { type: 'string' }, description: 'Array of modified relative paths' },
85
+ },
86
+ required: ['files'],
87
+ },
88
+ },
89
+ {
90
+ name: 'get_hot_files',
91
+ description: 'Identify the most load-bearing files in the codebase (highest in-degree dependent count)',
92
+ inputSchema: {
93
+ type: 'object',
94
+ properties: {
95
+ limit: { type: 'number', description: 'Maximum number of hot files to return (default 10)' },
96
+ },
97
+ },
98
+ },
99
+ {
100
+ name: 'search_project_memory',
101
+ description: 'Search project memory across file paths, symbols, routes, and architectural decisions',
102
+ inputSchema: {
103
+ type: 'object',
104
+ properties: {
105
+ query: { type: 'string', description: 'Search term or symbol name' },
106
+ limit: { type: 'number', description: 'Maximum results per category' },
107
+ },
108
+ required: ['query'],
109
+ },
110
+ },
111
+ {
112
+ name: 'get_changed_files',
113
+ description: 'Detect modified, added, deleted, and renamed files compared to the persistent index without altering memory',
114
+ inputSchema: { type: 'object', properties: {} },
115
+ },
116
+ {
117
+ name: 'refresh_analysis',
118
+ description: 'Trigger incremental scan or re-analyze a specific file to refresh memory',
119
+ inputSchema: {
120
+ type: 'object',
121
+ properties: {
122
+ path: { type: 'string', description: 'Optional relative path to refresh (refreshes all modified if omitted)' },
123
+ },
124
+ },
125
+ },
126
+ {
127
+ name: 'record_decision',
128
+ description: 'Record a new architectural decision record (ADR) into persistent memory',
129
+ inputSchema: {
130
+ type: 'object',
131
+ properties: {
132
+ title: { type: 'string', description: 'Title of the architectural decision' },
133
+ decision: { type: 'string', description: 'What was decided' },
134
+ rationale: { type: 'string', description: 'Why this decision was made' },
135
+ affectedFiles: { type: 'array', items: { type: 'string' }, description: 'List of affected relative paths' },
136
+ },
137
+ required: ['title', 'decision', 'rationale'],
138
+ },
139
+ },
140
+ {
141
+ name: 'get_decisions',
142
+ description: 'Retrieve historical architectural decision records (ADRs) and technical rationale',
143
+ inputSchema: { type: 'object', properties: {} },
144
+ },
145
+ {
146
+ name: 'record_session',
147
+ description: 'Record an agent session summary and files modified during the turn',
148
+ inputSchema: {
149
+ type: 'object',
150
+ properties: {
151
+ agentName: { type: 'string', description: 'Agent identifier (e.g. antigravity, cursor)' },
152
+ summary: { type: 'string', description: 'Summary of accomplishments' },
153
+ metadata: { type: 'object', description: 'Optional session metadata' },
154
+ },
155
+ required: ['agentName', 'summary'],
156
+ },
157
+ },
158
+ {
159
+ name: 'get_languages',
160
+ description: 'Detect programming languages, file distribution, byte percentages, and monorepo components',
161
+ inputSchema: { type: 'object', properties: {} },
162
+ },
163
+ {
164
+ name: 'get_ecosystems',
165
+ description: 'List active and supported package managers and ecosystem adapters (npm, pip, cargo, go, etc.)',
166
+ inputSchema: { type: 'object', properties: {} },
167
+ },
168
+ {
169
+ name: 'get_package_dependencies',
170
+ description: 'List package dependencies discovered across active manifests and lockfiles',
171
+ inputSchema: { type: 'object', properties: {} },
172
+ },
173
+ {
174
+ name: 'get_project_commands',
175
+ description: 'List discovered build, test, lint, dev, and run commands',
176
+ inputSchema: {
177
+ type: 'object',
178
+ properties: {
179
+ category: { type: 'string', description: 'Optional filter: build, test, lint, dev, run' },
180
+ },
181
+ },
182
+ },
183
+ {
184
+ name: 'get_environment_status',
185
+ description: 'Probe installed system runtimes and validate project toolchain compatibility',
186
+ inputSchema: { type: 'object', properties: {} },
187
+ },
188
+ {
189
+ name: 'get_workspaces',
190
+ description: 'List monorepo workspace packages and member directories',
191
+ inputSchema: { type: 'object', properties: {} },
192
+ },
193
+ {
194
+ name: 'execute_command',
195
+ description: 'Safely execute an authorized project command with pre-flight security validation',
196
+ inputSchema: {
197
+ type: 'object',
198
+ properties: {
199
+ command: { type: 'string', description: 'Name or raw command line of the discovered command' },
200
+ },
201
+ required: ['command'],
202
+ },
203
+ },
204
+ {
205
+ name: 'get_causal_graph',
206
+ description: 'Retrieve full causal dependency graph, including in-degrees, out-degrees, density, and cycles',
207
+ inputSchema: { type: 'object', properties: {} },
208
+ },
209
+ {
210
+ name: 'blast_diff',
211
+ description: 'Blast a git diff patch to compute the transitive upstream cone of affected files',
212
+ inputSchema: {
213
+ type: 'object',
214
+ properties: {
215
+ diff: { type: 'string', description: 'Unified git diff string' },
216
+ maxDepth: { type: 'number', description: 'Maximum upstream depth to traverse (default 10)' },
217
+ },
218
+ required: ['diff'],
219
+ },
220
+ },
221
+ {
222
+ name: 'get_sync_status',
223
+ description: 'Retrieve hybrid memory synchronization status, device ID, cursor, and offline queue depth',
224
+ inputSchema: { type: 'object', properties: {} },
225
+ },
226
+ {
227
+ name: 'remember_file',
228
+ description: 'Immediately hashes, parses AST, and indexes a newly created or modified file so coding agents do not need to repeatedly analyze or read it',
229
+ inputSchema: {
230
+ type: 'object',
231
+ properties: {
232
+ path: { type: 'string', description: 'Relative path of the created or edited file' },
233
+ },
234
+ required: ['path'],
235
+ },
236
+ },
237
+ {
238
+ name: 'inspect_file_memory',
239
+ description: 'Inspect stored AST structure, exports, symbols, and routes of a file directly from memory without reading physical files from disk',
240
+ inputSchema: {
241
+ type: 'object',
242
+ properties: {
243
+ path: { type: 'string', description: 'Relative path of the file' },
244
+ },
245
+ required: ['path'],
246
+ },
247
+ },
248
+ {
249
+ name: 'diagnose_and_fix',
250
+ description: 'Run project tests or diagnostics, identify failure blast radius, and optionally apply automated error fixes',
251
+ inputSchema: {
252
+ type: 'object',
253
+ properties: {
254
+ testCommand: { type: 'string', description: 'Optional custom test command to run (auto-detected if omitted)' },
255
+ autoFix: { type: 'boolean', description: 'Whether to automatically apply discovered fixes (default: false)' },
256
+ },
257
+ },
258
+ },
259
+ ],
260
+ };
261
+ });
262
+ // 2. Call Tool Request Handler
263
+ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
264
+ const { name, arguments: args } = request.params;
265
+ try {
266
+ switch (name) {
267
+ case 'get_project_overview': {
268
+ const status = core.getStatus();
269
+ return {
270
+ content: [
271
+ {
272
+ type: 'text',
273
+ text: JSON.stringify({
274
+ name: status.projectName,
275
+ root: status.rootPath,
276
+ totalFiles: status.totalFiles,
277
+ validAnalyses: status.validAnalyses,
278
+ staleAnalyses: status.staleAnalyses,
279
+ decisionsCount: status.decisionsCount,
280
+ sessionsCount: status.sessionsCount,
281
+ lastScannedAt: status.lastScannedAt,
282
+ }, null, 2),
283
+ },
284
+ ],
285
+ };
286
+ }
287
+ case 'get_project_status': {
288
+ const status = core.getStatus();
289
+ return {
290
+ content: [{ type: 'text', text: JSON.stringify(status, null, 2) }],
291
+ };
292
+ }
293
+ case 'get_file_analysis': {
294
+ const filePath = String(args?.path || '');
295
+ (0, shared_1.assertPathContained)(filePath, core.projectRoot);
296
+ const details = core.explain(filePath);
297
+ if (!details) {
298
+ return {
299
+ isError: true,
300
+ content: [{ type: 'text', text: `File "${filePath}" is not indexed in norescan.` }],
301
+ };
302
+ }
303
+ return {
304
+ content: [{ type: 'text', text: JSON.stringify(details, null, 2) }],
305
+ };
306
+ }
307
+ case 'get_file_fingerprint': {
308
+ const filePath = String(args?.path || '');
309
+ (0, shared_1.assertPathContained)(filePath, core.projectRoot);
310
+ const files = core.fileRepo.getAllByProject(core.config.projectId);
311
+ const snap = files.get(filePath.replace(/\\/g, '/'));
312
+ if (!snap) {
313
+ return {
314
+ isError: true,
315
+ content: [{ type: 'text', text: `File "${filePath}" is not indexed.` }],
316
+ };
317
+ }
318
+ return {
319
+ content: [{ type: 'text', text: JSON.stringify(snap, null, 2) }],
320
+ };
321
+ }
322
+ case 'get_task_context': {
323
+ const query = String(args?.query || '');
324
+ const budget = typeof args?.budget === 'number' ? args.budget : 8000;
325
+ const format = args?.format === 'json' ? 'json' : 'markdown';
326
+ if (format === 'json') {
327
+ const manifest = core.contextEngine.getContext(query, budget);
328
+ return {
329
+ content: [{ type: 'text', text: JSON.stringify(manifest, null, 2) }],
330
+ };
331
+ }
332
+ const markdown = core.contextEngine.getContextMarkdown(query, budget);
333
+ return {
334
+ content: [{ type: 'text', text: markdown }],
335
+ };
336
+ }
337
+ case 'get_dependencies': {
338
+ const filePath = String(args?.path || '');
339
+ (0, shared_1.assertPathContained)(filePath, core.projectRoot);
340
+ const deps = core.getDependencies(filePath);
341
+ if (!deps) {
342
+ return {
343
+ isError: true,
344
+ content: [{ type: 'text', text: `No dependency information for "${filePath}".` }],
345
+ };
346
+ }
347
+ return {
348
+ content: [{ type: 'text', text: JSON.stringify(deps, null, 2) }],
349
+ };
350
+ }
351
+ case 'get_blast_radius': {
352
+ const files = Array.isArray(args?.files) ? args.files : [];
353
+ const cone = core.getBlastRadius(files);
354
+ return {
355
+ content: [
356
+ {
357
+ type: 'text',
358
+ text: JSON.stringify({
359
+ seedFiles: files,
360
+ blastRadiusCount: cone.length,
361
+ affectedFiles: cone,
362
+ }, null, 2),
363
+ },
364
+ ],
365
+ };
366
+ }
367
+ case 'get_hot_files': {
368
+ const limit = typeof args?.limit === 'number' ? args.limit : 10;
369
+ const hotFiles = core.getHotFiles(limit);
370
+ return {
371
+ content: [{ type: 'text', text: JSON.stringify(hotFiles, null, 2) }],
372
+ };
373
+ }
374
+ case 'search_project_memory': {
375
+ const query = String(args?.query || '');
376
+ const limit = typeof args?.limit === 'number' ? args.limit : 20;
377
+ const results = core.search(query, limit);
378
+ return {
379
+ content: [{ type: 'text', text: JSON.stringify(results, null, 2) }],
380
+ };
381
+ }
382
+ case 'get_changed_files': {
383
+ const diff = await core.getDiff();
384
+ return {
385
+ content: [{ type: 'text', text: JSON.stringify(diff, null, 2) }],
386
+ };
387
+ }
388
+ case 'refresh_analysis': {
389
+ const targetPath = args?.path ? String(args.path) : undefined;
390
+ const result = await core.refreshFile(targetPath);
391
+ return {
392
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
393
+ };
394
+ }
395
+ case 'record_decision': {
396
+ const title = String(args?.title || '');
397
+ const decision = String(args?.decision || '');
398
+ const rationale = String(args?.rationale || '');
399
+ const affectedFiles = Array.isArray(args?.affectedFiles) ? args.affectedFiles : [];
400
+ const adr = core.recordDecision({
401
+ title,
402
+ decision,
403
+ rationale,
404
+ affectedFiles,
405
+ });
406
+ return {
407
+ content: [
408
+ {
409
+ type: 'text',
410
+ text: `Decision recorded successfully with ID: ${adr.id}\nTitle: ${adr.title}`,
411
+ },
412
+ ],
413
+ };
414
+ }
415
+ case 'get_decisions': {
416
+ const decisions = core.decisionRepo.listByProject(core.config.projectId);
417
+ return {
418
+ content: [{ type: 'text', text: JSON.stringify(decisions, null, 2) }],
419
+ };
420
+ }
421
+ case 'record_session': {
422
+ const agentName = String(args?.agentName || 'unknown-agent');
423
+ const summary = String(args?.summary || '');
424
+ const metadata = typeof args?.metadata === 'object' && args.metadata ? args.metadata : undefined;
425
+ const session = core.recordSession({
426
+ agentName,
427
+ summary,
428
+ metadata,
429
+ });
430
+ return {
431
+ content: [
432
+ {
433
+ type: 'text',
434
+ text: `Session recorded with ID: ${session.id} for agent: ${session.agentName}`,
435
+ },
436
+ ],
437
+ };
438
+ }
439
+ case 'get_languages': {
440
+ const langs = await core.getLanguages();
441
+ return {
442
+ content: [{ type: 'text', text: JSON.stringify(langs, null, 2) }],
443
+ };
444
+ }
445
+ case 'get_ecosystems': {
446
+ const eco = await core.getEcosystems();
447
+ return {
448
+ content: [{ type: 'text', text: JSON.stringify(eco, null, 2) }],
449
+ };
450
+ }
451
+ case 'get_package_dependencies': {
452
+ const deps = core.getPackageDependencies();
453
+ return {
454
+ content: [{ type: 'text', text: JSON.stringify(deps, null, 2) }],
455
+ };
456
+ }
457
+ case 'get_project_commands': {
458
+ const cat = args?.category ? String(args.category) : undefined;
459
+ const cmds = core.getProjectCommands(cat);
460
+ return {
461
+ content: [{ type: 'text', text: JSON.stringify(cmds, null, 2) }],
462
+ };
463
+ }
464
+ case 'get_environment_status': {
465
+ const envs = await core.getEnvironmentStatus();
466
+ return {
467
+ content: [{ type: 'text', text: JSON.stringify(envs, null, 2) }],
468
+ };
469
+ }
470
+ case 'get_workspaces': {
471
+ const ws = core.getWorkspaces();
472
+ return {
473
+ content: [{ type: 'text', text: JSON.stringify(ws, null, 2) }],
474
+ };
475
+ }
476
+ case 'execute_command': {
477
+ const cmd = String(args?.command || '');
478
+ const res = await core.executeCommand(cmd);
479
+ return {
480
+ content: [{ type: 'text', text: JSON.stringify(res, null, 2) }],
481
+ };
482
+ }
483
+ case 'get_causal_graph': {
484
+ const graphData = core.getCausalGraph();
485
+ return {
486
+ content: [{ type: 'text', text: JSON.stringify(graphData, null, 2) }],
487
+ };
488
+ }
489
+ case 'blast_diff': {
490
+ const diffText = String(args?.diff || '');
491
+ const maxDepth = typeof args?.maxDepth === 'number' ? args.maxDepth : 10;
492
+ const blast = core.blastDiff(diffText, maxDepth);
493
+ return {
494
+ content: [{ type: 'text', text: JSON.stringify(blast, null, 2) }],
495
+ };
496
+ }
497
+ case 'get_sync_status': {
498
+ const syncStatus = core.getSyncStatus();
499
+ return {
500
+ content: [{ type: 'text', text: JSON.stringify(syncStatus, null, 2) }],
501
+ };
502
+ }
503
+ case 'remember_file': {
504
+ const filePath = String(args?.path || '');
505
+ if (!filePath)
506
+ throw new Error('Argument "path" is required');
507
+ const remembered = await core.rememberFile(filePath);
508
+ return {
509
+ content: [{ type: 'text', text: JSON.stringify(remembered, null, 2) }],
510
+ };
511
+ }
512
+ case 'inspect_file_memory': {
513
+ const filePath = String(args?.path || '');
514
+ if (!filePath)
515
+ throw new Error('Argument "path" is required');
516
+ const explained = core.explain(filePath);
517
+ return {
518
+ content: [{ type: 'text', text: JSON.stringify(explained, null, 2) }],
519
+ };
520
+ }
521
+ case 'diagnose_and_fix': {
522
+ const runner = new fixer_1.AutoTestRunner(core);
523
+ const testCmd = args?.testCommand ? String(args.testCommand) : undefined;
524
+ const autoFix = Boolean(args?.autoFix);
525
+ const result = await runner.runAndFix(testCmd, autoFix);
526
+ return {
527
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
528
+ };
529
+ }
530
+ default:
531
+ return {
532
+ isError: true,
533
+ content: [{ type: 'text', text: `Unknown tool: ${name}` }],
534
+ };
535
+ }
536
+ }
537
+ catch (err) {
538
+ return {
539
+ isError: true,
540
+ content: [{ type: 'text', text: `Tool execution failed: ${err.message}` }],
541
+ };
542
+ }
543
+ });
544
+ // 3. Resources Handlers (6 resources)
545
+ server.setRequestHandler(types_js_1.ListResourcesRequestSchema, async () => {
546
+ return {
547
+ resources: [
548
+ {
549
+ uri: 'norescan://project/overview',
550
+ name: 'Project Overview',
551
+ mimeType: 'application/json',
552
+ description: 'Summary of registered project metadata and structure',
553
+ },
554
+ {
555
+ uri: 'norescan://project/status',
556
+ name: 'Project Status',
557
+ mimeType: 'application/json',
558
+ description: 'Real-time cache freshness and file indexing stats',
559
+ },
560
+ {
561
+ uri: 'norescan://project/decisions',
562
+ name: 'Architectural Decisions',
563
+ mimeType: 'application/json',
564
+ description: 'All recorded architectural decisions (ADRs)',
565
+ },
566
+ {
567
+ uri: 'norescan://project/dependencies',
568
+ name: 'Project Dependency Graph',
569
+ mimeType: 'application/json',
570
+ description: 'Complete directed import dependency graph',
571
+ },
572
+ {
573
+ uri: 'norescan://project/hot-files',
574
+ name: 'Hot Load-Bearing Files',
575
+ mimeType: 'application/json',
576
+ description: 'Files with highest in-degree (most dependents)',
577
+ },
578
+ {
579
+ uri: 'norescan://project/schema',
580
+ name: 'Memory Schema Definition',
581
+ mimeType: 'text/plain',
582
+ description: 'Active SQLite database schema and indexes',
583
+ },
584
+ {
585
+ uri: 'norescan://project/languages',
586
+ name: 'Detected Languages',
587
+ mimeType: 'application/json',
588
+ description: 'Language breakdown and monorepo components',
589
+ },
590
+ {
591
+ uri: 'norescan://project/ecosystems',
592
+ name: 'Ecosystem Adapters',
593
+ mimeType: 'application/json',
594
+ description: 'Active and supported package manager ecosystems',
595
+ },
596
+ {
597
+ uri: 'norescan://project/commands',
598
+ name: 'Project Commands',
599
+ mimeType: 'application/json',
600
+ description: 'Discovered build, test, and run commands',
601
+ },
602
+ {
603
+ uri: 'norescan://project/packages',
604
+ name: 'Package Dependencies',
605
+ mimeType: 'application/json',
606
+ description: 'Package dependencies from active manifests',
607
+ },
608
+ {
609
+ uri: 'norescan://project/workspaces',
610
+ name: 'Monorepo Workspaces',
611
+ mimeType: 'application/json',
612
+ description: 'Monorepo workspace members and dependency graph',
613
+ },
614
+ {
615
+ uri: 'norescan://project/causal-graph',
616
+ name: 'Causal Dependency Graph',
617
+ mimeType: 'application/json',
618
+ description: 'Full graph with in-degrees, out-degrees, and cycles',
619
+ },
620
+ {
621
+ uri: 'norescan://project/sync',
622
+ name: 'Hybrid Sync Status',
623
+ mimeType: 'application/json',
624
+ description: 'Sync cursor, device ID, and offline queue status',
625
+ },
626
+ ],
627
+ };
628
+ });
629
+ server.setRequestHandler(types_js_1.ReadResourceRequestSchema, async (request) => {
630
+ const { uri } = request.params;
631
+ switch (uri) {
632
+ case 'norescan://project/overview': {
633
+ const status = core.getStatus();
634
+ return {
635
+ contents: [{ uri, mimeType: 'application/json', text: JSON.stringify(status, null, 2) }],
636
+ };
637
+ }
638
+ case 'norescan://project/status': {
639
+ const status = core.getStatus();
640
+ return {
641
+ contents: [{ uri, mimeType: 'application/json', text: JSON.stringify(status, null, 2) }],
642
+ };
643
+ }
644
+ case 'norescan://project/decisions': {
645
+ const decisions = core.decisionRepo.listByProject(core.config.projectId);
646
+ return {
647
+ contents: [{ uri, mimeType: 'application/json', text: JSON.stringify(decisions, null, 2) }],
648
+ };
649
+ }
650
+ case 'norescan://project/dependencies': {
651
+ const nodes = core.graph.getNodes();
652
+ const graphData = {};
653
+ for (const n of nodes) {
654
+ graphData[n] = core.graph.getDependencies(n);
655
+ }
656
+ return {
657
+ contents: [{ uri, mimeType: 'application/json', text: JSON.stringify(graphData, null, 2) }],
658
+ };
659
+ }
660
+ case 'norescan://project/hot-files': {
661
+ const hotFiles = core.getHotFiles(20);
662
+ return {
663
+ contents: [{ uri, mimeType: 'application/json', text: JSON.stringify(hotFiles, null, 2) }],
664
+ };
665
+ }
666
+ case 'norescan://project/schema': {
667
+ return {
668
+ contents: [
669
+ {
670
+ uri,
671
+ mimeType: 'text/plain',
672
+ text: 'norescan SQLite Memory Schema:\nTables: schema_migrations, projects, files, file_versions, analyses, dependencies, sessions, tasks, task_files, decisions, memory_events, ecosystem_manifests, package_dependencies, project_commands, workspace_members, sync_cursors, sync_offline_queue.',
673
+ },
674
+ ],
675
+ };
676
+ }
677
+ case 'norescan://project/languages': {
678
+ const langs = await core.getLanguages();
679
+ return {
680
+ contents: [{ uri, mimeType: 'application/json', text: JSON.stringify(langs, null, 2) }],
681
+ };
682
+ }
683
+ case 'norescan://project/ecosystems': {
684
+ const eco = await core.getEcosystems();
685
+ return {
686
+ contents: [{ uri, mimeType: 'application/json', text: JSON.stringify(eco, null, 2) }],
687
+ };
688
+ }
689
+ case 'norescan://project/commands': {
690
+ const cmds = core.getProjectCommands();
691
+ return {
692
+ contents: [{ uri, mimeType: 'application/json', text: JSON.stringify(cmds, null, 2) }],
693
+ };
694
+ }
695
+ case 'norescan://project/packages': {
696
+ const pkgs = core.getPackageDependencies();
697
+ return {
698
+ contents: [{ uri, mimeType: 'application/json', text: JSON.stringify(pkgs, null, 2) }],
699
+ };
700
+ }
701
+ case 'norescan://project/workspaces': {
702
+ const ws = core.getWorkspaces();
703
+ return {
704
+ contents: [{ uri, mimeType: 'application/json', text: JSON.stringify(ws, null, 2) }],
705
+ };
706
+ }
707
+ case 'norescan://project/causal-graph': {
708
+ const cg = core.getCausalGraph();
709
+ return {
710
+ contents: [{ uri, mimeType: 'application/json', text: JSON.stringify(cg, null, 2) }],
711
+ };
712
+ }
713
+ case 'norescan://project/sync': {
714
+ const syncStatus = core.getSyncStatus();
715
+ return {
716
+ contents: [{ uri, mimeType: 'application/json', text: JSON.stringify(syncStatus, null, 2) }],
717
+ };
718
+ }
719
+ default:
720
+ throw new Error(`Resource not found: ${uri}`);
721
+ }
722
+ });
723
+ return server;
724
+ }
725
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,35 @@
1
1
  {
2
2
  "name": "@norescan/mcp",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.1.1",
4
+ "description": "Universal Model Context Protocol (MCP) server for norescan",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "bin": {
11
+ "norescan-mcp": "./dist/bin.js"
12
+ },
13
+ "dependencies": {
14
+ "@modelcontextprotocol/sdk": "^1.6.1",
15
+ "@norescan/core": "0.1.1",
16
+ "@norescan/fixer": "0.1.1",
17
+ "@norescan/shared": "0.1.1",
18
+ "zod": "^3.24.2"
19
+ },
20
+ "devDependencies": {
21
+ "@types/node": "^22.13.10",
22
+ "typescript": "^5.8.2",
23
+ "vitest": "^3.0.8"
24
+ },
25
+ "publishConfig": {
26
+ "access": "public"
27
+ },
28
+ "license": "Apache-2.0",
29
+ "scripts": {
30
+ "build": "tsc",
31
+ "clean": "rimraf dist",
32
+ "typecheck": "tsc --noEmit",
33
+ "test": "vitest run"
34
+ }
6
35
  }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.