agent-consultation-mcp 1.1.0 → 1.2.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 CHANGED
@@ -4,40 +4,52 @@ An MCP (Model Context Protocol) server that allows AI agents like Claude Code to
4
4
 
5
5
  ## Features
6
6
 
7
+ - **Multi-Tool Auto-Install**: Automatically detects and configures MCP for Claude Code, Cursor, Windsurf, Cline, Continue, Zed, and more
7
8
  - **Multi-Provider Support**: DeepSeek (Reasoner, Chat) and OpenAI (GPT-5.2, GPT-5.2 Pro)
8
9
  - **Specialized Consultation Modes**: Debug, Code Analysis, Architecture Review, Plan Validation, Concept Explanation
9
10
  - **Conversation Management**: Continue multi-turn conversations with context
10
11
  - **Web UI**: Configure providers and API keys through a browser interface
11
12
  - **Encrypted Storage**: API keys are encrypted at rest
12
13
 
13
- ## Quick Start (3 commands)
14
+ ## Quick Start (2 steps)
14
15
 
15
16
  ```bash
16
- # 1. Auto-install to Claude Code
17
+ # 1. Auto-install to all detected AI tools
17
18
  npx agent-consultation-mcp --install
18
19
 
19
- # 2. Restart Claude Code, then configure API key
20
- npx agent-consultation-mcp --config
21
-
22
- # 3. Done! Start using in Claude Code
20
+ # 2. Configure your API key in the Web UI that opens automatically
21
+ # Done! Restart your AI tools and start using
23
22
  ```
24
23
 
25
24
  ## Installation
26
25
 
27
26
  ### Auto-Install (Recommended)
28
27
 
29
- Automatically adds MCP to your Claude Code settings:
28
+ Automatically detects installed AI tools and configures MCP for each:
30
29
 
31
30
  ```bash
32
31
  npx agent-consultation-mcp --install
33
32
  ```
34
33
 
35
34
  This will:
36
- - Create `~/.claude/mcp.json` if it doesn't exist
37
- - Add `agent-consultation` MCP configuration
38
- - Show next steps
39
-
40
- ### Manual Installation
35
+ - Scan for installed AI tools (Claude Code, Cursor, Windsurf, Cline, Continue, Zed, Roo Code)
36
+ - Add MCP configuration to each detected tool
37
+ - Open the Web UI to configure your API key
38
+ - Show which tools need to be restarted
39
+
40
+ ### Supported AI Tools
41
+
42
+ | Tool | Config Location |
43
+ |------|-----------------|
44
+ | Claude Code | `~/.claude/mcp.json` |
45
+ | Cursor | `~/.cursor/mcp.json` |
46
+ | Windsurf | `~/.codeium/windsurf/mcp_config.json` |
47
+ | Cline | VSCode globalStorage |
48
+ | Continue | `~/.continue/config.json` |
49
+ | Zed | `~/.config/zed/settings.json` |
50
+ | Roo Code | VSCode globalStorage |
51
+
52
+ ### Manual Installation (Claude Code)
41
53
 
42
54
  Add to `~/.claude/mcp.json`:
43
55
 
package/dist/index.js CHANGED
@@ -2,69 +2,12 @@
2
2
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
3
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
4
  import { z } from 'zod';
5
- import * as fs from 'fs';
6
- import * as path from 'path';
7
- import * as os from 'os';
8
5
  import { getConfigManager, CONSULTATION_MODES } from './config/index.js';
9
6
  import { logger } from './utils/index.js';
10
7
  import { consultAgent, continueConversation, endConversation, } from './server/index.js';
11
8
  import { initializeProviders } from './providers/index.js';
12
9
  import { startConfigUI, openWebUI } from './api/index.js';
