@nimbletools/mcp-http-bridge 1.0.0 → 1.0.2

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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 NimbleTools
3
+ Copyright (c) 2025 NimbleBrain, Inc.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
package/README.md CHANGED
@@ -4,8 +4,8 @@ Bridge the Model Context Protocol (MCP) stdio interface to HTTP-based MCP servic
4
4
 
5
5
  ## Requirements
6
6
 
7
- - Node.js 24.0.0 or higher
8
- - npm 10.0.0 or higher
7
+ - Node.js 18.0.0 or higher
8
+ - npm 9.0.0 or higher
9
9
 
10
10
  ## Installation
11
11
 
package/dist/bridge.d.ts CHANGED
@@ -4,6 +4,7 @@ interface BridgeConfig {
4
4
  bearerToken: string;
5
5
  timeout: number;
6
6
  retries: number;
7
+ rejectUnauthorized?: boolean;
7
8
  }
8
9
  export declare class MCPHttpBridge {
9
10
  private config;
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":";AAuBA,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAAC;gBAEV,MAAM,EAAE,YAAY;IAW1B,KAAK;YA8BG,gBAAgB;YAmBhB,iBAAiB;YAiBjB,eAAe;IA2B7B,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,QAAQ;CAIjB"}
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":";AAuBA,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAAC;gBAEV,MAAM,EAAE,YAAY;IAqB1B,KAAK;YAkCG,gBAAgB;YA+BhB,iBAAiB;YAqDjB,eAAe;IA2B7B,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,QAAQ;CAIjB"}
package/dist/bridge.js CHANGED
@@ -1,17 +1,23 @@
1
1
  #!/usr/bin/env node
2
2
  import axios from 'axios';
3
+ import https from 'https';
3
4
  export class MCPHttpBridge {
4
- config;
5
- axiosInstance;
6
5
  constructor(config) {
7
6
  this.config = config;
8
- this.axiosInstance = axios.create({
7
+ const axiosConfig = {
9
8
  timeout: config.timeout,
10
9
  headers: {
11
10
  'Authorization': `Bearer ${config.bearerToken}`,
12
11
  'Content-Type': 'application/json',
13
12
  },
14
- });
13
+ };
14
+ // Add HTTPS agent for SSL configuration
15
+ if (config.rejectUnauthorized === false) {
16
+ axiosConfig.httpsAgent = new https.Agent({
17
+ rejectUnauthorized: false
18
+ });
19
+ }
20
+ this.axiosInstance = axios.create(axiosConfig);
15
21
  }
16
22
  async start() {
17
23
  process.stdin.setEncoding('utf8');
@@ -23,13 +29,17 @@ export class MCPHttpBridge {
23
29
  buffer = lines.pop() || ''; // Keep incomplete line in buffer
24
30
  for (const line of lines) {
25
31
  if (line.trim()) {
26
- this.handleMCPRequest(line.trim());
32
+ this.handleMCPRequest(line.trim()).catch(error => {
33
+ console.error(`[Bridge] Unhandled error in request processing: ${error.message}`);
34
+ });
27
35
  }
28
36
  }
29
37
  });
30
38
  process.stdin.on('end', () => {
31
39
  if (buffer.trim()) {
32
- this.handleMCPRequest(buffer.trim());
40
+ this.handleMCPRequest(buffer.trim()).catch(error => {
41
+ console.error(`[Bridge] Unhandled error in final request processing: ${error.message}`);
42
+ });
33
43
  }
34
44
  });
35
45
  // Handle graceful shutdown
@@ -39,10 +49,20 @@ export class MCPHttpBridge {
39
49
  async handleMCPRequest(requestLine) {
40
50
  try {
41
51
  const request = JSON.parse(requestLine);
52
+ // Add verbose logging
53
+ if (process.env.MCP_BRIDGE_VERBOSE === 'true') {
54
+ console.error(`[Bridge] Processing request: ${request.method} (id: ${request.id})`);
55
+ }
42
56
  const response = await this.processMCPRequest(request);
43
- this.sendResponse(response);
57
+ if (response !== null) {
58
+ this.sendResponse(response);
59
+ }
60
+ else if (process.env.MCP_BRIDGE_VERBOSE === 'true') {
61
+ console.error(`[Bridge] No response sent for ${request.method}`);
62
+ }
44
63
  }
45
64
  catch (error) {
65
+ console.error(`[Bridge] Error processing request: ${error instanceof Error ? error.message : String(error)}`);
46
66
  const errorResponse = {
47
67
  jsonrpc: '2.0',
48
68
  id: undefined,
@@ -59,12 +79,40 @@ export class MCPHttpBridge {
59
79
  try {
60
80
  // Forward the MCP request to the HTTP endpoint
61
81
  const httpResponse = await this.makeHttpRequest(request);
62
- // Return the response from the HTTP service
63
- return {
82
+ // Check if the response is already a valid MCP response
83
+ const responseData = httpResponse.data;
84
+ if (process.env.MCP_BRIDGE_VERBOSE === 'true') {
85
+ console.error(`[Bridge] Received from HTTP: ${JSON.stringify(responseData)}`);
86
+ console.error(`[Bridge] Request ID: ${request.id}, Response has result: ${'result' in responseData}, Response has error: ${'error' in responseData}`);
87
+ }
88
+ // Handle empty responses (like notifications that return 200 with no body)
89
+ if (!responseData || responseData === '' || Object.keys(responseData).length === 0) {
90
+ if (process.env.MCP_BRIDGE_VERBOSE === 'true') {
91
+ console.error(`[Bridge] Empty response received, no response needed for ${request.method}`);
92
+ }
93
+ return null; // Don't send any response for notifications
94
+ }
95
+ if (responseData && responseData.jsonrpc === '2.0' && ('result' in responseData || 'error' in responseData)) {
96
+ // The HTTP service returned a complete MCP response, but ensure ID matches
97
+ const finalResponse = {
98
+ ...responseData,
99
+ id: request.id // Ensure ID matches the request
100
+ };
101
+ if (process.env.MCP_BRIDGE_VERBOSE === 'true') {
102
+ console.error(`[Bridge] Returning formatted response: ${JSON.stringify(finalResponse)}`);
103
+ }
104
+ return finalResponse;
105
+ }
106
+ // Otherwise, wrap the response data in an MCP result
107
+ const wrappedResponse = {
64
108
  jsonrpc: '2.0',
65
109
  id: request.id,
66
- result: httpResponse.data
110
+ result: responseData
67
111
  };
112
+ if (process.env.MCP_BRIDGE_VERBOSE === 'true') {
113
+ console.error(`[Bridge] Returning wrapped response: ${JSON.stringify(wrappedResponse)}`);
114
+ }
115
+ return wrappedResponse;
68
116
  }
69
117
  catch (error) {
70
118
  return this.createErrorResponse(request.id, error);
@@ -81,7 +129,7 @@ export class MCPHttpBridge {
81
129
  catch (error) {
82
130
  lastError = error;
83
131
  // If it's not a retryable error (4xx), fail immediately
84
- if (error.response?.status >= 400 && error.response?.status < 500) {
132
+ if (error.response && error.response.status >= 400 && error.response.status < 500) {
85
133
  throw error;
86
134
  }
87
135
  // Only retry on 5xx server errors or network issues
@@ -121,7 +169,25 @@ export class MCPHttpBridge {
121
169
  };
122
170
  }
123
171
  sendResponse(response) {
124
- process.stdout.write(JSON.stringify(response) + '\n');
172
+ try {
173
+ if (!process.stdout.destroyed) {
174
+ // Add debug logging to see what we're actually sending
175
+ if (process.env.MCP_BRIDGE_VERBOSE === 'true') {
176
+ console.error(`[Bridge] Sending response: ${JSON.stringify(response)}`);
177
+ }
178
+ process.stdout.write(JSON.stringify(response) + '\n');
179
+ }
180
+ }
181
+ catch (error) {
182
+ if (error.code === 'EPIPE' || error.message.includes('stream was destroyed')) {
183
+ // Client disconnected, ignore silently
184
+ console.error('[Bridge] Client disconnected, stopping bridge');
185
+ process.exit(0);
186
+ }
187
+ else {
188
+ console.error(`[Bridge] Error writing response: ${error.message}`);
189
+ }
190
+ }
125
191
  }
126
192
  sleep(ms) {
127
193
  return new Promise(resolve => setTimeout(resolve, ms));
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -30,6 +30,11 @@ const argv = yargs(hideBin(process.argv))
30
30
  type: 'boolean',
31
31
  default: false,
32
32
  description: 'Enable verbose logging'
33
+ })
34
+ .option('insecure', {
35
+ type: 'boolean',
36
+ default: false,
37
+ description: 'Disable SSL certificate verification (for development)'
33
38
  })
34
39
  .help()
35
40
  .alias('help', 'h')
@@ -48,7 +53,8 @@ async function main() {
48
53
  endpoint: argv.endpoint,
49
54
  bearerToken: argv.token,
50
55
  timeout: argv.timeout || 30000,
51
- retries: argv.retries || 3
56
+ retries: argv.retries || 3,
57
+ rejectUnauthorized: !argv.insecure
52
58
  });
53
59
  await bridge.start();
54
60
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAU5C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACtC,MAAM,CAAC,UAAU,EAAE;IAClB,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,QAAQ;IACd,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE,mCAAmC;CACjD,CAAC;KACD,MAAM,CAAC,OAAO,EAAE;IACf,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,QAAQ;IACd,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE,iCAAiC;CAC/C,CAAC;KACD,MAAM,CAAC,SAAS,EAAE;IACjB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,iCAAiC;CAC/C,CAAC;KACD,MAAM,CAAC,SAAS,EAAE;IACjB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,0BAA0B;CACxC,CAAC;KACD,MAAM,CAAC,SAAS,EAAE;IACjB,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,wBAAwB;CACtC,CAAC;KACD,IAAI,EAAE;KACN,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC;KAClB,OAAO,CACN,gGAAgG,EAChG,6CAA6C,CAC9C;KACA,SAAS,EAAa,CAAC;AAE1B,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC7C,OAAO,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YAC1D,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,KAAK;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK;YAC9B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC;SAC3B,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IAEvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAW5C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACtC,MAAM,CAAC,UAAU,EAAE;IAClB,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,QAAQ;IACd,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE,mCAAmC;CACjD,CAAC;KACD,MAAM,CAAC,OAAO,EAAE;IACf,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,QAAQ;IACd,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE,iCAAiC;CAC/C,CAAC;KACD,MAAM,CAAC,SAAS,EAAE;IACjB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,iCAAiC;CAC/C,CAAC;KACD,MAAM,CAAC,SAAS,EAAE;IACjB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,0BAA0B;CACxC,CAAC;KACD,MAAM,CAAC,SAAS,EAAE;IACjB,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,wBAAwB;CACtC,CAAC;KACD,MAAM,CAAC,UAAU,EAAE;IAClB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,wDAAwD;CACtE,CAAC;KACD,IAAI,EAAE;KACN,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC;KAClB,OAAO,CACN,gGAAgG,EAChG,6CAA6C,CAC9C;KACA,SAAS,EAAa,CAAC;AAE1B,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC7C,OAAO,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YAC1D,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,KAAK;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK;YAC9B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC;YAC1B,kBAAkB,EAAE,CAAC,IAAI,CAAC,QAAQ;SACnC,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IAEvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nimbletools/mcp-http-bridge",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Bridge MCP stdio protocol to HTTP-based MCP services",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -14,10 +14,10 @@
14
14
  "prepublishOnly": "npm run build"
15
15
  },
16
16
  "keywords": [
17
- "mcp",
18
- "model-context-protocol",
19
- "http",
20
- "bridge",
17
+ "mcp",
18
+ "model-context-protocol",
19
+ "http",
20
+ "bridge",
21
21
  "claude-code",
22
22
  "stdio",
23
23
  "json-rpc"
@@ -40,7 +40,7 @@
40
40
  "LICENSE"
41
41
  ],
42
42
  "engines": {
43
- "node": ">=24.0.0",
43
+ "node": ">=20.0.0",
44
44
  "npm": ">=10.0.0"
45
45
  },
46
46
  "repository": {
@@ -55,4 +55,4 @@
55
55
  "publishConfig": {
56
56
  "access": "public"
57
57
  }
58
- }
58
+ }