mcp-compose 0.0.7 → 0.1.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.
Files changed (44) hide show
  1. package/README.md +58 -11
  2. package/dist/bin/mcp-compose.js +8 -8
  3. package/dist/bin/mcp-compose.js.map +1 -1
  4. package/dist/bin/mcp-gateway.d.ts +3 -0
  5. package/dist/bin/mcp-gateway.d.ts.map +1 -0
  6. package/dist/bin/mcp-gateway.js +41 -0
  7. package/dist/bin/mcp-gateway.js.map +1 -0
  8. package/dist/package.json +4 -3
  9. package/dist/src/command.d.ts +4 -0
  10. package/dist/src/command.d.ts.map +1 -0
  11. package/dist/src/command.js +66 -0
  12. package/dist/src/command.js.map +1 -0
  13. package/dist/src/config.d.ts +2 -2
  14. package/dist/src/config.d.ts.map +1 -1
  15. package/dist/src/config.js +16 -3
  16. package/dist/src/config.js.map +1 -1
  17. package/dist/src/gateway.d.ts +22 -0
  18. package/dist/src/gateway.d.ts.map +1 -0
  19. package/dist/src/gateway.js +405 -0
  20. package/dist/src/gateway.js.map +1 -0
  21. package/dist/src/index.d.ts +3 -1
  22. package/dist/src/index.d.ts.map +1 -1
  23. package/dist/src/index.js +3 -1
  24. package/dist/src/index.js.map +1 -1
  25. package/dist/src/oauth.d.ts +37 -0
  26. package/dist/src/oauth.d.ts.map +1 -0
  27. package/dist/src/oauth.js +317 -0
  28. package/dist/src/oauth.js.map +1 -0
  29. package/dist/src/pm2.d.ts +2 -2
  30. package/dist/src/pm2.d.ts.map +1 -1
  31. package/dist/src/pm2.js +17 -18
  32. package/dist/src/pm2.js.map +1 -1
  33. package/dist/src/sync.js +1 -1
  34. package/dist/src/sync.js.map +1 -1
  35. package/dist/src/types.d.ts +19 -2
  36. package/dist/src/types.d.ts.map +1 -1
  37. package/dist/src/validation.d.ts.map +1 -1
  38. package/dist/src/validation.js +31 -17
  39. package/dist/src/validation.js.map +1 -1
  40. package/package.json +4 -3
  41. package/dist/src/supergateway.d.ts +0 -9
  42. package/dist/src/supergateway.d.ts.map +0 -1
  43. package/dist/src/supergateway.js +0 -54
  44. package/dist/src/supergateway.js.map +0 -1
@@ -6,6 +6,22 @@ function addError(errors, path, message) {
6
6
  function isObject(value) {
7
7
  return typeof value === 'object' && value !== null && !Array.isArray(value);
8
8
  }
9
+ function validateLogLevel(value, path, errors) {
10
+ if (!VALID_LOG_LEVELS.includes(value)) {
11
+ addError(errors, path, `must be one of: ${VALID_LOG_LEVELS.join(', ')}`);
12
+ }
13
+ }
14
+ function validateStringRecord(value, path, errors) {
15
+ if (!isObject(value)) {
16
+ addError(errors, path, 'must be an object');
17
+ return;
18
+ }
19
+ for (const [key, v] of Object.entries(value)) {
20
+ if (typeof v !== 'string') {
21
+ addError(errors, `${path}.${key}`, 'must be a string');
22
+ }
23
+ }
24
+ }
9
25
  function validateSettings(settings, errors) {
10
26
  if (settings === undefined)
11
27
  return;
@@ -28,9 +44,7 @@ function validateSettings(settings, errors) {
28
44
  }
29
45
  }
30
46
  if ('logLevel' in settings) {
31
- if (!VALID_LOG_LEVELS.includes(settings['logLevel'])) {
32
- addError(errors, 'settings.logLevel', `must be one of: ${VALID_LOG_LEVELS.join(', ')}`);
33
- }
47
+ validateLogLevel(settings['logLevel'], 'settings.logLevel', errors);
34
48
  }
35
49
  }
36
50
  function validateResourceLimits(limits, path, errors) {
@@ -82,22 +96,10 @@ function validateStdioServer(server, path, errors) {
82
96
  }
83
97
  }
84
98
  if ('env' in server) {
85
- const env = server['env'];
86
- if (!isObject(env)) {
87
- addError(errors, `${path}.env`, 'must be an object');
88
- }
89
- else {
90
- for (const [key, value] of Object.entries(env)) {
91
- if (typeof value !== 'string') {
92
- addError(errors, `${path}.env.${key}`, 'must be a string');
93
- }
94
- }
95
- }
99
+ validateStringRecord(server['env'], `${path}.env`, errors);
96
100
  }
97
101
  if ('logLevel' in server) {
98
- if (!VALID_LOG_LEVELS.includes(server['logLevel'])) {
99
- addError(errors, `${path}.logLevel`, `must be one of: ${VALID_LOG_LEVELS.join(', ')}`);
100
- }
102
+ validateLogLevel(server['logLevel'], `${path}.logLevel`, errors);
101
103
  }