13
- /**
14
- * Get Claude Code MCP settings file path
15
- */
16
- function getClaudeMcpPath() {
17
- const homeDir = os.homedir();
18
- return path.join(homeDir, '.claude', 'mcp.json');
19
- }
20
- /**
21
- * Install MCP to Claude Code settings
22
- */
23
- async function installMcp() {
24
- const mcpPath = getClaudeMcpPath();
25
- const claudeDir = path.dirname(mcpPath);
26
- console.log('🔧 Installing Agent Consultation MCP...\n');
27
- // Create .claude directory if it doesn't exist
28
- if (!fs.existsSync(claudeDir)) {
29
- console.log(`Creating ${claudeDir}...`);
30
- fs.mkdirSync(claudeDir, { recursive: true });
31
- }
32
- // Read existing config or create new one
33
- let config = {};
34
- if (fs.existsSync(mcpPath)) {
35
- try {
36
- const content = fs.readFileSync(mcpPath, 'utf-8');
37
- config = JSON.parse(content);
38
- console.log('Found existing mcp.json');
39
- }
40
- catch {
41
- console.log('Creating new mcp.json');
42
- }
43
- }
44
- // Initialize mcpServers if not present
45
- if (!config.mcpServers) {
46
- config.mcpServers = {};
47
- }
48
- // Check if already installed
49
- if (config.mcpServers['agent-consultation']) {
50
- console.log('✅ Agent Consultation MCP is already installed!\n');
51
- }
52
- else {
53
- // Add MCP configuration
54
- config.mcpServers['agent-consultation'] = {
55
- command: 'npx',
56
- args: ['-y', 'agent-consultation-mcp'],
57
- };
58
- // Write config
59
- fs.writeFileSync(mcpPath, JSON.stringify(config, null, 2), 'utf-8');
60
- console.log('✅ Added agent-consultation to mcp.json\n');
61
- }
62
- console.log('📍 Config location:', mcpPath);
63
- console.log('\n🚀 Next steps:');
64
- console.log(' 1. Restart Claude Code to load the MCP');
65
- console.log(' 2. Run: npx agent-consultation-mcp --config');
66
- console.log(' 3. Add your DeepSeek API key in the web UI\n');
67
- }
10
+ import { installToAllTools, printInstallSummary, SUPPORTED_TOOLS } from './installer/index.js';
68
11
  /**
69
12
  * Parse CLI arguments
70
13
  */
@@ -90,26 +33,30 @@ function parseArgs() {
90
33
  }
91
34
  // Check for help
