@tostudy-ai/mcp-setup 1.0.0
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 +149 -0
- package/bin/cli.js +6 -0
- package/dist/__tests__/e2e-diagnostic-repair-flow.test.d.ts +52 -0
- package/dist/__tests__/e2e-diagnostic-repair-flow.test.d.ts.map +1 -0
- package/dist/__tests__/e2e-diagnostic-repair-flow.test.js +720 -0
- package/dist/__tests__/e2e-diagnostic-repair-flow.test.js.map +1 -0
- package/dist/__tests__/e2e-wizard-flow.test.d.ts +43 -0
- package/dist/__tests__/e2e-wizard-flow.test.d.ts.map +1 -0
- package/dist/__tests__/e2e-wizard-flow.test.js +407 -0
- package/dist/__tests__/e2e-wizard-flow.test.js.map +1 -0
- package/dist/__tests__/ide-handlers.test.d.ts +10 -0
- package/dist/__tests__/ide-handlers.test.d.ts.map +1 -0
- package/dist/__tests__/ide-handlers.test.js +336 -0
- package/dist/__tests__/ide-handlers.test.js.map +1 -0
- package/dist/__tests__/install-command.test.d.ts +10 -0
- package/dist/__tests__/install-command.test.d.ts.map +1 -0
- package/dist/__tests__/install-command.test.js +237 -0
- package/dist/__tests__/install-command.test.js.map +1 -0
- package/dist/config.d.ts +51 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +117 -0
- package/dist/config.js.map +1 -0
- package/dist/detect.d.ts +42 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/detect.js +277 -0
- package/dist/detect.js.map +1 -0
- package/dist/diagnose.d.ts +36 -0
- package/dist/diagnose.d.ts.map +1 -0
- package/dist/diagnose.js +512 -0
- package/dist/diagnose.js.map +1 -0
- package/dist/ide-handlers/base.d.ts +36 -0
- package/dist/ide-handlers/base.d.ts.map +1 -0
- package/dist/ide-handlers/base.js +41 -0
- package/dist/ide-handlers/base.js.map +1 -0
- package/dist/ide-handlers/claude-code.d.ts +15 -0
- package/dist/ide-handlers/claude-code.d.ts.map +1 -0
- package/dist/ide-handlers/claude-code.js +50 -0
- package/dist/ide-handlers/claude-code.js.map +1 -0
- package/dist/ide-handlers/cursor.d.ts +15 -0
- package/dist/ide-handlers/cursor.d.ts.map +1 -0
- package/dist/ide-handlers/cursor.js +61 -0
- package/dist/ide-handlers/cursor.js.map +1 -0
- package/dist/ide-handlers/desktop.d.ts +16 -0
- package/dist/ide-handlers/desktop.d.ts.map +1 -0
- package/dist/ide-handlers/desktop.js +26 -0
- package/dist/ide-handlers/desktop.js.map +1 -0
- package/dist/ide-handlers/index.d.ts +21 -0
- package/dist/ide-handlers/index.d.ts.map +1 -0
- package/dist/ide-handlers/index.js +49 -0
- package/dist/ide-handlers/index.js.map +1 -0
- package/dist/ide-handlers/manual.d.ts +16 -0
- package/dist/ide-handlers/manual.d.ts.map +1 -0
- package/dist/ide-handlers/manual.js +34 -0
- package/dist/ide-handlers/manual.js.map +1 -0
- package/dist/ide-handlers/opencode.d.ts +15 -0
- package/dist/ide-handlers/opencode.d.ts.map +1 -0
- package/dist/ide-handlers/opencode.js +57 -0
- package/dist/ide-handlers/opencode.js.map +1 -0
- package/dist/ide-handlers/vscode.d.ts +16 -0
- package/dist/ide-handlers/vscode.d.ts.map +1 -0
- package/dist/ide-handlers/vscode.js +62 -0
- package/dist/ide-handlers/vscode.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +501 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts.d.ts +23 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +68 -0
- package/dist/prompts.js.map +1 -0
- package/dist/repair.d.ts +50 -0
- package/dist/repair.d.ts.map +1 -0
- package/dist/repair.js +588 -0
- package/dist/repair.js.map +1 -0
- package/package.json +54 -0
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code Configuration Manager
|
|
3
|
+
*
|
|
4
|
+
* Handles reading/writing Claude Code's MCP server configuration.
|
|
5
|
+
*/
|
|
6
|
+
export interface ClaudeConfig {
|
|
7
|
+
mcpServers?: Record<string, McpServerConfig>;
|
|
8
|
+
[key: string]: unknown;
|
|
9
|
+
}
|
|
10
|
+
export interface McpServerConfig {
|
|
11
|
+
type?: 'sse' | 'stdio';
|
|
12
|
+
url?: string;
|
|
13
|
+
headers?: Record<string, string>;
|
|
14
|
+
command?: string;
|
|
15
|
+
args?: string[];
|
|
16
|
+
env?: Record<string, string>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get the path to Claude Code's config file based on OS
|
|
20
|
+
*/
|
|
21
|
+
export declare function getClaudeConfigPath(): string;
|
|
22
|
+
/**
|
|
23
|
+
* Check if Claude Code is installed (config directory exists)
|
|
24
|
+
*/
|
|
25
|
+
export declare function isClaudeInstalled(): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Read Claude Code's current config
|
|
28
|
+
*/
|
|
29
|
+
export declare function readClaudeConfig(): ClaudeConfig;
|
|
30
|
+
/**
|
|
31
|
+
* Write Claude Code's config
|
|
32
|
+
*/
|
|
33
|
+
export declare function writeClaudeConfig(config: ClaudeConfig): void;
|
|
34
|
+
/**
|
|
35
|
+
* Add Catalyst MCP server to Claude config
|
|
36
|
+
* Uses SSE transport - MCP server runs on port 3701
|
|
37
|
+
*/
|
|
38
|
+
export declare function addTostudyMcpServer(apiKey: string, platformUrl: string): void;
|
|
39
|
+
/**
|
|
40
|
+
* Remove Catalyst MCP server from Claude config
|
|
41
|
+
*/
|
|
42
|
+
export declare function removeTostudyMcpServer(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Check if Catalyst MCP server is already configured
|
|
45
|
+
*/
|
|
46
|
+
export declare function isTostudyMcpConfigured(): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Get the current Catalyst config if exists
|
|
49
|
+
*/
|
|
50
|
+
export declare function getTostudyMcpConfig(): McpServerConfig | null;
|
|
51
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAE9B,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAc5C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAI3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAc/C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAiB5D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAuB7E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAO7C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAGhD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,GAAG,IAAI,CAG5D"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code Configuration Manager
|
|
3
|
+
*
|
|
4
|
+
* Handles reading/writing Claude Code's MCP server configuration.
|
|
5
|
+
*/
|
|
6
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync, copyFileSync } from 'node:fs';
|
|
7
|
+
import { dirname, join } from 'node:path';
|
|
8
|
+
import { homedir, platform } from 'node:os';
|
|
9
|
+
/**
|
|
10
|
+
* Get the path to Claude Code's config file based on OS
|
|
11
|
+
*/
|
|
12
|
+
export function getClaudeConfigPath() {
|
|
13
|
+
const home = homedir();
|
|
14
|
+
const os = platform();
|
|
15
|
+
switch (os) {
|
|
16
|
+
case 'darwin':
|
|
17
|
+
return join(home, 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json');
|
|
18
|
+
case 'win32':
|
|
19
|
+
return join(process.env.APPDATA || join(home, 'AppData', 'Roaming'), 'Claude', 'claude_desktop_config.json');
|
|
20
|
+
case 'linux':
|
|
21
|
+
return join(home, '.config', 'Claude', 'claude_desktop_config.json');
|
|
22
|
+
default:
|
|
23
|
+
throw new Error(`Unsupported operating system: ${os}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Check if Claude Code is installed (config directory exists)
|
|
28
|
+
*/
|
|
29
|
+
export function isClaudeInstalled() {
|
|
30
|
+
const configPath = getClaudeConfigPath();
|
|
31
|
+
const configDir = dirname(configPath);
|
|
32
|
+
return existsSync(configDir);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Read Claude Code's current config
|
|
36
|
+
*/
|
|
37
|
+
export function readClaudeConfig() {
|
|
38
|
+
const configPath = getClaudeConfigPath();
|
|
39
|
+
if (!existsSync(configPath)) {
|
|
40
|
+
return { mcpServers: {} };
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
const content = readFileSync(configPath, 'utf-8');
|
|
44
|
+
return JSON.parse(content);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// If config is corrupted, start fresh
|
|
48
|
+
return { mcpServers: {} };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Write Claude Code's config
|
|
53
|
+
*/
|
|
54
|
+
export function writeClaudeConfig(config) {
|
|
55
|
+
const configPath = getClaudeConfigPath();
|
|
56
|
+
const configDir = dirname(configPath);
|
|
57
|
+
// Ensure directory exists
|
|
58
|
+
if (!existsSync(configDir)) {
|
|
59
|
+
mkdirSync(configDir, { recursive: true });
|
|
60
|
+
}
|
|
61
|
+
// Backup existing config
|
|
62
|
+
if (existsSync(configPath)) {
|
|
63
|
+
const backupPath = `${configPath}.backup`;
|
|
64
|
+
copyFileSync(configPath, backupPath);
|
|
65
|
+
}
|
|
66
|
+
// Write new config with pretty formatting
|
|
67
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Add Catalyst MCP server to Claude config
|
|
71
|
+
* Uses SSE transport - MCP server runs on port 3701
|
|
72
|
+
*/
|
|
73
|
+
export function addTostudyMcpServer(apiKey, platformUrl) {
|
|
74
|
+
const config = readClaudeConfig();
|
|
75
|
+
// Initialize mcpServers if not exists
|
|
76
|
+
if (!config.mcpServers) {
|
|
77
|
+
config.mcpServers = {};
|
|
78
|
+
}
|
|
79
|
+
// MCP server URL (port 3701 for SSE endpoint)
|
|
80
|
+
const mcpServerUrl = platformUrl.replace(':3700', ':3701');
|
|
81
|
+
// Add Catalyst server using SSE transport
|
|
82
|
+
// SECURITY: Use Authorization header instead of URL query parameters
|
|
83
|
+
// API keys in URLs can be leaked via server logs, proxy logs, browser history, and HTTP Referer headers
|
|
84
|
+
config.mcpServers['tostudy'] = {
|
|
85
|
+
type: 'sse',
|
|
86
|
+
url: `${mcpServerUrl}/mcp/sse`,
|
|
87
|
+
headers: {
|
|
88
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
writeClaudeConfig(config);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Remove Catalyst MCP server from Claude config
|
|
95
|
+
*/
|
|
96
|
+
export function removeTostudyMcpServer() {
|
|
97
|
+
const config = readClaudeConfig();
|
|
98
|
+
if (config.mcpServers && config.mcpServers['tostudy']) {
|
|
99
|
+
delete config.mcpServers['tostudy'];
|
|
100
|
+
writeClaudeConfig(config);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Check if Catalyst MCP server is already configured
|
|
105
|
+
*/
|
|
106
|
+
export function isTostudyMcpConfigured() {
|
|
107
|
+
const config = readClaudeConfig();
|
|
108
|
+
return !!(config.mcpServers && config.mcpServers['tostudy']);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get the current Catalyst config if exists
|
|
112
|
+
*/
|
|
113
|
+
export function getTostudyMcpConfig() {
|
|
114
|
+
const config = readClaudeConfig();
|
|
115
|
+
return config.mcpServers?.['tostudy'] || null;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/detect.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IDE Detection Module
|
|
3
|
+
*
|
|
4
|
+
* Detects installed IDEs (VS Code, JetBrains) for MCP configuration.
|
|
5
|
+
*/
|
|
6
|
+
export type IDEType = 'vscode' | 'vscode-insiders' | 'cursor' | 'jetbrains';
|
|
7
|
+
export interface DetectedIDE {
|
|
8
|
+
type: IDEType;
|
|
9
|
+
name: string;
|
|
10
|
+
version?: string;
|
|
11
|
+
configPath: string;
|
|
12
|
+
installed: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Detect VS Code installation
|
|
16
|
+
*/
|
|
17
|
+
export declare function detectVSCode(): DetectedIDE;
|
|
18
|
+
/**
|
|
19
|
+
* Detect VS Code Insiders installation
|
|
20
|
+
*/
|
|
21
|
+
export declare function detectVSCodeInsiders(): DetectedIDE;
|
|
22
|
+
/**
|
|
23
|
+
* Detect Cursor IDE installation
|
|
24
|
+
*/
|
|
25
|
+
export declare function detectCursor(): DetectedIDE;
|
|
26
|
+
/**
|
|
27
|
+
* Detect JetBrains IDE installation
|
|
28
|
+
*/
|
|
29
|
+
export declare function detectJetBrains(): DetectedIDE;
|
|
30
|
+
/**
|
|
31
|
+
* Detect all supported IDEs
|
|
32
|
+
*/
|
|
33
|
+
export declare function detectAllIDEs(): DetectedIDE[];
|
|
34
|
+
/**
|
|
35
|
+
* Get only installed IDEs
|
|
36
|
+
*/
|
|
37
|
+
export declare function getInstalledIDEs(): DetectedIDE[];
|
|
38
|
+
/**
|
|
39
|
+
* Check if any supported IDE is installed
|
|
40
|
+
*/
|
|
41
|
+
export declare function hasAnyIDE(): boolean;
|
|
42
|
+
//# sourceMappingURL=detect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,iBAAiB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE5E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AAgLD;;GAEG;AACH,wBAAgB,YAAY,IAAI,WAAW,CAQ1C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,WAAW,CAQlD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,WAAW,CAQ1C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,WAAW,CAmC7C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,WAAW,EAAE,CAO7C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,EAAE,CAEhD;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC"}
|
package/dist/detect.js
ADDED
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IDE Detection Module
|
|
3
|
+
*
|
|
4
|
+
* Detects installed IDEs (VS Code, JetBrains) for MCP configuration.
|
|
5
|
+
*/
|
|
6
|
+
import { existsSync, readdirSync } from 'node:fs';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
import { homedir, platform } from 'node:os';
|
|
9
|
+
/**
|
|
10
|
+
* Get VS Code config directory based on OS
|
|
11
|
+
*/
|
|
12
|
+
function getVSCodeConfigDir(variant) {
|
|
13
|
+
const home = homedir();
|
|
14
|
+
const os = platform();
|
|
15
|
+
const folderNames = {
|
|
16
|
+
stable: 'Code',
|
|
17
|
+
insiders: 'Code - Insiders',
|
|
18
|
+
cursor: 'Cursor',
|
|
19
|
+
};
|
|
20
|
+
const folder = folderNames[variant];
|
|
21
|
+
switch (os) {
|
|
22
|
+
case 'darwin':
|
|
23
|
+
return join(home, 'Library', 'Application Support', folder, 'User');
|
|
24
|
+
case 'win32':
|
|
25
|
+
return join(process.env.APPDATA || join(home, 'AppData', 'Roaming'), folder, 'User');
|
|
26
|
+
case 'linux':
|
|
27
|
+
return join(home, '.config', folder, 'User');
|
|
28
|
+
default:
|
|
29
|
+
return '';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get VS Code MCP settings file path
|
|
34
|
+
*/
|
|
35
|
+
function getVSCodeMcpConfigPath(variant) {
|
|
36
|
+
const configDir = getVSCodeConfigDir(variant);
|
|
37
|
+
if (!configDir)
|
|
38
|
+
return '';
|
|
39
|
+
return join(configDir, 'globalStorage', 'saoudrizwan.claude-dev', 'settings', 'cline_mcp_settings.json');
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Check if VS Code variant is installed
|
|
43
|
+
*/
|
|
44
|
+
function isVSCodeInstalled(variant) {
|
|
45
|
+
const os = platform();
|
|
46
|
+
const home = homedir();
|
|
47
|
+
const appNames = {
|
|
48
|
+
stable: ['Visual Studio Code.app', 'code'],
|
|
49
|
+
insiders: ['Visual Studio Code - Insiders.app', 'code-insiders'],
|
|
50
|
+
cursor: ['Cursor.app', 'cursor'],
|
|
51
|
+
};
|
|
52
|
+
const [macApp, linuxCmd] = appNames[variant];
|
|
53
|
+
switch (os) {
|
|
54
|
+
case 'darwin':
|
|
55
|
+
// Check /Applications folder
|
|
56
|
+
return existsSync(join('/Applications', macApp)) ||
|
|
57
|
+
existsSync(join(home, 'Applications', macApp));
|
|
58
|
+
case 'win32': {
|
|
59
|
+
// Check common Windows install locations
|
|
60
|
+
const programFiles = process.env.ProgramFiles || 'C:\\Program Files';
|
|
61
|
+
const programFilesX86 = process.env['ProgramFiles(x86)'] || 'C:\\Program Files (x86)';
|
|
62
|
+
const localAppData = process.env.LOCALAPPDATA || join(home, 'AppData', 'Local');
|
|
63
|
+
const winPaths = variant === 'cursor'
|
|
64
|
+
? [join(localAppData, 'Programs', 'cursor', 'Cursor.exe')]
|
|
65
|
+
: [
|
|
66
|
+
join(programFiles, 'Microsoft VS Code', 'Code.exe'),
|
|
67
|
+
join(programFilesX86, 'Microsoft VS Code', 'Code.exe'),
|
|
68
|
+
join(localAppData, 'Programs', 'Microsoft VS Code', 'Code.exe'),
|
|
69
|
+
];
|
|
70
|
+
if (variant === 'insiders') {
|
|
71
|
+
winPaths.push(join(programFiles, 'Microsoft VS Code Insiders', 'Code - Insiders.exe'), join(localAppData, 'Programs', 'Microsoft VS Code Insiders', 'Code - Insiders.exe'));
|
|
72
|
+
}
|
|
73
|
+
return winPaths.some((p) => existsSync(p));
|
|
74
|
+
}
|
|
75
|
+
case 'linux':
|
|
76
|
+
// Check if config directory exists (indicates installation)
|
|
77
|
+
return existsSync(getVSCodeConfigDir(variant)) ||
|
|
78
|
+
existsSync(join('/usr/bin', linuxCmd)) ||
|
|
79
|
+
existsSync(join('/usr/local/bin', linuxCmd)) ||
|
|
80
|
+
existsSync(join(home, '.local', 'bin', linuxCmd));
|
|
81
|
+
default:
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get JetBrains config directory based on OS
|
|
87
|
+
*/
|
|
88
|
+
function getJetBrainsConfigDir() {
|
|
89
|
+
const home = homedir();
|
|
90
|
+
const os = platform();
|
|
91
|
+
switch (os) {
|
|
92
|
+
case 'darwin':
|
|
93
|
+
return join(home, 'Library', 'Application Support', 'JetBrains');
|
|
94
|
+
case 'win32':
|
|
95
|
+
return join(process.env.APPDATA || join(home, 'AppData', 'Roaming'), 'JetBrains');
|
|
96
|
+
case 'linux':
|
|
97
|
+
return join(home, '.config', 'JetBrains');
|
|
98
|
+
default:
|
|
99
|
+
return '';
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* List installed JetBrains IDEs by scanning config directory
|
|
104
|
+
*/
|
|
105
|
+
function getInstalledJetBrainsIDEs() {
|
|
106
|
+
const configDir = getJetBrainsConfigDir();
|
|
107
|
+
if (!configDir || !existsSync(configDir)) {
|
|
108
|
+
return [];
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
const entries = readdirSync(configDir, { withFileTypes: true });
|
|
112
|
+
return entries
|
|
113
|
+
.filter((entry) => entry.isDirectory())
|
|
114
|
+
.map((entry) => entry.name)
|
|
115
|
+
.filter((name) => {
|
|
116
|
+
// Filter for actual IDE directories (e.g., IntelliJIdea2024.1, WebStorm2023.3)
|
|
117
|
+
return /^(IntelliJIdea|WebStorm|PyCharm|PhpStorm|GoLand|Rider|CLion|RubyMine|DataGrip|Fleet)\d{4}\.\d/i.test(name);
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return [];
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Check if any JetBrains IDE is installed
|
|
126
|
+
*/
|
|
127
|
+
function isJetBrainsInstalled() {
|
|
128
|
+
const installedIDEs = getInstalledJetBrainsIDEs();
|
|
129
|
+
return installedIDEs.length > 0;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get the primary JetBrains IDE name (most recently versioned)
|
|
133
|
+
*/
|
|
134
|
+
function getPrimaryJetBrainsIDE() {
|
|
135
|
+
const installedIDEs = getInstalledJetBrainsIDEs();
|
|
136
|
+
if (installedIDEs.length === 0)
|
|
137
|
+
return null;
|
|
138
|
+
// Sort by version (descending) to get most recent
|
|
139
|
+
const sorted = installedIDEs.sort((a, b) => {
|
|
140
|
+
const versionA = a.match(/\d{4}\.\d/)?.[0] || '0';
|
|
141
|
+
const versionB = b.match(/\d{4}\.\d/)?.[0] || '0';
|
|
142
|
+
return versionB.localeCompare(versionA);
|
|
143
|
+
});
|
|
144
|
+
return sorted[0];
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Get JetBrains MCP config path for a specific IDE version directory
|
|
148
|
+
*/
|
|
149
|
+
function getJetBrainsMcpConfigPath(ideDir) {
|
|
150
|
+
const configDir = getJetBrainsConfigDir();
|
|
151
|
+
if (!configDir)
|
|
152
|
+
return '';
|
|
153
|
+
const targetDir = ideDir || getPrimaryJetBrainsIDE();
|
|
154
|
+
if (!targetDir)
|
|
155
|
+
return '';
|
|
156
|
+
// MCP Claude plugin stores config in options directory
|
|
157
|
+
return join(configDir, targetDir, 'options', 'mcp-servers.json');
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Detect VS Code installation
|
|
161
|
+
*/
|
|
162
|
+
export function detectVSCode() {
|
|
163
|
+
const installed = isVSCodeInstalled('stable');
|
|
164
|
+
return {
|
|
165
|
+
type: 'vscode',
|
|
166
|
+
name: 'Visual Studio Code',
|
|
167
|
+
configPath: getVSCodeMcpConfigPath('stable'),
|
|
168
|
+
installed,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Detect VS Code Insiders installation
|
|
173
|
+
*/
|
|
174
|
+
export function detectVSCodeInsiders() {
|
|
175
|
+
const installed = isVSCodeInstalled('insiders');
|
|
176
|
+
return {
|
|
177
|
+
type: 'vscode-insiders',
|
|
178
|
+
name: 'Visual Studio Code - Insiders',
|
|
179
|
+
configPath: getVSCodeMcpConfigPath('insiders'),
|
|
180
|
+
installed,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Detect Cursor IDE installation
|
|
185
|
+
*/
|
|
186
|
+
export function detectCursor() {
|
|
187
|
+
const installed = isVSCodeInstalled('cursor');
|
|
188
|
+
return {
|
|
189
|
+
type: 'cursor',
|
|
190
|
+
name: 'Cursor',
|
|
191
|
+
configPath: getVSCodeMcpConfigPath('cursor'),
|
|
192
|
+
installed,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Detect JetBrains IDE installation
|
|
197
|
+
*/
|
|
198
|
+
export function detectJetBrains() {
|
|
199
|
+
const installed = isJetBrainsInstalled();
|
|
200
|
+
const primaryIDE = getPrimaryJetBrainsIDE();
|
|
201
|
+
// Extract IDE name and version from directory name
|
|
202
|
+
let name = 'JetBrains IDE';
|
|
203
|
+
let version;
|
|
204
|
+
if (primaryIDE) {
|
|
205
|
+
const match = primaryIDE.match(/^(\w+?)(\d{4}\.\d)/);
|
|
206
|
+
if (match) {
|
|
207
|
+
const ideNames = {
|
|
208
|
+
'IntelliJIdea': 'IntelliJ IDEA',
|
|
209
|
+
'WebStorm': 'WebStorm',
|
|
210
|
+
'PyCharm': 'PyCharm',
|
|
211
|
+
'PhpStorm': 'PhpStorm',
|
|
212
|
+
'GoLand': 'GoLand',
|
|
213
|
+
'Rider': 'Rider',
|
|
214
|
+
'CLion': 'CLion',
|
|
215
|
+
'RubyMine': 'RubyMine',
|
|
216
|
+
'DataGrip': 'DataGrip',
|
|
217
|
+
'Fleet': 'Fleet',
|
|
218
|
+
};
|
|
219
|
+
name = ideNames[match[1]] || match[1];
|
|
220
|
+
version = match[2];
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return {
|
|
224
|
+
type: 'jetbrains',
|
|
225
|
+
name,
|
|
226
|
+
version,
|
|
227
|
+
configPath: getJetBrainsMcpConfigPath(),
|
|
228
|
+
installed,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Detect all supported IDEs
|
|
233
|
+
*/
|
|
234
|
+
export function detectAllIDEs() {
|
|
235
|
+
return [
|
|
236
|
+
detectVSCode(),
|
|
237
|
+
detectVSCodeInsiders(),
|
|
238
|
+
detectCursor(),
|
|
239
|
+
detectJetBrains(),
|
|
240
|
+
];
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Get only installed IDEs
|
|
244
|
+
*/
|
|
245
|
+
export function getInstalledIDEs() {
|
|
246
|
+
return detectAllIDEs().filter((ide) => ide.installed);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Check if any supported IDE is installed
|
|
250
|
+
*/
|
|
251
|
+
export function hasAnyIDE() {
|
|
252
|
+
return detectAllIDEs().some((ide) => ide.installed);
|
|
253
|
+
}
|
|
254
|
+
// CLI entry point for testing
|
|
255
|
+
if (process.argv[1]?.endsWith('detect.js')) {
|
|
256
|
+
const installedIDEs = getInstalledIDEs();
|
|
257
|
+
if (installedIDEs.length === 0) {
|
|
258
|
+
process.stdout.write('No supported IDEs detected.\n');
|
|
259
|
+
process.stdout.write('\nSupported IDEs:\n');
|
|
260
|
+
process.stdout.write(' - Visual Studio Code\n');
|
|
261
|
+
process.stdout.write(' - Visual Studio Code - Insiders\n');
|
|
262
|
+
process.stdout.write(' - Cursor\n');
|
|
263
|
+
process.stdout.write(' - JetBrains IDEs (IntelliJ, WebStorm, PyCharm, etc.)\n');
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
process.stdout.write('Detected IDEs:\n');
|
|
267
|
+
for (const ide of installedIDEs) {
|
|
268
|
+
const versionStr = ide.version ? ` (${ide.version})` : '';
|
|
269
|
+
process.stdout.write(` ✓ ${ide.name}${versionStr}\n`);
|
|
270
|
+
process.stdout.write(` Config: ${ide.configPath || 'N/A'}\n`);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
// Output as JSON for programmatic use
|
|
274
|
+
process.stdout.write('\n--- JSON Output ---\n');
|
|
275
|
+
process.stdout.write(JSON.stringify(installedIDEs, null, 2) + '\n');
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* MCP Diagnostic Module
|
|
4
|
+
*
|
|
5
|
+
* Performs diagnostic checks for common MCP configuration issues.
|
|
6
|
+
* Detects port conflicts, missing config, auth errors, and connectivity problems.
|
|
7
|
+
*/
|
|
8
|
+
export type IssueSeverity = 'critical' | 'warning' | 'info';
|
|
9
|
+
export interface DiagnosticIssue {
|
|
10
|
+
id: string;
|
|
11
|
+
severity: IssueSeverity;
|
|
12
|
+
title: string;
|
|
13
|
+
description: string;
|
|
14
|
+
suggestion: string;
|
|
15
|
+
autoFixable: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface DiagnosticReport {
|
|
18
|
+
timestamp: string;
|
|
19
|
+
claudeInstalled: boolean;
|
|
20
|
+
mcpConfigured: boolean;
|
|
21
|
+
issues: DiagnosticIssue[];
|
|
22
|
+
passed: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Run all diagnostic checks
|
|
26
|
+
*/
|
|
27
|
+
export declare function runDiagnostics(): Promise<DiagnosticReport>;
|
|
28
|
+
/**
|
|
29
|
+
* Print diagnostic report to console
|
|
30
|
+
*/
|
|
31
|
+
export declare function printDiagnosticReport(report: DiagnosticReport): void;
|
|
32
|
+
/**
|
|
33
|
+
* Export diagnostic report as JSON
|
|
34
|
+
*/
|
|
35
|
+
export declare function exportDiagnosticReportJson(report: DiagnosticReport): string;
|
|
36
|
+
//# sourceMappingURL=diagnose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAcH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;CACjB;AA2YD;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAyDhE;AA8BD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAkDpE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAE3E"}
|