lazy-mcp 1.1.4 → 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
@@ -1,53 +1,218 @@
1
- # Lazy MCP Proxy (experiment)
2
-
3
- A proxy tool that converts normal MCP servers to use a lazy-loading pattern with three core tools, dramatically reducing initial context usage and enabling support for hundreds of commands.
4
-
5
- ## Overview
6
-
7
- Instead of exposing all tools directly (which can consume many context tokens), this proxy exposes only three meta-tools:
1
+ # Lazy MCP Proxy
2
+
3
+ ![Pipeline Status](https://gitlab.com/gitlab-org/search-team/experiments/lazy-mcp/badges/main/pipeline.svg)
4
+
5
+ A proxy tool that converts normal MCP servers to use a lazy-loading pattern, dramatically reducing initial context usage by 90%+ and enabling support for hundreds of commands.
6
+
7
+ ## Table of Contents
8
+
9
+ <!-- TOC_START -->
10
+ - [Table of Contents](#table-of-contents)
11
+ - [Features](#features)
12
+ - [Modes](#modes)
13
+ - [Single-Server Mode (Legacy)](#single-server-mode-legacy)
14
+ - [Multi-Server Mode (NEW!)](#multi-server-mode-new)
15
+ - [Installation](#installation)
16
+ - [Usage](#usage)
17
+ - [Multi-Server Mode (Recommended)](#multi-server-mode-recommended)
18
+ - [Single-Server Mode (Legacy)](#single-server-mode-legacy)
19
+ - [Local MCP Servers](#local-mcp-servers)
20
+ - [Remote MCP Servers](#remote-mcp-servers)
21
+ - [Claude Desktop / OpenCode Integration](#claude-desktop--opencode-integration)
22
+ - [Multi-Server Mode (Recommended)](#multi-server-mode-recommended)
23
+ - [Single-Server Mode (Legacy)](#single-server-mode-legacy)
24
+ - [Example](#example)
25
+ - [Development](#development)
26
+ - [Publishing New Versions](#publishing-new-versions)
27
+ - [For Maintainers](#for-maintainers)
28
+ - [Configuration Reference](#configuration-reference)
29
+ - [Server Configuration Fields](#server-configuration-fields)
30
+ - [Command Format](#command-format)
31
+ - [Environment Variables](#environment-variables)
32
+ - [Benefits](#benefits)
33
+ <!-- TOC_END -->
34
+
35
+ ## Features
36
+
37
+ - **Single-Server Mode**: Wrap one MCP server with 3 meta-tools (legacy mode)
38
+ - **Multi-Server Mode**: Aggregate multiple MCP servers with on-demand discovery (NEW!)
39
+ - **Lazy Loading**: Only discover tools when needed, not upfront
40
+ - **Batch Discovery**: Discover multiple servers in one call
41
+ - **90%+ Context Reduction**: From ~16K to ~1.5K tokens initially
42
+
43
+ ## Modes
44
+
45
+ ### Single-Server Mode (Legacy)
46
+
47
+ Wraps one MCP server and exposes three meta-tools:
8
48
 
9
49
  - `list_commands` - Returns command names and brief descriptions
10
50
  - `describe_commands` - Accepts `command_names: Array[String]`, returns full schemas
11
51
  - `invoke_command` - Executes commands with `command_name: String, parameters: Object`
12
52
 
53
+ ### Multi-Server Mode (NEW!)
54
+
55
+ Aggregates multiple MCP servers and exposes four meta-tools:
56
+
57
+ - `list_servers` - Lists all configured MCP servers
58
+ - `list_commands` - Discovers tools from specific server(s), supports batch discovery
59
+ - `describe_commands` - Gets detailed schemas from a server
60
+ - `invoke_command` - Executes commands from a specific server
61
+
13
62
  ## Installation
14
63
 
64
+ **Recommended:** Use with npx to always get the latest version:
65
+
15
66
  ```bash
16
- npm install -g lazy-mcp
67
+ npx lazy-mcp@latest <server-command-or-url>
17
68
  ```
18
69
 
19
- Or use with npx:
70
+ Or install globally (locks to specific version):
20
71
 
21
72
  ```bash
22
- npx lazy-mcp <server-command-or-url>
73
+ npm install -g lazy-mcp
23
74
  ```
24
75
 
25
76
  ## Usage
26
77
 
27
- ### Local MCP Servers (Easy Development)
78
+ ### Multi-Server Mode (Recommended)
79
+
80
+ Create a configuration file at `~/.config/lazy-mcp/servers.json`:
81
+
82
+ ```json
83
+ {
84
+ "mode": "multi-server",
85
+ "servers": [
86
+ {
87
+ "name": "chrome-devtools",
88
+ "description": "Chrome DevTools automation",
89
+ "type": "local",
90
+ "command": ["npx", "-y", "chrome-devtools-mcp@latest"]
91
+ },
92
+ {
93
+ "name": "gitlab",
94
+ "description": "GitLab API integration",
95
+ "type": "local",
96
+ "command": [
97
+ "npx",
98
+ "mcp-remote@latest",
99
+ "https://gitlab.com/api/v4/mcp",
100
+ "--static-oauth-client-metadata",
101
+ "{\"scope\": \"mcp\"}"
102
+ ]
103
+ },
104
+ {
105
+ "name": "my-remote-server",
106
+ "description": "Custom remote MCP server",
107
+ "type": "remote",
108
+ "url": "https://api.example.com/mcp",
109
+ "headers": {
110
+ "Authorization": "Bearer ${API_TOKEN}"
111
+ }
112
+ }
113
+ ]
114
+ }
115
+ ```
116
+
117
+ Then run:
118
+
119
+ ```bash
120
+ # Using npx (recommended - always latest version)
121
+ npx lazy-mcp@latest --config ~/.config/lazy-mcp/servers.json
122
+
123
+ # Or via environment variable
124
+ LAZY_MCP_CONFIG=~/.config/lazy-mcp/servers.json npx lazy-mcp@latest
125
+
126
+ # Or if installed globally
127
+ lazy-mcp --config ~/.config/lazy-mcp/servers.json
128
+ ```
129
+
130
+ ### Single-Server Mode (Legacy)
131
+
132
+ #### Local MCP Servers
28
133
 
29
134
  ```bash
30
135
  # Run a Python MCP server
31
- lazy-mcp python my_server.py
136
+ npx lazy-mcp@latest python my_server.py
32
137
 
33
138
  # Run a Node.js server with arguments
34
- lazy-mcp node server.js --port 8080
139
+ npx lazy-mcp@latest node server.js --port 8080
35
140
 
36
141
  # Run complex commands (use quotes)
37
- lazy-mcp "uvicorn server:app --host 0.0.0.0 --port 3000"
142
+ npx lazy-mcp@latest "uvicorn server:app --host 0.0.0.0 --port 3000"
38
143
  ```
39
144
 
40
- ### Remote MCP Servers (Production)
145
+ #### Remote MCP Servers
41
146
 
42
147
  ```bash
43
148
  # Connect to a remote HTTP MCP server
44
- lazy-mcp http://localhost:3000/mcp
149
+ npx lazy-mcp@latest http://localhost:3000/mcp
45
150
 
46
151
  # With authentication headers
47
- lazy-mcp https://api.example.com/mcp --header "Authorization=Bearer token123"
152
+ npx lazy-mcp@latest https://api.example.com/mcp --header "Authorization=Bearer token123"
48
153
 
49
154
  # Multiple headers
50
- lazy-mcp https://api.example.com/mcp --header "X-API-Key=abc123" --header "User-Agent=my-app/1.0"
155
+ npx lazy-mcp@latest https://api.example.com/mcp --header "X-API-Key=abc123" --header "User-Agent=my-app/1.0"
156
+ ```
157
+
158
+ ## Claude Desktop / OpenCode Integration
159
+
160
+ ### Multi-Server Mode (Recommended)
161
+
162
+ Replace multiple MCP server entries with one aggregated proxy:
163
+
164
+ **Before** (5 separate MCP servers):
165
+ ```json
166
+ {
167
+ "mcp": {
168
+ "chrome-devtools": { "command": ["npx", "lazy-mcp@latest", "npx", "-y", "chrome-devtools-mcp@latest"] },
169
+ "gitlab": { "command": ["npx", "lazy-mcp@latest", "npx", "mcp-remote@latest", "https://..."] },
170
+ "grepai": { "command": ["npx", "lazy-mcp@latest", "grepai", "mcp-serve"] },
171
+ "context7": { "command": ["npx", "-y", "@upstash/context7-mcp"] },
172
+ "perplexity": { "command": ["npx", "-y", "@perplexity-ai/mcp-server"] }
173
+ }
174
+ }
175
+ ```
176
+
177
+ **After** (Consolidated into 1 multi-server proxy):
178
+ ```json
179
+ {
180
+ "mcp": {
181
+ "lazy-mcp": {
182
+ "type": "local",
183
+ "command": ["npx", "lazy-mcp@latest", "--config", "~/.config/lazy-mcp/servers.json"],
184
+ "enabled": true
185
+ }
186
+ }
187
+ }
188
+ ```
189
+
190
+ Where `~/.config/lazy-mcp/servers.json` contains all 5 servers:
191
+ ```json
192
+ {
193
+ "mode": "multi-server",
194
+ "servers": [
195
+ { "name": "chrome-devtools", "description": "Chrome DevTools automation", "type": "local", "command": ["npx", "-y", "chrome-devtools-mcp@latest"] },
196
+ { "name": "gitlab", "description": "GitLab API integration", "type": "local", "command": ["npx", "mcp-remote@latest", "https://..."] },
197
+ { "name": "grepai", "description": "Search codebase", "type": "local", "command": ["grepai", "mcp-serve"] },
198
+ { "name": "context7", "description": "Library documentation", "type": "local", "command": ["npx", "-y", "@upstash/context7-mcp"] },
199
+ { "name": "perplexity", "description": "Web search", "type": "local", "command": ["npx", "-y", "@perplexity-ai/mcp-server"] }
200
+ ]
201
+ }
202
+ ```
203
+
204
+ **Result**: ~90% context reduction (from ~16K to ~1.5K tokens initially)
205
+
206
+ ### Single-Server Mode (Legacy)
207
+
208
+ ```json
209
+ {
210
+ "mcp": {
211
+ "gitlab": {
212
+ "command": ["npx", "lazy-mcp@latest", "npx", "mcp-remote", "https://gitlab.com/api/v4/mcp"]
213
+ }
214
+ }
215
+ }
51
216
  ```
52
217
 
53
218
  ## Example
@@ -58,7 +223,7 @@ python my_server.py
58
223
  # Exposes: tool1, tool2, tool3, ..., tool100 (uses 100x context tokens)
59
224
 
60
225
  # Through lazy proxy - local
61
- lazy-mcp python my_server.py
226
+ npx lazy-mcp@latest python my_server.py
62
227
  # Exposes: list_commands, describe_commands, invoke_command (uses 3x context tokens)
63
228
 
64
229
  # Original remote server
@@ -66,7 +231,7 @@ curl http://localhost:3000/mcp -d '{"method":"tools/list"}'
66
231
  # Returns: tool1, tool2, tool3, ..., tool100 (uses 100x context when loaded)
67
232
 
68
233
  # Through lazy proxy - remote
69
- lazy-mcp http://localhost:3000/mcp
234
+ npx lazy-mcp@latest http://localhost:3000/mcp
70
235
  # Exposes: list_commands, describe_commands, invoke_command (uses 3x context tokens)
71
236
  ```
72
237
 
@@ -118,10 +283,62 @@ npm run dev -- http://localhost:3000/mcp
118
283
  git push --tags
119
284
  ```
120
285
 
286
+ ## Configuration Reference
287
+
288
+ ### Server Configuration Fields
289
+
290
+ | Field | Type | Required | Description |
291
+ |-------|------|----------|-------------|
292
+ | `name` | string | ✅ | Unique server identifier |
293
+ | `description` | string | ✅ | Human-readable description |
294
+ | `type` | "local" \| "remote" | ✅ | Server connection type |
295
+ | `command` | string[] \| string | For local | Command to execute (array format recommended) |
296
+ | `args` | string[] | Optional | Arguments (only if command is string) |
297
+ | `url` | string | For remote | HTTP/HTTPS URL |
298
+ | `headers` | object | Optional | HTTP headers for remote servers |
299
+ | `env` | object | Optional | Environment variables (supports `${VAR}` expansion) |
300
+ | `enabled` | boolean | Optional | Enable/disable server (default: true) |
301
+
302
+ ### Command Format
303
+
304
+ **Recommended** (OpenCode-compatible):
305
+ ```json
306
+ {
307
+ "command": ["npx", "-y", "my-mcp-server", "--port", "3000"]
308
+ }
309
+ ```
310
+
311
+ **Legacy** (still supported):
312
+ ```json
313
+ {
314
+ "command": "npx",
315
+ "args": ["-y", "my-mcp-server", "--port", "3000"]
316
+ }
317
+ ```
318
+
319
+ ### Environment Variables
320
+
321
+ Use `${VAR_NAME}` to reference environment variables:
322
+
323
+ ```json
324
+ {
325
+ "env": {
326
+ "API_KEY": "${MY_API_KEY}",
327
+ "DEBUG": "true"
328
+ },
329
+ "headers": {
330
+ "Authorization": "Bearer ${AUTH_TOKEN}"
331
+ }
332
+ }
333
+ ```
334
+
121
335
  ## Benefits
122
336
 
123
- - **Dramatic reduction** in initial context usage
124
- - **Progressive tool discovery** - only load schemas when needed
337
+ - **90%+ context reduction** - From ~16K to ~1.5K tokens initially
338
+ - **Progressive tool discovery** - Only load schemas when needed
339
+ - **Multi-server aggregation** - Manage multiple MCP servers in one config
340
+ - **Batch discovery** - Discover multiple servers efficiently
125
341
  - **Scales to hundreds** of commands without context bloat
126
- - **Clean separation** of concerns between discovery and execution
127
- - **Header forwarding** for authentication and custom headers
342
+ - **Flexible configuration** - Enable/disable servers on demand
343
+ - **Environment variable support** - Secure credential management
344
+ - **Both local and remote** - Support for subprocess and HTTP servers
package/dist/cli.js CHANGED
@@ -3,6 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const child_process_1 = require("child_process");
5
5
  const server_1 = require("./server");
6
+ const config_1 = require("./config");
7
+ const server_manager_1 = require("./server-manager");
6
8
  class RemoteMCPServer {
7
9
  constructor(serverUrl, headers = {}) {
8
10
  this.connected = false;
@@ -132,18 +134,35 @@ class LocalMCPServer {
132
134
  }
133
135
  }
134
136
  }
137
+ function detectMode(args) {
138
+ // Check for --config flag
139
+ if (args.includes('--config')) {
140
+ return 'multi';
141
+ }
142
+ // Check for LAZY_MCP_CONFIG env var
143
+ if (process.env.LAZY_MCP_CONFIG) {
144
+ return 'multi';
145
+ }
146
+ // Default: single-server mode
147
+ return 'single';
148
+ }
135
149
  function parseArgs(args) {
136
150
  if (args.length === 0) {
137
151
  console.error('Usage: lazy-mcp <server-command-or-url> [args...] [--header key=value]...');
152
+ console.error(' lazy-mcp --config <config-file>');
138
153
  console.error('');
139
- console.error('Local MCP servers:');
154
+ console.error('Single-server mode (local MCP servers):');
140
155
  console.error(' lazy-mcp python my_server.py');
141
156
  console.error(' lazy-mcp node server.js --port 8080');
142
157
  console.error(' lazy-mcp "uvicorn server:app --port 3000"');
143
158
  console.error('');
144
- console.error('Remote MCP servers:');
159
+ console.error('Single-server mode (remote MCP servers):');
145
160
  console.error(' lazy-mcp http://localhost:3000/mcp');
146
161
  console.error(' lazy-mcp https://api.example.com/mcp --header "Authorization=Bearer token123"');
162
+ console.error('');
163
+ console.error('Multi-server mode:');
164
+ console.error(' lazy-mcp --config ~/.config/lazy-mcp/servers.json');
165
+ console.error(' LAZY_MCP_CONFIG=~/.config/lazy-mcp/servers.json lazy-mcp');
147
166
  process.exit(1);
148
167
  }
149
168
  const firstArg = args[0];
@@ -182,6 +201,52 @@ function parseArgs(args) {
182
201
  }
183
202
  async function main() {
184
203
  const args = process.argv.slice(2);
204
+ const mode = detectMode(args);
205
+ if (mode === 'multi') {
206
+ await runMultiServerMode(args);
207
+ }
208
+ else {
209
+ await runSingleServerMode(args);
210
+ }
211
+ }
212
+ async function runMultiServerMode(args) {
213
+ // Get config path from --config flag or environment variable
214
+ let configPath;
215
+ const configIndex = args.indexOf('--config');
216
+ if (configIndex !== -1 && configIndex + 1 < args.length) {
217
+ configPath = args[configIndex + 1];
218
+ }
219
+ else if (process.env.LAZY_MCP_CONFIG) {
220
+ configPath = process.env.LAZY_MCP_CONFIG;
221
+ }
222
+ if (!configPath) {
223
+ console.error('Error: Config file path is required for multi-server mode');
224
+ console.error('Use: lazy-mcp --config <config-file>');
225
+ console.error('Or set: LAZY_MCP_CONFIG=<config-file>');
226
+ process.exit(1);
227
+ }
228
+ try {
229
+ const config = config_1.ConfigLoader.load(configPath);
230
+ const serverManager = new server_manager_1.ServerManager(config.servers);
231
+ const lazyServer = new server_1.LazyMCPServer(undefined, serverManager);
232
+ const cleanup = async () => {
233
+ console.error('\nShutting down...');
234
+ await serverManager.closeAll();
235
+ process.exit(0);
236
+ };
237
+ process.on('SIGINT', cleanup);
238
+ process.on('SIGTERM', cleanup);
239
+ const enabledServers = config.servers.filter(s => s.enabled !== false);
240
+ console.error(`Starting lazy MCP multi-server proxy with ${enabledServers.length} servers`);
241
+ console.error(`Servers: ${enabledServers.map(s => s.name).join(', ')}`);
242
+ await lazyServer.run();
243
+ }
244
+ catch (error) {
245
+ console.error('Error starting multi-server mode:', error);
246
+ process.exit(1);
247
+ }
248
+ }
249
+ async function runSingleServerMode(args) {
185
250
  const parsed = parseArgs(args);
186
251
  let originalServer;
187
252
  let description;
@@ -202,7 +267,6 @@ async function main() {
202
267
  description = `local server: ${parsed.command} ${(parsed.commandArgs || []).join(' ')}`.trim();
203
268
  }
204
269
  const lazyServer = new server_1.LazyMCPServer(originalServer);
205
- // Handle cleanup on exit
206
270
  const cleanup = async () => {
207
271
  console.error('\nShutting down...');
208
272
  await originalServer.close();
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { MultiServerConfig } from './types';
2
+ export declare class ConfigLoader {
3
+ static load(configPath: string): MultiServerConfig;
4
+ private static resolvePath;
5
+ private static validate;
6
+ private static validateServer;
7
+ static expandEnvVars(value: string): string;
8
+ static processEnv(env: Record<string, string>): Record<string, string>;
9
+ }
10
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAgB,MAAM,SAAS,CAAC;AAE1D,qBAAa,YAAY;IACvB,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB;IAmBlD,OAAO,CAAC,MAAM,CAAC,WAAW;IAO1B,OAAO,CAAC,MAAM,CAAC,QAAQ;IAoBvB,OAAO,CAAC,MAAM,CAAC,cAAc;IAyD7B,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAM3C,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAOvE"}
package/dist/config.js ADDED
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ConfigLoader = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const os = __importStar(require("os"));
40
+ class ConfigLoader {
41
+ static load(configPath) {
42
+ const resolvedPath = this.resolvePath(configPath);
43
+ if (!fs.existsSync(resolvedPath)) {
44
+ throw new Error(`Config file not found: ${resolvedPath}`);
45
+ }
46
+ const content = fs.readFileSync(resolvedPath, 'utf-8');
47
+ let config;
48
+ try {
49
+ config = JSON.parse(content);
50
+ }
51
+ catch (error) {
52
+ throw new Error(`Invalid JSON in config file: ${error}`);
53
+ }
54
+ return this.validate(config);
55
+ }
56
+ static resolvePath(configPath) {
57
+ if (configPath.startsWith('~/')) {
58
+ return path.join(os.homedir(), configPath.slice(2));
59
+ }
60
+ return path.resolve(configPath);
61
+ }
62
+ static validate(config) {
63
+ if (config.mode !== 'multi-server') {
64
+ throw new Error('Config must have mode: "multi-server"');
65
+ }
66
+ if (!Array.isArray(config.servers)) {
67
+ throw new Error('Config must have a "servers" array');
68
+ }
69
+ if (config.servers.length === 0) {
70
+ throw new Error('Config must have at least one server');
71
+ }
72
+ config.servers.forEach((server, index) => {
73
+ this.validateServer(server, index);
74
+ });
75
+ return config;
76
+ }
77
+ static validateServer(server, index) {
78
+ const prefix = `Server ${index}`;
79
+ if (!server.name || typeof server.name !== 'string') {
80
+ throw new Error(`${prefix}: "name" is required and must be a string`);
81
+ }
82
+ if (!server.description || typeof server.description !== 'string') {
83
+ throw new Error(`${prefix} (${server.name}): "description" is required and must be a string`);
84
+ }
85
+ if (!server.type || !['local', 'remote'].includes(server.type)) {
86
+ throw new Error(`${prefix} (${server.name}): "type" must be "local" or "remote"`);
87
+ }
88
+ if (server.type === 'local') {
89
+ if (!server.command) {
90
+ throw new Error(`${prefix} (${server.name}): local servers require "command"`);
91
+ }
92
+ // Support both formats:
93
+ // 1. OpenCode format: command: ["npx", "-y", "package"]
94
+ // 2. Legacy format: command: "npx", args: ["-y", "package"]
95
+ if (Array.isArray(server.command)) {
96
+ if (server.command.length === 0) {
97
+ throw new Error(`${prefix} (${server.name}): "command" array cannot be empty`);
98
+ }
99
+ if (!server.command.every((arg) => typeof arg === 'string')) {
100
+ throw new Error(`${prefix} (${server.name}): "command" array must contain only strings`);
101
+ }
102
+ }
103
+ else if (typeof server.command === 'string') {
104
+ if (server.args && !Array.isArray(server.args)) {
105
+ throw new Error(`${prefix} (${server.name}): "args" must be an array`);
106
+ }
107
+ }
108
+ else {
109
+ throw new Error(`${prefix} (${server.name}): "command" must be a string or array`);
110
+ }
111
+ }
112
+ if (server.type === 'remote') {
113
+ if (!server.url || typeof server.url !== 'string') {
114
+ throw new Error(`${prefix} (${server.name}): remote servers require "url" as a string`);
115
+ }
116
+ if (!server.url.startsWith('http://') && !server.url.startsWith('https://') &&
117
+ !server.url.startsWith('ws://') && !server.url.startsWith('wss://')) {
118
+ throw new Error(`${prefix} (${server.name}): "url" must start with http://, https://, ws://, or wss://`);
119
+ }
120
+ if (server.headers && typeof server.headers !== 'object') {
121
+ throw new Error(`${prefix} (${server.name}): "headers" must be an object`);
122
+ }
123
+ }
124
+ if (server.env && typeof server.env !== 'object') {
125
+ throw new Error(`${prefix} (${server.name}): "env" must be an object`);
126
+ }
127
+ }
128
+ static expandEnvVars(value) {
129
+ return value.replace(/\$\{([^}]+)\}/g, (match, varName) => {
130
+ return process.env[varName] || match;
131
+ });
132
+ }
133
+ static processEnv(env) {
134
+ const processed = {};
135
+ for (const [key, value] of Object.entries(env)) {
136
+ processed[key] = this.expandEnvVars(value);
137
+ }
138
+ return processed;
139
+ }
140
+ }
141
+ exports.ConfigLoader = ConfigLoader;
142
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { CommandInfo, CommandSchema, MultiServerProxy, ServerInfo } from './types';
2
+ import { ServerManager } from './server-manager';
3
+ export declare class MultiServerProxyImpl implements MultiServerProxy {
4
+ private serverManager;
5
+ constructor(serverManager: ServerManager);
6
+ listServers(filter?: string): Promise<ServerInfo[]>;
7
+ listCommands(server?: string, servers?: string[]): Promise<CommandInfo[] | Record<string, CommandInfo[]>>;
8
+ describeCommands(server: string, commandNames: string[]): Promise<CommandSchema[]>;
9
+ invokeCommand(server: string, commandName: string, parameters: Record<string, any>): Promise<any>;
10
+ }
11
+ //# sourceMappingURL=multi-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-proxy.d.ts","sourceRoot":"","sources":["../src/multi-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,aAAa,CAAgB;gBAEzB,aAAa,EAAE,aAAa;IAIlC,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAInD,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IA4BzG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAoBlF,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;CAQxG"}