102
104
  if ('resourceLimits' in server) {
103
105
  validateResourceLimits(server['resourceLimits'], `${path}.resourceLimits`, errors);
@@ -116,6 +118,18 @@ function validateRemoteServer(server, path, errors) {
116
118
  addError(errors, `${path}.url`, 'must be a valid URL');
117
119
  }
118
120
  }
121
+ if ('proxy' in server && typeof server['proxy'] !== 'boolean') {
122
+ addError(errors, `${path}.proxy`, 'must be a boolean');
123
+ }
124
+ if ('headers' in server) {
125
+ validateStringRecord(server['headers'], `${path}.headers`, errors);
126
+ }
127
+ if ('logLevel' in server) {
128
+ validateLogLevel(server['logLevel'], `${path}.logLevel`, errors);
129
+ }
130
+ if ('resourceLimits' in server) {
131
+ validateResourceLimits(server['resourceLimits'], `${path}.resourceLimits`, errors);
132
+ }
119
133
  }
120
134
  function validateServer(name, server, errors) {
121
135
  const path = `mcpServers.${name}`;
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "mcp-compose",
3
- "version": "0.0.7",
3
+ "version": "0.1.0",
4
4
  "description": "MCP server orchestration tool - manage multiple MCP servers with a single gateway",
5
5
  "type": "module",
6
6
  "bin": {
7
- "mcp-compose": "./dist/bin/mcp-compose.js"
7
+ "mcp-compose": "./dist/bin/mcp-compose.js",
8
+ "mcp-gateway": "./dist/bin/mcp-gateway.js"
8
9
  },
9
10
  "main": "./dist/src/index.js",
10
11
  "types": "./dist/src/index.d.ts",
@@ -18,7 +19,7 @@
18
19
  "dist"
19
20
  ],
20
21
  "scripts": {
21
- "build": "tsc && cp package.json dist/",
22
+ "build": "tsc && cp package.json dist/ && chmod +x dist/bin/mcp-gateway.js",
22
23
  "clean": "rm -rf dist",
23
24
  "lint": "eslint src bin",
24
25
  "lint:fix": "eslint src bin --fix",
@@ -1,9 +0,0 @@
1
- import type { StdioServer, SupergatewayCommand } from './types.js';
2
- /**
3
- * Ensure supergateway is installed and return the resolved binary path.
4
- * Uses npx to install if needed, then resolves the real path so pm2 can
5
- * launch the binary directly without the npx wrapper process.
6
- */
7
- export declare function resolveSupergatewayBin(): string;
8
- export declare function buildSupergatewayCmdForServer(server: StdioServer, supergatewayBin: string): SupergatewayCommand;
9
- //# sourceMappingURL=supergateway.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"supergateway.d.ts","sourceRoot":"","sources":["../../src/supergateway.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEnE;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAY/C;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,GAAG,mBAAmB,CAmB/G"}
@@ -1,54 +0,0 @@
1
- import { execSync } from 'child_process';
2
- import { expandPath } from './config.js';
3
- /**
4
- * Ensure supergateway is installed and return the resolved binary path.
5
- * Uses npx to install if needed, then resolves the real path so pm2 can
6
- * launch the binary directly without the npx wrapper process.
7
- */
8
- export function resolveSupergatewayBin() {
9
- const bin = execSync('npx -y -p supergateway@latest -c "which supergateway"', {
10
- encoding: 'utf-8',
11
- timeout: 60_000,
12
- stdio: ['ignore', 'pipe', 'ignore'],
13
- }).trim();
14
- if (!bin) {
15
- throw new Error('Failed to resolve supergateway binary path');
16
- }
17
- return bin;
18
- }
19
- export function buildSupergatewayCmdForServer(server, supergatewayBin) {
20
- const { command, args, internalPort, logLevel } = server;
21
- const stdioCmd = buildStdioCommand(command, args);
22
- return {
23
- script: supergatewayBin,
24
- args: [
25
- '--stdio',
26
- stdioCmd,
27
- '--outputTransport',
28
- 'streamableHttp',
29
- '--port',
30
- String(internalPort),
31
- '--logLevel',
32
- logLevel,
33
- '--stateful',
34
- ],
35
- };
36
- }
37
- function buildStdioCommand(command, args) {
38
- const expandedArgs = args.map((arg) => {
39
- if (arg.includes('~')) {
40
- return expandPath(arg);
41
- }
42
- return arg;
43
- });
44
- const allParts = [command, ...expandedArgs];
45
- return allParts
46
- .map((part) => {
47
- if (/[\s"'\\]/.test(part)) {
48
- return `"${part.replace(/["\\]/g, '\\$&')}"`;
49
- }
50
- return part;
51
- })
52
- .join(' ');
53
- }
54
- //# sourceMappingURL=supergateway.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"supergateway.js","sourceRoot":"","sources":["../../src/supergateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,uDAAuD,EAAE;QAC5E,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;KACpC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEV,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,MAAmB,EAAE,eAAuB;IACxF,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAEzD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAElD,OAAO;QACL,MAAM,EAAE,eAAe;QACvB,IAAI,EAAE;YACJ,SAAS;YACT,QAAQ;YACR,mBAAmB;YACnB,gBAAgB;YAChB,QAAQ;YACR,MAAM,CAAC,YAAY,CAAC;YACpB,YAAY;YACZ,QAAQ;YACR,YAAY;SACb;KACF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe,EAAE,IAAc;IACxD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACpC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC,CAAC;IAE5C,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}