92
35
  if (args.includes('--help') || args.includes('-h')) {
36
+ const toolNames = SUPPORTED_TOOLS.map((t) => t.name).join(', ');
93
37
  console.log(`
94
38
  Agent Consultation MCP - Get second opinions from DeepSeek Reasoner
95
39
 
96
40
  Usage:
97
41
  npx agent-consultation-mcp Start MCP server (stdio transport)
98
- npx agent-consultation-mcp --install Auto-install to Claude Code settings
42
+ npx agent-consultation-mcp --install Auto-detect & install to all AI tools
99
43
  npx agent-consultation-mcp --config Open configuration UI in browser
100
44
  npx agent-consultation-mcp --help Show this help message
101
45
 
102
46
  Options:
103
- --install, -i Auto-add MCP to ~/.claude/mcp.json
47
+ --install, -i Auto-detect installed AI tools and add MCP to each
104
48
  --config, -c Open configuration UI to manage API keys
105
49
  --port <number>, -p Set port for config UI (default: 3456)
106
50
  --help, -h Show this help message
107
51
 
52
+ Supported AI Tools:
53
+ ${toolNames}
54
+
108
55
  Quick Start:
109
- 1. npx agent-consultation-mcp --install
110
- 2. Restart Claude Code
111
- 3. npx agent-consultation-mcp --config
112
- 4. Add your DeepSeek API key
56
+ 1. npx agent-consultation-mcp --install (auto-detects all tools)
57
+ 2. Restart your AI tools to load the MCP
58
+ 3. npx agent-consultation-mcp --config (configure API key)
59
+ 4. Start using in any configured tool!
113
60
 
114
61
  Supported Models:
115
62
  - deepseek-reasoner (default) - Deep reasoning for complex tasks
@@ -133,10 +80,27 @@ Consultation Modes:
133
80
  */
134
81
  async function main() {
135
82
  const { mode, port } = parseArgs();
136
- // Install mode - add to Claude Code settings
83
+ // Install mode - auto-detect and install to all tools
137
84
  if (mode === 'install') {
138
- await installMcp();
139
- process.exit(0);
85
+ console.log('🔧 Agent Consultation MCP - Multi-Tool Installer\n');
86
+ console.log('Scanning for installed AI tools...\n');
87
+ const summary = installToAllTools();
88
+ printInstallSummary(summary);
89
+ // If any tools were installed, offer to open config UI
90
+ if (summary.installed.length > 0 || summary.skipped.length > 0) {
91
+ console.log('Opening configuration UI...\n');
92
+ try {
93
+ await startConfigUI({ openBrowser: true });
94
+ }
95
+ catch {
96
+ console.log('💡 Run "npx agent-consultation-mcp --config" to configure API keys.\n');
97
+ process.exit(0);
98
+ }
99
+ }
100
+ else {
101
+ process.exit(0);
102
+ }
103
+ return;
140
104
  }
141
105
  // Config UI mode
142
106
  if (mode === 'config') {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Tool detection utilities for multi-tool installer
3
+ */
4
+ import { ToolDefinition, DetectedTool, Platform } from './types.js';
5
+ /**
6
+ * Get current platform
7
+ */
8
+ export declare function getPlatform(): Platform;
9
+ /**
10
+ * Get full config path for a tool
11
+ */
12
+ export declare function getConfigPath(tool: ToolDefinition): string | null;
13
+ /**
14
+ * Check if a binary exists in PATH using execFileSync (safe from injection)
15
+ */
16
+ export declare function binaryExists(binaryName: string): boolean;
17
+ /**
18
+ * Check if a directory exists
19
+ */
20
+ export declare function directoryExists(dirPath: string, relativePath?: boolean): boolean;
21
+ /**
22
+ * Check if a file exists
23
+ */
24
+ export declare function fileExists(filePath: string): boolean;
25
+ /**
26
+ * Check if MCP is already installed in config
27
+ */
28
+ export declare function isMcpInstalled(configPath: string, mcpKey: string, serverName: string): boolean;
29
+ /**
30
+ * Detect if a specific tool is installed
31
+ */
32
+ export declare function detectTool(tool: ToolDefinition): DetectedTool;
33
+ /**
34
+ * Detect all installed tools
35
+ */
36
+ export declare function detectAllTools(): DetectedTool[];
37
+ /**
38
+ * Get only installed tools
39
+ */
40
+ export declare function getInstalledTools(): DetectedTool[];
41
+ /**
42
+ * Get tools that need MCP installation
43
+ */
44
+ export declare function getToolsNeedingInstallation(): DetectedTool[];
45
+ /**
46
+ * Get tools where MCP is already installed
47
+ */
48
+ export declare function getToolsWithMcpInstalled(): DetectedTool[];
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Tool detection utilities for multi-tool installer
3
+ */
4
+ import * as fs from 'fs';
5
+ import * as path from 'path';
6
+ import * as os from 'os';
7
+ import { execFileSync } from 'child_process';
8
+ import { SUPPORTED_TOOLS } from './tools.js';
9
+ /**
10
+ * Get current platform
11
+ */
12
+ export function getPlatform() {
13
+ const platform = process.platform;
14
+ if (platform === 'darwin' || platform === 'win32' || platform === 'linux') {
15
+ return platform;
16
+ }
17
+ // Default to linux for other Unix-like systems
18
+ return 'linux';
19
+ }
20
+ /**
21
+ * Get full config path for a tool
22
+ */
23
+ export function getConfigPath(tool) {
24
+ const platform = getPlatform();
25
+ const configPath = tool.configPaths[platform];
26
+ if (!configPath) {
27
+ return null;
28
+ }
29
+ if (configPath.relative) {
30
+ return path.join(os.homedir(), configPath.path);
31
+ }
32
+ return configPath.path;
33
+ }
34
+ /**
35
+ * Check if a binary exists in PATH using execFileSync (safe from injection)
36
+ */
37
+ export function binaryExists(binaryName) {
38
+ try {
39
+ const command = process.platform === 'win32' ? 'where' : 'which';
40
+ // Using execFileSync is safe - binaryName is passed as argument, not shell-interpolated
41
+ execFileSync(command, [binaryName], { stdio: 'ignore' });
42
+ return true;
43
+ }
44
+ catch {
45
+ return false;
46
+ }
47
+ }
48
+ /**
49
+ * Check if a directory exists
50
+ */
51
+ export function directoryExists(dirPath, relativePath = true) {
52
+ const fullPath = relativePath ? path.join(os.homedir(), dirPath) : dirPath;
53
+ try {
54
+ return fs.existsSync(fullPath) && fs.statSync(fullPath).isDirectory();
55
+ }
56
+ catch {
57
+ return false;
58
+ }
59
+ }
60
+ /**
61
+ * Check if a file exists
62
+ */
63
+ export function fileExists(filePath) {
64
+ try {
65
+ return fs.existsSync(filePath) && fs.statSync(filePath).isFile();
66
+ }
67
+ catch {
68
+ return false;
69
+ }
70
+ }
71
+ /**
72
+ * Get nested value from object using dot notation
73
+ */
74
+ function getNestedValue(obj, keyPath) {
75
+ const keys = keyPath.split('.');
76
+ let current = obj;
77
+ for (const key of keys) {
78
+ if (current === null || typeof current !== 'object') {
79
+ return undefined;
80
+ }
81
+ current = current[key];
82
+ }
83
+ return current;
84
+ }
85
+ /**
86
+ * Check if MCP is already installed in config
87
+ */
88
+ export function isMcpInstalled(configPath, mcpKey, serverName) {
89
+ try {
90
+ if (!fileExists(configPath)) {
91
+ return false;
92
+ }
93
+ const content = fs.readFileSync(configPath, 'utf-8');
94
+ const config = JSON.parse(content);
95
+ const mcpServers = getNestedValue(config, mcpKey);
96
+ if (!mcpServers || typeof mcpServers !== 'object') {
97
+ return false;
98
+ }
99
+ return serverName in mcpServers;
100
+ }
101
+ catch {
102
+ return false;
103
+ }
104
+ }
105
+ /**
106
+ * Detect if a specific tool is installed
107
+ */
108
+ export function detectTool(tool) {
109
+ const platform = getPlatform();
110
+ const configPathObj = tool.configPaths[platform];
111
+ const configPath = getConfigPath(tool);
112
+ // Check if tool is installed
113
+ let installed = false;
114
+ // Check binary
115
+ if (tool.detection.binary) {
116
+ installed = installed || binaryExists(tool.detection.binary);
117
+ }
118
+ // Check directory
119
+ if (tool.detection.directory) {
120
+ installed = installed || directoryExists(tool.detection.directory);
121
+ }
122
+ // Check config file (for extensions without binary)
123
+ if (tool.detection.configFile && configPath) {
124
+ installed = installed || fileExists(configPath);
125
+ }
126
+ // Check config existence
127
+ const configExists = configPath ? fileExists(configPath) : false;
128
+ // Check if MCP already installed
129
+ const mcpAlreadyInstalled = configPath && configPathObj
130
+ ? isMcpInstalled(configPath, configPathObj.mcpKey, tool.mcpConfig.serverName)
131
+ : false;
132
+ return {
133
+ tool,
134
+ installed,
135
+ configExists,
136
+ mcpAlreadyInstalled,
137
+ configPath: configPath || '',
138
+ };
139
+ }
140
+ /**
141
+ * Detect all installed tools
142
+ */
143
+ export function detectAllTools() {
144
+ return SUPPORTED_TOOLS.map(detectTool);
145
+ }
146
+ /**
147
+ * Get only installed tools
148
+ */
149
+ export function getInstalledTools() {
150
+ return detectAllTools().filter((t) => t.installed);
151
+ }
152
+ /**
153
+ * Get tools that need MCP installation
154
+ */
155
+ export function getToolsNeedingInstallation() {
156
+ return detectAllTools().filter((t) => t.installed && !t.mcpAlreadyInstalled);
157
+ }
158
+ /**
159
+ * Get tools where MCP is already installed
160
+ */
161
+ export function getToolsWithMcpInstalled() {
162
+ return detectAllTools().filter((t) => t.installed && t.mcpAlreadyInstalled);
163
+ }
164
+ //# sourceMappingURL=detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/installer/detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Multi-tool MCP installer module
3
+ */
4
+ export type { Platform, ToolConfigPath, ToolDefinition, DetectedTool, InstallResult, InstallSummary, } from './types.js';
5
+ export { SUPPORTED_TOOLS, getToolById, getToolIds } from './tools.js';
6
+ export { getPlatform, getConfigPath, binaryExists, directoryExists, fileExists, isMcpInstalled, detectTool, detectAllTools, getInstalledTools, getToolsNeedingInstallation, getToolsWithMcpInstalled, } from './detector.js';
7
+ export { installToTool, installToAllTools, printInstallSummary } from './installer.js';
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Multi-tool MCP installer module
3
+ */
4
+ // Tool definitions
5
+ export { SUPPORTED_TOOLS, getToolById, getToolIds } from './tools.js';
6
+ // Detection utilities
7
+ export { getPlatform, getConfigPath, binaryExists, directoryExists, fileExists, isMcpInstalled, detectTool, detectAllTools, getInstalledTools, getToolsNeedingInstallation, getToolsWithMcpInstalled, } from './detector.js';
8
+ // Installation functions
9
+ export { installToTool, installToAllTools, printInstallSummary } from './installer.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/installer/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtE,sBAAsB;AACtB,OAAO,EACL,WAAW,EACX,aAAa,EACb,YAAY,EACZ,eAAe,EACf,UAAU,EACV,cAAc,EACd,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,eAAe,CAAC;AAEvB,yBAAyB;AACzB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Multi-tool MCP installer
3
+ */
4
+ import { DetectedTool, InstallResult, InstallSummary } from './types.js';
5
+ /**
6
+ * Install MCP to a specific tool
7
+ */
8
+ export declare function installToTool(detected: DetectedTool): InstallResult;
9
+ /**
10
+ * Install MCP to all detected tools
11
+ */
12
+ export declare function installToAllTools(): InstallSummary;
13
+ /**
14
+ * Print installation summary to console
15
+ */
16
+ export declare function printInstallSummary(summary: InstallSummary): void;
@@ -0,0 +1,235 @@
1
+ /**
2
+ * Multi-tool MCP installer
3
+ */
4
+ import * as fs from 'fs';
5
+ import * as path from 'path';
6
+ import { detectAllTools, getConfigPath, getPlatform, fileExists, } from './detector.js';
7
+ /**
8
+ * Set nested value in object using dot notation
9
+ */
10
+ function setNestedValue(obj, keyPath, key, value) {
11
+ const keys = keyPath.split('.');
12
+ let current = obj;
13
+ // Navigate to the parent object, creating intermediate objects as needed
14
+ for (const k of keys) {
15
+ if (!(k in current) || typeof current[k] !== 'object' || current[k] === null) {
16
+ current[k] = {};
17
+ }
18
+ current = current[k];
19
+ }
20
+ // Set the value
21
+ current[key] = value;
22
+ }
23
+ /**
24
+ * Get nested value from object using dot notation
25
+ */
26
+ function getNestedValue(obj, keyPath) {
27
+ const keys = keyPath.split('.');
28
+ let current = obj;
29
+ for (const key of keys) {
30
+ if (current === null || typeof current !== 'object') {
31
+ return undefined;
32
+ }
33
+ current = current[key];
34
+ }
35
+ return current;
36
+ }
37
+ /**
38
+ * Create MCP server configuration object
39
+ */
40
+ function createMcpServerConfig(tool) {
41
+ // Special handling for Zed (uses different format)
42
+ if (tool.id === 'zed') {
43
+ return {
44
+ command: tool.mcpConfig.command,
45
+ args: tool.mcpConfig.args,
46
+ };
47
+ }
48
+ // Special handling for Continue (uses array format)
49
+ if (tool.id === 'continue') {
50
+ return {
51
+ transport: {
52
+ type: 'stdio',
53
+ command: tool.mcpConfig.command,
54
+ args: tool.mcpConfig.args,
55
+ },
56
+ };
57
+ }
58
+ // Standard format for most tools
59
+ return {
60
+ command: tool.mcpConfig.command,
61
+ args: tool.mcpConfig.args,
62
+ };
63
+ }
64
+ /**
65
+ * Install MCP to a specific tool
66
+ */
67
+ export function installToTool(detected) {
68
+ const { tool } = detected;
69
+ const configPath = getConfigPath(tool);
70
+ if (!configPath) {
71
+ return {
72
+ tool,
73
+ success: false,
74
+ message: `No config path for platform ${getPlatform()}`,
75
+ error: 'Platform not supported',
76
+ };
77
+ }
78
+ const platform = getPlatform();
79
+ const configPathObj = tool.configPaths[platform];
80
+ if (!configPathObj) {
81
+ return {
82
+ tool,
83
+ success: false,
84
+ message: `No config path for platform ${platform}`,
85
+ error: 'Platform not supported',
86
+ };
87
+ }
88
+ try {
89
+ // Ensure directory exists
90
+ const configDir = path.dirname(configPath);
91
+ if (!fs.existsSync(configDir)) {
92
+ fs.mkdirSync(configDir, { recursive: true });
93
+ }
94
+ // Read existing config or create new one
95
+ let config = {};
96
+ if (fileExists(configPath)) {
97
+ try {
98
+ const content = fs.readFileSync(configPath, 'utf-8');
99
+ config = JSON.parse(content);
100
+ }
101
+ catch {
102
+ // If parse fails, start with empty config
103
+ config = {};
104
+ }
105
+ }
106
+ // Check if already installed
107
+ const mcpServers = getNestedValue(config, configPathObj.mcpKey);
108
+ if (mcpServers &&
109
+ typeof mcpServers === 'object' &&
110
+ tool.mcpConfig.serverName in mcpServers) {
111
+ return {
112
+ tool,
113
+ success: true,
114
+ message: 'Already installed',
115
+ configPath,
116
+ };
117
+ }
118
+ // Create MCP server config
119
+ const serverConfig = createMcpServerConfig(tool);
120
+ // Add MCP to config
121
+ setNestedValue(config, configPathObj.mcpKey, tool.mcpConfig.serverName, serverConfig);
122
+ // Write config
123
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
124
+ return {
125
+ tool,
126
+ success: true,
127
+ message: tool.notes || 'Installed successfully',
128
+ configPath,
129
+ };
130
+ }
131
+ catch (error) {
132
+ return {
133
+ tool,
134
+ success: false,
135
+ message: 'Installation failed',
136
+ configPath,
137
+ error: error instanceof Error ? error.message : 'Unknown error',
138
+ };
139
+ }
140
+ }
141
+ /**
142
+ * Install MCP to all detected tools
143
+ */
144
+ export function installToAllTools() {
145
+ const allTools = detectAllTools();
146
+ const detected = [];
147
+ const installed = [];
148
+ const skipped = [];
149
+ const errors = [];
150
+ for (const tool of allTools) {
151
+ if (!tool.installed) {
152
+ // Tool not installed on system
153
+ continue;
154
+ }
155
+ detected.push(tool);
156
+ if (tool.mcpAlreadyInstalled) {
157
+ // MCP already installed, skip
158
+ skipped.push(tool);
159
+ continue;
160
+ }
161
+ // Install MCP
162
+ const result = installToTool(tool);
163
+ if (result.success) {
164
+ installed.push(result);
165
+ }
166
+ else {
167
+ errors.push(result);
168
+ }
169
+ }
170
+ return { detected, installed, skipped, errors };
171
+ }
172
+ /**
173
+ * Print installation summary to console
174
+ */
175
+ export function printInstallSummary(summary) {
176
+ console.log('\n📊 Installation Summary\n');
177
+ console.log('─'.repeat(50));
178
+ // Detected tools
179
+ if (summary.detected.length === 0) {
180
+ console.log('❌ No supported AI tools detected on this system.\n');
181
+ console.log('Supported tools:');
182
+ console.log(' - Claude Code (Anthropic CLI)');
183
+ console.log(' - Cursor');
184
+ console.log(' - Windsurf');
185
+ console.log(' - Cline (VSCode extension)');
186
+ console.log(' - Continue (VSCode extension)');
187
+ console.log(' - Zed');
188
+ console.log(' - Roo Code (VSCode extension)\n');
189
+ return;
190
+ }
191
+ console.log(`\n🔍 Detected ${summary.detected.length} tool(s):\n`);
192
+ for (const tool of summary.detected) {
193
+ const status = tool.mcpAlreadyInstalled ? '✅ (already configured)' : '📦';
194
+ console.log(` ${status} ${tool.tool.name}`);
195
+ }
196
+ // Installed
197
+ if (summary.installed.length > 0) {
198
+ console.log(`\n✅ Installed to ${summary.installed.length} tool(s):\n`);
199
+ for (const result of summary.installed) {
200
+ console.log(` • ${result.tool.name}`);
201
+ console.log(` 📍 ${result.configPath}`);
202
+ if (result.tool.requiresRestart) {
203
+ console.log(` ⚠️ ${result.message}`);
204
+ }
205
+ }
206
+ }
207
+ // Skipped (already installed)
208
+ if (summary.skipped.length > 0) {
209
+ console.log(`\n⏭️ Skipped ${summary.skipped.length} tool(s) (already configured):\n`);
210
+ for (const tool of summary.skipped) {
211
+ console.log(` • ${tool.tool.name}`);
212
+ }
213
+ }
214
+ // Errors
215
+ if (summary.errors.length > 0) {
216
+ console.log(`\n❌ Failed to install to ${summary.errors.length} tool(s):\n`);
217
+ for (const result of summary.errors) {
218
+ console.log(` • ${result.tool.name}: ${result.error}`);
219
+ }
220
+ }
221
+ // Next steps
222
+ console.log('\n' + '─'.repeat(50));
223
+ console.log('\n🚀 Next steps:\n');
224
+ const needsRestart = summary.installed.filter((r) => r.tool.requiresRestart);
225
+ if (needsRestart.length > 0) {
226
+ console.log(' 1. Restart the following tools to load the MCP:');
227
+ for (const result of needsRestart) {
228
+ console.log(` - ${result.tool.name}`);
229
+ }
230
+ console.log('');
231
+ }
232
+ console.log(' 2. Configure your API key:');
233
+ console.log(' npx agent-consultation-mcp --config\n');
234
+ }
235
+ //# sourceMappingURL=installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/installer/installer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Tool definitions for multi-tool MCP installer
3
+ */
4
+ import { ToolDefinition } from './types.js';
5
+ /**
6
+ * All supported tools with their configurations
7
+ */
8
+ export declare const SUPPORTED_TOOLS: ToolDefinition[];
9
+ /**
10
+ * Get tool by ID
11
+ */
12
+ export declare function getToolById(id: string): ToolDefinition | undefined;
13
+ /**
14
+ * Get all tool IDs
15
+ */
16
+ export declare function getToolIds(): string[];
@@ -0,0 +1,262 @@
1
+ /**
2
+ * Tool definitions for multi-tool MCP installer
3
+ */
4
+ /**
5
+ * Default MCP configuration for agent-consultation
6
+ */
7
+ const DEFAULT_MCP_CONFIG = {
8
+ serverName: 'agent-consultation',
9
+ command: 'npx',
10
+ args: ['-y', 'agent-consultation-mcp'],
11
+ };
12
+ /**
13
+ * All supported tools with their configurations
14
+ */
15
+ export const SUPPORTED_TOOLS = [
16
+ // Claude Code (Official Anthropic CLI)
17
+ {
18
+ id: 'claude-code',
19
+ name: 'Claude Code',
20
+ description: 'Anthropic\'s official CLI for Claude',
21
+ configPaths: {
22
+ darwin: {
23
+ path: '.claude/mcp.json',
24
+ relative: true,
25
+ mcpKey: 'mcpServers',
26
+ format: 'json',
27
+ },
28
+ linux: {
29
+ path: '.claude/mcp.json',
30
+ relative: true,
31
+ mcpKey: 'mcpServers',
32
+ format: 'json',
33
+ },
34
+ win32: {
35
+ path: '.claude/mcp.json',
36
+ relative: true,
37
+ mcpKey: 'mcpServers',
38
+ format: 'json',
39
+ },
40
+ },
41
+ detection: {
42
+ binary: 'claude',
43
+ directory: '.claude',
44
+ },
45
+ mcpConfig: DEFAULT_MCP_CONFIG,
46
+ requiresRestart: true,
47
+ notes: 'Restart Claude Code to load the MCP',
48
+ },
49
+ // Cursor
50
+ {
51
+ id: 'cursor',
52
+ name: 'Cursor',
53
+ description: 'AI-first code editor',
54
+ configPaths: {
55
+ darwin: {
56
+ path: '.cursor/mcp.json',
57
+ relative: true,
58
+ mcpKey: 'mcpServers',
59
+ format: 'json',
60
+ },
61
+ linux: {
62
+ path: '.cursor/mcp.json',
63
+ relative: true,
64
+ mcpKey: 'mcpServers',
65
+ format: 'json',
66
+ },
67
+ win32: {
68
+ path: '.cursor/mcp.json',
69
+ relative: true,
70
+ mcpKey: 'mcpServers',
71
+ format: 'json',
72
+ },
73
+ },
74
+ detection: {
75
+ binary: 'cursor',
76
+ directory: '.cursor',
77
+ },
78
+ mcpConfig: DEFAULT_MCP_CONFIG,
79
+ requiresRestart: true,
80
+ notes: 'Restart Cursor to load the MCP',
81
+ },
82
+ // Windsurf (Codeium)
83
+ {
84
+ id: 'windsurf',
85
+ name: 'Windsurf',
86
+ description: 'Codeium\'s AI-powered IDE',
87
+ configPaths: {
88
+ darwin: {
89
+ path: '.codeium/windsurf/mcp_config.json',
90
+ relative: true,
91
+ mcpKey: 'mcpServers',
92
+ format: 'json',
93
+ },
94
+ linux: {
95
+ path: '.codeium/windsurf/mcp_config.json',
96
+ relative: true,
97
+ mcpKey: 'mcpServers',
98
+ format: 'json',
99
+ },
100
+ win32: {
101
+ path: '.codeium/windsurf/mcp_config.json',
102
+ relative: true,
103
+ mcpKey: 'mcpServers',
104
+ format: 'json',
105
+ },
106
+ },
107
+ detection: {
108
+ binary: 'windsurf',
109
+ directory: '.codeium/windsurf',
110
+ },
111
+ mcpConfig: DEFAULT_MCP_CONFIG,
112
+ requiresRestart: true,
113
+ notes: 'Restart Windsurf to load the MCP',
114
+ },
115
+ // Cline (VSCode Extension)
116
+ {
117
+ id: 'cline',
118
+ name: 'Cline',
119
+ description: 'Autonomous coding agent for VSCode',
120
+ configPaths: {
121
+ darwin: {
122
+ path: 'Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json',
123
+ relative: true,
124
+ mcpKey: 'mcpServers',
125
+ format: 'json',
126
+ },
127
+ linux: {
128
+ path: '.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json',
129
+ relative: true,
130
+ mcpKey: 'mcpServers',
131
+ format: 'json',
132
+ },
133
+ win32: {
134
+ path: 'AppData/Roaming/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json',
135
+ relative: true,
136
+ mcpKey: 'mcpServers',
137
+ format: 'json',
138
+ },
139
+ },
140
+ detection: {
141
+ vscodeExtension: 'saoudrizwan.claude-dev',
142
+ configFile: true,
143
+ },
144
+ mcpConfig: DEFAULT_MCP_CONFIG,
145
+ requiresRestart: false,
146
+ notes: 'Reload VSCode window or restart Cline extension',
147
+ },
148
+ // Continue (VSCode/JetBrains Extension)
149
+ {
150
+ id: 'continue',
151
+ name: 'Continue',
152
+ description: 'Open-source AI code assistant',
153
+ configPaths: {
154
+ darwin: {
155
+ path: '.continue/config.json',
156
+ relative: true,
157
+ mcpKey: 'experimental.modelContextProtocolServers',
158
+ format: 'json',
159
+ },
160
+ linux: {
161
+ path: '.continue/config.json',
162
+ relative: true,
163
+ mcpKey: 'experimental.modelContextProtocolServers',
164
+ format: 'json',
165
+ },
166
+ win32: {
167
+ path: '.continue/config.json',
168
+ relative: true,
169
+ mcpKey: 'experimental.modelContextProtocolServers',
170
+ format: 'json',
171
+ },
172
+ },
173
+ detection: {
174
+ directory: '.continue',
175
+ vscodeExtension: 'Continue.continue',
176
+ },
177
+ mcpConfig: {
178
+ serverName: 'agent-consultation',
179
+ command: 'npx',
180
+ args: ['-y', 'agent-consultation-mcp'],
181
+ },
182
+ requiresRestart: false,
183
+ notes: 'Reload Continue extension to load the MCP',
184
+ },
185
+ // Zed
186
+ {
187
+ id: 'zed',
188
+ name: 'Zed',
189
+ description: 'High-performance code editor',
190
+ configPaths: {
191
+ darwin: {
192
+ path: '.config/zed/settings.json',
193
+ relative: true,
194
+ mcpKey: 'context_servers',
195
+ format: 'json',
196
+ },
197
+ linux: {
198
+ path: '.config/zed/settings.json',
199
+ relative: true,
200
+ mcpKey: 'context_servers',
201
+ format: 'json',
202
+ },
203
+ },
204
+ detection: {
205
+ binary: 'zed',
206
+ directory: '.config/zed',
207
+ },
208
+ mcpConfig: {
209
+ serverName: 'agent-consultation',
210
+ command: 'npx',
211
+ args: ['-y', 'agent-consultation-mcp'],
212
+ },
213
+ requiresRestart: false,
214
+ notes: 'Zed will auto-reload the configuration',
215
+ },
216
+ // Roo Code (VSCode Extension - Roo-Cline fork)
217
+ {
218
+ id: 'roo-code',
219
+ name: 'Roo Code',
220
+ description: 'AI coding assistant (Cline fork)',
221
+ configPaths: {
222
+ darwin: {
223
+ path: 'Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json',
224
+ relative: true,
225
+ mcpKey: 'mcpServers',
226
+ format: 'json',
227
+ },
228
+ linux: {
229
+ path: '.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json',
230
+ relative: true,
231
+ mcpKey: 'mcpServers',
232
+ format: 'json',
233
+ },
234
+ win32: {
235
+ path: 'AppData/Roaming/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json',
236
+ relative: true,
237
+ mcpKey: 'mcpServers',
238
+ format: 'json',
239
+ },
240
+ },
241
+ detection: {
242
+ vscodeExtension: 'rooveterinaryinc.roo-cline',
243
+ configFile: true,
244
+ },
245
+ mcpConfig: DEFAULT_MCP_CONFIG,
246
+ requiresRestart: false,
247
+ notes: 'Reload VSCode window to load the MCP',
248
+ },
249
+ ];
250
+ /**
251
+ * Get tool by ID
252
+ */
253
+ export function getToolById(id) {
254
+ return SUPPORTED_TOOLS.find((tool) => tool.id === id);
255
+ }
256
+ /**
257
+ * Get all tool IDs
258
+ */
259
+ export function getToolIds() {
260
+ return SUPPORTED_TOOLS.map((tool) => tool.id);
261
+ }
262
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/installer/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Tool configuration types for multi-tool installer
3
+ */
4
+ export type Platform = 'darwin' | 'win32' | 'linux';
5
+ export interface ToolConfigPath {
6
+ /** Path relative to home directory or absolute */
7
+ path: string;
8
+ /** Whether path is relative to home directory */
9
+ relative: boolean;
10
+ /** JSON key path to mcpServers object (e.g., "mcpServers" or "context_servers") */
11
+ mcpKey: string;
12
+ /** Config format */
13
+ format: 'json' | 'yaml';
14
+ }
15
+ export interface ToolDefinition {
16
+ /** Tool identifier */
17
+ id: string;
18
+ /** Display name */
19
+ name: string;
20
+ /** Tool description */
21
+ description: string;
22
+ /** Config paths per platform */
23
+ configPaths: Partial<Record<Platform, ToolConfigPath>>;
24
+ /** Detection methods */
25
+ detection: {
26
+ /** Check if binary exists in PATH */
27
+ binary?: string;
28
+ /** Check if directory exists (relative to home) */
29
+ directory?: string;
30
+ /** Check if config file exists */
31
+ configFile?: boolean;
32
+ /** VSCode extension ID to check */
33
+ vscodeExtension?: string;
34
+ };
35
+ /** MCP server configuration to add */
36
+ mcpConfig: {
37
+ /** Server name in config */
38
+ serverName: string;
39
+ /** Command to run */
40
+ command: string;
41
+ /** Command arguments */
42
+ args: string[];
43
+ };
44
+ /** Whether tool requires restart after installation */
45
+ requiresRestart: boolean;
46
+ /** Installation notes/instructions */
47
+ notes?: string;
48
+ }
49
+ export interface DetectedTool {
50
+ tool: ToolDefinition;
51
+ installed: boolean;
52
+ configExists: boolean;
53
+ mcpAlreadyInstalled: boolean;
54
+ configPath: string;
55
+ }
56
+ export interface InstallResult {
57
+ tool: ToolDefinition;
58
+ success: boolean;
59
+ message: string;
60
+ configPath?: string;
61
+ error?: string;
62
+ }
63
+ export interface InstallSummary {
64
+ detected: DetectedTool[];
65
+ installed: InstallResult[];
66
+ skipped: DetectedTool[];
67
+ errors: InstallResult[];
68
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tool configuration types for multi-tool installer
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/installer/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-consultation-mcp",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "type": "module",
5
5
  "description": "MCP server for consulting other AI models (DeepSeek, OpenAI) for alternative perspectives during coding sessions",
6
6
  "main": "./dist/index.js",