@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 +2 -2
- package/README.md +2 -2
- package/dist/bridge.d.ts +1 -0
- package/dist/bridge.d.ts.map +1 -1
- package/dist/bridge.js +78 -12
- package/dist/bridge.js.map +1 -1
- package/dist/cli.js +7 -1
- package/dist/cli.js.map +1 -1
- package/package.json +7 -7
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2025
|
|
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
package/dist/bridge.d.ts
CHANGED
package/dist/bridge.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
//
|
|
63
|
-
|
|
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:
|
|
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
|
|
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
|
-
|
|
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));
|
package/dist/bridge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":";AAEA,OAAO,KAAwB,MAAM,OAAO,CAAC;
|
|
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;
|
|
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.
|
|
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": ">=
|
|
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
|
+
}
|