agent-consultation-mcp 1.0.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,42 +4,61 @@ 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
- ## Installation
14
-
15
- ### Via npx (Recommended)
14
+ ## Quick Start (2 steps)
16
15
 
17
- No installation required - just add to your Claude Code MCP settings:
16
+ ```bash
17
+ # 1. Auto-install to all detected AI tools
18
+ npx agent-consultation-mcp --install
18
19
 
19
- ```json
20
- {
21
- "mcpServers": {
22
- "agent-consultation": {
23
- "command": "npx",
24
- "args": ["-y", "agent-consultation-mcp"]
25
- }
26
- }
27
- }
20
+ # 2. Configure your API key in the Web UI that opens automatically
21
+ # Done! Restart your AI tools and start using
28
22
  ```
29
23
 
30
- ### Global Installation
24
+ ## Installation
25
+
26
+ ### Auto-Install (Recommended)
27
+
28
+ Automatically detects installed AI tools and configures MCP for each:
31
29
 
32
30
  ```bash
33
- npm install -g agent-consultation-mcp
31
+ npx agent-consultation-mcp --install
34
32
  ```
35
33
 
36
- Then add to your MCP settings:
34
+ This will:
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)
53
+
54
+ Add to `~/.claude/mcp.json`:
37
55
 
38
56
  ```json
39
57
  {
40
58
  "mcpServers": {
41
59
  "agent-consultation": {
42
- "command": "agent-consultation-mcp"
60
+ "command": "npx",
61
+ "args": ["-y", "agent-consultation-mcp"]
43
62
  }
44
63
  }
45
64
  }
@@ -49,14 +68,15 @@ Then add to your MCP settings:
49
68
 
50
69
  ### Setting Up API Keys
51
70
 
52
- 1. **Via Web UI** (Recommended):
53
- ```bash
54
- npx agent-consultation-mcp --config
55
- ```
56
- This opens a browser where you can configure providers and API keys.
71
+ ```bash
72
+ npx agent-consultation-mcp --config
73
+ ```
57
74
 
58
- 2. **Via Config File**:
59
- Config is stored at `~/.agent-consultation-mcp/config.json`
75
+ This opens a web UI where you can:
76
+ - Add/update API keys for DeepSeek and OpenAI
77
+ - Test API key validity
78
+ - Change default model
79
+ - View conversation history
60
80
 
61
81
  ### Supported Providers
62
82
 
package/dist/index.js CHANGED
@@ -7,11 +7,16 @@ import { logger } from './utils/index.js';
7
7
  import { consultAgent, continueConversation, endConversation, } from './server/index.js';
8
8
  import { initializeProviders } from './providers/index.js';
9
9
  import { startConfigUI, openWebUI } from './api/index.js';
10
+ import { installToAllTools, printInstallSummary, SUPPORTED_TOOLS } from './installer/index.js';
10
11
  /**
11
12
  * Parse CLI arguments
12
13
  */
13
14
  function parseArgs() {
14
15
  const args = process.argv.slice(2);
16
+ // Check for install mode
17
+ if (args.includes('--install') || args.includes('install') || args.includes('-i')) {
18
+ return { mode: 'install' };
19
+ }
15
20
  // Check for config mode
16
21
  if (args.includes('--config') || args.includes('config') || args.includes('-c')) {
17
22
  // Parse port if provided
@@ -28,26 +33,35 @@ function parseArgs() {
28
33
  }
29
34
  // Check for help
30
35
  if (args.includes('--help') || args.includes('-h')) {
36
+ const toolNames = SUPPORTED_TOOLS.map((t) => t.name).join(', ');
31
37
  console.log(`
32
38
  Agent Consultation MCP - Get second opinions from DeepSeek Reasoner
33
39
 
34
40
  Usage:
35
41
  npx agent-consultation-mcp Start MCP server (stdio transport)
42
+ npx agent-consultation-mcp --install Auto-detect & install to all AI tools
36
43
  npx agent-consultation-mcp --config Open configuration UI in browser
37
44
  npx agent-consultation-mcp --help Show this help message
38
45
 
39
46
  Options:
40
- --config, -c Open configuration UI to manage DeepSeek API key
47
+ --install, -i Auto-detect installed AI tools and add MCP to each
48
+ --config, -c Open configuration UI to manage API keys
41
49
  --port <number>, -p Set port for config UI (default: 3456)
42
50
  --help, -h Show this help message
43
51
 
44
- Configuration UI:
45
- Configure your DeepSeek API key through a web interface at
46
- http://127.0.0.1:3456 (localhost only for security)
52
+ Supported AI Tools:
53
+ ${toolNames}
54
+
55
+ Quick Start:
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!
47
60
 
48
61
  Supported Models:
49
62
  - deepseek-reasoner (default) - Deep reasoning for complex tasks
50
63
  - deepseek-chat - Fast responses for simple queries
64
+ - gpt-5.2, gpt-5.2-pro - OpenAI models (requires API key)
51
65
 
52
66
  Consultation Modes:
53
67
  - debug - Systematic error analysis and debugging
@@ -66,6 +80,28 @@ Consultation Modes:
66
80
  */
67
81
  async function main() {
68
82
  const { mode, port } = parseArgs();
83
+ // Install mode - auto-detect and install to all tools
84
+ if (mode === 'install') {
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;
104
+ }
69
105
  // Config UI mode
70
106
  if (mode === 'config') {
71
107
  try {
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.0.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",