@aiwerk/mcp-bridge 2.7.0 → 2.7.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/README.md CHANGED
@@ -4,7 +4,9 @@
4
4
  [![npm version](https://img.shields.io/npm/v/@aiwerk/mcp-bridge.svg)](https://www.npmjs.com/package/@aiwerk/mcp-bridge)
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
6
 
7
- Multiplex multiple MCP servers into one interface. One config, one connection, all your tools.
7
+ **Your AI, Connected to Everything.** Multiplex multiple MCP servers into one interface. One config, one connection, all your tools.
8
+
9
+ 🌐 **[aiwerkmcp.com](https://aiwerkmcp.com)** — Learn more about the AIWerk MCP Platform
8
10
 
9
11
  Works with **Claude Desktop**, **Cursor**, **Windsurf**, **Cline**, **OpenClaw**, or any MCP client.
10
12
 
@@ -591,6 +593,7 @@ For production deployments with high security requirements, consider adding an e
591
593
  | ✅ | OAuth2 Client Credentials | 2.1.0 |
592
594
  | ✅ | OAuth2 Authorization Code + PKCE | 2.5.0 |
593
595
  | ✅ | OAuth2 Device Code flow (headless) | 2.6.0 |
596
+ | 🔜 | Auto-discovery (zero-config server registration) | planned |
594
597
  | 🔜 | Hosted bridge (bridge.aiwerk.ch) | planned |
595
598
  | 🔜 | Remote catalog integration | planned |
596
599
  | 🔜 | OpenTelemetry / Prometheus metrics | planned |
@@ -98,7 +98,13 @@ export class StdioTransport extends BaseTransport {
98
98
  this.scheduleReconnect();
99
99
  }
100
100
  });
101
- const connectionTimeout = this.clientConfig.connectionTimeoutMs || 5000;
101
+ // npx-based servers need extra time for dependency resolution on first run.
102
+ const isNpx = this.config.command === "npx";
103
+ const defaultTimeout = isNpx ? 30000 : 5000;
104
+ const connectionTimeout = this.clientConfig.connectionTimeoutMs || defaultTimeout;
105
+ if (isNpx && !this.clientConfig.connectionTimeoutMs) {
106
+ this.logger.info(`[mcp-bridge] Using extended timeout (${defaultTimeout}ms) for npx-based server`);
107
+ }
102
108
  await new Promise((resolve, reject) => {
103
109
  let settled = false;
104
110
  let timeout;
@@ -147,15 +153,12 @@ export class StdioTransport extends BaseTransport {
147
153
  this.process.once("error", onProcessError);
148
154
  this.process.once("exit", onProcessExit);
149
155
  timeout = setTimeout(() => {
150
- const timeoutError = new Error(`Stdio process startup timeout: no data received within ${connectionTimeout}ms`);
151
- this.logger.warn(`[mcp-bridge] ${timeoutError.message}; terminating unresponsive process`);
152
- try {
153
- this.process?.kill("SIGTERM");
154
- }
155
- catch {
156
- // Ignore kill errors and reject with timeout
157
- }
158
- settleReject(timeoutError);
156
+ // Many MCP servers (e.g. firecrawl) don't write anything to stdout until
157
+ // they receive the client's `initialize` request. Instead of killing the
158
+ // process, resolve optimistically — initializeProtocol() will validate
159
+ // the connection by sending `initialize` and waiting for a response.
160
+ this.logger.info(`[mcp-bridge] No stdout data within ${connectionTimeout}ms — process still running, proceeding to initialize`);
161
+ settleResolve();
159
162
  }, connectionTimeout);
160
163
  });
161
164
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiwerk/mcp-bridge",
3
- "version": "2.7.0",
3
+ "version": "2.7.2",
4
4
  "description": "Standalone MCP server that multiplexes multiple MCP servers into one interface",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",
@@ -10,7 +10,7 @@
10
10
  "command": "npx",
11
11
  "args": [
12
12
  "-y",
13
- "chrome-devtools-mcp@0.20.0",
13
+ "chrome-devtools-mcp@0.20.3",
14
14
  "--autoConnect"
15
15
  ],
16
16
  "env": {}
@@ -10,7 +10,7 @@
10
10
  "command": "npx",
11
11
  "args": [
12
12
  "-y",
13
- "firecrawl-mcp@3.12.1"
13
+ "firecrawl-mcp@3.11.0"
14
14
  ],
15
15
  "env": {
16
16
  "FIRECRAWL_API_KEY": "${FIRECRAWL_API_KEY}"